講師:郭育倫 d95037@csie.ntu.edu.tw 第10章 加權圖 講師:郭育倫 d95037@csie.ntu.edu.tw.

Slides:



Advertisements
Similar presentations
不定積分 不定積分的概念 不定積分的定義 16 不定積分的概念 16.1 不定積分的概念 以下是一些常用的積分公式。
Advertisements

資料結構與演算法 第6章 圖形 徐熊健.
MATLAB 程式設計 時間量測 清大資工系 多媒體資訊檢索實驗室.
第11章 網路流.
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
圓的一般式 內容說明: 由圓的標準式展出圓的一般式.
短視近利 與 深謀遠慮 國立中央大學 資訊工程學系 江振瑞 教授
第四章 數列與級數 4-1 等差數列與級數 4-2 等比數列與級數 4-3 無窮等比級數 下一頁 總目錄.
使用C/C++語言 楊正宏 編著 全華科技圖書股份有限公司 印行.
GRAPH THEORY 圖論 第二組 晏彩霞 陳弘益 王文斕.
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
Chap5 Graph.
Graph Theory Part II Applications in daily life
Chapter 4 Spanning Trees
第八章 利用SELECT查詢資料.
Bellman 查經 兩個有關婚宴的比喻 馬太福音 22:1~14, 25:1~13.
4B冊 認識公倍數和最小公倍數 公倍數和最小公倍數的關係.
Graph Theory Graph theory is the study of the properties of graph structures. It provides us with a language with which to talk about graphs.
(Circular Linked Lists)
Chapter 7 圖形與網路 資料結構導論 - C語言實作.
資料結構 第7章 圖形結構.
第 一 單 元 不定積分.
1.3 在整除性問題之應用 附加例題 3 © 文達出版 (香港 )有限公司.
第一章 直角坐標系 1-1 數系的發展.
第 九 章 圖形結構 課程名稱:資料結構 授課老師:________ 2019/2/22.
Ch 3 Dynamic Programming (動態規劃).
使用矩阵表示 最小生成树算法.
第一章 直角坐標系 1-3 函數圖形.
講師:郭育倫 第10章 加權圖 講師:郭育倫
一個基于相鄰區塊相似性和動態次編碼簿的低位元率向量量化 圖像壓縮法
數學 近似值 有效數值.
最短路徑 The Shortest Path.
網頁資料知多少? 事 實 ? 謠言?.
數字定位棋 1-7
第八章 網路模式 Network Models 作業研究 二版 2009 © 廖慶榮.
數學科 六年級下學期.
本章結構 網路簡介 最短路徑問題 最小展開樹問題 最大流量問題 10-1.
挑戰C++程式語言 ──第8章 進一步談字元與字串
圓的定義 在平面上,與一定點等距的所有點所形成的圖形稱為圓。定點稱為圓心,圓心至圓上任意一點的距離稱為半徑,「圓」指的是曲線部分的圖形,故圓心並不在圓上.
實用數學 長度單位的認識與換算.
蕭志明 老師 Algorithm(演算法) Ext:6779
蕭志明 老師 Algorithm(演算法) /FB:
Teacher: 郭育倫 Mail: 演算法 Teacher: 郭育倫 Mail:
講師:郭育倫 第3章 基本資料結構 講師:郭育倫
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
MiRanda Java Interface v1.0的使用方法
一個基于相鄰區塊相似性和動態次編碼簿的低位元率向量量化 圖像壓縮法
函數應用(二)與自定函數.
第七、八次实验要求.
12797: Letters ★★★☆☆ 題組:Problem Set Archive with Online Judge
周界的認識 四年級上學期.
動畫演示 Node規範了一些基本的方法,像是增加節點、刪除節點、讓節點做一些事、取得第n個節點等等
博愛醫院鄧佩瓊紀念中學 音程.
10328: Coin Toss ★★★☆☆ 題組:Problem Set Archive with Online Judge
1757: Secret Chamber at Mount Rushmore
第一章 直角坐標系 1-3 函數及其圖形.
10599: Robots(II) ★★★★☆ 題組:Problem Set Archive with Online Judge
非負矩陣分解法介紹 報告者:李建德.
Bellman 查經 處理憂慮 馬太福音 6:25~34.
一個基于相鄰區塊相似性和動態次編碼簿的低位元率向量量化 圖像壓縮法
第十三章 彩色影像處理.
在直角坐標平面上兩點之間 的距離及平面圖形的面積
All Sources Shortest Path The Floyd-Warshall Algorithm
第四組 停車場搜尋系統 第四組 溫允中 陳欣暉 蕭積遠 李雅俐.
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
指導老師:黃日鉦 組員名單:王友倫.李糧旭.王浩綱.黃種慶.郭宗維
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
JUDGE GIRL 使用介紹 & 常見問題 TAs :
Chapter 16 動態規劃.
第三章 比與比例式 3-1 比例式 3-2 連比例 3-3 正比與反比.
Presentation transcript:

