Course 8 回溯、分枝與限制 Backtracking, Branch-and-Bound

Slides:



Advertisements
Similar presentations
1 曾老師、各位同學大家好 ! 首先自我介紹 ; 個人聯合大學電機系 畢業,服完兩年兵役後, 75 年開始就 業 ; 四年內換了幾個工作, 79 年創立貿 特科技, 90 年、 91 年分別於大陸寧波 與昆山設立特一電子與柏特電子,經 歷 20 年的工作磨鍊,今天事業上算是 穩定、成熟 ! 承蒙曾老師看重,利用一.
Advertisements

中正國中 特教組長 粘玉芳 校內分機 : /02/21. 下列條件擇一: 一、身心障礙手冊 二、特殊教育學生鑑定及就學輔導會證明.
示範課 -- 作文立意. 重溫作文構思課  構思嘗試深化  多角度思考  宜先剖析題目, 運用聯想, 循序漸進擴大範圍, 然後歸納材料, 定訂主題  同學的作品, 反映部分能夠掌握, 主線清晰, 層 層深入, 舉例恰當  但有部分同學只有枝葉, 欠缺主線, 更無中心思 想, 反映立意不足.
幼教人員法律事件探討 ─ 幼兒教育及照顧法 姚其壯 第一章 總則〈第一條至第六條〉 第二章 幼稚園設立及其教保服務 〈第七條至第十四條〉 第三章 幼稚園組織與人員資格及權益 〈第十五條至第二十八條〉 第四章 幼稚權益保障 〈第二十九條至第三十三條〉 第五章 家長之權利與義務 〈第三十四條至第四十條〉
畫面中的兩個人要去參加金融業儲備幹部的面試 活動,你認為誰的面試穿著是正確的? V.S 動動腦 V.S 動動腦 慎重 讓人感到 尊重 輕便 讓人聯想 隨便 畫面中的兩個人要去參加金融業儲備幹部的面試 活動,你認為誰的面試穿著是正確的?
高考心理辅导  福建中医药大学  林山  高考是什么?  真有那么 “ 苦大仇深 ” ?  为什么不能是 “ 快乐挑战 ” ?  高考(事) --- 认知(怎么个事 - 压力大小) --- 情绪反应(烦躁、焦虑、害怕 VS 自信、 从容、期盼) --- 行为表现(发挥正常.
大陸學歷採認相關問題 楊景堯 淡江大學中國大陸研究所. 學歷採認的定義與範圍 廣義的定義 — 承認學歷 狹義的定義 — 具備任職, 任教, 考試資格 範圍 — 高等教育為主 台灣人取得大陸學歷的採認 大陸人取得大陸學歷的採認 外國人取得大陸學歷的採認.
社工之路的通行證 --- 社工師證照 考試心得分享 東吳大學社工系碩一 呂錦綸. 一、考前準備 閱讀主流老師的書籍、掌握各科概要。 閱讀主流老師的書籍、掌握各科概要。 重視概念性的知識,打好基礎是很重要低 ~ 重視概念性的知識,打好基礎是很重要低 ~ 是必備讀物 ! 是必備讀物 ! 勤作考古題,參考當年度碩士班考試及高.
心理学辅导.
窦娥冤 关汉卿 感天动地 元·关汉卿.
兩岸融合教育之議題: 以東莞台商子弟學校為例
第二节 时间和位移.
小綠葉蟬的『祕蜜』~ 蜜香烏龍茶.
個人投資理財與策略 富蘭克林:邱良弼.
穿越迷雾,读懂全球化经济本质 谈美国次贷危机与人民币升值问题.
教育部 試辦中小學 教師專業發展評鑑基本概念 台中教育大學 徐照麗.
第三章 魏晉南北朝的分合.
移民與文化--鄉愁的想像 王婉甄.
2008年3月8日 順德聯誼總會何日東小學上午及下午校
葉金源臨床心理師 台南市臨床心理師公會理事長 台南市社區大學生命與健康學程講師 台南縣家庭教育中心審查委員 台南地方法院家事調解委員
愛的勝利 (羅馬書 8:31-39).
老 子 《道德經》 明代張路 老子騎牛圖.
知其不可而为之.
莊子思想 vs. 存在主義 M111甲孝 陳昕慧  指導老師:李開濟教授.
理學大師周敦頤 ※原名敦實,因避宋英宗諱改名敦頤,字茂叔 。道州營道(今湖南道縣)人。
執行業務所得 結算申報講習會 1.
中国画家协会理事、安徽省美术家协会会员、 工艺美术师、黄山市邮协常务理事余承平主讲
《高级人工智能》参考书目 马少平,朱小燕。人工智能。清华大学出版社。 蔡自兴,徐光祐。人工智能及其应用。清华大学出版社。
你行,她也行 參賽組別:數位簡報類 作品名稱:你行,她也行 參賽學校:南市東區勝利國小 作者姓名:杜玥潾、謝舒惠.
時間:102年9月18日(星期三) 地點:國立臺灣師範大學綜合大樓509國際會議廳
第三讲:辛亥革命 ——近代中国的第一次历史性巨变
资本主义时代的曙光 文艺复兴(人的发现) 一、时间:14-16世纪 地点:从意大利兴起,蔓延整个西欧 核心:人文主义(核心指导思想)
第十一章 真理与价值 主讲人:阎华荣.
鸦 片 战 争.
汉字的构造.
诵读欣赏 古代诗词三首.
第三章 認識現金流量表與股東權益變動表.
第七章 固 定 资 产.
首次执行企业会计准则操作指南 主讲人:陈清宇.
指導教授:溫嘉榮 博士 報 告 人:陳以諾 學 號 :M
贴近教学 服务师生 方便老师.
六年级 语文 下册 第四单元 指尖的世界.
(浙教版)四年级品德与社会下册 共同生活的世界 第四单元 世界之窗 第二课时.
行政院國軍退除役官兵輔導委員會 嘉義榮民醫院.
計算方法設計與分析 Design and Analysis of Algorithms 唐傳義
Chap5 Graph.
SAT and max-sat Qi-Zhi Cai.
Chapter 6 Graph Chang Chi-Chung
Graph 2 Michael Tsai 2012/5/1 連載: 學生上課睡覺姿勢大全
Course 9 NP Theory序論 An Introduction to the Theory of NP
Simulated Annealing 報告者:李怡緯 OPLAB in NTUIM.
第3章 整数线性规划 3.1 整数规划问题举例 3.2 割平面法.
Chapter 7 圖形與網路 資料結構導論 - C語言實作.
動態規劃 Dynamic Programming
Ch07 圖形與網路 淡江大學 周清江
Artificial Intelligence - 人工智慧導論
公立學校教職員退休資遣撫卹條例重點說明 苗栗縣政府人事處編製 主講人:陳處長坤榮 107年5月2日.
计算机问题求解 – 论题 算法方法 2016年11月28日.
圖論的介紹 第二組 徐榮德 鄭又齊 陳俊嘉.
Course 10 削減與搜尋 Prune and Search
講師:郭育倫 第2章 效能分析 講師:郭育倫
生成树.
鄧姚文 資料結構 第八章:圖(Graph) 鄧姚文
谁在审判?谁能审判? ——网络舆论对司法判案的影响
赵才荣 同济大学,电子与信息工程学院,智信馆410室
Xián 伯 牙 绝 弦 安徽淮南市八公山区第二小学 陈燕朵.
§4 连续型随机变量.
6.1.1 平方根.
圖形結構 Graph Structure chapter 9 德明科技大學資訊科技系.
JAVA 程式設計與資料結構 第二十一章 Graph.
Presentation transcript:

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) 來刪除一些不必要的子樹搜尋動作,以提昇搜尋效率。

