Click here to load reader
Upload
noppakhun-suebloei
View
619
Download
0
Embed Size (px)
DESCRIPTION
Graph
Citation preview
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)}
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>}
ภาพตวอยางกราฟแบบมทศทาง ภาพตวอยางกราฟแบบมทศทาง
3
ระดบขนเขาและระดบขนออก
ระดบขนเขา (In-degree) คอ จานวนของเอดจทเขาไปยงเวอรเทกซนน ๆ
ระดบขนออก(Out-degree) คอ จานวนของเอดจทออกจากเวอรเทกซนน ๆ เวอรเทกซนน ๆ
กราฟสมบรณ
• กราฟททกเวอรเทกซมเอดจเชอมโยงไปยงเวอรเทกซทเหลอทงหมด
A
CB
ในกราฟสมบรณสามารถคานวณจานวนเอดจไดจาก N*(N-1)/2
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
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
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 *
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
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