丘奇-圖靈論題

Mr.P發表於2014-01-23

最近徘徊在計算機的世界當中,試圖尋找出自己想要一輩子追求的某一領域。以前所學習過的計算機知識一個接著一個回想在腦海中,慢慢的我開始對計算機的本質、內容進行追究。對於計算機的本質,我所能夠了解到的:首先,它是一種自動化的裝置;其次,它是在演算法的控制下自動的執行,因此也可以稱其為演算法機器;再次,對於何為演算法?直覺上的演算法到底能不能夠精確定義?這些問題開始困擾著我;最後,我不想思考超出演算法的存在:超計算,僅僅將思維限制在演算法的框架內。

很顯然,我們創造機器的目的就是解放我們的肉體,擴充套件我們的智慧;但是這種演算法機器我們還知之甚少:何為演算法?直覺上的演算法到底能不能夠精確的完全定義?當我開始思考這些問題之前,我要先講述一下另一個於此相關的問題:演算法的三種結構:順序、選擇、循壞能夠表示所有的演算法嗎?有些資料直接說這個問題的肯定答案是已經證明了的,這讓我不得不說:作者太不嚴謹了。我只需指出一點,就可以反駁它:請問所有的演算法,當然包括直覺上的演算法,你能夠證明你的定義能夠精確的明確這些所有的演算法嗎?不能,圖靈也不敢說,我已經證明了它,而只是猜想:我給出的圖靈機模型可能就是演算法的精確定義,即丘奇-圖靈論題。那麼關於演算法的精確定義都沒有肯定,只是猜想,儘管這個猜想已經被普遍接受,但仍有直覺上的想法難以形式演算法給出;你怎麼就能說我已經證明了這三種演算法結構能夠表示出任何演算法,因為你對何為演算法的精確定義還不是絕對的肯定,你又怎麼知道三種結構就能夠表示出尚未確定的演算法呢?因此這裡先對一些概念問題闡述一下,使接下來的思考更加嚴謹。

我們通過可計算函式這一概念,可以使直覺上的演算法概念更明確。函式它是這樣一種關係:對於輸入值,經過演算法的操作對應於唯一的輸出值,即輸入值與輸出值關於演算法的一種對應關係,這個對應關係就是演算法;可計算的函式就是總能夠有演算法描述這種對應關係的函式;不可計算函式就是沒有演算法描述這種對應關係的函式。為了避免混淆,在這裡我同時也闡述下演算法的特徵,也可稱之為不太精確的定義:一、有零個或以上的輸入量:二、有一個或以上的輸出量;三、步驟確定不二、有限、可執行。再解釋下:這裡很容易把函式與演算法的概念混淆:可計算函式是不是就是演算法,演算法就是可計算函式?其實完全不是一回事:函式就是一種輸入與輸出的一種對應關係,這種對應關係可能可以演算法給出,也可能不能給出;但你會發現兩者很容易混淆:都有輸入量與輸出量的特徵,這一點就讓人感到函式與演算法就是一回事。不過這裡的輸入輸出是一樣的,函式講究的是對應關係,是輸入與輸出的關於演算法的對應;演算法講究的是操作物件,這些物件可能是演算法開始時的物件,也可能是在演算法過程中輸入的物件,沒錯在上面關於演算法的定義當中的輸入指的就是演算法過程中還沒在剛開始給出的物件的輸入,而演算法剛開始時的操作物件不是這個輸入,因為這個輸入可以是零個,如果沒有操作物件也就沒有演算法,所以演算法定義中的輸入指的是除去演算法剛開始時,在演算法的過程中需要輸入的物件。同樣的輸出也不是指演算法結束時的輸出,因為根據定義演算法有一個或以上的輸出,它可能在演算法的過程中就輸出一個已經操作完畢的物件。因此上面所說的關於函式與演算法的輸入與輸出是一樣:函式的輸入就是演算法開始及在過程中的操作物件;函式的輸出是唯一的,因此就是演算法結束時所有操作物件的最終狀態。這裡再一次的闡述了可計算函式與演算法的概念及其區別,接下來才要進入正題。

丘奇-圖靈論題:任何可計算函式都是圖靈可計算函式。也就是說,圖靈機可以執行任何演算法,精確定義了圖靈機就是精確定義了演算法,但我前面已經闡述了,這只是個猜想,不過它已被普遍接受了;值得指出的是,有些直覺上的演算法還是難以用形式化演算法描述,不過這並不是說不能給出,但也不能說能夠給出,只能像這個論題一樣,只是猜想的程度。猜想並不能代表我們就徹底不要去相信它,相反的這個猜想能夠解釋大部分的現象,只有部分現象還要琢磨,因此,由於這個猜想的重大意義,選擇相信它所帶來的好處是巨大的,相反,如果徹底杜絕相信這一論題,那麼也並不代表我們就不能設計程式,只不過有些問題不太確定能不能用演算法給出而已。總結起來,無論我們是否相信這個猜想,對設計程式沒多的影響,但是對探究自動化機器就有一定的影響了,因為它必須在演算法的控制下。

相關文章