講師:郭育倫 d95037@csie.ntu.edu.tw 第10章 加權圖 講師:郭育倫 d95037@csie.ntu.edu.tw

演算法導論,探矽工作室 本章學習重點 最小生成樹 最短路徑

摘要 最小生成樹 最短路徑 Prim演算法 Kruskal演算法 Dijkstra演算法 Bellman-Ford演算法 演算法導論,探矽工作室 摘要 最小生成樹 Prim演算法 Kruskal演算法 最短路徑 Dijkstra演算法 Bellman-Ford演算法 Floyd-Warshall演算法

加權圖 有些圖形化的問題除了節點的連通性外,還需要考慮邊線的權值。 演算法導論,探矽工作室 加權圖 有些圖形化的問題除了節點的連通性外,還需要考慮邊線的權值。 加權圖演算法通常是用來解決最佳化的問題。例如,如何降低連結所有節點的成本就是一個常見的應用。

最小生成樹 加權圖的生成樹是指連接所有節點的子圖。最小生成樹的意思是指其邊線權值總和為最小的生成樹。 演算法導論,探矽工作室 最小生成樹 加權圖的生成樹是指連接所有節點的子圖。最小生成樹的意思是指其邊線權值總和為最小的生成樹。 圖形搜尋樹也是最小生成樹的一種,只不過圖形搜尋樹是將邊線的權值都視為相同。 圖形的最小生成樹並不是唯一。選擇邊線的規則不同就會導致不同的生成樹。

演算法導論,探矽工作室 Prim演算法 建立最小生成樹的基本原理是,把所有節點分成兩個集合,其中一個集合構成最小生成樹的子圖。這個子圖再藉由選擇連接兩個集合間距離最短(即權值最小)的邊線而長大。當所有節點都已加入此生成樹的集合以後,即完成最小生成樹的建立。 Prim所提出的演算法利用優先權佇列將相鄰節點予以排序,並取出距離最短的節點作為生成樹的集合。

演算法導論,探矽工作室 Prim演算法範例

演算法導論,探矽工作室 Prim演算法分析 Prim的最小生成樹演算法可說是一種貪婪法。在建構最小生成樹的過程中,只考慮與最小生成樹相鄰的邊線,並從中挑選最小權值的邊線。 貪婪演算法在大部分的情形下確實可達到最佳化的結果,像Prim演算法就是其中一種。Prim的演算法是正確的,因為其最小生成樹結果一定包含最小權值的相鄰邊線,否則就會違反最小生成樹的定義。

Kruskal演算法 Kruskal直接依權值將所有邊線進行排序,然後再依序挑選邊線,避開形成迴路的邊線,直到形成一個生成樹。 演算法導論,探矽工作室 Kruskal演算法 Kruskal直接依權值將所有邊線進行排序,然後再依序挑選邊線,避開形成迴路的邊線,直到形成一個生成樹。

演算法導論,探矽工作室 Kruskal演算法範例

