首頁  >  文章  >  最常用的五大演算法分別是什麼?

最常用的五大演算法分別是什麼?

青灯夜游
青灯夜游原創
2019-03-07 15:07:3871066瀏覽

常用的演算法有:1、分治法;2、貪心演算法,一種對某些求最優解問題的更簡單、更迅速的設計技術;3、動態規劃演算法;4、回溯法,一種選優搜尋法;5、分支限界法。

最常用的五大演算法分別是什麼?

最常用的五大演算法分別是:分治法、貪心演算法、動態規劃演算法、回溯法、分支限界法。

什麼是演算法?

演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。

可以這樣理解,演算法是用來解決特定問題的一系列步驟;演算法必須具備如下3個重要特性:

1、有窮性。執行有限步驟後,演算法必須中止。

2、確切性。演算法的每個步驟都必須確切定義。

3、可行性。特定演算法須可以在特定的時間內解決特定問題。

最常用的五大演算法

#分治法

分治法是把一個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題…直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併。

分治法所能解決的問題一般具有以下幾個特徵:

1)、 該問題的規模縮小到一定的程度就可以容易地解決;

2)、 該問題可以分解為若干個規模較小的相同問題,即該問題具有最優子結構性質;

3)、 利用該問題分解出的子問題的解可以合併為該問題的解;

4) 、該問題所分解出的各個子問題是相互獨立的,即子問題之間不包含公共的子子問題。

貪心演算法

貪心演算法是一種對某些求最優解問題的更簡單、更迅速的設計技術。

貪心法設計演算法的特點是一步一步地進行,常以當前情況為基礎根據某個優化測度作最優選擇,而不考慮各種可能的整體情況,它省去了為找最優解要窮盡所有可能而必須耗費的大量時間,它採用自頂向下,以迭代的方法做出相繼的貪心選擇,每做一次貪心選擇就將所求問題簡化為一個規模更小的子問題, 透過每一步貪心選擇,可得到問題的一個最優解,雖然每一步上都要保證能獲得局部最優解,但由此產生的全局解有時不一定是最優的,所以貪心算法不要回溯。

動態規劃演算法

動態規劃是一種在數學和電腦科學中使用的,用於求解包含重疊子問題的最佳化問題的方法。其基本思想是,將原問題分解為相似的子問題,在求解的過程中透過子問題的解求出原問題的解。動態規劃的想法是多種演算法的基礎,被廣泛應用於電腦科學和工程領域。

動態規劃方法通常用來求解最佳化問題,這類問題可以有很多可行解,每個解都有一個值,找到具有最優值的解稱為問題的一個最優解,而不是最優解,可能有多個解都達到最優值。

設計動態規劃演算法的步驟:

1)、刻畫一個最優解的結構特徵

2)、遞歸地定義最優解的值

3)、計算最優解的值,通常採用自底向上的方法

4)、利用算出的資訊建構一個最優解

動態規劃與分治法相似,都是組合子問題的解來解決原問題的解,與分治法的不同在於:分治法的子問題是相互獨立存在的,而動態規劃應用於子問題重疊的情況。

回溯法

回溯法(探索與回溯法)是一種選優搜尋法,依選優條件向前搜索,以達到目標。但當探索到某一步時,發現原先選擇並不優或達不到目標,就退回一步重新選擇,這種走不通就退回再走的技術為回溯法,而滿足回溯條件的某個狀態的點稱為“回溯點”。

其基本思想是,在包含問題的所有解的解空間樹中,按照深度優先搜尋的策略,從根結點出發深度探索解空間樹。當探索到某一結點時,要先判斷該結點是否包含問題的解,如果包含,就從該結點出發繼續探索下去,如果該結點不包含問題的解,則逐層向其祖先結點回溯。

分支限界法

分枝界限法是一個用途十分廣泛的演算法,運用這種演算法的技巧性很強,不同類型的問題解法也各不相同。

分支定界法的基本思想是對有約束條件的最優化問題的所有可行解(數目有限)空間進行搜尋。演算法在具體執行時,把全部可行的解空間不斷分割為越來越小的子集(稱為分支),並為每個子集內的解的值計算一個下界或上界(稱為定界)。在每次分支後,對凡是界限超出已知可行解值那些子集不再做進一步分支,這樣,解的許多子集(即搜索樹上的許多結點)就可以不予考慮了,從而縮小了搜尋範圍。這個過程一直進行到找出可行解為止,該可行解的值不大於任何子集的界限。因此這種演算法一般可以求得最優解。

以上是最常用的五大演算法分別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn