1 / 45

โครงสร้างข้อมูล (Data Structure)

โครงสร้างข้อมูล (Data Structure). โครงสร้างข้อมูลแบบ กราฟ (Graph). โครงสร้างข้อมูลแบบกราฟ (Graph).

Télécharger la présentation

โครงสร้างข้อมูล (Data Structure)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. โครงสร้างข้อมูล (Data Structure) โครงสร้างข้อมูลแบบ กราฟ (Graph)

  2. โครงสร้างข้อมูลแบบกราฟ (Graph) • กราฟ (Graph)เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิงเส้นอีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที่มีการนำไปใช้ในงานที่เกี่ยวข้องกับการแก้ปัญหาที่ค่อนข้างซับซ้อน เช่น การวางข่ายงานคอมพิวเตอร์ การวิเคราะห์เส้นทางวิกฤติ และปัญหาเส้นทางที่สั้นที่สุด เป็นต้น

  3. B a b F G A C c E D e d ตัวอย่าง V = a,b,c,d,e V = {A,B,C,D,E,F,G} E = {ab,ac,ad,be,ce,cd,ed E = {AB,AC,AD,CD,CF,DE,EF,FG,EG}

  4. โครงสร้างข้อมูลแบบกราฟ (Graph) ศัพท์ที่เกี่ยวข้อง 1. เวอร์เทก(Vertex) หมายถึง โหนด 2. เอดจ (Edge) หมายถึงเส้นเชื่อมต่อระหว่างเวอร์เท็กซ์บนกราฟ แบบ Undirected Graph 3. Arc หมายถึง เส้นที่เชื่อมต่อระหว่างเวอร์เท็กซ์บนกราฟ แบบ Directed Graph 4. ดีกรี (Degree) หมายถึง จำนวนเส้นเข้าและออก ของโหนดแต่ละโหนด 5. แอดจาเซนท์โหนด (Adjacent Node) หมายถึง โหนดที่มีการเชื่อมโยงกัน • Graphแบ่งเป็น1. Directed Graph (Digraph) (Arc)2. Undirected Graph

  5. โครงสร้างข้อมูลแบบกราฟ (Graph)

  6. โครงสร้างข้อมูลแบบกราฟ (Graph) • แอดจาเซนท์โหนด (Adjacent Node) A กับ B D กับ F ใช่ ไม่ใช่

  7. โครงสร้างข้อมูลแบบกราฟ (Graph) • เส้นทาง (Path) ใช้เรียกลำดับของ เวอร์เทก (Vertex) ที่เชื่อมต่อกันจากจุดหนึ่งไปยังอีกจุดหนึ่ง (A,B,C,D,E) (A,B,E,F)

  8. โครงสร้างข้อมูลแบบกราฟ (Graph) • Cycle Path ที่ประกอบด้วยอย่างน้อย 3 Vertex และมีจุดเริ่มต้นและสิ้นสุดเดียวกัน เช่น (B,C,E,B) (B,C,D,E,B)

  9. โครงสร้างข้อมูลแบบกราฟ (Graph) • ลูป (Loop) มีเพียง Arcเดียวและมีจุดเริ่มต้นและสิ้นสุดเดียวกัน

  10. โครงสร้างข้อมูลแบบกราฟ (Graph) Directed Graph: มีการกำหนดทิศทาง • Strongly Connected ทุก ๆ 2 Vertex มี Path ทั้งไปและกลับ (ทุกโหนดในกราฟมีพาทติดต่อถึงกันหมด)

  11. โครงสร้างข้อมูลแบบกราฟ (Graph) • Weakly Connected : มีอย่างน้อย 2 Vertex ที่มี Path ในทิศทางเดียว (บางโหนดไม่สามารติดต่อไปยังทุกโหนดในกราฟนั้นได้) A ไป G ได้ในทิศทางเดียว

  12. สูตรหาจำนวนเอดจ์ของกราฟสมบูรณ์แบบมีทิศทาง = N * (N –1) จากภาพที่ (ข) ซึ่งเป็นกราฟแบบมีทิศทาง และจำนวนเวอร์เทกซ์ที่มีทั้งหมดเท่ากับ 4 เวอร์เทกซ์ จึงคำนวณหาจำนวนเอดจ์ได้ดังนี้ สูตรหาจำนวนเอดจ์ของกราฟมีทิศทาง = N * (N –1) = 4 * ( 4 – 1) = 4 * 3 = 12 เส้น

  13. โครงสร้างข้อมูลแบบกราฟ (Graph) Undirected Graph: ไม่มีการกำหนดทิศทาง • เป็นกราฟที่ไม่ระบุทิศทางของการเชื่อมต่อ ซึ่งสามารถทำให้สามารถเดินทางไปมาระหว่างกันได้

  14. สูตรหาจำนวนเอดจ์ของกราฟสมบูรณ์แบบไม่มีทิศทาง = (N * (N – 1)) / 2 กราฟแบบไม่มีทิศทาง และจำนวนเวอร์เทกซ์ที่มีทั้งหมด เท่ากับ 4 เวอร์เทกซ์ จึงคำนวณหาจำนวนเอดจ์ได้ดังนี้ สูตรหาจำนวนเอดจ์ของกราฟไม่มีทิศทาง = (N * (N – 1)) / 2 = (4 * (4 – 1)) / 2 = (4 * 3 ) / 2 = 12 / 2 = 6 เส้น

  15. 101 ปทุมธานี สระบุรี 101 46 58 107 นครนายก กรุงเทพ 100 29 82 ฉะเชิงเทรา ปราจีนบุรี 76 กราฟที่มีน้ำหนัก (Weighted Graphs) • กราฟที่แต่ละเอดจ์จะมีค่าบ่งบอกถึงความหมายอย่างใดอย่างหนึ่ง เช่น ระยะทาง ความเร็ว เวลาเดินทาง ค่าโดยสาร เป็นต้น

  16. กราฟที่มีน้ำหนัก

  17. เป็นกราฟที่ไม่กำหนดน้ำหนักของเส้นเชื่อมต่อโดยให้แต่ละเส้นมีน้ำหนักเป็น 1 เท่ากันหมดทุกเส้น • กราฟที่ไม่มีน้ำหนัก (Unweighted Graphs) 1 A 1 C 1 B 1 E D

  18. Graph Storage Structure การเก็บข้อมูลในหน่วยความจำสามารถทำได้ 2 แบบ ดังนี้ 1. Adjacency Matrix : ใช้อาร์เรย์เก็บข้อมูล 2. Adjacency List : ใช้ลิงค์ลิสต์เก็บข้อมูล

  19. Adjacency Matrix • เป็นโครงสร้างที่ประกอบไปด้วยโหนดและเส้นเชื่อมต่อที่บอกถึงเส้นทางของการเดินทาง หรือความสัมพันธ์ในทิศทางซึ่งสามารถนำมาแทนความสัมพันธ์นั้นด้วยการกำหนดเมตริกซ์ n x n • Mkเป็นเมทริกซ์ของกราฟใด ๆ k คือทางเดินที่มีความยาว k จากโหนดหนึ่งไปอีกโหนดหนึ่ง

  20. Adjacency Matrix 0 : ไม่เป็นแอดจาเซนซีกัน 1 : เป็นแอดจาเซนซีกัน

  21. B A C D การแทนกราฟด้วยอะเรย์สองมิติ A B C D A B C D

  22. การแทนที่กราฟ

  23. การแทนที่กราฟ

  24. Adjacency List

  25. Graph Traversal สามารถทำได้ 2 วิธี 1.แนวลึก : Depth-first Traversal 2.แนวราบ : Breath-first Traversal

  26. Depth-first Traversal • เป็นลักษณะการท่องเข้าไปยังโหนดเริ่มต้น แล้วให้โหนดใกล้เคียงเป็นโหนดเริ่มต้น เข้าเยี่ยมโหนด ทำต่อไปจนกระทั่งไม่มีโหนดใกล้เคียงจึงย้อนกลับมายังโหนดก่อนหน้า และเข้าเยี่ยมโหนดอีกด้านด้วยรูปแบบเดียวกันจนครบ เทียบได้กับการท่องเข้าไปในทรีแบบพรีออเดอร์ 1. Push vertex 2. Pop vertex และประมวลผล 3. Push adjacent ทั้งหมดของ Vertex ในข้อ 2 4.ทำซ้ำข้อ 2-3 จนกว่าจะครบทุก Vertex และ Stack ว่าง

  27. Depth-first Traversal • ผลการท่อง A – B – E – F – G – C – D – H – I - J A B C D H E F G I J

  28. Breath-first Traversal เป็นการท่องเข้าไปในกราฟโดยเข้าเยี่ยมโหนดตัวแรก และดำเนินการ หากมีโหนดใกล้เคียงจะดำเนินการกับโหนดที่อยู่ด้านซ้ายก่อน 1. Enqueue vertex 2. Dequeue vertex และประมวลผล 3. Enqueue adjacent ทั้งหมดของ Vertex ในข้อ 2 4.ทำซ้ำข้อ 2-3 จนกว่าจะครบทุก Vertex และ Queue ว่าง

  29. Breath-first Traversal • ผลการท่อง A – B – C – D – E – F – G – H – I - J A B C D H E F G I J

  30. Network • หมายถึง Graph ที่ทุก Edge มี Weight กำกับ โดยความหมายของ Weight นั้นขึ้นอยู่กับการใช้งาน

  31. Adjacency Matrix

  32. Adjacency List

  33. Network Application • Minimum Spanning Tree เป็นรูปแบบของการค้นหาโดยกำหนดเรียกใช้โหนดทุกโหนดและทุกเส้นการเชื่อมต่อ มาลำดับความสำคัญของน้ำหนักโดยเริ่มจากค่าน้อยที่สุดในข่ายงาน ทำการเชื่อมต่อคู่โหนดนั้น และดำเนินการต่อไปในค่าน้ำหนักที่ต่อกัน แต่ถ้าโหนดใดมีการเชื่อมต่อคู่โหนดแล้วจะไม่เชื่อมต่ออีก • Shortest Path เป็นอัลกอริทึมที่ใช้ในการหาระยะทางที่สั้นที่สุดเช่นเดียวกับ MST แต่จะเปลี่ยนจากการหาเส้นทางจากโหนดแรกไปยังโหนดปลายทางของข่ายงาน เป็นโหนดที่กำหนดเป็นโหนดต้นทางไปยังโหนดต่าง ๆ โดยหาระยะทางสั้นที่สุดแต่ละเส้นทาง

  34. Minimum Spanning Tree • Spanning Tree หมายถึง Tree ที่ประกอบด้วยทุก Vertex ใน Graph ซึ่งอาจมีได้มากกว่า 1 แบบ

  35. Minimum Spanning Tree • Minimum Spanning Tree(MST)หมายถึง Spanning Tree ที่มีผลรวมของ Weight ทั้งหมดน้อยที่สุด 1.ใส่ Vertex เริ่มต้นใน Tree 2.เลือก Edge จาก Vertex ใน Tree ไปยัง Vertex ที่ไม่อยู่ใน Tree และมี Weight ต่ำสุด 3.ทำซ้ำข้อ 2 จนกว่าจะครบทุก Vertex

  36. ตัวอย่าง จงหา Minimum Spanning Tree

  37. Total weight = 13

  38. Shortest Path • Shortest Path หมายถึง Path ที่สั้นที่สุดระหว่าง 2 Vertex • หาเส้นทางการส่งข้อมูลจากต้นทางไปปลายทาง โดยให้มีระยะทางสั้นที่สุด 1.ใส่ Vertex เริ่มต้นใน Tree 2.เลือก Edge จาก Vertex ใน Tree ไปยัง Vertex ที่ไม่อยู่ใน Tree และมีผลรวมของ Weight ต่ำสุด 3.ทำซ้ำข้อ 2 จนกว่าจะครบทุก Vertex

  39. Shortest Path • จงหา Shortest Path จากโหนด A ไปยังโหนดอื่น ๆ

  40. แบบฝึกหัด • 1. จากกราฟที่กำหนดให้ต่อไปนี้ จงตอบคำถาม A B D E C F

  41. แบบฝึกหัด • 1.1 หา Path จาก A ถึง F • 1.2 หา Cycle จาก B ถึง E • 1.3 จงแทนที่กราฟด้วยเมตริกซ์ • 1.4 จงแทนที่กราฟด้วย Link List

  42. แบบฝึกหัด • 2. จากกราฟที่กำหนดให้ จงหาระยะทางดังต่อไปนี้ A 2 5 B D 2 3 4 5 3 E C F

  43. แบบฝึกหัด • 2.1 จงหาระยะทางที่สั้นที่สุดด้วย Minimum Spanning Tree • 2.2 จงหาระยะทางที่สั้นที่สุดด้วย Shortest Path

More Related