我想设计一种NPDA(非确定性下推自动机),它接受以下两种语言。 请说明如何设计它们。
L(r) where r = abb*aba*
L(r) = {a^nb^2n : n > 0}
答案 0 :(得分:2)
第一个可能是这样的:
第二个可能是这样的:
编辑:所需转换的概述。
第一个:
q0 is initial
(q0, a, Z) -> (q1, aZ)
(q1, b, a) -> (q2, ba)
(q2, b, b) -> (q2, bb)
(q2, a, b) -> (q3, ab)
(q3, b, a) -> (q4, ba)
(q4, a, b) -> (q4, ab)
(q4, a, a) -> (q4, aa)
(q4, e, a) -> (q5, a)
(q4, e, b) -> (q5, b)
q5 is accepting
第二个:
q0 is initial
(q0, a, Z) -> (q1, aZ)
(q1, a, a) -> (q1, aa)
(q1, b, a) -> (q2, a)
(q2, b, a) -> (q3, e)
(q3, b, a) -> (q2, a)
q3 is accepting
两个NPDA都设计为在堆栈为空且输入已用尽时以接受状态接受。