下推自動機(PDA)

DPDA 嚴格弱於 PDA(DPDA strictly weaker)

這是關於下推自動機最令人驚訝的單一事實,值得直白地說出來:替 PDA 加上確定性會「移除」能力。確定型 PDA 辨識的語言嚴格地少於一般的非確定型 PDA。這與從有限自動機建立的直覺完全相反,在那裡確定性是免費的、每個 NFA 都有等價的 DFA。對下推機器而言,堆疊改變了一切。

「包含關係嚴格」的證明來自舉出一個見證者:一個非確定型 PDA 能辨識、卻無任何確定型 PDA 能辨識的語言。經典的見證者是 {a, b} 上偶數長度迴文 ww^R 的集合。非確定型 PDA 透過推入前半段、猜測中點在哪,再彈出以比對後半段來辨識它。但確定型 PDA 在每一步只有一個動作,無法猜中點——而且可以嚴格證明沒有任何 DPDA 能辨識這個語言。既然該語言「是」上下文無關的(一個簡單文法就能生成它)、卻不是確定型上下文無關的,確定型類別便是一個真子集。

這種不對稱正是確定性在實務上如此重要的原因。由於確定型 PDA 不回溯、以線性時間運行,編譯器作者刻意設計程式語言的文法,使其保持在確定型上下文無關語言之內(LL 與 LR 文法)。當一個文法不小心需要非確定性能力時,剖析器產生器會回報衝突——移位-歸約或歸約-歸約衝突——這正是工具拒絕為一個本質上非確定性的規格建造確定型機器。這個教訓可以推廣:非確定性對有限自動機無害,但對下推自動機是真正有力的。

偶數長度迴文 ww^R:非確定型 PDA 猜中點便能接受;沒有確定型 PDA 辦得到,因為它無從得知 w 何時結束。所以這個 CFL 不是 DCFL,證明了 DCFL 是 CFL 的真子集。

對 PDA 而言確定性以能力為代價(不像 DFA):某些 CFL 需要那個非確定性的猜測。

標準的反例是迴文,不是 a^n b^n——a^n b^n「是」確定型的。重點在於「某個」上下文無關語言不是確定型的,這就足以使包含關係嚴格成立。

又稱
DCFL is a proper subset of CFLdeterminism costs power for PDAs確定型嚴格較弱