Chapter 6 Graph Chang Chi-Chung 2011.11.17.

Slides:



Advertisements
Similar presentations
職務法庭與 法官退場機制 行政訴訟及懲戒廳報告
Advertisements

第八章 連結分析 Link Analysis.
動畫與遊戲設計 Data structure and artificial intelligent
南美洲 吉林省延吉一高中 韩贵新.
Chapter 10 Graphs.
Chapter 12 圖形結構 12.1 圖形的一些專有名詞 12.2 圖形資料結構表示法 12.3 圖形追蹤 12.4 擴展樹
資料結構與C++程式設計進階 資料結構概論 講師:林業峻 CSIE, NTU 6/ 7, 2010.
第7章 图论基础与应用 PART A 《可视化计算》.
Minimum Spanning Trees
Large-Scale Malware Indexing Using Function-Call Graphs
Chap4 Tree.
Tree(樹) 什麼是「樹」? 「樹」的範例 「樹」的定義 「樹」的表示法.
Chap5 Graph.
7.5 擴張樹 (Spanning Tree) 一個無向相連圖 G 的子圖 G’ 如果可用最少的邊來連接G 的
Chapter 4 Spanning Trees
Chap5 Graph.
樹狀結構 陳怡芬 2018/11/16 北一女中資訊專題研究.
講師:郭育倫 第3章 基本資料結構 講師:郭育倫
第8章 圖形結構(Graphs) 8-1 圖形的基本觀念 8-2 圖形的表示法 8-3 圖形的走訪 8-4 擴張樹
第八章 图 图的基本概念 图的存储结构 图的遍历与连通性 最小生成树 最短路径 活动网络.
The Greedy Method.
演算法方式總覽 The Divide-and-Conquer Strategy (個各擊破)(binary Searching、Quick Sort…. ) The Greedy Method(貪婪演算法) (Prim MST、Kruskal MST、Djikstra's algorithm) Dynamic.
圖論 (Graph Theory) B 電機四 大鳥 B 電機四 酋長 B 電機四 炫大
第4章 网络互联与广域网 4.1 网络互联概述 4.2 网络互联设备 4.3 广域网 4.4 ISDN 4.5 DDN
Graph 2 Michael Tsai 2012/5/1 連載: 學生上課睡覺姿勢大全
Course 9 NP Theory序論 An Introduction to the Theory of NP
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.
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
Chapter 7 圖形與網路 資料結構導論 - C語言實作.
第 七 章 樹狀結構 課程名稱:資料結構 授課老師:________ 2019/1/1.
樹狀結構 Tree Structure chapter 7 德明科技大學資訊科技系.
Data Structure.
二叉树和其他树 (Binary and other trees)
Chapter12 Graphs Definitions Applications Properties
Yuzhong Qu Nanjing University
樹 2 Michael Tsai 2013/3/26.
Ch07 圖形與網路 淡江大學 周清江
Chapter 2 Basic Concepts in Graph Theory
感謝同學們在加分題建議. 我會好好研讀+反省~
第9章 基本图算法 本章内容将包含基本的图形表示法,以及先深搜寻,先广搜寻,拓朴排序,Strongly Connected Components。
数据结构概论 第7章 图 董黎刚 浙江工商大学信电学院 2019年4月8日.
每周三交作业,作业成绩占总成绩的15%; 平时不定期的进行小测验,占总成绩的 15%;
Total Review of Data Structures
3.5 Region Filling Region Filling is a process of “coloring in” a definite image area or region. 2019/4/19.
第7章 樹與二元樹(Trees and Binary Trees)
计算机问题求解 – 论题 算法方法 2016年11月28日.
圖論的介紹 第二組 徐榮德 鄭又齊 陳俊嘉.
第15讲 路与回路, 图的连通性 主要内容: 1.路与回路. 2.图的连通性..
Tournament (graph theory)
Course 10 削減與搜尋 Prune and Search
生成树.
Course 8 回溯、分枝與限制 Backtracking, Branch-and-Bound
鄧姚文 資料結構 第八章:圖(Graph) 鄧姚文
最短通路问题.
赵才荣 同济大学,电子与信息工程学院,智信馆410室
计算机问题求解 – 论题 图的连通度 2018年11月13日.
Konig 定理及其证明 杨欣然
生成树 离散数学─树 南京大学计算机科学与技术系.
Data Structure.
Advanced Competitive Programming
Advanced Competitive Programming
Advanced Competitive Programming
圖形結構 Graph Structure chapter 9 德明科技大學資訊科技系.
Maximum Flow.
11506: Angry Programmer ★★★★☆ 題組:Contest Set Archive with Online Judge
Graph 1 Michael Tsai 2012/4/24 連載: 學生上課睡覺姿勢大全
计算机问题求解---论题3-12 图中的匹配与因子分解
JAVA 程式設計與資料結構 第二十一章 Graph.
Presentation transcript:

Chapter 6 Graph Chang Chi-Chung 2011.11.17

Graph 圖(graph) 的定義 G = (V, E) 有向圖和無向圖 V為頂點的集合 E為邊的集合,以頂點對表示 Undirected graph (graph) edge (u,v) = (v,u) Directed graph (digraph) edge <u,v> ≠ <v,u>

Examples: Graphs (a) G1 (b) G2 (c) G3 1 2 1 2 1 3 3 4 5 6 2 1 2 1 2 1 3 3 4 5 6 2 V(G1) = {0, 1, 2, 3} V(G2) = {0, 1, 2, 3, 4, 5, 6} V(G3) = {0, 1, 2} E(G3) = {<0, 1>, <1, 0>, <1, 2>} E(G1) = {(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)} E(G2) = {(0, 1), (0, 2), (1, 3), (1, 4), (2, 5), (2, 6)} Directed Graph Undirected Graph

Graph 有向圖 無向圖 directed graph undirected graph 3 連接 相鄰 incident 頂點 分支度 degree 3 連接 incident 相鄰 adjacent 頂點 vertax 邊 edge 有向圖 directed graph 無向圖 undirected graph

Simple Graph No self edges (self loops,自我迴路) A graph may not have an edge from a vertex, v, back to itself. No multiple edges (多重邊或平行邊) A graph may not have multiple occurrences of same edges. 1 3 1 2 2 (a) Graph with a self edge (b) Multigraph

Complete Graph Complete graph The number of distinct unordered pairs (u, v) with u≠v in a graph with n vertices is n(n-1)/2. Complete graph Undirected graph an n-vertex graph with exactly n(n-1)/2 edges. Directed graph an n-vertex graph with exactly n(n-1) edges K3 K4

Adjacent and Incident Undirected graph Directed graph 1 2 3 4 5 6 If (u, v) is an edge in E(G), vertices u and v are adjacent and the edge (u, v) is the incident on vertices u and v. Directed graph <u, v> indicates u is adjacent to v and v is adjacent from u. <u, v> is incident to u and v. 1 2 1 3 4 5 6 2

子圖 Subgraph A subgraph of G is a graph G’ such that V(G’) V(G) and E(G’) E(G). 1 2 1 2 (1) 1 2 3 (2) (3) 3 1 2 (5) (6) (7) (8) 1 2 3 (4)

Path and Length Path Length Simple Path A path from vertex u to vertex v in graph G is a sequence of vertices u, i1, i2, …, ik, v, such that (u, i1), (i1, i2), …, (ik, v) are edges in E(G). G’ is directed graph, <u, i1>, <i1, i2>, …, <ik, v> are edges in E(G’). Length The length of a path is the number of edges on it. Simple Path A simple path is a path in which all vertices except possibly the first and last are distinct. A path (0, 1), (1, 3), (3, 2) can be written as 0, 1, 3, 2.

Cycle A cycle is a simple path in which the first and last vertices are the same. Similar definitions of path and cycle can be applied to directed graphs.

Examples: Path, Simple Path, Cycle Path 2 (0,1) (1,3) (3,4) (4,5) 1 Path 3 (1,3) (3,4) (4,2) (2,1) 2 3 4 Simple Path Path 2、Path 3 Circle Path 3 5

連通圖 Connected 若圖G,任2點間有一路徑存在,該圖稱為連通圖。 若圖G不連通,則圖G的最大連通子圖,稱為圖G 的連通成分 (connected components) 若圖G為有向圖,若且惟若圖G中任兩點 u到v有一路徑存在,則 v 到 u亦存在有一路徑,則圖G 稱為強連通 (strongly connected) 有向圖G中,最大強連通子圖,稱為圖G 的強連通成分 (strongly connected components)

Example: Connected and Strongly Connected H1 H2 4 1 2 5 6 3 7 G3 1 1 2 2

雙連通 Biconnected 圖G 稱為雙連通,如果圖G中,任兩點間均有兩條不相交的路徑,則稱圖G為雙連通圖 圖G中最大的雙連通子圖,稱為雙連通成分(biconnected component) 加入G中額外的頂點或邊,將不為雙連通圖

G H J E F I D C 分隔頂點 B M K L 分隔邊 A

Forest & Tree 森林和樹 森林是沒有迴路 (cycle) 的圖。 樹是連通的森林。 生成樹 (spanning tree) 是圖G 的形成樹的生成子圖。

Spanning Trees & Complete Graph K4

Graph 的一些性質 定理6.6 令G為一具有 m邊的圖,則 定理 6.7 令G為一具有 m邊的有向圖,則

Graph 的一些性質 定理6.8 令G為一具有 n 個頂點和 m 個邊的簡單圖。 若G為無向圖,則 若G 為有向圖,則

Graph 的一些性質 定理6.11 圖G為一有 n 個頂點與 m 個邊的無向圖,則 若G為連通圖,則 m >= n – 1

圖的運用

重要的觀念 圖的表示方法 (資料結構) 圖的走訪 (traversal) 邊串列 (edges lists) 鄰接串列 (adjacency lists) 鄰接矩陣 (adjacency matrix) 圖的走訪 (traversal) DFS (深先搜尋,depth-first search) BFS (廣先搜尋,breadth-first search)

圖的表示-邊串列 頂點物件 邊物件

邊串列 以紀錄邊為主。 分為頂點物件及邊物件

圖的表示 – 鄰接串列

Adjacency Lists G1 G2 [0] 3 1 2 [1] 2 3 1 2 [2] 1 3 [3] 1 2 3 [0] 1 HeadNodes [0] 3 1 2 [1] 2 3 1 2 [2] 1 3 [3] 1 2 3 G1 HeadNodes [0] 1 [1] 2 1 [2] G2 2

Adjacency Lists H1 1 2 3 G3 H2 4 5 6 7 G3 [0] 2 1 [1] 3 [2] 3 [3] 1 1 HeadNodes [0] 2 1 1 2 [1] 3 [2] 3 3 [3] 1 1 G3 [4] 5 H2 [5] 4 6 4 [6] 5 7 5 6 [7] 6 7 G3

Inverse Adjacency Lists [0] 1 [1] 2 [2] 1 [0] 1 2 [1] G2 1 [2] 求入分支度須用此反轉串列

Adjacency Lists : Sequential Representation H1 H2 4 1 2 5 6 3 7 G3 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 9 11 13 15 17 18 20 22 23 2 1 3 5 6 4 7 各頂點紀錄起始位置 各頂點連接的頂點

Adjacency Lists: Orthogonal List 1 tail head column link for head row link for tail 2 head nodes (shown twice) 1 2 1 1 1 1 2 2

Multilists [0] [1] [2] [3] m vertex1 1 2 N0 1 N1 N3 edge (0, 1) 3 N1 2 vertax2 list1 list2 1 2 HeadNodes [0] N0 1 N1 N3 edge (0, 1) 3 [1] N1 2 N2 N3 edge (0, 2) [2] [3] N2 3 N4 edge (0, 3) N3 1 2 N4 N5 edge (1, 2) The lists are N4 1 3 N5 edge (1, 3) Vertex 0: N0 -> N1 -> N2 Vertex 1: N0 -> N3 -> N4 N5 2 3 edge (2, 3) Vertex 2: N1 -> N3 -> N5 Vertex 3: N2 -> N4 -> N5

鄰接矩陣

Adjacency Matrix Adjacency Matrix is a two dimensional n×n array. 1 2 1 3 2 (a) G1 (b) G2

Adjacency Matrix H1 1 2 3 G4 H2 4 5 6 7 (c) G3

Depth-First Search 0,1,3,7,4,5,2,6 [0] 1 2 [1] 3 4 [2] 5 6 [3] 1 7 [4] 1 2 3 4 5 6 HeadNodes [0] 7 1 2 [1] 3 4 [2] 5 6 [3] 1 7 [4] 1 7 [5] 2 7 [6] 2 7 [7] 3 4 5 6

DFS Algorithm Algorithm DFS(G, v) Input: A graph G and a vertx v of G Output: A labeling of the edges in the connected component of v as discovery edges and back edges for all edges e in G.incidentEdges(v) do if edge e is unexplored then w  G.opposite(v, e) if vertax w is unexplored then label e as a discovery edge recursively call DFS(G, w) else label e as a back edge

DFS 可以做什麼? 圖G 有n個頂點和 m 個邊,且使用連接串列表示的圖,則圖G 的DFS 走訪,可以在 O(n+m)完成,並可以解決以下問題 測試G是否連通 計算G的生成森林 計算G 的連通成分 計算G中兩頂點之間的路徑,或回報路徑不存在。 計算G中的一個迴路,或回報G沒有迴路。

返回邊 發現邊 A B C D E F G H I J K L M N O P

計算雙連通成分 DE EC G H CD J CF KL E F I HJ EC FG D C JG GH IF HI B M K L CM MA AB A MB BC KA CK

計算雙連通成分演算法 參見課本 P315 及 P317

Breadth-First Search 0,1,2,3,4,5,6,7 [0] 1 2 [1] 3 4 [2] 5 6 [3] 1 7 1 2 3 4 5 6 HeadNodes [0] 7 1 2 [1] 3 4 [2] 5 6 [3] 1 7 [4] 1 7 [5] 2 7 [6] 2 7 [7] 3 4 5 6

BFS Algorithm Algorithm BFS(G, v) Input: A graph G and a vertx s of G Output: A labeling of the edges in the connected component of s as discovery edges and cross edges create an empty container L0 insert s into L0 i  0 while Li is not empty do create an empty container Li+1 for each vertax v in Li do for all edge e in G.incidentEdges(v) do if edge e is unexplored then let w be the other endpoint of e if vertax w is unexplored then label e as a discovery edge insert w into Li+1 else label e as a cross edge i  i+1

BFS 可以做什麼? 基本上,DFS 可以辦得到的事,BFS 也可以辦得到。 在實作上,BFS 使用到 Queue,而 DFS 則 使用到 Stack。

發現邊 A B C D E F G H 交錯邊 I J K L M N O P

垃圾收集法 (garbage collection) 一些新出現的程式語言,對於動態配置記憶體的管理,交由執行時期 (run-time) 的環境。因此程式設計師不需要負責釋放記憶體,從而避免了 memory leak 的風險。 Java C# 透過 DFS 的方式,實作出垃圾收集器 (garbage collector),將已釋放的記憶體回收。