演算法课程AlgorithmsCourse8回溯分枝与限制Backtracking.PPT

演算法课程AlgorithmsCourse8回溯分枝与限制Backtracking.PPT

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演算法课程AlgorithmsCourse8回溯分枝与限制Backtracking

Algorithms (Dr. Shi-Jay Chen, National United University) Course 8 回溯、分枝與限制 Backtracking, Branch-and-Bound ▓ Outlines 本章重點 求解Optimization Problems Backtracking vs. Branch and Bound Backtracking Branch and Bound ▓ 求解Optimization Problems 若以暴力演算法來求算最佳化問題,對於有n個輸入項目的最佳化問題 (X1, X2, …, Xn): 有些被歸類為 “部份集合(Subset)” 問題,則會有2n種可能的情況 如:部份集合之和 (Sum of Subset)問題、0/1背包問題…等 有些被歸類為 “排列(Permutation)”問題,則會有n!種可能的情況 如:N皇后(N-Queen)問題、旅行銷售員問題(Traveling Salesman Problem; TSP)、漢米爾頓迴路(Hamiltonian Circuits)問題、圖形著色(Graph-Coloring)問題…等 上述問題若以暴力法來解,皆屬指數複雜度的問題,若可採用最佳化原則,通常可以將這一些問題的複雜度由指數複雜度降為多項式複雜度。 Dynamic Programming 和 Greedy Approach所能處理的最佳化問題需滿足最佳化原則: 最佳化原則(Principle of Optimality):?當一個問題存在著某個最佳解,則表示在此最佳解中,也必存著該問題之所有子問題的最佳解 此類問題可利用 “貪婪法則” 或 “動態規劃” 來設計演算法 然而,並不是所有求最佳化的問題都合乎最佳化原則,此時就只能用其它的方法求解了。 ▓ Backtracking vs. Branch and Bound 對於具有限制的最佳化問題,除了可以採用 “貪婪法則” 或 “動態規劃” 來設計演算法則之外,若問題不具有 “最佳化原則”時,可考慮採用回溯(Backtracking)或分枝與限制(Branch and Bound)之解題策略。 這兩種解題策略均是將問題的所有可能解答,表示成一個稱為狀態空間樹 (State Space Tree) 的樹狀結構。接著, 回溯策略採用 “深先搜尋法” (Depth-First Search; DFS) 對狀態空間樹中每一個節點進行檢查 分枝與限制策略採用 “廣先搜尋法” (Breadth-First Search; BFS) 對狀態空間樹中每一個節點進行檢查 上述的兩個策略,皆透過 “邊界函數” (Bounding Function) 來刪除一些不必要的子樹搜尋動作,以提昇搜尋效率。 解答空間 (Solution Space) 每個問題通常都可為其定義一個解答空間 (Solution Space): S = { (X1, X2, …, Xn) ; (X1, X2, …, Xn)為滿足問題的所有解} 這個空間必須至少包含該問題的一個解答,而這個解答也可能就是一個最佳解。 以具有n個商品的0/1背包問題來說,其解答空間是由2n個可能解答所構成;每一個可能解為n個 0 或 1所構成之集合,這個集合表示 “對所有商品Xi分別指派0和1的可能方法” 若有3個商品 (n=3),其0/1背包問題之解答空間共有2n = 23 = 8個可能解: S = {(0, 0, 0), (0, 0, 1), (0, 1, 0), (0, 1, 1), (1, 0, 0), (1, 0, 1), (1, 1, 0), (1, 1, 1)} 為了方便搜尋解答空間,我們可以將解答空間組織化,其中最典型的組織方式是樹狀結構,又稱狀態空間樹 (State Space Tree) 狀態空間樹 (State Space Tree) 某些問題的解答,可以產生樹狀結構來列舉所有可能的答案組合。任何一條從樹根節點到葉節點的路徑就是一個可能的答案,這個樹狀結構也因此稱為狀態空間樹(State Space Tree)。 下圖是3個商品的0/1背包問題之狀態空間樹: 由上圖可知,如果是有n個輸入項目的排列問題或是部份集合問題,則狀態空間樹所有可能的狀態個數(即:葉節點個數)分別為n!或是2n。 因此,回溯和分枝與限制的設計策略中,會加入使用邊界函數來決定是否需要繼續搜尋後續的狀態空間,以去除不必要的子樹搜尋。若: 當搜尋到 “不可行” 的節點 (即:課本所指的沒前途(nonpromising)節點) 時,則不用再去搜尋該節點以下之所有分枝節點。 此即為修剪 (Pruning) 當搜尋到 “可行” 的節點 (即:課本所指的有前途(promis

文档评论(0)

fengruiling + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档