確定型有限自動機(DFA)

DFA 的一次計算(a computation of a DFA)

DFA 在某個輸入字串上的一次計算(或一次執行),是機器逐一讀過該字串的逐步實況:它一個一個讀符號時所經過的狀態序列。想像你的手指在狀態圖上行走,這次計算就是手指留下的足跡。它是單一一條路徑,因為機器是確定型的。

說得詳細些,在輸入 w = a1 a2 ... an 上,這次計算是一串狀態 r0, r1, ..., rn,其中 r0 = q0(你從起始狀態開始),而每個下一狀態都遵循規則 ri = δ(ri-1, ai)(讀第 i 個符號,走它指定的那一支箭頭)。對 n 個符號的字串,會有 n+1 個狀態,因為你記下了「讀任何東西之前」以及「讀完 n 個符號中每一個之後」的所在。最終狀態 rn 就是決定裁決的那一個。

兩個特徵使 DFA 的計算格外溫馴。它是唯一的:同一部機器在同一個輸入上永遠產生同一條單一路徑,沒有要探索的分岔。它的長度恰好等於輸入:讀 n 個符號花 n 步,所以 DFA 處理任何字串所需的時間正比於其長度,且只用「記住一個狀態」所需的常數記憶量。這正是為什麼 DFA 是串流式、單趟、常數記憶辨識的模型。

在計算 1 之奇偶性的 DFA 上執行 1011:r0 = Even,讀 1 -> r1 = Odd,讀 0 -> r2 = Odd,讀 1 -> r3 = Even,讀 1 -> r4 = Odd。四個符號的字串有五個狀態。最終狀態 Odd 表示 1 的個數為奇數。

一次計算是唯一的狀態序列 r0=q0、ri=δ(ri-1, ai);n 個符號給出 n+1 個狀態。

DFA 的計算從不回頭、也從不重讀任何符號——它嚴格地由左到右、只跑一趟。結束時的狀態,是決定接受或拒絕的全部依據。

又稱
runexecutiontracepath執行路徑計算