正規語言的性質、幫浦引理與最小化
幫浦長度(pumping length)
幫浦長度是一道門檻,超過它,幫浦引理所保證的迴圈就「必定」出現。把 DFA 想成一座車位數固定的小型停車場(狀態)。一旦字串長到車子停過的車位比車位總數還多,它就一定重複停進過某個車位——而那次「重複停放」就是迴圈。幫浦長度 p 正是讓這件事「被強迫發生」的那個「夠長」。
具體而言,你總可以取 p 為「任一台辨識該語言的 DFA 的狀態數」。讀一個長度至少為 p 的字串,意味著這次執行至少經過 p+1 個狀態(起始狀態加上每個符號一個),而只有 p 個相異狀態時,依鴿籠原理其中兩個必定重合——保證在「前 p 個符號內」就出現迴圈(這正是引理條件 |xy| ≤ p 成立的原因)。長度「短於」p 的字串並無這種保證;引理對它們三緘其口。
兩個誠實的要點。第一,p 取決於語言、而非字串——一旦固定,它對所有夠長的字串都成立。第二,在「非」正規性的證明裡你「無權」選 p;引理說的是「『存在』某個 p」,所以你得讓對手交給你一個未知的 p,再對那個任意值擊敗它。你只能掌控要用哪個長字串、以及用哪個幫浦次數來對付它。
若某語言由一台有 5 個狀態的 DFA 辨識,則 p = 5 可用:任何長度 ≥ 5 的被接受字串,都會在它的前 5 個符號內逼出一個重複狀態,因此可切成 xyz,其中 |xy| ≤ 5 且 y 可幫浦。
幫浦長度=DFA 狀態數,永遠是個安全的選擇。
p 是個「充分」的門檻,未必是「最緊」的——最小的幫浦長度可能比狀態數還小,而引理只保證「存在某個」可用的 p,從不保證最小值。在證明中,把 p 當成「給定且未知」來處理。
又稱
另見