確定型有限自動機(DFA)
全函數轉移(a total transition function)
說 DFA 的轉移函數是全函數(total),意思是它處處有定義:對每個狀態 q 與字母表中每個符號 a,δ(q, a) 都指名一個下一狀態。沒有缺口,也沒有機器未曾規劃的「萬一……怎麼辦」情境。無論你在哪個狀態、無論來的是哪個符號,機器永遠有一支箭頭可走。
為何要堅持這點?因為它保證 DFA 永不卡住。一次計算會讀過輸入的每個符號,且總是抵達一個良好定義的最終狀態,於是接受或拒絕對每個可能的字串都有定論——不存在「未定義」或「錯誤」這種第三種結果。若表有 S 個狀態、字母表有 k 個符號,全函數性意味全部 S 乘 k 個格子都被填滿,每格恰好一個狀態。
實務上,全函數性正是陷阱狀態存在的理由。當規格暗示某個動作「不該發生」或「應當失敗」時,你不會刪掉那個轉移;你把它指向一個(非接受的)陷阱狀態,並讓機器一路執行到底,在那裡正確地拒絕。許多教科書的圖為了減少凌亂而藏起陷阱及其箭頭,仰賴「任何缺失的轉移都通往一個隱含的死狀態」這個約定——但底層的 DFA 仍有一個全函數的 δ。
在字母表 {a, b}、有 3 個狀態的情形下,全函數的 δ 有 3 x 2 = 6 個條目,全部填滿。若你為「含有 aa」草擬一部機器、卻忘了在起始狀態讀到 b 時會怎樣,這個 δ 就還不是全函數——你必須先補上那個轉移(常是一條自迴圈),它才是個合法的 DFA。
全函數=每個(狀態, 符號)都有定義好的下一狀態;DFA 永遠不會卡住。
全函數性是標準 DFA 定義的一部分。有些書允許用「部分 DFA」作為缺少轉移的簡寫,但它們被理解為「帶一個隱含死狀態的全函數 DFA」。
又称
另见