8

Click here to load reader

Graph

Embed Size (px)

DESCRIPTION

Graph

Citation preview

Page 1: Graph

1

บทท 7กราฟ (Graph)กราฟ (Graph)

นยามกราฟ• กราฟ เปนโครงสรางทนามาใชเพอแสดงความสมพนธระหวางวตถ โดย

แทนวตถดวยเวอรเทกซ และเชอมโยงความสมพนธดวยเอดจ• เขยนในรปของสญลกษณไดเปน G = (V,E)• ซง V(G) คอ เซตของเวอรเทกซทไมใชเซตวาง และมจานวนจากด• E(G) คอ เซตของเอดจ ซงเขยนดวยคของเวอรเทกซE(G) คอ เซตของเอดจ ซงเขยนดวยคของเวอรเทกซ

A B

เวอรเทกซ เวอรเทกซ

เอดจ

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

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

ตวอยาง

A B

เวอรเทกซ V(G) ไดแก A B C D Eเอดจ E(G) ไดแก เสนทเชอมโยงจาก A ไป B โ ไป

C D E

เสนทเชอมโยงจาก A ไป Cเสนทเชอมโยงจาก A ไป Dเสนทเชอมโยงจาก A ไป Eเสนทเชอมโยงจาก B ไป EV(G) = {A, B, C, D, E}E(G) = {(A,B), (A,C), (A,D), (A,E), (B,E)}

7.1.2 ชนดของกราฟ

1) กราฟแบบไมมทศทาง (Undirected Graph) จะเปนกราฟทมเสนเชอมโยงระหวางเวอรเทกซทง 2 ซงไมมทศทางวาจากเวอรเทกซใดไปยงเวอรเทกซใด การเขยนเซตของเสนเชอมโยงจะเขยนอยในเครองหมายวงเลบเครองหมายวงเลบ

กราฟแบบไมมทศทาง

V(G) = {a, b, c, d}E(G) = {(a,b) , (b,c), (c,d), (d,b), (a,c)}หรอE(G) = {(b,a) , (c,b), (d,c), (b,d), (c,a)}

Page 2: Graph

2

ภาพตวอยางกราฟไมมทศทาง

V(G) = {1, 2, 3, 4, 5}E(G) = {(1,2) , (2,4), (4,5), (5,3), (3,4), (2,3)}

ภาพตวอยางกราฟไมมทศทาง

กราฟทมทศทาง (Digraph)

• กราฟแบบมทศทาง = กราฟทมเอดจเปนหวลกศร ซงแสดงทศทางจากเวอรเทกซหนง ไปยงอกเวอรเทกซหนง (Directed Graph)

A BA B

กรงเทพ เวยงจนทร

จากภาพ มเสนทางจากกรงเทพไปเวยงจนทร แตไมมเสนทางจากเวยงจนทรไปกรงเทพ

กราฟแบบมทศทาง

V(G) = {a, b, c, d}E(G) = {<a,b> , <a,c>, <b,d>, <d,c>, <c,b>}

ภาพตวอยางกราฟแบบมทศทาง ภาพตวอยางกราฟแบบมทศทาง

Page 3: Graph

3

ระดบขนเขาและระดบขนออก

ระดบขนเขา (In-degree) คอ จานวนของเอดจทเขาไปยงเวอรเทกซนน ๆ

ระดบขนออก(Out-degree) คอ จานวนของเอดจทออกจากเวอรเทกซนน ๆ เวอรเทกซนน ๆ

กราฟสมบรณ

• กราฟททกเวอรเทกซมเอดจเชอมโยงไปยงเวอรเทกซทเหลอทงหมด

A

CB

ในกราฟสมบรณสามารถคานวณจานวนเอดจไดจาก N*(N-1)/2

Page 4: Graph

4

สตรหาจานวนเอดจของกราฟไมมทศทาง = (N * (N – 1)) / 2

กราฟแบบไมมทศทาง และจานวนเวอรเทกซทมทงหมด เทากบ 4 เวอรเทกซ จงคานวณหาจานวนเอดจไดดงน

สตรหาจานวนเอดจของกราฟไมมทศทาง = (N * (N – 1)) / 2= (4 * (4 – 1)) / 2 (4 (4 1)) / 2

= (4 * 3 ) / 2 = 12 / 2 = 6 เสน

สตรหาจานวนเอดจของกราฟมทศทาง = N * (N –1)จากภาพท (ข) ซงเปนกราฟแบบมทศทาง และจานวนเวอรเทกซทมทงหมดเทากบ 4 เวอรเทกซ จงคานวณหาจานวนเอดจไดดงน

สตรหาจานวนเอดจของกราฟมทศทาง = N * (N –1)= 4 * ( 4 – 1)

