证明形式为0 ^ n且其中n为素数的语言既不是常规的也不是无上下文的

时间:2011-12-06 13:49:43

标签: computer-science automata pumping-lemma

我正在考虑这个问题很长时间,但仍然无法做到这一点。 第一步很容易考虑任何形式的语言o ^ M其中M是比我们的对手给出的更大的素数(比如说n)。我无法弄清楚我们如何从这里证明无论我们的对手如何打破我们总是可以抽出的字符串,以表明它不属于上下文自由语言类(因此也就是常规语言)。

PS:它不是一个家庭作业问题。我已经完成了这门课程。我试图解决它,因为我在课程期间无法解决这个问题。

1 个答案:

答案 0 :(得分:0)

假设给定的语言是无上下文的。使用pumping lemma for context-free languages,您将获得数字x和y,使得x,x + y,x + 2y,x + 3y等都是素数。然而,这是不可能的,因为质数之间存在任意大的间隙(为了证明这一点,考虑数字n!+ 2,n!+ 3,...... n!+ n,对于任何自然数n> = 2 - 它们都是复合的。)

另一种方法是使用一元字母表中的每个无上下文语言都是常规语言的定理。然后考虑一元字母表上的DFA是如何看起来的:每个州都有一个外出边缘。在消除不可达状态之后,状态必须是q_0,q_1,... q_k,其中从q_i的转变变为q_ {i + 1},对于1< = i< k,从q_k过渡到某种状态。 q_0是初始状态。无论选择哪种最终状态,这都不能接受{0 ^ n | n是素数} - 再次使用素数之间存在任意大的间隙以获得矛盾的事实。