L = {a ^ n b ^ k | 2n> = k}
例如:abb是L的元素,aabbb是L的元素,ε是L的元素,但是babbb不是L的元素,abbb不是L的元素
答案 0 :(得分:0)
L
中最短的字符串是空字符串e
。给定该语言的字符串s
,将遵循以下规则:
as
在L
asb
在L
asbb
在L
我们可以将这些观察结果结合起来以获得与上下文无关的语法:
S := aSbb | aSb | aS | e
根据我们的观察,此语法生成的每个字符串都必须位于L
中。为了证明这是L
的语法,我们必须证明可以生成L
中的任何字符串。要获取字符串a^n b^k
,我们可以执行以下操作:
x
次以上使用规则#1 y
次以上使用规则#2 z
次以上使用规则#3 x + y + z = n
y + 2z = k
设置y = k - 2z
并替换为x + k - 2z + z = n
。重新排列:
k > n
,则可以选择z
和x
,只要k - n = z - x
就可以。k < n
,则可以选择z
和x
,只要n - k = x - z
就可以。k = n
,请注意,我们也可以选择y = n
。请注意,由于z
和x
,我们在上面的示例中始终可以选择0 <= x, z <= n
和0 <= k <= 2n
。