= 4 * 3 = 12 เสน

กราฟทมนาหนก (Weighted Graphs)

• กราฟทแตละเอดจจะมคาบงบอกถงความหมายอยางใดอยางหนง เชน ระยะทาง ความเรว เวลาเดนทาง คาโดยสาร เปนตน

ปทมธาน สระบร101

กรงเทพ

ฉะเชงเทรา

นครนายก

ปราจนบร

46 101

107

8276

100 29

58

กราฟทมนาหนก

เสนทาง (Path) ของกราฟ คอ ลาดบของเวอรเทกซทถกเชอมตอดวยเอดจ โดยเรมตงแตเวอรเทกซแรกไปจนถงเวอรเทกซสดทายหรอเวอรเทกซทตองการ

เสนทางจาก A ไป E

P1 = (A, B, C, D, E) ความยาวของเสนทางเทากบ 4เสนทางจาก A ไป H

P2 = (A, B, C, F, G, H)ความยาวของเสนทางเทากบ 5

การแทนกราฟดวยอะเรยสองมต

B

0 1 1 1

A B C D

A

A C

D

1 0 0 1

1 0 0 1

1 1 1 0

B

C

D

Page 5: Graph

5

การแทนทกราฟการแทนทกราฟ

การแทนทกราฟ การทองไปในกราฟ (Graph traversal)

• การทองไปในกราฟ (graph traversal) คอ กระบวนการเขาไปเยอนโหนดในกราฟ โดยมหลกในการทางานคอ แตละโหนดจะถกเยอนเพยงครงเดยว สาหรบการทองไปในทรเพอเยอนแตละโหนดนนจะมเสนทางเดยว แตในกราฟระหวางโหนดอาจจะมหลายเสนทาง จะมเสนทางเดยว แตในกราฟระหวางโหนดอาจจะมหลายเสนทาง ดงนนเพอปองกนการทองไปในเสนทางทซาเดมจงจาเปนตองทาเครองหมายมารคบตบรเวณทไดเยอนเสรจเรยบรอยแลวเพอไมใหเขาไปเยอนอก สาหรบเทคนคการทองไปในกราฟม 2 แบบดงน

สาหรบเทคนคการทองไปในกราฟม 2 แบบดงน

• การทองแบบกวาง (Breadth first traversal) วธนทาโดยเลอกโหนดทเปนจดเรมตน ตอมาใหเยอนโหนดอนทใกลกนกบโหนดเรมตนทละระดบ จนกระทงเยอนหมดทกโหนดในกราฟ ตวอยางแสดงเสนทางการทองแบบกวางทละโหนดตามลาดบ

ไป A B C D E F

B

A

C

E

D

F

การทองไปแนวกวาง A B C D E F

การทองไปในกราฟแนวกวางการทองไปแนวกวาง = A G B H E C F D

Page 6: Graph

6

การทองแบบลก (Depth first traversal)• การทางานคลายกบการทองทละระดบของทร โดยกาหนดเรมตนท

โหนดแรกและเยอนโหนดถดไปตามแนววถนนจนกระทงนาไปสปลายวถนน จากนน ยอนกลบ (backtrack) ตามแนววถเดมนน จนกระทงสามารถดาเนนการตอเนองเขาสแนววถอน ๆ เพอเยอนโหนดอน ๆ ตอไปจนครบทกโหนด

A

B

A

C

E

D

F

8

A B E C F D

การทองไปในกราฟแนวลก

การทองไปแนวลก = A B C D E F G H• Spanning Tree คอตนไมทประกอบดวยโหนดทกโหนดของ

กราฟ โดยแตละคของโหนดจะตองมเสนเชอมเพยงเสนเดยว นนคอไมม loop หรอ cycle

• สมมตสถานการณใหกราฟแสดงเสนทางการบนระหวาง 7 เมอง แตดวยเหตผลทางธรกจทาใหตองปดเสนทางการบนไปใหมากทสดแตยงคงสามารถเชอมตอถงกนไดหมด

a b

c d

e f

g

a b

c d

e f

g

a b

c d

e f

g

1. หามม 2 เสน

2. หามตดเสนออก

3. หามม cycle

MST หมายถงเวทจกราฟและเปนสแปนนงทร ทมคาน าหนกรวมกนแลวมคานอยทสด

02

76

.29

.51.31

25

02

76

.29

.51.31

25

Minimum spanning tree

1

7

3

45

.60

.32.21

.25

.46

.51

.40

.34.18

1

7

3

45

.60

.32.21

.25

.46

.51

.40

.34.18

02

76

.29

.51.31

Minimum spanning tree• Representation

