构造接受以下语言的npda

时间:2019-06-18 21:14:57

标签: automata non-deterministic pushdown-automaton

构造接受以下语言的npda

L1 = {a n + 2 b m c n + m :m> = 1,n> = 0}

L2 = {a n b m :m> = 0,n = m + 3}

1 个答案:

答案 0 :(得分:0)

对于第一个,NPDA将需要两个a,然后读取a和b(以及至少一个b)并推入堆栈,然后读取c并从堆栈中弹出。如果纸堆是空的并且输入已用尽,则机器可以接受。

Q    s    S    Q'    S'
-----------------------
q0   a    Z    q1    Z    // read two a
q1   a    Z    q2    Z

q2   a    Z    q2    cZ   // read all a
q2   a    a    q2    ca   // and at least one b
q2   b    Z    q3    cZ
q2   b    a    q3    ca

q3   b    c    q3    cc   // read all b
q3   c    c    q4    -    // and at least one c

q4   c    c    q4    -    // read all c
q4   -    Z    q5    Z    // go to accepting state on empty stack

对于第二个,NPDA将要求三个a,然后读取a并推入堆栈,然后读取b并从堆栈中弹出。如果纸堆是空的并且输入已用尽,则机器可以接受。

Q    s    S    Q'    S'
-----------------------
q0   a    Z    q1    Z
q1   a    Z    q2    Z
q2   a    Z    q3    Z
q3   a    Z    q3    aZ
q3   a    a    q3    aa
q3   b    a    q4    -
q3   -    Z    q5    Z
q4   b    a    q4    -
q4   -    Z    q5    -

请注意,这里的q3和q4都可以转换为接受状态q5并接受,前提是它们已经耗尽了输入并且正在查看一个空堆栈。