Computer science 如何设计NPDA以接受这些语言?
我想设计NPDA(非确定性下推自动机),它接受以下两种语言。 请解释如何设计它们Computer science 如何设计NPDA以接受这些语言?,computer-science,automata,Computer Science,Automata,我想设计NPDA(非确定性下推自动机),它接受以下两种语言。 请解释如何设计它们 L(r) where r = abb*aba* L(r) = {a^nb^2n : n > 0} 第一个可能是这样工作的: 在第一种状态下读取a并将a推到堆栈上;向新国家过渡 在第二种状态下读取a b并将a b推到堆栈上;向新国家过渡 永远以第三种状态读取b,每次将b推到堆栈上。如果最终读取a,则转换到新状态并在堆栈上推送a 在第四种状态下读取b,将b推到堆栈上;向新国家过渡 永远在第五种状态下读取a,将a
L(r) where r = abb*aba*
L(r) = {a^nb^2n : n > 0}
第一个可能是这样工作的:
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都设计为在接受状态下接受。我无法理解每个转换对应的转换函数。请告诉我如何根据前一种语言确定转换函数。