0 1 2 3 4 5 6 70 * .32 .29 * * .60 .51 .31 1 .32 * * * * * * .21

1

7

3

45

.60

.32

.21

.25

.46

.51

.40

.34.18

234567

.29 * * * * * * ** * * * .34 .18 * ** * * .34 * .40 .51 .46

.60 * * .18 .40 * * *

.51 * * * .51 * * .25

.31 .21 * * .46 * .25 *

Page 7: Graph

7

วธการในการหา Minimum Spanning Tree ทนยมใช ม 3 วธ ดงตอไปน

1.Kruskal’s AlgorithmKruskal’s Algorithm คนพบโดย Joseph Kruskal ในป 1956 โดยมหลกการดงตอไปน

1 เลอก Edge ใน Graph ทม Weight ตาสด เปน edge เรมตน1. เลอก Edge ใน Graph ทม Weight ตาสด เปน edge เรมตน

2. จากนนใหเพม Edge ทม Weight ตาสดทเหลออย ทจะไมทาใหเกด Simple Circuit กบ Edge ทเลอกไวแลว ทาการหยดหลงจากได n-1 Edge เลอกไดn-1 edges

เลอก edge ทสนทสด

รวม edge น ถาไมเกดวงจร เลอกไดn-1 edges

• เรยงลาดบ weight จากนอยไปมาก3-5 = .18 1-7 = .21 6-7 = .25 0-2 = .29

Kruskal’s Algorithm

02

76

.29

.51.31

.32 .25

0-7 = .31

0-1 = .324.3 = .34 4-5 = .404-7 = .46 0-6 = .514-6 = .510-5 = .60

1

7

3

45

.60 .21

.46

.51

.40

.34.18

เกดวงจร

เกดวงจร

2.Prim’s algorithm

• หลกการของ Prim’s Algorithm เรมตนจากเวอรเทกซทกาหนดแลวหาเวอรเทกซขางเคยง เรยงตามคาน าหนกของเอดจ มขนตอนดงน

• 1. เลอก 1 จด ไ ไ • 2. เลอก edge สนสดทตอกบทไดเลอกไว

• 3. รวม edge นถาไมเกดวงจร

Prim’s algorithm

- เลอก 1 จด- เลอก edge สนสดทตอกบทไดเลอกไว- รวม edge นถาไมเกดวงจร

A

B C D

E F

1

7

14

713

3 6

1

A

B C D

E F

1

7

14

713

3 6

1

8 8

3 Dijkstra’s algorithm

• วธการของ Dijkstra จะทาใหไดสงทเรยกวา single-source shortest path หรอเสนทางทสนทสดจากจดเดยว โดยใช priority queue ชวยในการทางาน มขนตอนดงน

1. เลอกจดเรมตน2. ตรวจสอบคานาหนกกบจดทเชอมตอทกจด นาคานาหนกเกบใน

priority queue แลวเลอกเสนทมคาตาสด3. เยยมจดทเลอกใหม แลวทาซ า 2-3 จนกวาจะเยยมครบทกจด

ขอกาหนด : การนาขอมลเกบในคว เปนไปตาม priority นนคอ คานาหนกนอย ม priority สงกวา

Dijkstra’s algorithm• single-source

shortest path

A

B C D

114

7138 AB14 AC8 AD1

AD1 AC8 AB14

AD1 DE7 AC8

DC8 DF8 EF8 EC10 AB14 CB21

1B C D

E F

73 6

1

AD1 AC8 AB14

DE7 AC8 DC8 DF8 AB14DC8 DE7 DF8

AC8 DC8 DF8 EF8 EC10 AB14EF8 EC10

DC8 DF8 EF8 EC10 AB14 CB21CB21

A

B C D

E F

1

7

14

713

3 6

1

8

1

2

3

4

Page 8: Graph

8

แบบฝกหด

• 1. จากภาพตอไปน จงแทนกราฟดวยอะเรยสองมต

1 2

4 3

2. กราฟสมบรณแบบไมมทศทาง ประกอบดวยเวอรเทกซทงหมด 7 เวอรเทกซ จงคานวณวากราฟนจะมกเอดจ3. กราฟสมบรณแบบมทศทาง ประกอบดวยเวอรเทกซทงหมด 8 เวอรเทกซ จงคานวณวากราฟนจะมกเอดจ

4. จากกราฟตอไปน จงทองไปในแนวลก และ แนวกวาง โดยมจดเรมตนท เวอรเทกซ B

A

B D

EC

FG

5. จากภาพตอไปน จงหาระยะทางโดยใชวธการของ Dijkstra โดยเรมทจด B

A B

C

24

106

DE

F G

7

12

2

1

5

3