1

所以,我發現這個PDA接受語言{0,1} * palindromes。Palindrones下推自動機

Palindrone PDA

不過,我不理解它如何能接受 '1' 或 '0'。

B它可以讀取1或0並將相同的符號推入堆棧,然後轉至C。然而,一旦它出現在C中,它無處可去,需要讀取另一個符號才能在堆棧中達到$。

有人可以解釋它是如何工作的?

我在想,爲了接受一個符號,我們需要從BD =>1,$->ε | 0,$->ε的轉換。

我是否正確?

謝謝:)

回答

1

你說得對。這PDA不會接受0或1(或者更一般地說,任何奇數長度迴文 - 你知道爲什麼嗎?)

爲了解決這個問題,我建議將這些轉變從B到C:

0,ε &右箭頭; &小量;

1,ε &右箭頭; &小量;

這些轉換基本上讓你消費一個字符「免費」。如果你選擇中間字符並且字符串是迴文,那太棒了!然後你會接受。如果你選錯了字符或者字符串不是迴文,你將永遠不會通過狀態C和D而不會自動死機。

+0

我認爲我在編輯中添加的建議等同於您的建議。 – mickzer

+1

@mickzer實際上,我不確定它是什麼。嘗試使用您的編輯和我的字符串111。 – templatetypedef

+0

我們有一個贏家.... – mickzer