S = { (X1, X2, …, Xn) ; (X1, X2, …, Xn)為滿足問題的所有解} 解答空間 (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) 下圖是3個商品的0/1背包問題之狀態空間樹: 其中: 從樹根到葉節點的每一條路徑,皆為解答空間中的一個元素 有23 = 8個可能解(或葉節點) 1 是否取商品1 是否取商品2 是否取商品3

由上圖可知,如果是有n個輸入項目的排列問題或是部份集合問題,則狀態空間樹所有可能的狀態個數(即:葉節點個數)分別為n!或是2n。 因此,回溯和分枝與限制的設計策略中,會加入使用邊界函數來決定是否需要繼續搜尋後續的狀態空間,以去除不必要的子樹搜尋。若: 當搜尋到 “不可行” 的節點 (即:課本所指的沒前途(nonpromising)節點) 時,則不用再去搜尋該節點以下之所有分枝節點。 此即為修剪 (Pruning) 當搜尋到 “可行” 的節點 (即:課本所指的有前途(promising)節點) 時,則可以再續繼往下搜尋該節點以下之分枝節點。 可以得到修剪過的狀態空間樹 (Pruned State Space Tree)。

一個修剪過的狀態空間樹: 回溯和分枝與限制這兩種解題策略算是暴力法的改良版,是藉由狀態空間樹,對所有可能的狀態進行有系統地搜尋,雖然整體的時間複雜度沒有降低,但是藉由省去部份不必要的步驟,可以提升系統的效能,所以還是比利用暴力法好一些。 起始狀態 不可行解 可行解

