下推自動機(PDA)
起始堆疊符號(initial stack symbol)
/ Z0 = "zee-zero" /
下推自動機開機時,它的堆疊並非真正空無一物——它一開始就已經有「恰好一個」符號在上面,稱為起始堆疊符號,通常寫作 Z0。把它想成貼在盤堆最底層的一張貼紙,上面寫著「這是地板」。少了它,機器在最初的第一步就無從判斷有沒有東西可彈出,日後也沒有可靠的辦法察覺自己已經把東西一路彈回到起點。
具體而言,PDA 從起始狀態出發,堆疊上僅有 Z0。接著它一邊讀輸入、一邊推入與彈出。這個底部符號身兼兩職。它保證第一次轉移時最上面總是「有東西」可彈出與檢視,使轉移規則絕不會因缺少堆疊符號而卡住。它也充當哨兵:若機器再次看到 Z0 回到最上面,就知道自己加上去的一切都已被清空——這正是像 a^n b^n 這種語言裡「所有計數恰好抵銷」的信號條件。
Z0 的選用與接受模式直接相關。以空堆疊接受的機器,會把彈出 Z0 當作最後一個動作,讓堆疊一無所有;以終止狀態接受的機器,則往往把 Z0 留在原處,改而檢查自己處於哪個狀態。無論哪一種,起始堆疊符號都是每次計算據以堆疊其上的那個固定、已知的起始筆記——是讓無界堆疊變得可控的錨點。
機器以堆疊 = Z0 起始。讀到 a 時推入 X,得到(由上而下)X X Z0。比對完 b 後彈回到 Z0;看到 Z0 在最上面,就知道每個 a 都被一個 b 抵銷了。
Z0 是起始時就在的唯一符號——堆疊的地板,也是「回到起點」的哨兵。
在 Z0 還壓在底部的正常運行過程中,堆疊從不真正為空;「空堆疊」接受特指在最後把 Z0 本身也彈出,而不是指每一步都把堆疊清空。
又称
另见