確定型有限自動機(DFA)

轉移表(a transition table)

轉移表是有限自動機的試算表版本——和狀態圖完全相同的資訊,寫成一張格網。每個狀態一列、每個字母表符號一欄;列 q 與欄 a 相交的那一格放著下一狀態 δ(q, a)。它就是把圖中的箭頭排成一張整齊的查找表。

依慣例,起始狀態會被標記(常用一支小箭頭 ->),每個接受狀態也會被標記(純文字中常用星號或加註說明)。要執行一個字串,你從標記的起始列開始,對每個符號跳到對應格中所寫的列名,反覆直到輸入讀完;接著檢查最終的列是否為接受狀態。因為 DFA 的 δ 是全函數且確定型,表中每一格都被填滿、且恰好放一個狀態——沒有空白,也沒有清單。

表格在圖變得擁擠之處大放異彩:一部有二十個狀態、字母表有五個符號的機器,畫成一團箭頭根本無法閱讀,列成 20 乘 5 的格網卻清楚無比。表格也是在程式中編碼 DFA 的自然形式——你就字面地把格網存成二維陣列,再查 next = table[state][symbol]。

把 1 的奇偶性寫成表(列=狀態,欄為 0 與 1): -> Even(接受): 0 -> Even, 1 -> Odd Odd: 0 -> Odd, 1 -> Even 箭頭標記 Even 為起始;「接受」標記它為終態。兩列、兩欄、四個填滿的格子。

與狀態圖是同一部機器,寫成「列(狀態)乘欄(符號)」。

若有任何格子留白或放了多於一個狀態,你看的就不是 DFA 的表。DFA 的表,正是把全函數、單值的 δ 完整寫出來而已。

又稱
state-transition tableδ table狀態轉移表轉移表