分支限界法:以廣度優先方式系統搜索問題的解
- 在問題的解空間樹中,按廣度優先策略,從根節點出發搜索解空間樹
- 求解目標:找出滿足約束條件的解
- 可行解或最優解
- 搜索策略
- 根據限界函數值,剔除那些導致不可行解或非最優解的子結點,使搜索過程僅限制在剩余的分支內進行
- 適用於組合優化問題
分支限界法的基本思想
分支限界法 VS 回溯法
-
相同點
- 兩者在進行問題求解前,都需要完成解空間的定義和組織
- 都是通過在解空間搜索來尋找問題的解
-
不同點
- 搜索方式:
- 回溯法->深度優先,
- 分支限界法->廣度優先
- 搜索策略:
- 回溯法:根據剪枝函數,選擇下一個擴展結點並按深度優先方式進行搜索
- 分支限界法:在擴展結點處,先產生其所有的子結點(分支)(所有結點只有一次機會成為當前擴展結點),然后根據限界函數,確定哪些子結點將導致不可行解或非最優解,將這些子結點剔除,用剩下的子結點構造當前的活結點表,然后從該表中取一個結點作為當前擴展結點,並重復上述過程。
- 搜索方式:
分支限界法的主要分類
- 根據從活結點表中選擇下一個擴展結點的方式分類
- 隊列式FIFO分支限界法
- 優先隊列分支限界法
實例分析
背包問題
- 實例分析:
n=4的背包問題
重量w = [2, 3, 4,7]
價值p = [1, 3, 5,9]
限制重量b = 10
-
代價函數的設定(代價函數的設定僅會影響分支限界法的效率)
vk+1/wk+1 是選擇后下一個單位重量價值最大的物品,代價函數即為計算最大有可能得到的價值。
界即為當前最優的解,與代價函數進行比較進行裁剪
預處理,先將物品按單位重量的價格從小到大依次排序
小結
-
分支限界法的基本思想
- 與回溯法的聯系與區別
- 兩種主要的分支限界法:隊列式、優先隊列式
- 代價函數與界的概念
-
利用分支限界法求解問題的方法
PS: 本節內容偏於設計,於《算法導論》中無本章節,用於補充