1、引言
爲了回答諸如此類問題:哪些問題可以通過計算機解決?語言之間是否存在優勢?運行一個程序前,是否可以確定該程序將要停止(終止)還是永遠運行?用一種特定的語言解決一個問題需要多長時間?我們求助於一門學科:計算理論。
2、簡單語言
通過簡單語言可以看到計算機解決任何問題所需要最少語句是三條。它們是遞增語句,遞減語句和循環語句。
我們可以證明這種簡單的語言能模擬一些流行語言中的多個語句。我們把每個模擬稱爲一個宏,它可以在其他模擬中使用,而不需要重複編碼。
①簡單語言中的宏
②輸入和輸出
3、圖靈機
1圖靈機是用來解決可計算問題的。它是現代計算機的基礎。
2圖靈機由三部分組成:磁帶,讀/寫頭,控制器(有限狀態的自動機)
3對簡單語言的模擬:遞增語句,遞減語句和循環語句。
4圖靈機可以解決現代程序能解決的任何問題。
5邱齊-圖靈論題:
如果存在一個能完成一個符號操縱任務的算法,那麼也存在一臺完成這個任務的圖靈機。
4、歌德爾數
1在計算機科學理論中,一個無符號數能被分配給任何用特定語言編寫的程序,這個數通常被稱爲歌德爾數。
2表示一個程序爲數字
3翻譯一個數字成程序
5、停機問題
一個典型的編程問題:
我們能編寫一個程序來測試任何可以用歌德爾數表示的程序是否會終止嗎?
已經證明這樣的程序不可能存在,即停機問題是不可解決的。(可用反證法作爲非正式證明)
6、可解問題和不可解問題
1不可解問題
2可解問題:多項式問題和非多項式問題
①可解問題的複雜度
大O表示法
非多項式問題程序的複雜度遠比多項式問題複雜。