0
我想設計一個下推自動機的語言下推自動機的語言
L = { a^i b^j c^k | i = j or k <= j <= 2k}
但我這裏關心的是,它不處理字符串的形式,當|2c| > |b|
。那就是在q8
狀態下,如果所有的B都堆疊出來,但輸入C還沒有完成。這裏沒有捕捉到這種轉變。
我的關注是否正確? 或建議的解決方案是一個正確的PDA。
我想設計一個下推自動機的語言下推自動機的語言
L = { a^i b^j c^k | i = j or k <= j <= 2k}
但我這裏關心的是,它不處理字符串的形式,當|2c| > |b|
。那就是在q8
狀態下,如果所有的B都堆疊出來,但輸入C還沒有完成。這裏沒有捕捉到這種轉變。
我的關注是否正確? 或建議的解決方案是一個正確的PDA。
記住j> = k,這意味着| b | > = | c |。
如果輸入中的所有「b」都被讀取,則B的堆棧數量大於(或等於)要在輸入中讀取的「c」的數量。
我明白你的意思了。在提議的PDA中,對於q8→q8,轉換條件是:(C,B-> E)。當| b |時會發生什麼? = 6和| c | = 4.這種形式的字符串應該是可以接受的。但是這款PDA並沒有處理這種情況,對吧? – yogeshagr
它的確如此。讀取輸入中的所有「b」後,將會有6個B堆疊起來。然後使用q8 - > q9和q9 - > q8兩次在輸入中讀取兩個「c」,從堆棧中取4個B。所以我們有兩個「c」在輸入中被讀取,兩個B被堆疊。然後,q8 - > q8被使用兩次,字符串被接受。 –
好的,是的。你的第三點正確解釋了這一點。我實際上是通過閱讀3個「c」並耗費6個B來耗盡所有的Bs。然後,我剩下1個「C」和0 B堆棧,而我沒有從q8出發的地方。在NFA中,轉換順序也很重要?我們可以將這個PDA轉換成一個程序,然後計算機可以採取它應該進行轉換的順序嗎?我的意思是這個PDA有助於編寫正確/更好的程序嗎? – yogeshagr