理論計算機初步 概率演算法和近似演算法

2021-06-27 19:41:11 字數 1395 閱讀 3502

已經提到了顯示中大多數難解問題問題最後都被證明是np-完全問題。這意味著,除非np=p,它們是不可能有多項式時間演算法的(而且,在

這篇文章提到即使np=p,人們也可能找不到乙個np完全問題的「有效」演算法)。

所以人們發展了各種工具來避開它們,最常用的兩種方法是使用概率演算法和近似演算法,這兩種方法也符合實際需要:在解決實際問題中,我們不需要結果絕對正確,也不需要結果絕對精確。

所謂概率演算法,就是在演算法的過程中引入隨機數,使得演算法在執行的過程中隨機選擇下乙個計算步驟。它最後可能導致結果也是不確定的。乙個結果不確定的概率演算法叫做monte carlo演算法,而總是得到準確解的概率演算法叫做sherwood演算法(乙個例子是引進隨機因子的快速排序演算法)。

為何引入隨機數能夠提公升計算效能(事實上,理論計算機學家還沒能證實隨機因子本質上更有效率——指具有指數級別的效率提公升),主要有下面兩個原因:

首先,通常乙個演算法,它對於很多種情況是比較快的,但對於某些「特別差」的輸入,它要找到乙個解則特別困難。引入隨機數之後,使得演算法的時間複雜度平均化了,然後算得更快(評價乙個隨機演算法的複雜性通常是考慮其平均複雜性)。

其次,對於monte carlo演算法,它的輸出是不精確的,這種犧牲使得演算法能夠在較短時間內完成。

需要指出的是,下面這個定理,使得乙個不那麼精確的monte carlo演算法亦有實際的效用的:

如果乙個判定問題的某個monte carlo演算法有2/3的正確機率(這個2/3可以替換成任何乙個大於1/2的數,當然小於等於1/2的隨機演算法一點意義都沒有,因為還不如拋硬幣),重複這個演算法k次,取出現次數更多的結果作為問題的答案,則這個答案的正確率大於1-1/2(8/9)^k。

上面的結果由於k出現在指數上,所以只需要將乙個monte carle演算法重複很少的次數,便能得到很高的準確率。

近似演算法從字面的意思來看似乎和上面的monte carle演算法差不多,其實它們的考慮物件是不一樣的,而且通常所指的近似演算法是確定型演算法。近似演算法多用在組合優化的問題,而不是判定性問題上。組合優化問題,指的是那些需要求最優解的問題,比如下面這個

旅行商問題

有n個城市,乙個推銷員要從其中某乙個城市出發,不重複地走遍所有的城市,再回到他出發的城市。問這個推銷員的最短路程。

對於這種問題,如果最短路徑是1000,而且我們能很快找到乙個1000.1的路徑,在實際運用中,我們還需要浪費巨大的計算資源去找那個1000的路徑嗎?近似演算法便基於此思想而來。

近似演算法指在解決優化問題中,最後得到的結果能保證在一定的誤差之內的演算法。

從近似演算法的角度來說,同為np完全問題,它們也有不同的可近似度。在多項式時間內,有些問題可以無窮小誤差的逼近,但有些問題卻連常數倍數之內的結果都沒法得到。

計算機理論課 技術和英語

如果將計算機理論課比喻為九陽神功 易筋經等絕世內功的話,那麼各種技術就可以比喻為獨孤九劍一類的外功,而英語則是一把神兵利器。計算機理論課是內功是決定你到底能走多遠的。技術是外功是決定你有多大的殺傷力 多強的。而英語則毫無疑問是一門強大的輔助工具能幫助你更好的學習理論和技術。九大基礎課 離散數學 數字...

計算機演算法和演算法複雜度

指基於特定的計算模型,旨在解決某一資訊處理問題而設計的乙個指令序列。實際應用問題 抽象數學描述 抽象關係描述與表達 建模 演算法的輸入 input 與輸出 output 的確定 演算法步驟的描述 演算法的確定性和可行性分析 演算法的有窮性 finiteness 和確定性 correctness 分析...

計算機網路和網路程式設計的理論介紹

什麼是計算機網路?計算機網路就是通過通訊設施 傳輸介質 網路通訊 協議把分散在不同地點的計算機裝置互聯起來,實現資源共享和資料傳輸的系統。因為計算機網路是個複雜的系統,所以將計算機網路實現的功能分到不同層次上,計算機網路體系結構是 計算機網路層次 協議的集合。什麼是網路程式設計?網路程式設計就是編寫...