证明或反对以下有关所决定的语言集的陈述 通过每个自动机:
1) DPDA ⊆ 2-stack DPDA
2) 2-stack DPDA ⊆ DPDA
3) NPDA ⊆ 2-stack DPDA
4) 2-stack DPDA ⊆ NPDA
答案 0 :(得分:1)
1)DPDA具有一个堆栈,因此具有两个堆栈的DPDA绝对可以通过不使用(或琐碎地使用)第二个堆栈来完成DPDA可以执行的任何操作。 2)两个堆栈的DPDA可以通过使用第一个堆栈确保a的数量等于b的数量,使用第二个堆栈确保a的数量等于b的数量来识别具有相同数量的a,b和c的单词的语言。 b的个数等于c的个数。由于该语言不是上下文无关的,因此没有适用于此的单栈DPDA。因此,2堆栈DPDA不相等。因为我们知道DPDA等于或等于2堆栈DPDA,所以我们知道2堆栈DPDA并不等于或等于DPDA。 3)这很难说,稍后会尝试 4)当然不是,与(2)相同。
对于(3)-我强烈怀疑2堆栈DPDA可以模拟确定性TM,这暗示NPDA是2堆栈DPDA的子集。为了证明这一点,需要展示如何使用2堆栈DPDA模拟任何TM的操作。我认为像这样的可视化可能就足够了……
_ _ _ _ _ _ _ _ _ _ _ _ _ _
|Z|_|_|_|_|_|_| |_|_|_|_|_|_|Z|
stack #1 ^ stack #2
TM
输入最初完全记录在堆栈2中。要向右移动,TM从堆栈2弹出,然后推入堆栈1。要向左移动,TM从堆栈#1弹出并推入堆栈#2。当前的磁带单元始终位于堆栈#2的顶部。 2堆栈DPDA可以执行确定性TM可以执行的状态和转换方面的任何操作;它可以使用两个堆栈来模拟如上所述的磁带。例如,接受所有回文的不确定性上下文无关语言的TM的工作方式如下:
TM与2堆栈DPDA的示例:
DTM 2-stack DPDA
------- --------------------
tape State Stack #1 Stack #2
B11011B Z 11011Z
^ initial ^
BB1011B ZB 1011Z
^ End(1) ^
BB1011B ZB1 011Z
^ End(1) ^
BB1011B ZB10 11Z
^ End(1) ^
BB1011B ZB101 1Z
^ End(1)
BB1011B ZB1011 Z
^ End(1) ^
BB1011B ZB101 1Z
^ Check(1) ^
BB101BB ZB10 1BZ
^ IsFin ^
BB101BB ZB1 01BZ
^ Start ^
BB101BB ZB 101BZ
^ Start ^
BB101BB Z B101BZ
^ Start ^
BB101BB ZB 101BZ
^ Initial ^
BBB01BB ZBB 01BZ
^ End(1) ^
BBB01BB ZBB0 1BZ
^ End(1) ^
BBB01BB ZBB01 BZ
^ End(1) ^
BBB01BB ZBB0 1BZ
^ Check(1) ^
BBB0BBB ZBB 0BBZ
^ IsFin ^
BBB0BBB ZB B0BBZ
^ Start ^
BBB0BBB ZBB 0BBZ
^ initial ^
BBBBBBB ZBBB BBZ
^ End(0) ^
BBBBBBB ZBB BBBZ
^ Check(0) ^
BBBBBBB ZBB BBBZ
^ halt-accept ^
基于此示例,我认为构造是正确的,并且2堆栈DPDA与Turing机器等效。因此,NPDA等于或等于2堆栈DPDA。