โครงสร้างข้อมูลกราฟ ( graph) 7 graph.pdf · 2016-11-29 ·...

55
โครงสร้างข้อมูลกราฟ (GRAPH)

Upload: others

Post on 07-Jan-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

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

Page 2: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

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

โครงสร้างข้อมูลแบบไม่ใช่เชิงเส้น

น าไปใช้ในงานท่ีเก่ียวข้องกับการแก้ปัญหาท่ีค่อนข้างซับซ้อน เช่น

การวางข่ายงานคอมพิวเตอร์

การวิเคราะห์เส้นทางวิกฤติ

ปัญหาเส้นทางที่สั้นที่สุด

ฯลฯ

2

Page 3: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Adjacent Vertices

นิยามของกราฟ

3

A B

C D

Vertices/ Vertex

Arc/ Edge

V(G) คอื เซตของ Vertex ที่ไม่ใชเ่ซ็ตว่าง และมีจ านวนจ ากัด

E(G) คอื เซตของ Edge ซึ่งเขียนดว้ยคูข่องเวอรเ์ท็กซ ์

Page 4: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

องค์ประกอบโครงสร้างข้อมูลแบบกราฟ

4

V = {1, 2, 3, 4}

E= {(1,2), (1,4), (2,3), (3,4)}

Page 5: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ตัวอย่าง

5

A

C D E

B

V(G) =

EG =

{A, B, C, D, E}

{(A,B), (A,C), (A,D), (A,E), (B,E)}

Page 6: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ประเภทของกราฟ

6

B

A

C D B

A

C D

Undirected Graph Directed Graph

Page 7: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ศัพท์เฉพาะเกี่ยวกับ Graphs

Vertices หรือ Vertex

Node ที่อยู่ภายใน Graph

Arcs/Edges

Arcs เส้นเช่ือมต่อระหว่าง Node บน Directed Graph

Edges เส้นเช่ือมต่อระหว่าง Node บน Undirected Graph

Adjacent Node

โหนดที่มีการเช่ือมโยงกัน

7

Page 8: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Example : Adjacent Node

8

A with B

A with E

E with C

Page 9: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ศัพท์เฉพาะเกี่ยวกับ Graphs

Degree

จ านวนเส้นเข้า (In degree)และออก (Out degree) ของแต่ละโหนด บน Graphs

9

B

A

C D

Node In-degree Out-Degreee A 3 3 B 1 1 C 2 2 D 2 2

B

A

C D

Node In-degree Out-Degreee A 3 1 B 0 1 C 0 2 D 2 1

Undirected Graph Directed Graph

Page 10: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ศัพท์เฉพาะเกี่ยวกับ Graphs

Path

ใชเ้รียกล าดับของ Vertex ที่เช่ือมต่อกันจากจุดหนึ่งไปยังอกีจุดหนึ่ง

10

(A,B)

(A,B,C)

(A,B,C,D,E)

(A,B,E,F)

Page 11: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ศัพท์เฉพาะเกี่ยวกับ Graphs

Cycle

Path ใน Graph แบบ Direct Graph โดย Vertex เริ่มตน้และสิ้นสุดเป็น Vertex เดียวกัน

11

(B,E,C,B)

(B,E,D,C,B)

Page 12: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ศัพท์เฉพาะเกี่ยวกับ Graphs

Loop

Path ใน Graph แบบ Undirect Graph โดย Vertex เริ่มตน้และสิ้นสุดเป็น Vertex เดียวกัน

12

(B,E,C,B)

(B,C,D,E,B)

Page 13: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Graph VS. Tree

Graph เป็น Super Set ของ Tree

Tree ต้องมี Father Node โหนดเดียวเท่านั้น, แต่ Graph ไม่จ าเป็น

บน Graph บาง Vertex อาจไม่มีเส้นเชื่อมได้

13

Page 14: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Graph VS. Tree

14

B

A

F

C

E G

D

(4) Graph

(2) Non binary tree

B D

A

F

C

E G

B

A

C

E G

(1) Binary tree

(3) Graph

B

A

F

C

E G

D

Page 15: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ประโยชน์ของกราฟ (Routing การหาเส้นทาง)

สายการบิน (การเช่ือมต่อของสายการบิน ตารางบิน)

Page 16: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ประโยชน์ของกราฟ (Routing การหาเส้นทาง)

Network (การเช่ือมต่อของอุปกรณ์ Router)