▓ Backtracking (回溯) 採用“深先搜尋法” (Depth-First Search; DFS) 對狀態空間樹中每一個節點進行檢查。 為遞迴的應用概念,因此可利用Stack保存走訪過程中間所走過的點。 有3個不可分割的商品,其重量與價值分別如下。若背包容量為30公斤 (C=30),請利用回溯策略找出最佳解答。 Item 重量 (W) 價值(P) 1 20 $40 2 15 $25 3

三個商品的0/1背包問題的狀態空間樹如下: 邊界函數為 C ≥ (wiXi), 其中: wi是商品i的重量 (整數變數) Item 重量 (W) 價值(P) 1 20 $40 2 15 $25 3 三個商品的0/1背包問題的狀態空間樹如下: 邊界函數為 C ≥ (wiXi), 其中: wi是商品i的重量 (整數變數) Xi是商品i是否有被拿取 (布林變數) 1 1 剩重:30 利潤:0 剩重:10 利潤:40 2 7 剩重:15 利潤:25 剩重:10 利潤:40 剩重:30 利潤:0 3 4 8 11 5 6 9 10 12 13 剩重:10 利潤:40 剩重:0 利潤:50 剩重:0 利潤:50 剩重:15 利潤:25 剩重:15 利潤:25 剩重:30 利潤:0

搜尋過程(利潤與背包剩餘重量不說明): 由樹根先出發,若要拿商品1,則移到節點2 接著,由節點2出發,若要拿商品2,則移到節點3。但是因為拿商品1又拿商品2,超出背包之負重,因此為不可行之解,退回到上層節點(即:節點2)。 再由節點2出發,此時選擇不拿商品2,則移到節點4。 從節點4出發,若要拿商品3,則移到節點5。但是拿商品1又拿商品3,超出背包之負重,因此為不可行之解,退回到上層節點(即:節點4)。 再由節點4出發,此時選擇不拿商品3,則移到節點6。節點6為一個可行解,但由於該節點沒有子節點,因此回到上層節點(即:節點4)。 節點4已無未搜尋之節點,因此回到上層節點(即:節點2)。 節點2已無未搜尋之節點,因此回到上層節點(即:節點1)。

再由樹根先出發,此時選擇不拿商品1,則移到節點7 接著,由節點7出發,若要拿商品2,則移到節點8。 再由節點8出發,此時選擇拿商品3,則移到節點9。節點9為一個可行解,但由於該節點沒有子節點,因此回到上層節點(即:節點8)。 再由節點8出發,此時選擇不拿商品2,則移到節點10。節點10為一個可行解,但由於該節點沒有子節點,因此回到上層節點(即:節點8)。 節點8已無未搜尋之節點,因此回到上層節點(即:節點7)。 從節點7出發,此時選擇不拿商品2,則移到節點11。 從節點11出發,若要拿商品3,則移到節點12。節點12為一個可行解,但由於該節點沒有子節點,因此回到上層節點(即:節點11)。 再由節點11出發,此時選擇不拿商品3,則移到節點13。節點13為一個可行解,但由於該節點沒有子節點,因此回到上層節點(即:節點11)。 節點11與節點7已無未搜尋節點,因此回到最上層節點。

▓ Branch and Bound (分枝與限制) 採用“廣先搜尋法” (Breadth-First Search; DFS) 對狀態空間樹中每一個節點進行檢查。 為迴圈的應用概念,因此可利用Queue保存走訪過程中間所走過的點。 有3個不可分割的商品,其重量與價值分別如下。若背包容量為30公斤 (C=30),請利用分枝與限制策略找出最佳解答。 Item 重量 (W) 價值(P) 1 20 $40 2 15 $25 3

