確定型有限自動機(DFA)
狀態(state)
狀態是機器可能處於的情境之一——圖中的一個圓圈、Q 中的一個元素。有限自動機的全部要旨在於:一個狀態濃縮了機器關於「到目前為止讀過的輸入」所需記住的一切。只要告訴機器它現在在哪個狀態,它就不必回頭看已經讀過的輸入;狀態是相關過往的一份完美摘要。
設計或閱讀一部機器時可以這樣想:每個狀態都應代表關於目前歷史的一項明確事實,或一組事實的組合。在「以 1 結尾」的機器裡,狀態 A 表示「我讀到的上一個符號不是 1(或我還什麼都沒讀)」,狀態 B 表示「我讀到的上一個符號是 1」。機器記住的就只有這些。兩段不同的輸入歷史若導向同一個狀態,那麼對於計算的其餘部分而言,它們是無從區分的。
因為狀態集合 Q 是有限的,機器頂多只能區分有限多種情境。這既是它的優雅之處——你可以把每種情境一一列出——也是它的極限:任何需要區分無限多種情境的輸入性質(例如「目前讀到的 a 的個數」,可以是 0、1、2、3……毫無上界),都無法被一個有限的狀態集合追蹤。
要接受其數值可被 3 整除的二進位字串,用三個狀態 r0、r1、r2,分別表示「目前的數值除以 3 餘 0、1 或 2」。餘數就是你必須記住的全部;r0 是接受狀態。三項事實,三個狀態。
一個狀態=關於目前讀過之輸入的一項事實(或一組事實)。
狀態不是存在記憶體裡、可以拿來做算術的數值;機器無法對狀態做加法,也無法比較兩個狀態。它只能處於某一個狀態,並依 δ 移到另一個狀態。
另見