เพ่ือใช้ในการรับส่งข้อมูลในเครือข่าย

Page 17: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ประโยชน์ของกราฟ (Algorithm Design)

Map Coloring คอื วธิกีารระบายสีในแผนที่โดยใช้สีน้อยที่สุด

พื้นที่ตดิกันห้ามใช้สีเดียวกัน

Page 18: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Unweighted Graph

เส้นเชื่อมไม่ระบุข้อมูลหรือค่าบางอย่าง เช่น

ถนนท่ีเช่ือมเมือง 2 เมืองแต่ไมร่ะบุระยะทาง

ผังรถไฟฟ้าใตด้ิน แต่ไม่ระบุราคาค่าโดยสารระหว่างสถาน ี

หรือมองว่าค่าข้อมูลเหล่าน้ันมีค่าเท่ากันหมด

อาจเป็น Directed หรือ Undirected Graph ก็ได้

18

Unweighted & Undirected Graph Unweighted & directed Graph

B

A

F

C

E G

D B

A

F

C

E G

D

Page 19: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Weighted Graph

เส้นเชื่อมระบุข้อมูลหรือค่าบางอย่างท่ีต้องการบ่งช้ี เช่น

ถนนที่เช่ือมเมือง 2 เมืองพรอ้มระบุระยะทางระหว่างเมือง

อาจเป็น Directed หรือ Undirected Graph ก็ได้

19

B

A

Weighted & Undirected Graph

C

D

7 6

6 5 B

A

C

D

Weighted & directed Graph

7 6

6 5

Page 20: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Complete Graph

กราฟที่ทุกโหนดมีเส้นเชื่อมถึงโหนดอ่ืนๆ ทั้งหมด

20

A

C B

E

D

F

G H

จ านวน Edge = N*(N-1)

เช่น 3*(3-1) =6

จ านวน Edge = N*(N-1) 2

เช่น 5*(5-1) / 2 = 10

กราฟมีทิศทาง กราฟไม่มทีิศทาง

Page 21: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Adjacency Matrix ใช้อาร์เรย์ในการเก็บข้อมูล

ก าหนดให้กราฟ G ประกอบด้วย

เซตของ vertices VG โดย |VG| = n (กราฟม ีn vertices เม่ือ n>=1)

เซตของ edge EG

การแทนกราฟด้วยเมตรกิซป์ระชดิ สามารถแทนด้วย vector และ อาร์เรย์ A ที่มีขนาด n x n ซึ่ง

A(i,j) = W ถา้ Vi ประชิดกับ Vj และ Edge มนี้ าหนัก เท่ากับ W (ถ้าเป็น กราฟแบบไมม่ีน ้าหนัก W = 1)

=0 กรณีอ่ืน ๆ

21

Graph Storage Structure

Page 22: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

22

Adjacency Matrix ใช้อาร์เรย์ในการเก็บข้อมลู

Page 23: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

23

Page 24: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Graph Storage Structure Adjacency List

การแทนกราฟด้วยเมตริกซ์ประชิด จะพบว่า ถ้ากราฟมีจ านวน vertex มาก แต่มี edge น้อย เมตริกซ์ที่ได้จะประกอบด้วยตัวเลข 0 เป็นจ านวนมาก ซ่ึงเปลืองเน้ือท่ีในการจัดเก็บ

ดังนั้นจึงมีการประยุกต์ใช้ลิงค์ลิสต์มาจัดเก็บเพ่ือลดขนาดของการใช้หน่วยความจ า

24

Page 25: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

25

Adjacency List

Page 26: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

26

Page 27: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

27

B

A E

I G

C F

D 3

2

7

8 9 2

4 5

9

3 1

H 6 4

Assignment 1. จากกราฟข้างต้น จงแสดงการจัดเก็บกราฟทัง้แบบ adjacency matrix และ adjacency list (vertex vector, vertex list ให้เรยีงตามล าดับตัวอักษร)

Page 28: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

การ Add Vertex

28

A B

D C

E

Add Vertex

A B

D C E

Page 29: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

การ Delete Vertex

29

A B

D C

Delete Vertex B

A

D C

B

Page 30: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

การ Add edge

A B

D C

Add Edge

{A, B}

A B

D C

A B

D C

Add Edge

{A, B}

A B

D C

Page 31: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

การ delete edge

A B

D C

Delete Edge

{A, B}

A B

D C

Delete Edge

{B, D}

A B

