Graph Lecturer Kritawan Siriboon Boontee Kruatrachue Room no
Graph Lecturer : Kritawan Siriboon, Boontee Kruatrachue Room no. 913 Text : Data Structures & Algorithm Analysis in C, C++, … Mark Allen Weiss, Addison Wesley รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 21
Graph Definitions A (A, B) B adjacent to A A not adjacent to B (B, A) C • B D Graph G = (V, E) ประกอบดวย set 2 sets V = { A, B, C, D } 1. V = set of vertices (nodes) E = { (A, B), (A, C) , (B, C) } 2. E = set of edges (arcs) B adjacent to A Directed graph (Digraph) (มทศทาง แทนดวยลกศรของ edge) has directions associate with edges. (A, B) ≠ (B, A) • Undirected graph (ไมมทศทาง ) has no direction associate with edges. (A, B) = (B, A) • B adjacent to A (ตอจาก ) ถาม edge (A, B) є E รศ. ดร. บญธร เครอตราช A รศ. กฤตวน ศรบรณ D (A, B) = (B, A) B adjacent to A <-> A adjacent to B C ดงนนสำหรบ undirected graph B adjacent to A A adjacent to B KMITL 01076249 Data Structures & Algorithms : Tree 22 B
Graph Definitions ม 2 paths จาก A ไป D ABD path length = 2 (unweigthed) path length = 2 + 5 = 7 (weigthed) loop A 6 2 B 5 D C 1 2 ABCD path length = 3 (unweigthed) path length = 2 + 1 = 5 (weigthed) Weighted graph has weight assigned to each edge. (graph ทมนำหนกกำกบ edge) Such weights might represent costs, lengths or capacities, etc. depending on the problem at hand. (นำหนก อาจแสดงถงสงทสนใจ เชน ราคา ระยะทาง • ความจ Path (เสนทางจาก node หนงไป node หนง เชนจาก W 1 ไป Wn) เปนตน ) : sequence of nodes W 1, W 2, W 3, . . . , Wn when (W 1, W 2), (W 2, W 3), . . . , (Wn-1, Wn) є E • Path length = # of edges in a path (unweighted graph) (= จำนวน edges ใน path) • Loop : path of length 0 from v to v ie. ofthink that there is edge(v, v). = sum of weights all edges in a path (weighted graph) รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 23
Cycle, Simple Path C ABC B A simple path acyclic C D B A ABCDA A B C D ABCDEDBA D E A B C ABCDBA simple path non simple path simple cycle Path : เสมอนทางเดน Simple path: path ซง vertices ไมซำ เวน vertex แรกกบ vertex สดทายซำ ได ไม เดนไปทๆเดนไป แลว (ยกเวนกลบมาทเกา ) Cycle graph (circular graph) : ม cycle อยางนอย 1 cycle )ม vertices ซงวนกลบมาทเดม เปน closed chain) Simple Cycle : Simple path + Cycle A Cycle in undirected graph: edges ตองไมใช edge เดยวกน Acyclic ie. path UVU ไมควรเปน cycle เพราะ (U, V) และ (V, U) เปน edge เดยวกนGraph: no cycle Acyclic B B A Acyclic Directed Acyclic Graph = DAG ==> Tree รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 24
Connected VS Disconnected • Undirected graph – Connected ม path จากทก vertex ไปยงทก vertex – Disconnected • Directed graph – Connected ม path จากทก vertex ไปยงทก vertex – Weakly Connected – Disconnected • complete graph ม edge เชอมทกคของ • Indegree จำนวน edges ทเขา • Outdegree จำนวน edges ทออกจาก รศ. ดร. บญธร เครอตราช nodes vertex รศ. กฤตวน ศรบรณ KMITL • has indegree = 2 • has outdegree = 1 01076249 Data Structures & Algorithms : Tree 25
Graph Examples Airport System, Traffic Flow, . . . รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 26
Graph Representations 1 2 4 3 6 5 7 Or Linked List of vertices รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 27
Topological Order Prog Data Struct Data. Base Digital Micro Robot Topological Order : order ใน acyclic graph ซง ถาม path จาก vi ถง vj แลว vj จะตองอยหลง vi ใน order เชน Prog Digital Prog Data Struct Prog Digital Data Struct รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ Data Struct Digital Data. Base Micro Robot Data. Base KMITL 01076249 Data Structures & Algorithms : Tree 28
Bredth First Traversals 1 3 2 6 5 10 7 1 2 5 4 3 7 6 8 9 4 8 9 11 Bredth First Traversal (Level Order) ถาพง ทกตวท ทถก จงใช รศ. ดร. บญธร visit V ถา V ม adjacent node ทยงไมได adjacent กบมน visit ให visit แลวทำขบวนการนไปเรอยๆ visit ไปตามลำดบการถก visit กอนหลง กบ node bredth first traverse queue ชวย เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 211
Depth First Traversals depth_first ( void (*fp)(Vertex* ) )const // ฟงกชน ptr fp เชน print, . . . 1. init bool visited [MAX] = false for all vertices. visited F F F 0 1 2 3 4 5 6 7 8 9 . . . 2. for all un-visited vertex v // run for disconnected graph node traverse (&v, visited, fp); // เชน fp = &print(Vertex*); 1 2 3 9 5 4 6 7 8 traverse(Vertex *v, bool visited[ ], void(*fp)(Vertex*)) const 1. (*fp)(v) ; // run ฟงกชน fp on v 2. visited[*v] = true; // set v to be already visited 3. for all un-visited w that adjacent to v traverse (&w, visited, fp); รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 1 2 3 8 4 5 7 9 10 11 6 01076249 Data Structures & Algorithms : Tree 213
Bredth First Traversals bredth_first ( void (*fp)( Vertex* ) ) const // ฟงกชน print, . . . 1. 2. 3. init bool visited [MAX]; = false for all vertices. visited ptr fp เชน F F F 0 1 2 3 4 5 6 7 8 9 . . . Init empty queue q; for all un-visited vertex v // run for disconnected graph node enqueue(q, v) while (not empty q) w = q. dequeue() if (!visited[w]) visited[w] = true; // set w to be already visited (*fp) (&w); for all un-visited x that adjacent w and x is not in q q. enqueue(x) รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 1 2 5 4 3 7 6 8 9 1 2 5 3 6 7 4 8 10 11 01076249 Data Structures & Algorithms : Tree 214 9
Shortest Path start v 1 4 1 2 v 3 5 8 v 6 2 v 4 v 2 3 2 4 v 7 1 10 v 5 6 • shortest weighted path v 1 to v 6 : = v 1, v 4, v 7, v 6 cost = 1+4+1 = 6 • shortest unweighted path v 1 to v 6 : = v 1, v 4, v 6 รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ cost = 2 KMITL 01076249 Data Structures & Algorithms : Tree 215
Greedy Algorithm • Greedy Algorithm : เลอกอนทดทสด สำหรบ stage ปจจบน )อาจไมได optimum solution) • ตย. แลกเหรยญใหไดจำนวนเหรยญนอยทสด quarter dime suppose we have 12_cent_coin == > 12 nikle penny 15 cents : Greedy : (optimum รศ. ดร. บญธร เครอตราช 25 10 cents 5 1 cents 12, 1, 1, 1 → → 10, 5) รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 216
Weighted Shortest Paths (Dijkstra’s algorithm) Greedy : for each current stage, choose the best. Data Structures : สำหรบ vertex v ใดๆ เกบขอมล 3 ตว : distance = ระยะจากจด start ไปยง vertex นนๆ known เปนจรง เมอทราบระยะ distance ทสนทสดแลว path = vertex กอนหนามนใน shortest path vertices ทงหมด : known = flase; start_vertex : distance = 0; T vertices อนๆ : distance = ; 0 F for( ; ; ) start v 0 v = vertex ทม dist. นอยทสด ท known 1 4 ยงเปน false if (ไมม v ( 2 F v 2 break; 8 v. known = true; 5 v 5 for each w adjacent to v ซงยงไมถก process if (w. dist > v. dist + weight(vw)) F ปรบ w. dist เปนคาใหมซงนอยกวา w. path = v; รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL F 2 v 1 2, v 0 10 F 2 v 4 F 3 v 3 4 1, v 0 1 6 v 6 F 01076249 Data Structures & Algorithms : Tree 217
distance known F 0 T 2 Weighted Shortest Paths start v 0 v 1 distance 10 1 (Dijkstra’s algorithm) 4 F F 3 Greedy : for each current stage, choose the best. 2 v 3 2 F v 2 v 4 8 4 vertices ทงหมด : known = flase; distance 6 start_vertex : distance = 0; 5 v 6 vertices อนๆ : distance = ; 1 F for( ; ; ) path F F v = vertex ทม dist. นอยทสด ท known (from) 0 T 2 start 2, v 0 ยงเปน false v 0 v 1 10 1 if (ไมม v ( 4 F F 3 break; 2 2 v 3 F v 2 v 4 v. known = true; 4 8 1, v 0 for each w adjacent to v ซงยงไมถก process 6 5 v 6 if (w. dist > v. dist + weight(vw)) 1 ปรบ w. dist F F เปนคาใหมซงนอยกวา T T F 0 T 0 2 w. path = v; 2 2 2, v 0 T 2, v 0 start v 0 v 1 10 1 3 4 T 3 4 F 4 T F 2 2 2 v 3 2 v 4 3, v 3 2 F v 2 v 4 3, F v 2 v 3 2 v 4 4 4 8 8 v 3 3, 1, v 0 3, 3(3<12), 3, 1, v 0 6 6 5 6 v 3 5 v 3 v 3 5 v 5 v 6 v 6 9, 1 F F 5(5<9), v 3 F F 5, v 3 v 3 v 3 รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 218
F F 0 T 2 2 start 2, v 0 Weighted Shortest Paths start v 0 v 1 10 10 1 1 (Dijkstra’s algorithm) 4 4 F F F 3 2 2 2 v 3 v 4 v 3 2 F v 2 v 4 F v 2 4 4 8 8 1, v 0 6 6 5 5 v 6 v 5 v 6 1 1 F F F F T 0 T F 0 T 2 2, v 0 start 2, v 0 start v 0 v 1 10 1 3 4 3 T T 4 F T 3 F 2 2 2 v 3 2 v 4 3, v 3 2 v 4 v 3 2 F v 2 v 4 3, F v 2 4 4 8 8 v 3 3(3<12), 3, 1, v 0 v 3 3, 3, 1, v 0 6 6 5 6 v 3 v 3 5 v 5 v 5 v 6 v 6 9, 1 F F 5(5<9), v 3 F F 5, v 3 v 3 v 3 T 0 T 2 2, v 0 start v 0 v 1 10 1 3 4 T T T 2 v 3 2 v 4 3, 4 8 v 3 1, v 0 3, 5 6 v 3 v 5 v 6 1 F F 5, v 3 98, v 32 รศ. ดร. บญธร เครอตราช T T 0 T 2 2 2, v 0 start v 0 v 1 10 10 1 1 4 4 T T T 3 T T 2 2 v 3 2 v 2 v 4 3, 4 4 8 8 v 3 1, v 0 3, 5 6 6 v 3 v 6 T v 5 F v 5 1 v 6 1 T 5, v 3 6, v 6 86, v 26 รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 219
F F 0 T 2 2 start 2, v 0 Weighted Shortest Paths start v 0 v 1 10 10 1 1 (Dijkstra’s algorithm) 4 4 F F F 3 2 2 2 v 3 v 4 v 3 2 F v 2 v 4 F v 2 4 4 8 8 1, v 0 6 6 5 5 v 6 v 5 v 6 1 1 F F F F T 0 T F 0 T 2 T 2, v 0 2 start 2, v 0 start v 0 v 1 10 1 3 4 F 3 T 4 F T 3 T 2 2 2 v 3 2 v 4 3, v 3 F v 2 v 4 3, 4 4 8 v 3 8 3(3<12), 1, v 0 3, 3, v 3 3, 5 1, v 0 6 6 6 v 3 5 v 3 v 5 v 3 5 v 6 v 6 1 F 9, 1 F 5, v 3 F F 5, 98, v 32 v 3 v 3 T 0 T 2 2, v 0 start v 0 v 1 10 1 4 T T 3 T 2 v 3 2 v 4 3, 4 8 v 3 1, v 0 3, 6 5 v 3 v 5 v 6 8, 1 F F 5(5<9), v 3 v 2 รศ. ดร. บญธร เครอตราช T T 0 T 2 2 2, v 0 start v 0 v 1 10 10 1 1 4 4 T T T 3 T T 2 2 v 3 2 v 2 v 4 3, 4 4 8 8 v 3 1, v 0 3, 5 6 6 v 3 v 6 T v 5 F v 5 1 v 6 1 T 5, v 3 6, v 6 86, v 26 รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Tree 220
adjacency matrix start 0 T v 0 1 4 2 F v 2 5 name 0 V 0 1 V 1 2 V 2 3 V 3 4 V 4 5 V 5 6 v 6 รศ. ดร. บญธร F 3 8 v 5 10 v 1 v 3 F F 2 1 distance 2 4 v 6 F 0 1 2 3 4 5 6 0 F 1 1 1 v 4 2 1 6 3 weights 1 1 1 1 5 path 0 1 2 3 4 5 6 1 4 known Data Structure option 6 1 0 2 1 1 3 10 2 4 3 5 2 2 8 4 6 4 5 6 เครอตราช รศ. กฤตวน ศรบรณ KMITL 1 01076249 Data Structures & Algorithms : Tree 221
- Slides: 21