不可判定性與停機問題
非平凡語言性質(nontrivial language property)
在 Rice 定理中,「非平凡」一詞承擔著重任,而它有一個值得釘清的精確而狹窄的意義。語言的一個性質是你套用在字串集合上的是非測試:「它是空的嗎?」「它含有 hello 嗎?」「它有限嗎?」。當這個性質「並非對每個可識別語言都給同一答案」時,就稱它為非平凡的——也就是說,至少有一個可識別語言通過測試,也至少有一個不通過。平凡則相反:測試對每個語言都給同一判決,因此不帶任何資訊。
恰好有兩個平凡性質,而它們都很容易判定,這正是 Rice 定理必須把它們排除的原因。一個是恆真性質:「L(M) 是可識別語言」對每台機器都為真,所以判定器只要印「是」。另一個是恆假性質:「L(M) 不是可識別語言」對每台機器 M 都為假(依 M 的定義其語言可識別),所以判定器印「否」。兩者都不告訴你關於某特定機器的任何事,而它們之所以可判定,正是因為答案從不取決於 M。
其餘每個性質——那些真正能把某些機器與另一些區分開的性質——都是非平凡的,而 Rice 定理使它們全部不可判定。空性是非平凡的,因為有些機器識別空語言、有些不識別。有限性、正規性、含有某特定字串:全都非平凡,全都不可判定。結論很鋒利:一旦某個行為性質有趣到能把一個程式的行為與另一個區分開,一般而言就沒有演算法能判定它。
「L(M) 是空的嗎?」是非平凡的:拒絕一切的機器語言為空,接受一切的機器則不為空。相對地,「L(M) 是可識別語言嗎?」是平凡的(永遠為是),因此可判定,因此不在 Rice 定理的射程內。
非平凡=有些可識別語言具有它、有些不具有;只有這類性質才會被 Rice 定理擊倒。
「非平凡」是相對於「可識別語言」來判斷,而非相對於一切可想像的字串集合。那兩個平凡性質是僅有的漏網之魚,且兩者都可判定。
又称
另见