按下语言的自动机

时间:2017-03-15 13:57:54

标签: computation-theory nfa pushdown-automaton

我想为语言

设计一个下推自动机
L = { a^i b^j c^k | i = j or k <= j <= 2k}

教师提出的解决方案如下图所示。 PDA diagram

但我关注的是,|2c| > |b|时它不会处理表单的字符串。那就是当处于q8状态时,如果所有B都被堆积掉了,但输入C还没有完成。这里没有捕捉到这种转变。

我的担忧是否正确? 或者建议的解决方案是正确的PDA。

1 个答案:

答案 0 :(得分:0)

请记住,j> = k,因此这意味着| b | &gt; = | c |。

如果输入的所有&#34; b&#34; s,则堆叠的B的数量大于(或等于)&#34; c&#34;& #39;要在输入中读取。

  • 如果j = k,那么它将使用从q8到q8的转换,直到输入完成。
  • 如果j = 2k,它将读取&#34; c&#34; (q8 - &gt; q9)并从堆栈中取出两个B(q9 - &gt; q8),因此只有字符串| b | = 2 | c |可以接受。
  • 如果j < 2k,它将使用q8 - &gt; q9和q9-> q8直到堆叠的B的数量等于要在输入中读取的&#34; c&#34; s的数量。然后它将使用q 8-> q8直到输入完成。