可計算性總結

2021-04-29 15:56:36 字數 1678 閱讀 6000

能夠想到的

圖靈機形式簡潔且功能強大,但是圖靈機形式化表示乙個演算法非常複雜,lambda演算則通過考察函式給出了計算的純數學表示,使人折服於這簡單之中蘊含的深刻哲理與美。α等價、β規約、

等價,層層的抽象,劍指問題本質——最簡潔的數學表達。大而至道的理論研究我輩不敢觸碰,通過理論學習指導實際中的程式設計可謂是現實之需。

從過程到物件、泛型到函式式程式設計、元件利用、敏捷開發無不體現著程式設計者對快速高效軟體開發的孜孜以求。大量訓練程式編寫或許只是做出好的軟體的乙個基本要求,能否實習部分到整體的完美拼接是更高的乙個要求。求解乙個問題將其轉化成為乙個模型,抽象、抽象再抽象。如何能夠實現更好、更合理的抽象呢?再大的機器也是又小的齒輪組合起來的,抽象從小做起,從函式、資料結構做起。

基本操作(算數運算)到復合操作,再到過程,過程可以是遞迴的也可以是線性迭代的。再抽象出高階過程,過程作為引數,過程作為返回值。基本資料到復合資料再到物件,越來越抽象的資料,在lambda演算中以函式為中心的定義中,資料甚至不需要有結構,只是用函式就可以實現,更進一步,基本資料都可以表示為函式(還記得上課時的boolean變數的表示嗎),舉乙個二元組的例子:

(define (cons x y)) (define (dispatch m) (cond ((= m 0) x) ((= m 1) y)dispatch)

(define (car z) (z 0))

(define (cdr z) (z 1))

,在這個全部都是函式的操作的資料結構定義了,資料本應該具有的結構消失了,取而代之的是函式的操作(過程)。

追求智慧型的本源產生了哲學,追求解決問題的方法產生了計算,什麼是機器可以計算的,機器的侷限在那裡,church-turing論題說明演算法是可數的,每乙個演算法對應乙個圖靈機,但是大千世界問題的集合是演算法集合的超集,不能夠找到演算法的問題要遠遠多於能夠解決的問題,而能夠找到演算法的問題中,難解的問題佔絕大多數,就像淡水一樣,真正能夠利用turing機在現實意義下解決的問題是佔少數的,認識到這個使工程師們認識到計算機的侷限性,不必消耗大量的時間精力去求解不能解決的問題。

也許學習理論計算模型對程式設計實踐沒有什麼幫助,當我們使用電腦時,就像不會把人看作是各種原子的結合一樣,有誰會把它看作一條紙帶,乙個讀寫頭在咔咔作響的移動,然而真理擺在眼前,當我們有機會觸及它的時候,為什麼要選擇不呢。從集合出發,二元關係派生出函式,從最簡潔的三條指令的程式的模型出發形式化的定義了可計算的概念。可計算函式與部分可計算函式、遞迴集與遞迴可列舉集、可判定與可識別這些不同計算模型下的等價定義體現著計算理論的本質概念。當我們做文字編輯的時候想到的是自動機,做程式語言程式設計的時候想到的是cfg,這些比之圖靈機計算能力遜色很多的計算模型可以完成如此複雜令人驚嘆的任務,基於儲存程式式的計算機可以看成是lba,讓我無時不刻的感慨理論的強大之處,任何生命力強大的工程產品都不是憑空想象的,必然要有雄厚理論做基礎。

康托發明了偉大的對角線證明方法,然而就是這個方法也有其侷限性;哥德爾證明一階算數系統的不完備性,這些說明再強大的機器也有其所不能解決的問題。現實的意義是圖靈機能夠幫助我們解決什麼問題,計算複雜性理論的研究很好的解釋了這個問題,多項式時間是能夠容忍的,多項式空間的許多計算在你我有生之年都計算不出乙個結果。理論上的乙個安慰是如果我們能夠找到乙個

npc的多項式演算法,那麼所有

np問題都可以多項式單帶圖靈機求解。乙個形式簡單的擴充套件

就變成指數空間的,在不可數的所有語言集合中,我們究竟能夠分析出多少種性質來能夠說的清楚嗎?

20120918 可計算性

程式特性規定 1 程式開始執行時,自認為一切變元的值為0 2 轉向無定義符號,執行程式的最後一條指令 時 自動認為停機 y x 3 y x 1 y x 1 y x 1 y x n x 0 x x 1 y x1 x2 y x1 b to a if x2 0 to e a x2 x2 1 y y 1 t...

信用的可計算性

區塊鏈是作為位元幣底層技術與基礎架構而誕生的。位元幣是乙個可以點對點進行支付 不依賴任何第三方的電子現金系統。借助密碼學技術,位元幣的發明者中本聰構造了乙個極為巧妙的經濟系統,解決了在去中心化的結構 下,如何創造乙個可信的價值傳輸系統這個難題。夏農作為資訊理論的開創者,解決了 如何用數學方法定義資訊...

使用者可計算型出題程式

此次程式是對上次程式的再次開發,我將自己視作另乙個在開發者,在對自己前面程式進行再次審視時,有了別樣的感受,自己寫的程式,一定要為別人 也有可能是自己 留一條活路。閒話不多說,進入大家最喜歡的 環節。要求 每個同學選乙個方向,把程式擴充套件一下讓程式能接受使用者輸入答案,並判定對錯。最後給出總共對 ...