Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
 โครงสร้างข้อมูลแบบ กราฟ (Graph)
โครงสร้างข้อมูล (Data Structure)
โครงสร้างข้อมูลแบบกราฟ (Graph)
 กราฟ (Graph)  เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิง
เส้นอีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที...
โครงสร้างข้อมูลแบบกราฟ (Graph)
ศัพท์ที่เกี่ยวข้อง
1.เวอร์เทก (Vertex) หมายถึง โหนด
2.เอดจ (Edge) หมายถึง เส้นเชื่อมของโหนด...
โครงสร้างข้อมูลแบบกราฟ (Graph)
โครงสร้างข้อมูลแบบกราฟ (Graph)
 แอดจาเซนท์โหนด (Adjacent Node)
A กับ B
D กับ F
ใช่ใช่
ไม่ใช่ไม่ใช่
โครงสร้างข้อมูลแบบกราฟ (Graph)
 เส้นทาง (Path)
ใช้เรียกลำาดับของ เวอร์เทก (Vertex) ที่เชื่อมต่อกัน
จากจุดหนึ่งไปยังอีกจุด...
โครงสร้างข้อมูลแบบกราฟ (Graph)
 Cycle
Path ที่ประกอบด้วยอย่างน้อย 3 Vertex และมีจุดเริ่ม
ต้นและสิ้นสุดเดียวกัน
เช่น (B,C,...
โครงสร้างข้อมูลแบบกราฟ (Graph)
 ลูป (Loop)
มีเพียง Arc เดียวและมีจุดเริ่มต้นและสิ้นสุดเดียวกัน
โครงสร้างข้อมูลแบบกราฟ (Graph)
Directed Graph : มีการกำาหนดทิศทาง
 Strongly Connected
ทุก ๆ 2 Vertex มี Path ทั้งไปและกลั...
โครงสร้างข้อมูลแบบกราฟ (Graph)
 Weakly Connected : มีอย่างน้อย 2 Vertex ที่มี
Path ในทิศทางเดียว (บางโหนดไม่สามารติดต่อไป...
Graph Storage Structure
การเก็บข้อมูลในหน่วยความจำาสามารถทำาได้ 2 แบบ
ดังนี้
1. Adjacency Matrix : ใช้อาร์เรย์เก็บใช้อาร์เ...
Adjacency Matrix
 เป็นโครงสร้างที่ประกอบไปด้วยโหนดและเส้นเชื่อม
ต่อที่บอกถึงเส้นทางของการเดินทาง หรือความ
สัมพันธ์ในทิศทา...
Adjacency Matrix
0 : ไม่เป็นแอดจาเซนซีกัน
1 : เป็นแอดจาเซนซีกัน
Transitive Closure
 ในกรณีที่เราอยากทราบว่าในกราฟจากโหนดหนึ่ง
ไปยังโหนดหนึ่งมีจำานวนเส้นทางมากเท่าไร เรา
สามารถหาค่าได้จา...
ตัวอย่าง
Adjacency List
Graph Traversal
สามารถทำาได้ 2 วิธี
1. แนวลึก : Depth-first Traversal
2. แนวราบ : Breath-first Traversal
Depth-first Traversal
 เป็นลักษณะการท่องเข้าไปยังโหนดเริ่มต้น แล้วให้โหนด
ใกล้เคียงเป็นโหนดเริ่มต้น เข้าเยี่ยมโหนด ทำาต่อ...
Breath-first Traversal
เป็นการท่องเข้าไปในกราฟโดยเข้าเยี่ยมโหนดตัว
แรก และดำาเนินการ หากมีโหนดใกล้เคียงจะดำาเนิน
การกับโหน...
Network
 หมายถึง Graph ที่ทุก Edge มี Weight กำากับ โดย
ความหมายของ Weight นั้นขึ้นอยู่กับการใช้งาน
Adjacency Matrix
Adjacency List
Network Application
 Minimum Spanning Tree เป็นรูปแบบของการ
ค้นหาโดยกำาหนดเรียกใช้โหนดทุกโหนดและทุกเส้น
การเชื่อมต่อ มาลำ...
Minimum Spanning Tree
 Spanning Tree หมายถึง Tree ที่ประกอบด้วย
ทุก Vertex ใน Graph ซึ่งอาจมีได้มากกว่า 1 แบบ
Minimum Spanning Tree
 Spanning Tree
แบบที่แบบที่ 11 แบบที่แบบที่ 22
Minimum Spanning Tree
 Minimum Spanning Tree (MST) หมายถึง
Spanning Tree ที่มีผลรวมของ Weight ทั้งหมดน้อยที่สุด
1.ใส่ Ver...
ตัวอย่าง
งหา Minimum Spanning Tree
Total weight = 13Total weight = 13
Shortest Path
 Shortest Path หมายถึง Path ที่สั้นที่สุดระหว่าง 2
Vertex
 หาเส้นทางการส่งข้อมูลจากต้นทางไปปลายทาง โดย
ให้...
Shortest Path
 จงหา Shortest Path จากโหนด A ไปยังโหนดอื่น
ๆ
โครงสร้างข้อมูลแบบ กราฟ (Graph)
โครงสร้างข้อมูลแบบ กราฟ (Graph)
โครงสร้างข้อมูลแบบ กราฟ (Graph)
โครงสร้างข้อมูลแบบ กราฟ (Graph)
โครงสร้างข้อมูลแบบ กราฟ (Graph)
โครงสร้างข้อมูลแบบ กราฟ (Graph)
Upcoming SlideShare
Loading in …5
×

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

6,250 views

Published on

วิชาโครงสร้างข้อมูล

Published in: Education
  • Be the first to comment

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

  1. 1.  โครงสร้างข้อมูลแบบ กราฟ (Graph) โครงสร้างข้อมูล (Data Structure)
  2. 2. โครงสร้างข้อมูลแบบกราฟ (Graph)  กราฟ (Graph)  เป็นโครงสร้างข้อมูลแบบไม่ใช่เชิง เส้นอีกชนิดหนึ่ง กราฟเป็นโครงสร้างข้อมูลที่มี การนำาไปใช้ในงานที่เกี่ยวข้องกับการแก้ปัญหาที่ ค่อนข้างซับซ้อน เช่น การวางข่ายงานคอมพิวเตอร์ การวิเคราะห์เส้นทางวิกฤติ และปัญหาเส้นทางที่สั้น ที่สุด เป็นต้น
  3. 3. โครงสร้างข้อมูลแบบกราฟ (Graph) ศัพท์ที่เกี่ยวข้อง 1.เวอร์เทก (Vertex) หมายถึง โหนด 2.เอดจ (Edge) หมายถึง เส้นเชื่อมของโหนด 3.ดีกรี (Degree) หมายถึง จำานวนเส้นเข้าและออก ของ โหนดแต่ละโหนด 4.แอดจาเซนท์โหนด (Adjacent Node) หมายถึง โหนดที่มี การเชื่อมโยงกัน  Graph แบ่งเป็น 1. Directed Graph (Digraph) (Arc)
  4. 4. โครงสร้างข้อมูลแบบกราฟ (Graph)
  5. 5. โครงสร้างข้อมูลแบบกราฟ (Graph)  แอดจาเซนท์โหนด (Adjacent Node) A กับ B D กับ F ใช่ใช่ ไม่ใช่ไม่ใช่
  6. 6. โครงสร้างข้อมูลแบบกราฟ (Graph)  เส้นทาง (Path) ใช้เรียกลำาดับของ เวอร์เทก (Vertex) ที่เชื่อมต่อกัน จากจุดหนึ่งไปยังอีกจุดหนึ่ง (A,B,C,D,E) (A,B,E,F)
  7. 7. โครงสร้างข้อมูลแบบกราฟ (Graph)  Cycle Path ที่ประกอบด้วยอย่างน้อย 3 Vertex และมีจุดเริ่ม ต้นและสิ้นสุดเดียวกัน เช่น (B,C,E,B)(B,C,E,B) (B,C,D,E,B)(B,C,D,E,B)
  8. 8. โครงสร้างข้อมูลแบบกราฟ (Graph)  ลูป (Loop) มีเพียง Arc เดียวและมีจุดเริ่มต้นและสิ้นสุดเดียวกัน
  9. 9. โครงสร้างข้อมูลแบบกราฟ (Graph) Directed Graph : มีการกำาหนดทิศทาง  Strongly Connected ทุก ๆ 2 Vertex มี Path ทั้งไปและกลับ (ทุกโหนดในกราฟมีพาทติดต่อถึงกันหมด)
  10. 10. โครงสร้างข้อมูลแบบกราฟ (Graph)  Weakly Connected : มีอย่างน้อย 2 Vertex ที่มี Path ในทิศทางเดียว (บางโหนดไม่สามารติดต่อไป ยังทุกโหนดในกราฟนั้นได้) AA ไปไป GG ได้ในทิศทางเดียวได้ในทิศทางเดียว
  11. 11. Graph Storage Structure การเก็บข้อมูลในหน่วยความจำาสามารถทำาได้ 2 แบบ ดังนี้ 1. Adjacency Matrix : ใช้อาร์เรย์เก็บใช้อาร์เรย์เก็บ ข้อมูลข้อมูล 2. Adjacency List : ใช้ลิงค์ลิสต์เก็บข้อมูลใช้ลิงค์ลิสต์เก็บข้อมูล
  12. 12. Adjacency Matrix  เป็นโครงสร้างที่ประกอบไปด้วยโหนดและเส้นเชื่อม ต่อที่บอกถึงเส้นทางของการเดินทาง หรือความ สัมพันธ์ในทิศทางซึ่งสามารถนำามาแทนความ สัมพันธ์นั้นด้วยการกำาหนดเมตริกซ์ n x n  Mk เป็นเมทริกซ์ของกราฟใด ๆ k คือทางเดินที่มี ความยาว k จากโหนดหนึ่งไปอีกโหนดหนึ่ง
  13. 13. Adjacency Matrix 0 : ไม่เป็นแอดจาเซนซีกัน 1 : เป็นแอดจาเซนซีกัน
  14. 14. Transitive Closure  ในกรณีที่เราอยากทราบว่าในกราฟจากโหนดหนึ่ง ไปยังโหนดหนึ่งมีจำานวนเส้นทางมากเท่าไร เรา สามารถหาค่าได้จากการคูณเมทริกซ์
  15. 15. ตัวอย่าง
  16. 16. Adjacency List
  17. 17. Graph Traversal สามารถทำาได้ 2 วิธี 1. แนวลึก : Depth-first Traversal 2. แนวราบ : Breath-first Traversal
  18. 18. Depth-first Traversal  เป็นลักษณะการท่องเข้าไปยังโหนดเริ่มต้น แล้วให้โหนด ใกล้เคียงเป็นโหนดเริ่มต้น เข้าเยี่ยมโหนด ทำาต่อไปจน กระทั่งไม่มีโหนดใกล้เคียงจึงย้อนกลับมายังโหนดก่อนหน้า และเข้าเยี่ยมโหนดอีกด้านด้วยรูปแบบเดียวกันจนครบ เทียบ ได้กับการท่องเข้าไปในทรีแบบพรีออเดอร์ 1. Push vertex 2. Pop vertex และประมวลผล 3. Push adjacent ทั้งหมดของ Vertex ในข้อ 2
  19. 19. Breath-first Traversal เป็นการท่องเข้าไปในกราฟโดยเข้าเยี่ยมโหนดตัว แรก และดำาเนินการ หากมีโหนดใกล้เคียงจะดำาเนิน การกับโหนดที่อยู่ด้านซ้ายก่อน 1. Enqueue vertex 2. Dequeue vertex และประมวลผล 3. Enqueue adjacent ทั้งหมดของ Vertex ใน ข้อ 2
  20. 20. Network  หมายถึง Graph ที่ทุก Edge มี Weight กำากับ โดย ความหมายของ Weight นั้นขึ้นอยู่กับการใช้งาน
  21. 21. Adjacency Matrix
  22. 22. Adjacency List
  23. 23. Network Application  Minimum Spanning Tree เป็นรูปแบบของการ ค้นหาโดยกำาหนดเรียกใช้โหนดทุกโหนดและทุกเส้น การเชื่อมต่อ มาลำาดับความสำาคัญของนำ้าหนักโดยเริ่ม จากค่าน้อยที่สุดในข่ายงาน ทำาการเชื่อมต่อคู่โหนด นั้น และดำาเนินการต่อไปในค่านำ้าหนักที่ต่อกัน แต่ถ้า โหนดใดมีการเชื่อมต่อคู่โหนดแล้วจะไม่เชื่อมต่ออีก  Shortest Path เป็นอัลกอริทึมที่ใช้ในการหาระยะ ทางที่สั้นที่สุดเช่นเดียวกับ MST แต่จะเปลี่ยนจาก
  24. 24. Minimum Spanning Tree  Spanning Tree หมายถึง Tree ที่ประกอบด้วย ทุก Vertex ใน Graph ซึ่งอาจมีได้มากกว่า 1 แบบ
  25. 25. Minimum Spanning Tree  Spanning Tree แบบที่แบบที่ 11 แบบที่แบบที่ 22
  26. 26. Minimum Spanning Tree  Minimum Spanning Tree (MST) หมายถึง Spanning Tree ที่มีผลรวมของ Weight ทั้งหมดน้อยที่สุด 1.ใส่ Vertex เริ่มต้นใน Tree 2.เลือก Edge จาก Vertex ใน Tree ไปยัง Vertex ที่ไม่อยู่ ใน Tree และมี Weight ตำ่าสุด 3.ทำาซำ้าข้อ 2 จนกว่าจะครบทุก Vertex
  27. 27. ตัวอย่าง งหา Minimum Spanning Tree
  28. 28. Total weight = 13Total weight = 13
  29. 29. Shortest Path  Shortest Path หมายถึง Path ที่สั้นที่สุดระหว่าง 2 Vertex  หาเส้นทางการส่งข้อมูลจากต้นทางไปปลายทาง โดย ให้มีระยะทางสั้นที่สุด 1. ใส่ Vertex เริ่มต้นใน Tree 2. เลือก Edge จาก Vertex ใน Tree ไปยัง Vertex ที่ไม่อยู่ใน Tree และมีผลรวมของ Weight
  30. 30. Shortest Path  จงหา Shortest Path จากโหนด A ไปยังโหนดอื่น ๆ

×