我正在研究自动机,我遇到了与PDA 有关的问题
为语言L=构造PDA{w=x1y1x2y2….xnyn |其中w属于{0,1}*,并且字符串y1y2…..yn与x1x2….xn相同,除了y中的1在0之后}例如,字符串100111属于L,因为x=101并且y=011。所以执行字符串0011、00、1111、100001等。但是,字符串0110、11111、001、1100、01、10不执行属于L。为了简单起见,在PDA的结构中,假设输入由成对的符号组成其中第一个属于x,第二个属于y。因此,输入字母表为∑={00,01,10,11}。
我意识到我必须从堆栈中推送/弹出,以确保x中的相同输入出现在y中,其中0在1的a之前,但问题是如何检查y中的0在1之前。非常感谢对解决方案的提示
提示1:由于字符串的形式为xyxyxy...
,因此即使x和y部分相同,您也会在x部分遇到1
,然后在y部分遇到1
。
提示2:您正在将x部分中的1
s与y部分中的1
s进行匹配。在x中按下1
s,在y中弹出1
s。
提示3:一旦你弹出,你就无法停止。(即,提示#2本身是不够的,考虑像100100
这样的字符串。(