D C

A B

D C

Page 32: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

การ Find Vertex

A B

D C

Find Vertex B

A

D C

B

Page 33: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Graph Traversal

การเดินท่องเข้าไปในโครงสร้างข้อมูล Graph มี 2 แบบ

Depth-First Traverse -->ใช้ stack ช่วยในการท่องกราฟ

การท่องตามความลึกของเส้นทางจาก vertex ที่มอียู่ในกราฟไปจนกวา่จะไปไม่ได้แล้วในเส้นทางนั้น แล้วจึงเข้าหาเสน้ทางอ่ืนๆ ที่เหลืออยู่โดยจะใช้ความลึกเป็นหลัก ท าไปเร่ือยๆ จนกว่าจะครบทุกเส้นทาง

Breadth-First Traverse -->ใช้ Queue ช่วยในการท่องกราฟ

การเข้าหา Vertex ที่เป็นเพ่ือนบา้นของ vertex ที่ก าหนดไว้จนหมดเสียกอ่น แล้วจึงท าการ visit vertex อ่ืนๆ ที่เหลืออยู่ดว้ยวิธีเดียวกัน

33

Page 34: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Depth-first Traversal

34

ตัวเลข 1 – 8 แสดงล าดับที่ DFS เข้าหา node ต่าง ๆ ที่มีอยู่ในกราฟ

Page 35: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Depth-first Traversal

1. push vertex แรก ลง stack

2. pop vertex และ ประมวลผล

3. push adjacent ทั้งหมดของ vertex ท่ี pop ออกมาจากในข้อ 2 ลง stack

4. ท าซ้ าข้อ 2-3 จนกว่าจะครบทุก vertex และ stack ว่าง

35

Page 36: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

36

A X H P E Y M J G

Page 37: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Breath-first Traversal

1. enqueue vertex ลงใน queue

2. dequeue vertex และประมวลผล

3. enqueue adjacent ทั้งหมดของ vertex ท่ี dequeue ออกมาจากในข้อ 2 ลงใน queue

4. ท าซ้ าข้อ 2-3 จนกว่าจะครบทุก vertex และ queue ว่าง

37

Page 38: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

38

A X G H P E M Y J

Page 39: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

39

B

A

E

C

D G

F

H

I

3

2

7

8

9 2

4

5

9

3

4 1

J 6 4

5

Assignment จากกราฟด้านล่างนี้ จงใช้ในการตอบค าถามข้อ 2 และ 3

Page 40: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

40

2 Depth-first traversal , Breath-first traversal โดยเริ่มจาก D

*** ในกรณีน า vertex เข้า stack และ queue ให้เลือกน าเข้าเรียงตามล าดับ

ตัวอักษรจากน้อยไปหามาก (ระหว่าง C และ E ให้เลือก C เข้า stack และ

queue ก่อน E เป็นต้น )

3 Minimum spanning tree , Shortest path โดยเริ่มจาก F

*** ในกรณีพบเส้นทางที่มีน้ าหนักเท่ากนั ให้เลือกจาก vertex เรียง

ตามล าดับตัวอักษรจากน้อยไปหามากเช่นกัน ( path(A,G) และ path(A,I) มี

น้ าหนักเท่ากัน เลือก path(A,G) เป็นต้น )

Assignment

Page 41: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Application of graph

กราฟถูกน าไปประยุกต์ใช้ในการแก้ปัญหาหลายปัญหา ซึ่งในบทเรียนน้ีจะยกตัวอย่างปัญหาง่ายๆ 2 ปัญหา คือ

การหาเส้นทางที่สั้นที่สุดเพ่ือเช่ือมต่อแต่ละโหนดในกราฟนั้น Minimum Spanning Tree

การหาเส้นทางที่สั้นที่สุดระหว่างจุด 2 จุดในกราฟ - Shortest Path

41

Page 42: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Spanning tree

Tree ประกอบไปด้วย Subset ของ Edge ที่สามารถเช่ือมต่อไดก้ับทุก vertex ในกราฟ

ต้นไม้ท่ีประกอบด้วยโหนดทุกโหนดของกราฟ โดยแต่ละคูข่องโหนดจะต้องมีเส้นเช่ือมเพียงเส้นเดียว นั่นคือไม่มี loop หรือ cycle ซึ่งอาจมีไดม้ากกว่า 1 แบบ

Example : Find Spanning Tree of the following graph

42

Page 43: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Spanning Tree

