演算法設計與分析課堂筆記(3)搜尋優化策略

2021-10-05 06:53:40 字數 734 閱讀 4115

best-first法

分支界限法

a*法總結

我們最常見的bfs和dfs是搜尋演算法的基礎,bfs是以廣度方向不斷延伸邊界進行擴充套件,而dfs則是沿深度方向直指最終結果。二者分別有著特定的生長規律,使得遍歷能夠有序的進行,但是在延伸時還是缺少一些啟發式的選擇。二者因此也可以被認作是一種暴力窮舉,還有很大的優化空間。

本文主要說明基於bfs和dfs基礎上的四種主要的搜尋優化策略,包括爬山法、best-first法,分支界限法以及a*法。這些方法有些可以相互組合,從而達到更好的效果。基本上的思想一樣可以概括為2點:

後面我們會講到,a*法配合best-first法由於能夠直接找到最優解,因此既可以說是「盡快找到最優解」,也可以減少對非最優解的搜尋。

在dfs過程中,當遇到有多個結點可以延伸時,(當最優解作為可行解的代價最小時)首先擴充套件代價函式最小的乙個結點。

根據乙個評價函式,在目前產生的所有結點(邊界)中選擇具有最小代價函式值的結點進行擴充套件。

通過利用優化解的乙個界限,縮小後續需要操作的解空間,提高求解的效率;

通過特定的選擇策略,使得當搜尋利用best-first策略進行搜尋時,能夠保證第一次得到的可行解即為最優解。詳情以及證明見百科。

以上方法都是對搜尋分支的選擇提供不同策略以及對代價函式的選取提出特定要求;使用時都可以融匯貫通,尤其是分支界限法,若選取的好,可以做得比設計更精妙的演算法還要好。

演算法設計與分析課堂筆記(2)攤還分析

核分析勢能分析 總結當我們在設計乙個資料結構時,評估乙個資料結構操作的複雜度可能會成為乙個問題 考慮這樣一種情況 資料結構中特定操作的複雜性很高,但是實際用到的機會不多,所以和其他操作的複雜性 平攤 一下,從整體上講該資料結構使用起來複雜性就降低了。因為資料結構上的操作相互之間可能是有關聯的。不考慮...

演算法設計與分析課堂筆記(1)現代優化演算法

工程領域內存在大量的優化問題,這些優化問題難以求解的原因 搜尋空間的可能解數目太多以至於無法採用窮舉搜尋法尋找最優解 簡化模型得到的結果往往是沒有實際意義的 脫離眾多現實因素 階被嚴格限制,以至於找到乙個可行解都很難,遑論最優解 很多時候採用自然界最樸素的策略來應對這些問題,反而能夠得到不錯的結果。...

演算法設計與分析 實驗3

一 實驗目的和要求 學習程式設計實現深度優先搜尋狀態空間樹求解實際問題的方法,著重體會求解第乙個可行解和求解所有可行解之間的差別。加深理解回溯法通過搜尋狀態空間樹 同時用約束函式剪去不含答案狀態子樹的演算法思想,會用蒙特卡羅方法估計演算法實際生成的狀態空間樹的結點數。二 實驗環境 實驗裝置 vsia...