下推自動機(PDA)

CFG 與 PDA 的等價(CFG-PDA equivalence)

這是本領域的招牌定理,是「正規表示式等於有限自動機」在下推層級的對應物。一個語言能由某個上下文無關文法生成,「若且唯若」它能由某台下推自動機辨識。一句話:下推自動機恰好辨識上下文無關語言——不多、不少。生成觀點(文法)與辨識觀點(機器)描述的是同一個類別。

兩個方向都以明確的構造來證明。從文法到 PDA:建造一台單狀態、以空堆疊接受的 PDA,用它的堆疊來模擬一次「最左推導」。它一開始把起始符號放在堆疊上;每當頂端是變數,它就非確定性地彈出該變數、並推入它某條規則的右側(猜要套用哪條規則);每當頂端是終端符號,只有在它與下一個輸入符號相符時才彈出。若輸入恰好對應某次推導,這些猜測就會吻合、堆疊清空、機器接受。從 PDA 回到文法是較難的方向:你引入一些變數,代表「機器從狀態 p 走到狀態 q、同時淨彈出某個特定堆疊符號」,並建構規則來鏡映 PDA 的動作;所得文法恰好生成該 PDA 的語言。

好處是你可以視哪一邊較容易,自由地在兩種圖像間切換。想「證明」某語言是上下文無關的嗎?給一個文法或給一台 PDA——兩者皆可。想「剖析」嗎?文法是你指定語言的方式,PDA(及其確定型限制)是你有效辨識它的方式。這個等價正是喬姆斯基階層中位於正規語言上方一階的那一層,也是為什麼堆疊是上下文無關能力的定義性資源。

對 S → a S b | ε,模擬用的 PDA 一開始把 S 放在堆疊上。頂端是 S,猜 S → a S b:彈出 S、推入 a S b。頂端是 a:只有當輸入是 a 時才彈出它。如此貫穿「aabb」,並在輸入結束的瞬間恰好清空堆疊。

文法轉 PDA 在堆疊上模擬最左推導;反方向則把 PDA 的動作編碼成規則。

這個等價對「一般的」(非確定型)PDA 成立。確定型 PDA 只辨識上下文無關語言的一個嚴格子集,所以「PDA 等於 CFG」是關於非確定型 PDA 的陳述。

又稱
grammars equal pushdown automataPDAs recognise exactly the CFLs文法等於下推自動機