不,您的假设不正确!
该语言L = { x = y + z | where x, y, z are binary integers and x is the sum of y and z}
不是上下文无关语言(CFL) 。
我试图解释。
首先,考虑以下示例字符串s
语言L
。
110 = 100 + 10
1110 = 1100 + 10
:
111000 = 110000 + 1000
在我的解释中,LHS 是X
有问题的,而 RHS 是 Y + Z
。
什么是为 CFL 抽引理?
如果语言 L 是上下文无关的,则存在某个整数 p ≥ 1 使得 L 中的任何字符串 s 与 |s| ≥p。(其中 p 是“泵送长度”可以写成
s = uvxyz
with substrings u, v, x, y and z, such that
1. |vxy| ≤ p,
2. |vy| ≥ 1, and
3. uv nxy nz is in L for every natural number n.
这个定义 | ≥ 1 和 3。对于每个自然数 n,uv nxy nz 都在 L 中。
注意:中间部分s
,vxy
不大于抽水长度p
。(条件一)
[解决方案]:
让我们选择一个满足条件 s
的字符串L
|s| ≥ p
我们 s
是 1 m 0 q = 1 m-1 0 q + 10 q , 其中 q > p , m-1 > p
现在总长度s
大于 2m + 2q -1
,p
当然对于自然数的某些组合,这种不等式是可能的(我不包括长度+
和=
保持解释简单)
现在s
,根据 CFG 的抽取引理,我们的语言已经足够大了。
现在打破它:
u vxy z = 1 m 0 q = 1 m-1 0 q + 10 q
尝试用 L 语言查找v
并y
抽取和生成新字符串,但请记住v
,y
不要太远p
(根据条件 1)。
你没有任何选择v
,y
这样你就可以用语言生成新的字符串!
(第 1 步):因为如果您选择增加,1
那么您不能同时泵送 RHS 和 LHS 的两侧,=
因为 LHS 上的最后一个1
位于q
(>p) 到1
RHS 的第一个。因此不可能用语言生成新的字符串。
(步骤 2):假设您想0
再次抽水,它不可能同时增加0
LHS 和 RHS,因为0
m-1 (>p) 中的 LHS 上的最后一个膨胀到0
RHS 上的第一个。
(第 3 步):您不能同时泵送111...000...
两侧。,试试这个,你会得到语言 L 的字符串。
在 Pumping Lemma 的规则内尝试其他选项。你不会为v
and找到正确的选择y
。
[回答]
所以他s
在 L 中有一个足够大的字符串,使用它我们不能用语言生成新的字符串。它与 Pumping Lemma for CFL 相矛盾,因此给出L
的不是 CFL。