唯一的最小 DFA(unique minimal DFA)
在所有辨識某個給定正規語言的 DFA 之中,存在「單獨一台」最小的,而且就那個大小而言它基本上是唯一的——是該語言的典範「最佳」機器。把它想成分數的最簡形式:2/4、3/6、50/100 都表示同一個值,但 1/2 是唯一最簡的代表。同樣地,許多 DFA 都能接受同一個語言,但恰好有一台(在「僅僅替狀態改名」的意義下)狀態數最少。
精確地說,每個正規語言 L 都有一台最小 DFA,它在「同構」(isomorphism)的意義下「唯一」——也就是說,除了你怎麼稱呼那些狀態之外都是唯一的;其結構、轉移與接受集都被「鎖死」。它的狀態與 L 的 Myhill-Nerode 等價類一一對應,因此狀態數等於 L 的指數。你可以藉由執行最小化(移除無法到達的狀態,再合併所有等價狀態)得到它,或直接「每個不可區分類建一個狀態」。在最小 DFA 中,兩個可達且相異的狀態,依構造必定可區分。
唯一性正是讓最小 DFA 成為正規語言「典範形式」的原因,而這帶來實在的好處。兩個正規語言是否等價變得可判定且例行:把兩台 DFA 都最小化,再檢查結果是否為同一台機器(同構)。它也精確回答了「最小可能的自動機是什麼?」——不靠啟發法、不必猜。誠實的警語:這種唯一性是「確定型」有限自動機所特有的;最小 NFA「並不」唯一,而找出最小的 NFA 在計算上是困難的。
兩位工程師為「能被 3 整除的二進位字串」各畫出不同的 5 狀態 DFA。把兩台都最小化,會得到「同一台」3 狀態機器(狀態對應餘數 0、1、2),在改名意義下相同——唯一的最小 DFA。所以這兩台原始機器接受相同的語言。
同一語言的不同 DFA,都最小化成同一台典範機器。
「唯一」指的是在「同構」意義下——替狀態改名不算成另一台機器。這種典範形式的性質是 DFA 所特有的:最小 NFA 不必唯一,而把 NFA 最小化是 PSPACE 困難的,並非簡單的填表一趟就能完成。