五大常用演算法
#1、貪婪演算法
貪婪演算法可以取得到問題的局部最優解,不一定能取得到全局最優解,同時取得最優解的好壞要看貪婪策略的選擇。特點就是簡單,能取得局部最優解。就像打狗棍法,同一套棍法,洪七公和魯有腳的水平就差太多了,因此同樣是貪婪算法,不同的貪婪策略會導致得到差異非常大的結果。
2、動態規劃演算法
當最佳化問題具有重複子問題和最佳子結構的時候,就是動態規劃出場的時候了。動態規劃演算法的核心是提供了一個memory來快取重複子問題的結果,避免了遞歸的過程中的大量的重複計算。動態規劃演算法的困難在於怎麼將問題轉化為能夠利用動態規劃演算法來解決。當重複子問題的數目比較小時,動態規劃的效果也會很差。如果問題存在大量的重複子問題的話,那麼動態規劃對於效率的提升是非常恐怖的。就像鬥轉星移武功,對手強它也會比較強,對手若,他也會比較弱。
3、分治演算法
分治演算法的邏輯更簡單了,就是一個詞,分而治之。分治演算法就是把一個大的問題分成若干個子問題,然後在子問題繼續向下分,一直到base cases,透過base cases的解決,一步步向上,最終解決最初的大問題。分治演算法是遞歸的典型應用。
4、回溯演算法
回溯演算法是深度優先策略的典型應用,回溯演算法就是沿著一條路往下走,如果此路不同了,則回溯到上一個
分岔路,在選一條路走,一直這樣遞歸下去,直到遍歷萬所有的路徑。八皇后問題是回溯演算法的一個經典問題,還有一個經典的應用場景就是迷宮問題。
5、分支限界演算法
回溯演算法是深度優先,那麼分支限界法就是廣度優先的一個經典的例子。回溯法一般來說是遍歷整個解空間,取得問題的所有解,而分支限界法則是取得一個解(一般來說要取得最優解)。
推薦教學:《PHP教學》
以上是五大常用演算法的詳細內容。更多資訊請關注PHP中文網其他相關文章!