三個商品的0/1背包問題的狀態空間樹如下: 邊界函數為 C ≥ (wiXi), 其中: wi是商品i的重量 (整數變數) Item 重量 (W) 價值(P) 1 20 $40 2 15 $25 3 三個商品的0/1背包問題的狀態空間樹如下: 邊界函數為 C ≥ (wiXi), 其中: wi是商品i的重量 (整數變數) Xi是商品i是否有被拿取 (布林變數) 1 1 剩重:10 利潤:40 剩重:30 利潤:0 2 3 剩重:10 利潤:40 剩重:15 利潤:25 剩重:30 利潤:0 4 4 5 6 7 8 8 9 10 11 12 13 剩重:10 利潤:40 剩重:0 利潤:50 剩重:0 利潤:50 剩重:15 利潤:25 剩重:15 利潤:25 剩重:30 利潤:0

由於是利用佇列 (Queue) 做為輔助工具。因此,最先被放入的節點將最先被處理 搜尋過程: 由樹根先出發,將根節點移動一步就可以到達之所有未被搜尋過的子節點依序存入佇列中。 從佇列中移出一個節點,當做出發節點,並將此節點移動一步就可以到達之所有未被搜尋過的子節點依序存入佇列中。 不斷執行步驟2直到所有節點執行完畢。執行中須隨時注意是否有超出背包負重。

補 充

補 1: n-皇后問題 所謂n皇后問題是指 “如何將n顆西洋棋中的皇后棋子擺放在一個具有n列n行的棋盤中,但是這n顆棋子彼此不會吃掉對方,也就是這n顆皇后棋子彼此不允許在同一列、同一行或是同一個對角線”。 以下是四皇后問題示例:

利用暴力式的直覺作法,可能有下列兩種解題方法: 作法 1: n個皇后需放置於不同列上,並且檢查每個皇后在其所屬之列上的哪一個行才是其應放置的位置。 第一列可擺放的位置有n個,第二列可擺放的位置有n個,第三列可擺放的位置有n個,…,第n列可擺放的位置有n個。 n  n  n  …  n = nn 作法 2: n個皇后需放置於不同列、不同行之位置上。且除了與先前擺放之皇后的同行位置外,需檢查每個皇后在其所屬之列上的哪一個行才是其應放置的位置。 第一列可擺放的位置有n個,第二列可擺放的位置有n-1個,第三列可擺放的位置有n-2個,…,第n列可擺放的位置有1個。 n  (n-1)  (n-2)  …  1 = n! 以暴力法來解決n皇后問題,似乎採用作法 2較為明智!!

以四皇后問題為例,上述兩種暴力作法之解答空間為: [作法 1] 44 = 4  4  4  4 = 256 個可能解 [作法 2] 4! = 4  3  2  1 = 24個可能解 因此,n-皇后問題屬於排列問題 (採用暴力法)。

四皇后問題的狀態空間樹: 假設xi表示在第i列的皇后棋子所在之行位置 (課本上是以col(i)表示xi),其中i = 1~n。 1 2 3 4 X1 X2 X3 X4

如何判斷兩個皇后間是否互吃 假設Q1皇后所在的位置是(a, xa),Q2皇后所在的位置是(b, xb),下列位置皆會造成兩皇后互吃。 如果b = a ,則表示Q1皇后和Q2皇后在同一列 如果xb = xa ,則表示Q1皇后和Q2皇后在同一行 如果 (xb- xa) = b – a,則表示Q1皇后和Q2皇后皆在右斜45o線 如果 (xb- xa) = -(b – a),則表示Q1皇后和Q2皇后皆在左斜45o線

利用回溯法解4皇后問題 4皇后問題的狀態空間樹如下: 邊界函數為前面四個互吃之判斷條件。 1 2 3 4 () () 1 18 25 30 26 28 19 21 22 20 23 24 27 29 31 32 33 2 11 3 3 4 7 12 12 13 13 14 5 5 6 6 8 10 10 15 17 17 9 9 16 () ()

四皇后問題的解答

註: col[i] = Xi