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 :
Graph Definitions A (A, B) B adjacent to A A not adjacent to B (B, A) C • D B 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 B C ดงนนสำหรบ undirected graph B adjacent to A A adjacent to B KMITL 01076249 Data Structures & Algorithms : Graph 2
Graph Definitions ม 2 paths จาก A ไป D ABD unweigthed : ABCD unweigthed : loop path length = 2 + 5 = 7 A 6 2 B 5 D C 1 2 path length = 3 path length = 2 + 1 = 5 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 : Graph 3
Cycle, Simple Path C ABC B A D B A A ABCDA simple path acyclic C 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 : Graph 4
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 : Graph 5
Graph Examples Airport System, Traffic Flow, . . . รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Graph 6
Graph Edge-Representations 1 2 4 3 6 5 7 Or Linked List of vertices กรณมการ insert/delete vertex บอย รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Graph 7
Graph Node-Representation 1 2 4 3 6 5 7 Node-Representation name phone 1 V 1 0891761111 2 V 2 3 V 3 4 V 4 5 V 5 6 v 6 7 v 7 address Edge-Representations … 0 อาจใช array เกบ records ของ vertices ดงรปซายสด และ link กบ ขอมล ทเหมอนกน รศ. ดร. บญธร เครอตราช adjacency list ของแตละ vertex โดยใชเลข index รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Graph 8
Graph Representation 1 กรณ มการเปลยนแปลง linked list เพม /ลด vertex บอยๆ ใช Adjacency list อาจเกบของมล 2 vertex ใน 4 3 6 g name phone V 1 0891761111 address next_v 5 7 adj_lst V 2 V 3 V 4 V 5 v 6 v 7 รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Graph 9
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 Digital Data Struct รศ. กฤตวน ศรบรณ KMITL Data. Base Micro Robot Data. Base 01076249 Data Structures & Algorithms : Graph 10
Bredth First Traversals 1 3 2 6 5 7 10 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 : Graph 13
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 : Graph 15
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 : Graph 16 9
Shortest Path start 2 v 1 4 1 2 v 3 5 8 v 6 v 2 3 v 4 1 2 4 v 7 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 : Graph 17
Greedy Algorithm • Greedy Algorithm : เลอกอนทดทสด สำหรบ stage ปจจบน )อาจไมได optimum solution) • ตย. แลกเหรยญใหไดจำนวนเหรยญนอยทสด quarter suppose we have 12_cent_coin == > 12 dime nikle penny 15 cents : Greedy : (optimum รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ 25 cents 10 5 1 cents 12, 1, 1, 1 → → 10, 5) KMITL 01076249 Data Structures & Algorithms : Graph 18
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; vertices อนๆ : distance = ; for( ; ; ) v = vertex ทม dist. นอยทสด ท known ยงเปน false if (ไมม v ( break; v. known = true; for each w adjacent to v ซงยงไมถก process if (w. dist > v. dist + weight(vw)) ปรบ w. dist เปนคาใหมซงนอยกวา w. path = v; รศ. ดร. บญธร เครอตราช รศ. กฤตวน ศรบรณ KMITL T start 0 F v 0 1 4 F 2 v 1 2 v 4 4 6 1, v 0 v 5 F 2, v 0 10 F 3 v 3 8 5 F 2 v 6 1 F 01076249 Data Structures & Algorithms : Graph 19 F
distance 0 T start v 0 1 4 F 2 v 2 8 5 start 1 8 5 start F 2 3, v 3 5 1, v 0 รศ. ดร. บญธร 6 v 6 F v 1 T 3 2 1, v 0 v 5 9, v 3 F v 4 4 F F v 3 8 10 2 2 1 2, v 0 F 3 1 0 T v 2 vertices ทงหมด : known = flase; start_vertex : distance = 0; vertices อนๆ : distance = ; for( ; ; ) path v = vertex ทม dist. นอยทสด (from) ยงเปน false if (ไมม v ( break; v. known = true; for each w adjacent to v ซงยงไมถก if (w. dist > v. dist + weight(vw)) ปรบ w. dist เปนคาใหมซงนอยกวา 0 T 2 T 2, v 0 w. path = v; start distance F v 1 F 4 Greedy : for each current stage, choose the best. 6 v 5 v 0 F F v 3 v 4 4 2 2 v 2 1 0 T 4 F 2 1 4 2, v 0 10 v 4 6 เครอตราช 1 4 F 3, v 3 F 2 v 2 3, v 3 v 6 F Weighted Shortest Paths (Dijkstra’s algorithm) distance v 6 F v 0 10 F 3 v 5 v 1 v 3 known F 2 5, v 3 รศ. กฤตวน ศรบรณ T 3 v 3 8 5 v 1 1, v 0 2 1 10 v 4 4 6 v 5 9, v 3 F v 0 v 6 F KMITL 5, v 3 F F v 1 T 3 v 3 8 5 T 2 2 v 2 known process 1 4 3(3<12), v 3 3, v 3 ท 1, v 0 1 10 2 T v 4 4 6 v 5 9, v 3 F 2, v 0 3, v 3 v 6 F 01076249 Data Structures & Algorithms : Graph 5(5<9), v 3 20
0 T start v 0 8 5 5 T 1 0 T v 0 1 5 v 5 F 9, v 3 8, v 2 รศ. ดร. บญธร 3, v 3 T 3 1, v 0 1 2 4 2, v 0 10 v 4 6 v 6 F เครอตราช 5, v 3 start T 3, v 3 T 0 T v 0 2 v 2 3, v 5 3 F T 3 1, v 0 1 2 4 8 2, v 0 10 v 4 v 6 5, v 3 start T 3, v 3 T v 0 1, v 0 v 2 3, v 5 3 v 5 T 6, v 6 5(5<9), v 3 F v 1 T 3 2 1, v 0 01076249 Data Structures & Algorithms : Graph 3, v 3 T v 3 8 v 4 6 2 2 T v 6 1 1 4 10 4 v 5 0 T 2, v 0 2 v 3 9, v 3 F 6 T T 3 2 v 2 T v 1 1 4 5, v 3 F v 5 8, v 2 6, v 6 KMITL F T 2 v 0 v 6 v 3 8 F 0 T 3(3<12), v 3 3, v 3 6 5 2 1 start v 4 4 1 4 รศ. กฤตวน ศรบรณ 1, v 0 F T 2, v 0 v 1 10 2 v 5 9, v 3 F v 3 8 5 v 6 T 3 2 3, v 3 5, v 3 v 1 1 6 2 v 0 F v 4 4 1 F v 2 v 6 F 1, v 0 0 T T v 3 8 F v 4 2 v 5 4 F 6 2 2 v 2 10 4 v 5 4 3, v 3 1, v 0 start 2, v 0 2 v 3 9, v 3 F start F T 3 8 3, v 3 F v 1 2 v 2 8 10 F 3 v 3 2 1 1 Weighted Shortest Paths (Dijkstra’s algorithm) 2, v 0 v 1 2 5 F 2 v 0 v 2 6 1 0 T v 0 F v 6 F 4 F 0 T 4 F v 4 4 v 5 start 2 v 3 start 10 F 3 2 v 1 1 4 F F 2 1 4 2, v 0 10 v 4 6 v 6 T 5, v 3 21 T 3, v 3
0 T start v 0 1 4 F 2 v 2 8 start 1 2 3, v 3 5 9, v 3 start T 3, v 3 6 v 1 T 3 2 1, v 0 v 5 8, v 2 F รศ. ดร. บญธร 1 4 2, v 0 10 v 4 start T 3, v 3 6 T เครอตราช 5(5<9), v 3 รศ. กฤตวน ศรบรณ F v 1 T 3 1, v 0 v 5 8, v 2 6, v 6 KMITL 1 2 4 2, v 0 10 v 4 6 v 6 T 5, v 3 start T 3, v 3 T v 0 3, v 3 5 5, v 3 F v 1 T 3 2 1, v 0 v 5 T 6, v 6 01076249 Data Structures & Algorithms : Graph 3, v 3 T v 3 8 v 4 6 2 2 F v 6 1 1 4 10 4 v 5 0 T v 2 1, v 0 9, v 3 8, V 2 2, v 0 2 v 3 8 F T T 3 2 v 2 5, v 3 F v 3 8 3, v 3 5 v 6 F 2 v 2 T v 1 1 4 3(3<12), v 3 3, v 3 5 6 2 1 F T 2 v 0 v 6 1 4 0 T start v 4 4 v 5 v 0 T 2, v 0 v 1 10 2 1, v 0 0 T F v 3 9, v 3 F 5, v 3 v 6 T 3 8 v 6 F 1 6 2 2 F v 2 3, v 3 5 T v 3 8 v 0 F v 4 4 1 F 4 F v 4 4 2 2 5 2 1 1 4 v 2 T 3 10 1, v 0 0 T start 2, v 0 2 v 3 v 5 10 F 3 8 5 F 1, v 0 1 Weighted Shortest Paths (Dijkstra’s algorithm) 2, v 0 v 1 2 v 2 F v 1 F v 0 F 6 v 5 0 T v 6 v 3 8 v 0 4 F F 2 2 v 0 v 2 v 4 4 1 0 T 4 F 2 0 T start 10 F 3 v 5 F v 1 v 3 5 F 2 1 4 2, v 0 10 v 4 6 v 6 T T 5, v 3 22 3, v 3
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 2 F 3 v 3 8 v 5 F 10 v 1 1 distance 2 4 v 6 F 0 1 2 3 4 5 6 0 F 1 1 1 weights 1 1 v 4 2 1 6 3 1 1 1 5 path 6 0 1 2 3 4 5 6 1 4 known Data Structure option 1 0 2 1 1 3 10 2 4 3 5 2 2 8 4 6 4 5 6 เครอตราช รศ. กฤตวน ศรบรณ KMITL 01076249 Data Structures & Algorithms : Graph 1 24
- Slides: 24