Answers:
我相信仍然是CFL,并采用了经典证明。这是草图。
考虑L = { x y z :| x | = | y | = | z | ∧ (x ≠ ý ∨ ý ≠ Ž )}
令L ' = { u v :| ü | ≡ 3 | v | ≡ 3 0 ∧ ü 2 | ü | / 3 ≠ v | v | / 3 }
| v | / 3 = (| w | − 3 p / 2 )/ 3 = | w | / 3 - p / 2。
因此,在w中
如果y p ≠ z p
这就是我考虑使用PDA解决此问题的方法。我认为,它在直观上更加清晰。
一个字X
我们使用通常的技巧,即通过使用一个新的“栈底”符号Z来存储整数值|来维护整数t
目的是使用不确定性来猜测您正在比较的两个符号的位置,并使用堆栈来记录t := | x | − 3 d
我们按以下步骤完成此操作:为看到的每个符号递增t,直到选择了第一个猜出的符号a,然后在状态中记录a。对于每个随后的输入符号,直到你决定你看到b,减量吨由2(1用于输入长度和- 3为的距离)。猜测第二个符号b的位置,并记录a ≠ b。继续增加t为后续输入符号。接受如果t = 0(顶部Z可以检测到)并且a ≠ b。
这样做的好处是,应该完全清楚如何将其扩展到任意能力。
只是从一个不同的角度(“面向语法”)的角度证明了{ w k }的补码对于使用闭包属性的任何固定k都是CF。
首先要注意在补{ w ^ ķ }总有我这样W¯¯ 我 ≠ w ^ 我+ 1。我们关注w 1 ≠ w 2并从生成以下内容的简单CF语法开始:
大号= { 一个00 ... 0 ⏟瓦特1b 00 ... 0 ⏟ w ^ 2。。。000 ... 0 ⏟ W¯¯ ķ || w ^我| =n}={a0n−1b 0 n (k − 1 )− 1 }
例如,对于k = 3,我们有L = { ab0 ,一个0b 000 ,一个00b 00000 ,。。。}, G ^ 大号 = { 小号→ 一个b 0 | a X 00 ,X → 0 X 00 | 0 b 0 }
Then apply closure under inverse homomorphism, and union:
First homomorphism: φ(1)→a,φ(0)→b,φ(1)→0,φ(0)→0
Second homomorphism: φ′(0)→a,φ′(1)→b,φ′(1)→0,φ′(0)→0
L′=φ−1(L)∪φ′−1(L) is still context free
Apply closure under cyclic shifts to L′ to get the set of strings of length kn not of the form wk:
L″=Shift(L′)={u∣u≠wk∧|u|=kn}.
Finally add the regular set of strings whose length is not divisible by k in order to get exactly the complement of {wk}:
L″∪{{0,1}n∣nmodk≠0}={u∣u≠wk}