演算法導論,探矽工作室 Kruskal演算法分析 在Prim演算法中,因為是由小樹長成大樹,所以檢驗迴路的動作比較單純,不過卻需要考慮選擇邊線時的效能。而Kruskal演算法,則因所有邊線已經過排序,所以沒有選擇邊線的運算,但是其檢查迴路的動作卻較為複雜。因此,如果圖形的邊數較多(即茂密圖),那麼選擇Prim演算法會比較有效率,反之則建議採用Kruskal演算法。

最短路徑 最短路徑的定義是兩個節點之間其經過的邊線權值和為最小。最短路徑的問題可以分成兩類: 演算法導論,探矽工作室 最短路徑 最短路徑的定義是兩個節點之間其經過的邊線權值和為最小。最短路徑的問題可以分成兩類: 單源最短路徑 任意兩節點之最短路徑 單源最短路徑可得到從某一起點到其他節點的最短路徑,而任意兩節點之最短路徑顧名思義即是計算任意兩個節點之間,其所經過的邊線權值和為最小的路徑。

演算法導論,探矽工作室 最短路徑的放鬆 最短路徑演算法當中經常使用到的一個技巧:最短路徑的放鬆。這個方法的精神是,如果某節點Y可抵達X,而且經過節點Y可以縮短起點到X的距離,那麼就將節點Y加入此路徑並更新到X的最短距離。

演算法導論,探矽工作室 Dijkstra演算法 Dijkstra演算法是利用貪婪法解決單源最短路徑的問題。這個演算法的想法是藉由逐步建立最短路徑生成樹的過程來求得最短路徑。 優先權佇列再度被用來排序相鄰節點的最短路徑估算值。每次從佇列中取出相鄰的節點,再依據「最短路徑放鬆」的原則判斷是否需要更新相鄰邊線的最低權值和。

演算法導論,探矽工作室 Dijkstra演算法範例

演算法導論,探矽工作室 Dijkstra演算法分析 Dijkstra演算法也可應用在有向圖形,而唯一的限制是邊線的權值不能是負數。負權值的邊線有時候會誤導Dijkstra演算法並產生錯誤的結果。

演算法導論,探矽工作室 Bellman-Ford演算法 Bellman和Ford改用動態程序規劃的觀念來解決單源最短路徑問題。和Dijkstra以相鄰節點進行「最短路徑放鬆」不同的是,Bellman-Ford演算法是直接對每條邊線實施「最短路徑放鬆」。 Bellman-Ford演算法利用反覆檢查每條邊線來逼近每個節點其最短路徑的估計值。因為圖形的最長路徑是V-1 條邊線,因此最多只要檢查V-1遍就可以建構出最短路徑生成樹。

演算法導論,探矽工作室 Bellman-Ford演算法範例

演算法導論,探矽工作室 Floyd-Warshall演算法 假如節點X存在一條路徑通往節點W,而W又存在一路徑通往Y,這樣一來就能肯定節點X可以通往Y。這個性質在數學上稱為遞移封閉性。數學家Warshall從這個簡單的原理,發展出一個演算法可以求得任意兩節點之間是否存在一路徑。 數學家Floyd利用Warshall演算法的精神,考慮任意兩節點間的最短路徑。如果節點X到Y的距離,可以因為節點W的加入而縮短,那就將W加入X和Y之間的最短路徑。

演算法導論,探矽工作室 遞移矩陣範例

演算法導論,探矽工作室 任意兩節點最短路徑範例

演算法導論,探矽工作室 結論 此章節探討加權圖相關的演算法,其包括典型的最小生成樹與最短路徑問題。雖然我們所討論的範例是以無向圖為主,但事實上這些演算法也可應用在有向圖形。 我們也在介紹了貪婪演算法和動態程序規劃演算法的基本概念。比如Prim演算法和根據貪婪法的精神而設計出來的Dijkstra演算法;而Bellman-Ford演算法和Floyd-Warshall演算法則有運用動態程序規劃的技巧。這些概念可以作為往後我們在面臨新問題時的思考解決之道。