【问题标题】:Is the following union of CFL and non-CFL CFL itself?以下是 CFL 和非 CFL CFL 本身的结合吗?
【发布时间】:2012-02-22 13:41:51
【问题描述】:

我是一名助教,一名学生问我以下问题。尴尬的是,我想不出答案,所以我求助于你们。

我们知道 L_1 = {a^n b^n c^n} 是非 CFL。 我们也知道 L_2 = {a^i b^k c^j : i != k } 上下文无关的。

那些联合呢? (这显然是非常规的) 它是上下文无关的吗?

【问题讨论】:

  • 最好在cstheory.stackexchange.com上提问
  • 那个是研究级论坛。这不是研究级别的问题。
  • @larsmans 这个问题将在 ctheory 上关闭,因为它不是研究级问题。许多像这样的问题都被转移到那里,最终被关闭并删除。我们需要的是获得对通用 CS stackexchange beta 站点的最后一点支持。这个问题很适合那里。
  • @Shir 如果有机会,请查看我的答案。我认为这几乎可以让这个人休息。话虽如此,这个问题对于即将到来的通用 CS stackexchange 站点来说是完美的。看看:area51.stackexchange.com/proposals/35636/computer-science。通过承诺表示您的支持,并告诉您的朋友、家人和学生也承诺。我对那个网站很感兴趣。

标签: automata


【解决方案1】:

我们选择语言 U = {a^i b^j c^k | 作为我们的宇宙。 i, j, k in N}。

那么 L_1^C = {a^i b^j c^k | i!=j 或 j != k} = {a^i b^j c^k | i!=j} 联合 {a^i b^j c^k | j != k} = L_A 并集 L_B。请注意,L_A = L_2。

根据 DeMorgan,L_1 union L_2 = (L_1^C intersect L_2^C)^C = ((L_A union L_B) intersect L_2^C)^C,根据分配律是 ((L_A intersect L_2^C) union (L_B 相交 L_2^C))^C.

回想一下,由于 L_A = L_2,我们得到 (L_B intersect L_2^C)^C。通过 DeMorgan,我们可以将其渲染为 L_B^C union L_2。我们已经承认 L_2 是上下文无关的。我们宇宙中 L_B 的补集是 {a^i b^j c^k | j=k},这也是上下文无关的。两种上下文无关语言的联合也是上下文无关的,所以是的,L_1 联合 L_2 是上下文无关的。

走完形式,直觉很明显:L_1并集L_2相当于要么i!=j(a和b的个数不同)要么b和c的个数相同。如果您考虑一下,这完美地满足了语言的要求:如果 i != j,我们可以通过第二部分;我们无法进入 L_2 的唯一方法是,如果我们已经知道 i = j 的事实,我们只需要担心保证 j = k。

在布尔逻辑中:(a and b) or (not a) 等价于 (b or (not a))。

该语言的 CFG 如下:

S := A | C
A := aA | B
B := lambda | bBc
C := Cc | D | E
D := a | aD | aDb
E := b | Eb | aEb

您可以通过自上而下或自下而上的解析器结构获得 PDA。

【讨论】:

  • @sdcvvc 没问题,伙计,很好。我大概把(ab)+(-a)=(b+a),对吧?
  • 是的。您可以随时点击上方的“已编辑……小时前”查看帖子历史记录。
猜你喜欢
  • 2019-04-13
  • 1970-01-01
  • 1970-01-01
  • 2012-10-20
  • 2012-01-11
  • 2018-06-18
  • 2020-03-07
  • 1970-01-01
  • 2012-04-09
相关资源
最近更新 更多