非確定型有限自動機(NFA)

路徑的平行探索(parallel exploration of paths)

另一個生動的觀點是把 NFA 看成一台機器:每當它面對好幾個被允許的移動時,就把自己「複製」成好幾份——每個選擇一份——讓所有副本平行地去讀剩下的輸入。每個副本走自己的路;卡住的副本就悄悄消失。到最後,只要「有任何一個」副本停在接受狀態上,整台機器就接受。這就像同時派出一支探險隊伍走進迷宮的每一條岔路,只要有一個找到出口就宣告勝利。

這個「複製」圖像,在數學上與「猜測並驗證」的圖像、以及「追蹤可能狀態集合」的圖像完全等同——它們是同一件事的三種觀點。複製觀點能非常直接地解釋子集構造法為何可行:在任何一刻,唯一要緊的是「目前有某個副本所在的狀態集合」,而不是有幾個副本、它們怎麼來的。那個集合是有限的(它是 Q 的一個子集),這正是確定型機器能追蹤它的原因。

對「平行」一詞要誠實。這裡的平行是數學定義上的平行,不是真實硬體的平行。一台實體電腦在模擬 NFA 時,是靠記帳——維護一張活躍狀態清單——來做這份複製,並在時間或記憶體上付出代價;它並不會白白得到一支處理器大軍。平行圖像是幫助理解「接受」的思考工具,而不是免費加速的承諾。

對輸入 ab,「以 ab 結尾」的 NFA 表現得像副本:讀完 a 後,有副本在 q0、也有副本在 q1;讀完 b 後,q0 的副本仍在 q0,q1 的副本已移到 q2。被佔據的狀態集合是 {q0, q2};因為有一個副本停在接受狀態 q2 上,機器就接受。

唯一要緊的是「目前被佔據的狀態集合」——而那個集合正是子集構造法所追蹤的對象。

這種平行是概念性的。真實硬體不會免費複製;它是靠追蹤一個狀態集合來模擬分岔,並在時間或記憶體上付出代價。

又稱
cloning view of nondeterminism平行路徑探索