WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO Chapter 6 Graph 1
จุดประสงค์ บทเรียนที่ 6 2 มีความรู้ความเข้าใจในเรื่องกราฟ สามารถจำแนกประเภทของกราฟได้ เข้าใจถึงการประยุกต์ใช้กราฟได้ สามารถสร้างตัวแทนของกราฟทั้ง 2 รูปแบบได้ สามารถแปลงจากกราฟไปเป็นการจัดลำดับของโทโปโลจี้ได้ สามารถประยุกต์แก้ปัญหาโจทย์ที่เกี่ยวกับกราฟ โดยวิธีลำดับของ โทโลโลจี้ได้
การประยุกต์ใช้ 3 เส้นทางในแผนที่กูเกิ้ล (google map) เส้นทางที่ 1 : 22.3 km เส้นทางจากมหาวิทยาลัยพะเยา ไป กว๊านพะเยา เส้นทางที่ 2 : 20.6 km
การประยุกต์ใช้ 4 เส้นทางในแผนที่กูเกิ้ล (google map) การค้นหาข้อมูลเว็บไซต์ของกูเกิ้ล (spider in web crawler) google searching
การประยุกต์ใช้ 5 เส้นทางในแผนที่กูเกิ้ล (google map) การค้นหาข้อมูลเว็บไซต์ของกูเกิ้ล (spider in web crawler) เพิ่มประสิทธิภาพเครือข่ายเน็ตเวิร์ค วิเคราะห์ความสัมพันธ์ของเพื่อนใน facebook timeline
การประยุกต์ใช้ 6 เส้นทางในแผนที่กูเกิ้ล (google map) การค้นหาข้อมูลเว็บไซต์ของกูเกิ้ล (spider in web crawler) เพิ่มประสิทธิภาพเครือข่ายเน็ตเวิร์ค เพิ่มประสิทธิภาพของข้อมูลที่มีการเชื่อมต่อ เช่น ฐานข้อมูล การวางระบบไฟจราจร การคำนวณหา ช่วงเวลา ในการติดไฟแดง ของสัญญาณไฟ จราจร
นิยาม 7 กราฟเป็นการเชื่อมต่อระหว่างจุด เมื่อจุดต่างๆ บรรจุข้อมูล โหนดทั้งหมด เรียกว่า vertices ( โหนดย่อย เรียก vertex) เส้นเชื่อมระหว่างโหนด เรียกว่า edges
นิยาม 8 กำหนดให้ G = (V,E) แทนกราฟ เมื่อ V แทนเซตของ vertices ในกราฟ G V = {1,2,0,3,6,8,9,7} E แทนคู่ลำดับของ edge ในกราฟ G แต่ละ edge ของ E สามารถเขียนได้เป็น e = (v,w) เช่น (1,2) หรือ (1,0) E = {(1,2),(1,0),(2,3),(2,6),(2,8),(3,6),(8,9),(9,7) }
ประเภทของกราฟ 9 directed graph ถ้าระหว่าง edge มีทิศทาง เช่น e = (1,0), (0,1), (1,2), (3,2) undirected graph ถ้าระหว่าง edge ไม่มีทิศทาง เช่น e = (1,0), (0,1)
Terminology adjacent : vertices ที่อยู่ติดกัน เช่น 1 adjacent 0 และ 2 2. path : เส้นทางเดินระหว่าง vertex โดยมี edge เชื่อม เช่น 1-0, length : จำนวน edge ในเส้นทางนั้นๆ เช่น เส้นทาง 1-0 มี length(1) และ มี length(3) 4. loop : vertex ไป vertex โดยเป็นจุดเดียวกัน e = (v,v) เช่น
Terminology cycle path : directed graph มีโอกาสเป็น cycle path ตัวอย่างเช่น : undirected graph มีโอกาสเป็น cycle path มากกว่า เนื่องจากไม่มีลูกศร 6. cyclic graph : กราฟที่มี cycle path 7. acyclic graph : กราฟที่ ไม่มีเส้นทางของ vertex ใด ย้อนกลับมาที่ vertex นั้นๆ
Terminology cycle path : directed graph มีโอกาสเป็น cycle path ตัวอย่างเช่น : undirected graph มีโอกาสเป็น cycle path มากกว่า เนื่องจากไม่มีลูกศร 6. cyclic graph : กราฟที่มี cycle path 7. acyclic graph : กราฟที่ ไม่มีเส้นทางของ vertex ใด ย้อนกลับมาที่ vertex นั้นๆ directed acyclic graph (DAG) acyclic graph
Terminology in-degree : จำนวน edge ที่ชี้มาจาก vertex นั้น เช่น 2(2) 1(0) 7(1) 9. out-degree : จำนวน edge ที่ชี้ออกจาก vertex นั้น เช่น 2(2) 1(2) 7(0) 10. connected graph : ทุกๆ คู่ของ vertex มี edge เชื่อมต่ออยู่ disconnected graph
Graph Types 14 Directed graph Directed acyclic graph cyclic graph Undirected graph cyclic graph complete connected graph weight graph connected graph cyclic graph
การสร้างตัวแทนกราฟ 15 Representation of graph
adjacency matrix 16 A DC B ABCD A0100 B0011 C1000 D1010 count out-degree
adjacency matrix 17 A DC B ABCD A B C D count out-degree
adjacency matrix 18 A DC B ABCD A0 B0 C0 D0 count out-degree ไม่มี vertex loop
adjacency matrix 19 A DC B ABCD A0100 B0011 C1000 D1010 count out-degree หา ความสัมพันธ์ vertex ที่มี ทิศวิ่งไปหา อีก vertex หนึ่ง
adjacency matrix 20 Z Y W PT S R XQ PQRSTWXYZ P Q R S T W X Y Z count out-degree
adjacency matrix 21 Z Y W PT S R XQ PQRSTWXYZ P Q R S T W X Y Z count out-degree
adjacency list 22 A DC B Out Degree Adjacency list A1B B1C, D C1A D2A, C
adjacency list 23 A DC B Out Degree Adjacency list A1B B1C, D C1A D2A, C
adjacency list 24 Z Y W PT S R XQ Out DegreeAdjacency list P1R, W Q1X R1X S1T T1W W2S, Y X0- Y1R, Z Z0-
adjacency list 25 Z Y W PT S R XQ Out DegreeAdjacency list P1R, W Q1X R1X S1T T1W W2S, Y X0- Y1R, Z Z0-
Topological sort 26 การแสดงลำดับของ vertex ใน DAG ( DAG ?) การประยุกต์ใช้งานเช่น - การสร้างคอมไพเลอร์เพื่อประมวลผล inheritance(in java programming) - prerequisites between courses of degree program - scheduling constraints between the task of project
Topological sort , 2, 5, 4, 3, 7, 6 - 1, 2, 5, 4, 7, 3, Topological Sort algorithm Create an array of length equal to the number of vertices. While the number of vertices is greater than 0, repeat: o Find in-degree vertex is 0 o Put this vertex in the array. o Delete the vertex from the graph.
Topological sort , 2, 5, 4, 3, 7, 6 - 1, 2, 5, 4, 7, 3, In-degree with stack sort Find in-degree vertex is 0 Put this vertex in the array. Delete the vertex from the graph
Topological sort , 2, 5, 4, 3, 7, 6 - 1, 2, 5, 4, 7, 3, Find in-degree vertex is 0 Put this vertex in the array. Delete the vertex from the graph
Topological sort , 2, 5, 4, 3, 7, 6 - 1, 2, 5, 4, 7, 3, Find in-degree vertex is 0 Put this vertex in the array. Delete the vertex from the graph
Topological Sort Example This job consists of 10 tasks with the following precedence rules: Must start with 7, 5, 4 or 9. Task 1 must follow 7. Tasks 3 & 6 must follow both 7 & 5. 8 must follow 6 & 4. 2 must follow must follow 2. Make a directed graph and then a list of ordered pairs that represent these relationships.
Must start with 7, 5, 4 or 9. Task 1 must follow 7. Tasks 3 & 6 must follow both 7 & 5. 8 must follow 6 & 4. 2 must follow must follow 2.
33 Topological Animation
Example 34
Example 35
Example
Example
Example
Example
Example
Example
Example
Example
Example
Example
Example sort142
Example sort142143
Example sort
Example sort
Example sort
Example sort
Example sort
Example sort
Example sort
Example sort
Example sort
Example sort
58 In-degree with stack
59 In-degree with stack st sort 1
60 In-degree with stack st sort 12
61 In-degree with stack st sort 124
62 In-degree with stack st sort 124
63 In-degree with stack st sort 12435
64 out-degree with stack
65 out-degree with stack sort 1
66 out-degree with stack sort 12
67 out-degree with stack sort 124
68 out-degree with stack sort 12435
Topological sort 69 Complexity - The number of operations is O(|E| + |V|), where |V| - number of vertices, |E| - number of edges. - How many operations are needed to compute the indegrees? Depends on the representation: Adjacency lists: O(|E|) Matrix: O(|V| 2 ) Note that if the graph is complete |E| = O(|V| 2 )
Shortest path 70 Dijkstra’s algorithm greedy algorithm
Dijkstra’s algorithm 71 Edsger W. Dijkstra: a few select quotes The question of whether computers can think is like the question of whether submarines can swim. Do only what only you can do.