NCTU
, Formal Language
, Theorem of Computation
為了要證明 是 decidable,
先說明 acceptance problems for ( 在一個特定的 上檢測特定字串 是否 accept ),可以以 language 的方式來呈現,即 is a that accepts input string
所以上述問題等同於判斷 是否成立。
回到 是否 decidable 的問題,其若且唯若 是否 decidable 。
Decidable 指的是是否存在一個 可以決定
這個語言,且不存在 infinite loop。
當存在一個演算法可以判斷這個問題即表示找到此
上述的說明可以推廣成 whether the laguage of a finite automaton is empty( ) and whether two finite automaton are equivalent( )是不是 decidable
結論:如果能夠找到一個演算法,能夠使得 acceptance problem 可解,即代表此問題為 Turing recognizable,且因為找到的演算法不具 infinite loop 所以又稱為 Turing decidable
演算法舉例在課本有
證明方法和 Regular 一樣,皆是找出一個演算法。
其中的 proof idea 我覺得比較有趣的地方是,當判斷一個 是否屬於一個 的時候,若從 開始展開,過程中如果出現 即代表 ,這個方法看似沒問題,但在考慮 的時候上述方式卻會進入 infinite loop,那麼就代表 是 Turing recognizable 而不是 decidable?
解法,先將轉換成 CNF,根據 CNF 的性質,長度為 n 的 ,最多只需要 個 steps 就能找到,依照這個特性設計的演算法就不會陷入 infinite loop 的窘境,故 是 decidable
is not decidable
電腦看似強大到每種 problem 都可解,但是仍然存在 unsolvable problem,舉例來說,去設計一個演算法來判斷一個演算法是否正確,像是課堂作業要求學生實作排序演算法,老師助教們需要去判別學生所實作的 sort algorithm 是不是在 any inputs 之下都會正確運作。
此種問題可以看成是一個 language,即
is a and accepts
而 僅僅只有 Turing-recognizable。
那是因為目前不存在有比 更強大的計算模型去包括 本身 ( 像是 就可以用 去 simulate ) 或是設計出有效率的方式能找到推演方法(像是 存在 去避免進入 infinite loop ),所以當輸入一個 會 infinite loop 的 負責模擬 的 可能會進入 infinite loop。
的數量可以用所有 alphabet 的組合來表示 ( i.e. ),
Language 的數量可以用 的 power set 來表示 ( i.e. )
其中 是 countable infinite set,但 是 uncountable infinite set,所以 Language 的數量遠大於 的數量。
證明在課本有,使用對角線證明。
用 來模擬的話,類似邏輯謬論( 一位理髮師只幫不剪自己頭髮的人理頭髮,試問理髮師會不會理自己的頭髮 )
Undecidable 具有一個特殊的性質,即
A language is decidable iff it is Turing-recognizable and co-Turing-recognizable
其中我覺得關鍵是 Every string is either in or ,
因為在 simulate 上的 中所接受的 input 是 Language ,every language is not either in or ,
不像在 simulate or 中的 接受的 input 是 string ( )。
最後我們可以用上述性質來證明 不是 decidable,因為 不是 decidable
is undecidable
is undecidable
is undecidable
是 的一種變形,多了 tape 長度的限制,舉例來說,當 input length 為 n 的時候,tape ( memory ) 長度只需要 n 的線性大小即可,因得其名。
上述性質可以使得 是 decidable!
因為最多只需要經過 個 steps 就能得知是否 ( i.e. never have infinite loop )
如何 check computation history 的步驟課本有
( i.e. ) 如何 check 不生成特定 computation history 的步驟課本有
hints that is undecidable and is not turing-recognizable.
Note that , and is not turing-recognizable, so is X.