可判定性與可識別性

可判定語言的封閉性(closure of the decidable languages)

當我們說某一類語言「對某運算封閉」時,意思是:從這一類裡任取一些語言,用該運算把它們組合起來,結果仍在這一類裡——這一類像一間密室,那些運算無法把你帶出去。可判定語言在這方面表現極好。因為判定器總會停機,你可以跑判定器、讀出它們明確的是非答案、再用普通邏輯自由地組合這些答案——而合成出來的機器仍然總會停機。

具體地說,可判定語言對所有常見運算都封閉:補集、聯集、交集、串接、以及 Kleene 星號。補集是最乾淨的示範:給定一台總會停機的 L 判定器,只要把它的接受與拒絕狀態對調;結果總會停機,且恰好接受非成員,所以補集可判定。聯集與交集:把兩台判定器一前一後地跑(都會結束),然後聯集就在「任一接受」時接受、交集就在「兩者皆接受」時接受。L1 與 L2 的串接:要測 w,試遍把 w 切成前段 u 與後段 v 的每一種切法(只有 |w|+1 種切法,一份有限清單),對 u 跑 L1 判定器、對 v 跑 L2 判定器,只要有一種切法成功就接受。星號類似,試遍把 w 切成若干段的所有有限切法。每一步都是在「總會停機的判定器」之上做有限量的工作,所以結果總會停機。

重點是:可判定語言構成一個對布林代數友善、完全對稱的類別——而它對補集的對稱性,正是與可識別類別的關鍵對比。因為判定器在兩個方向都給出保證的答案,把「是」和「否」對調是無害的。可識別語言『沒有』這項福利:它們對聯集、交集、串接、星號封閉,但『不』對補集封閉,正是因為識別器可能迴圈,你無法安全地把「永遠迴圈」翻成乾淨的「拒絕」。這一道不對稱,就是「永遠迴圈」這個可能性的指紋。

若 L1 = {偶數長度字串} 與 L2 = {全為 a 的字串} 都可判定,則它們的交集 {偶數長度且全為 a 的字串} 也可判定:跑兩台判定器(各自停機),只在兩者都接受時接受。L1 的補集(奇數長度字串)也可判定——只要把接受與拒絕對調。

總會停機的答案可以自由地對調與組合,包括取補集在內。

成敗關鍵在於對『補集』的封閉性。可判定語言擁有它(把判定器對調即可);可識別語言沒有,因為你無法把一個可能的無窮迴圈轉成乾淨的拒絕。

又稱
closure properties of recursive languageswhat decidable languages are closed under遞迴語言的封閉性