我們的很多程序的目標(biāo)都是問題求解鸽捻,如:
計算兩個變量的和;
預(yù)測世界杯冠軍隊泽腮;
進行導(dǎo)航路線規(guī)劃御蒲;
當(dāng)考慮這部分目標(biāo)時,簡單的情形是我們一眼便能判斷出一個問題有沒有確切的算法得出結(jié)論(經(jīng)典程序)诊赊;復(fù)雜的情形是厚满,我們需要計算機程序經(jīng)過多輪迭代才能得到最終的結(jié)果(就好像你現(xiàn)在不知道自己能不能實現(xiàn)財富自由一樣,你需要走一步看一步)碧磅。
計算機的早期先驅(qū)們(一幫數(shù)學(xué)家)YY了一種機器碘箍,能夠求解各種問題遵馆。但在他們動手造這個機器前,要先想清楚丰榴,這個想法是不是違反邏輯的货邓。如果開始的命題就是違反邏輯的,那他們才不會去真的造這機器四濒。
從數(shù)學(xué)的角度看换况,一切問題都可以通過計算機求解嗎?
這個問題可以轉(zhuǎn)化為:一切問題盗蟆,都可以通過有限次的計算得到結(jié)果碼戈二?
用程序員的語言描述為:在進行問題求解時,能否完全避免出現(xiàn)死循環(huán)喳资?或者說觉吭,是否存在一種通用的方法,檢測一個程序是一個死循環(huán)程序骨饿?
是否存在一種通用的方法亏栈,檢測一個程序是一個死循環(huán)程序
這個抬杠程序就無法被檢測出是否會停機
一個抬杠的程序
如果檢測程序說會停機,抬杠程序?qū)嶋H不會停機
如果檢測程序說不會停機宏赘,抬杠程序?qū)嶋H會停機
結(jié)論:不存在這樣一個程序(算法)绒北,它能夠計算任何程序(算法)在給定輸入上是否會結(jié)束(停機)
以上討論,即圖靈的停機問題察署。