43

แบบที่ 1 แบบที่ 2

แบบที่ 3

แบบ อื่นๆ

Page 44: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Minimum Spanning Tree (MST)

Spanning tree ท่ีมีผลรวมของ weight น้อยท่ีสุด

การสร้าง MST (Prim’s Algorithm)

ขั้น 1 : เริ่มต้นจาก vertex แรก (0)

ขั้น 2 : หา edge ทีม่ีค่าน้อยที่สุดจาก edge m ทุกตัวที่เชื่อมต่อกับ vertex แรก

ขั้น 3 : เก็บ edge นั้นไว้ใน array MST

ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด edge ที่มีอยู่ใน graph โดยเริ่มต้นจาก vertex ที่มีค่าน้อยที่สุดในการค้นหาครั้งก่อน

44

Page 45: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

45

จงหา Minimum Spanning Tree โดยก าหนดให้จุด A เป็นจุดเริ่มต้น

ตัวอย่าง

Page 46: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

46

Step 1

ขั้น 1

ขั้น 2

ขั้น 3

ค้นหาจาก Vertex A

Step 2

ค้นหาจาก Vertex C

{C,B}, {C,D}, {C,E}, {A,B}

{A,C}

{A,C} {C,B}

{A,C}, {A,B}

ขั้น 1

ขั้น 2

ขั้น 3

{B,C,D,E,F}

{B,D,E,F}

Step 0 Insert first Vertex

Page 47: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

47

Step 3

ขั้น 1

ขั้น 2

ขั้น 3

ค้นหาจาก Vertex B

Step 4

ค้นหาจาก Vertex D

{D,E}, {C,E}, {D,F}, {B,D}, {A,B}

{C,D}

ขั้น 1

ขั้น 2

ขั้น 3

{A,C} {C,B}

{C,D} {A,C} {C,B} {D,E}

{C,D}, {C,E}, {B,D}, {A,B}

{D,E,F}

{E,F}

Page 48: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

48

Step 5

ขั้น 1

ขั้น 2

ขั้น 3

ค้นหาจาก Vertex E

Total weight = 13

ค้นหาจาก Vertex F

{C,E}, {B,D}, {E,F}, {A,B}

ขั้น 1

ขั้น 2

ขั้น 3 {B,D} {A,C} {C,B} {D,E}

{B,D} {A,C} {C,B} {D,E} {D,F}

{C,E}, {D,F}, {B,D}, {E,F}, {A,B}

{F}

{ }

{D,F}

Step 6

Page 49: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

Shortest Path

เส้นทางท่ีสั้นท่ีสุดระหว่าง 2 vertices

การสร้าง Shortest path (Dijkstra Algorithm)

1. ใส่ vertex เริ่มตน้ใน tree

2. เลือก edge จาก vertex ใน tree ไปยัง vertex ที่ไม่อยูใ่น tree และมี ผลรวมของน้ าหนักของ edge จากจุดเริ่มตน้ไปยังจุดนั้นต่ าสุด

3. ท าซ้ าข้อ 2 จนกวา่จะครบทุก vertex

*** ผลลัพธ์ที่ได้จะเป็นเส้นทางที่สั้นที่สุดจาก vertex เริ่มต้นไปยังทุกๆ vertices ในกราฟ

49

Page 50: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

50

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

ตัวอย่าง

Page 51: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

51

Page 52: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

52

Page 53: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

53

จะได้ว่าระยะทางที่สั้นที่สุดจาก A ไปยังจุดต่างๆ มีค่าเท่ากับ 30 ดังนี ้

A -> B = 5 A -> C = 3

A -> D = 6 A -> E = 7

A -> F = 9 Total weight = 30

Page 54: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

ศึกษาเพ่ิมเติมเกีย่วกับอัลกอริธึม

• Vdo 1

• https://www.youtube.com/watch?v=8Ls1RqHCOPw

• Vdo 2

• https://www.youtube.com/watch?v=WN3Rb9wVYDY&t=337s

54

Page 55: โครงสร้างข้อมูลกราฟ ( GRAPH) 7 graph.pdf · 2016-11-29 · ขั้น 4 : เริ่มขั้นตอนที่ 1, 2 และ 3 ใหม่จนกว่าจะหมด

55

Assignment 1. จงแสดงวิธีการ Shortest Path เริ่มต้นจากโหนด B

From B A C E D G F

1

2

3

4

5

6

7