กราฟ (graph)spuccourseware.east.spu.ac.th/calibration/BCS325/W5.pdf ·...
Transcript of กราฟ (graph)spuccourseware.east.spu.ac.th/calibration/BCS325/W5.pdf ·...
1
กราฟ (graph)
กราฟ (graph) เปนโครงสรางขอมลแบบไมเปนเชงเสน(nonlinear data structure)
กราฟประกอบดวยโหนดและเอจ แตละโหนดสามารถมความสมพนธกบโหนดอนๆ ไดมากกวาหนง โดยไมพจารณาถงลาดบความสมพนธกอนหลง
กราฟ เปนโครงสรางขอมลทมการนาไปใชในงานทเกยวของกบการแกปญหาทคอนขางซบซอน เชน การวางขายงานคอมพวเตอร การวเคราะหเสนทางวกฤต การวางแผนขายงาน และปญหาเสนทางทสนทสด เปนตน
GRAPH
2
นยาม : กราฟ (graph)
กราฟ เปนโครงสรางขอมลแบบไมใชเชงเสนท
ประกอบดวยกลมของสงสองสงคอ
(1) โหนด (nodes) หรอ เวอรเทกซ (vertexes)
(2) เสนเชอมระหวางโหนด เรยก เอจ (edges)
GRAPH
3
กราฟทมเอจเชอมระหวางโหนดสอง
โหนด ถาเอจไมมลาดบ
ความสมพนธจะเรยกกราฟนนวา
กราฟแบบไมมทศทาง (undirected
graphs) และถากราฟนนมเอจทม
ลาดบความสมพนธหรอมทศทาง
กากบดวยเรยกกราฟนนวา กราฟ
แบบมทศทาง (directed graphs)
บางครงเรยกวา ไดกราฟ (digraph)
นยาม : กราฟ (graph)
A
B
C
D
undirected graphs
A
B
C
D
directed graphs
4
คากากบเสนทาง (weight) หมายถง
คาใชแทนนาหนก ระหวางโหนดกบ
โหนด ซงอาจแทนระยะทาง, คา
ความตานทาน, ขนาดตางๆ เปนตน
เสนทาง (path) หมายถงทางเดนจาก
โหนดหนงไปยงอกโหนดหนง
นยาม : กราฟ (graph)
n1
n2
n4
5
n3
4
8 9
2
weight
Path จาก n1 ถง n4 คอn1 – n2 – n4n1 – n4n1 – n3 – n4
5
ถาตองการอางถงเอจแต
ละเสนสามารถเขยนชอ
เอจกากบไวกได
ตวอยางกราฟตอไปนม
ชอโหนดเปน n1, n2,
n3, n4 และ n5 โดยม
ชอเอจเปน e1, e2, e3,
e4, e5 และ e6
นยาม : กราฟ (graph)
n1
n2
n4 n5
e1
n3
e2
e3
e4
e5
e6
6
ตวอยางกราฟในงานตางๆ
7
การแทนกราฟในหนวยความจา
วธทงายและตรงไปตรงมาทสดคอ การเกบเอจในแถวลาดบ 2 มต ในรปแสดงตวอยางกราฟแบบไมมทศทาง และเมอแทนกราฟดวยแถวลาดบ 2 มตไดดงแสดงในรป
GRAPH
8
การแทนกราฟในหนวยความจา
GRAPH
จะเหนวาการแทนกราฟในหนวยความจาดวย
วธเกบเอจทงหมดในแถวลาดบ 2 มตคอนขาง
เปลองเนอท เนองจากมบางเอจทเกบซาเดม
โดยเฉพาะกรณทเปนกราฟแบบไมมทศทาง
9
การแทนกราฟในหนวยความจา
GRAPH
ใชแถวลาดบ 2 มตเกบโหนดและพอยน
เตอรชไปยงตาแหนงของโหนดตาง ๆ ท
สมพนธดวย และใชแถวลาดบ 1 มตเกบ
โหนดตาง ๆ ทมความสมพนธกบโหนดใน
แถวลาดบ 2 มต
การจดเกบกราฟดวยวธเกบโหนดและ
พอยนเตอรนยงยากในการจดการเพมขน
เนองจากตองเกบโหนดและพอยนเตอรใน
แถวลาดบ 2 มต และตองจดเกบโหนดท
สมพนธดวยในแถวลาดบ 1 มต
10
การแทนกราฟในหนวยความจาแอดจาเซนซลสต (adjacency list)
GRAPH
ซงเปนวธทคลายวธจดเกบกราฟดวย
การเกบโหนดและพอยนเตอร แต
ตางกนตรงทแทนทจะเกบโหนดทม
ความสมพนธดวยไวในแถวลาดบ 1
มต จะใชลงคลสตแทนเพอความ
สะดวกในการเปลยนแปลงแกไข
11
การแทนกราฟในหนวยความจา
GRAPH
อยางไรกตามทงสามวธทกลาวมาขางตนไมเหมาะกบกราฟ
ทมการเปลยนแปลงตลอดเวลา ควรใชในกราฟทไมมการ
เปลยนแปลงตลอดอายขยของการใชงาน เพราะถามการ
เปลยนแปลงสวนใดสวนหนงของกราฟจะกระทบกบสวน
อน ๆ ทอยในระดบทตากวาดวยเสมอ
การแทนกราฟดวยแอดจาเซนซเมทรกซ (adjacency matrix)
GRAPH
A
B
E D
C
12
1820
9
4
2
3
5
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
Cij =
เมทรกซ Cij เปน adjacency matrix ใชแทนความสมพนธระหวางโหนดบนกราฟ เชนทตาแหนง CAB หมายถงคาweight จากโหนด A ไปยงโหนด B ซงมคาเทากบ 12
6
13
การแทนดวยแอดจาเซนซเมทรกซ (adjacency matrix)
คาอนทไมม weight ใหเปนคา
infinite number ใชแทนเสนทางท
ไมมอยจรงในกราฟ
(ทางคอมพวเตอรอาจแทนดวยคาตว
เลขทใหญมากๆ )
โดยทถากราฟมทงหมด n โหนด
แอดจาเซนซเมทรกซเปนเมทรกซ
จตรสขนาด nn
GRAPH
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
14
การประยกตใชกราฟกบปญหาเสนทางสนทสด
โครงสรางขอมลแบบกราฟสามารถนาไปประยกตกบการใชงานในหลายรปแบบ เชน ถาแทนโหนดเปนจงหวด และ weight แทนระยะทางระหวางจงหวดโดยกาหนดให edge เปนเสนทางระหวางจงหวด และตองการทราบเสนทางทสนทสดระหวาง สานกงานใหญกบสาขาในจงหวดอนๆ เพอทจะขนสงสนคาใหไดระยะทางทสนทสด เปนตน
GRAPH
15
Shortest Path : Dijkstra Algorithm
เปนขนตอนการแกปญหาเสนทางทสนทสดจากโหนดหนงไปยงโหนดอนๆ บนกราฟ (Single Source Shortest Path)
ถกคนพบโดยนกคณตศาสตรคอมพวเตอร ทชอวาDijkstra
รปแบบของปญหา เปนการหาระยะทางทสนทสดจากsource node ไปยง โหนดตางๆ (single source shortest path)
GRAPH
16
Shortest Path : Dijkstra Algorithm
GRAPH
A
B
E D
C
12
1820
9
4
2
3
5
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
Cij =
6
แทนความสมพนธของ กราฟลงใน Adjacency Matrix
17
Shortest Path : Dijkstra Algorithm
GRAPH
NO S W d(B) d(C) d(D) d(E)
O A - 12 18 20 9
ให S เปน source node
w คอโหนดทม weight
ทมคานอยทสดของ
โหนดทไมอยใน S
d(Cij) คอระยะทาง
จากโหนด i ไปยง j
Step 0
ขนตอน : นาคาในแถว Aมากาหนด
ใหเปนคาเรมตนในตาราง
GRAPH
NO S W d(B) d(C) d(D) d(E)
O1
AA,E
-E
1211
1818
2020
99
Step 1
ขนตอน : 1.1 เลอกคา min จาก d(B), d(C), d(D), d(E) คอโหนด E นาโหนด E ไปไวใน
S รวมกบ A
1.2 ปรบปรงเสนทางจากโหนด A ไปยงโหนดอนๆ ทไมอยใน S โดยเปรยบเทยบเสนทาง
เดมในขนตอนท 0 กบเสนทางใหม จาก A ไปยงโหนดนนโดยผานโหนด E
คา 11 พจารณาจาก A B = 12 และ A E B = 11
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
12 9 2
GRAPH
NO S W d(B) d(C) d(D) d(E)
O12
AA,EA,E,B
-EB
121111
181816
202015
999
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
Step 2
ขนตอน : 2 เลอก B เขาไปไวใน w
คา 16 พจารณาจาก A C = 18 และ A B C = 16
เลอกคา minimize = 16
คา 15 พจารณาจาก A D = 20 และ A B D = 15
เลอกคา minimize = 15
18 12 4
12 3
3
GRAPH
NO S W d(B) d(C) d(D) d(E)
O123
AA,EA,E,BA,E,B,D
-EBD
12111111
18181616
20201515
9999
Step 3
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
ขนตอน : 3 เลอก D เขาไปไวใน w
พจารณาปรบปรงเสนทางจาก A C โดย
A B C = 16 และ A D C = ∞เลอกคา minimize = 16
12 4 15 ∞
21 GRAPH
NO S W d(B) d(C) d(D) d(E)
O1234
AA,EA,E,BA,E,B,DA,E,B,D,C
-EBDC
1211111111
1818161616
2020151515
99999
Step 4
A B C D E
A ∞ 12 18 20 9
B ∞ ∞ 4 3 ∞C ∞ ∞ ∞ 5 ∞D ∞ ∞ ∞ ∞ 6
E ∞ 2 ∞ ∞ ∞
ขนตอน :4 เลอกโหนดสดทายคอ C เขาไปไวใน w
ถอวาสนสดการทางานเนองจากทกโหนดเขาไปอยใน S แลว
คาตอบ : ระยะทางทสนทสดจาก A ไป B มคา = 11 ม path คอ A E B
ระยะทางทสนทสดจาก A ไป C มคา = 16 ม path คอ A E B C
ระยะทางทสนทสดจาก A ไป D มคา = 15 ม path คอ A E B D
ระยะทางทสนทสดจาก A ไป E มคา = 9 ม path คอ A E
9 2
9 2 4
9 2 3
9
22
Example :
GRAPH
1
จงแสดงการหาเสนทางสนทสดจาก เมอง 1 ไปในแตละเมอง โดยมจดเรมตนการ
เดนทางทกครงอยทเมอง 1 ดวยการใชขนตอนวธของ Dijkstra (Single- Source
Shortest Path )
2
3
4
5
6
5
3
6 4
3
2
7
11
3
23
Example :
GRAPH
1
จงแสดงการหาเสนทางสนทสดจาก เมอง 1 ไปในแตละเมอง โดยมจดเรมตนการ
เดนทางทกครงอยทเมอง 1 ดวยการใชขนตอนวธของ Dijkstra (Single- Source
Shortest Path )
2
3
4
5
6
5
3
6 4
3
2
7
11
3
24
Longest Path : CPM
เปนขนตอนการหาเสนทางทยาวทสดจากโหนดเรมตนไปยงโหนดสนสด บนกราฟ
CPM (Critical Path Method) เอม บ วอลเกอร แหงดปองต USA.
PERT (Program Evaluation and Review Technique) กองทพเรอ USA. Polalis Project
GRAPH
25
PERT/CPM Chart
PERT Chart : Project Evaluation and Review Technique ChartCPM Chart : Critical Path Method
36
PERT Chart
เปนแผนภาพแสดงกจกรรมของโครงการทเชอมโยงกนในลกษณะ
ของเครอขาย (ขายงาน) ทาใหทราบวาจะตองดาเนนกจกรรมใดให
เสรจสนกอนกจกรรมถดไป
โดยแตละกจกรรมจะแทนดวยเสนลกศร และเชอมโยงกนดวย
วงกลม (เรยกวา โหนด) เพอบอกใหทราบถงจดเรมตนและ
จดสนสดของแตละกจกรรม
37
PERT Chart
เหมาะสาหรบโครงการใหมทไมเคยเกดขนเลย
การกาหนดเวลากจกรรมของ PERT Chart จงเปนการกาหนดในรปของความนาจะเปน (Probabilistic)
38
PERT Chart
15
2
3
4 5
6 7
8
รวบรวม
ความตองการ
ออกแบบ
หนาจอ6
ออกแบบ
รายงาน
6
2
ออกแบบ
ฐานขอมล
เขยนโปรแกรม
3
ทดสอบ
โปรแกรม
ตดตง
โปรแกรม
1
จดทา
เอกสาร
5.5
5
39
CPM Chart
เปนแผนภาพแสดงกจกรรมของโครงการทเชอมโยงกนในลกษณะ
เครอขาย (ขายงาน) ทาใหทราบวาตองดาเนนกจกรรมใดใหเสรจสน
กอนกจกรรมถดไป เชนเดยวกบ PERT Chart
40
CPM Chart
เหมาะสาหรบโครงการทเคยเกดขนแลวในอดต ทาใหมขอมลเพอ
กาหนดระยะเวลาของกจกรรมไดเปนทแนนอน
(Deterministic)
41
CPM Chart
1 5
2
6
3
6
4 2
5
5.5
6
57
3
8
1
ออกแบบรายงาน
ออกแบบหนาจอ เขยนโปรแกรม ทดสอบ
โปรแกรม
ตดตง
โปรแกรมจดทาเอกสาร
ออกแบบ
ฐานขอมล
42
Critical Path : เสนทางวกฤต
หมายถง เสนทางทใชเวลาในการดาเนนกจกรรมรวมของโครงการ
นานทสด และกจกรรมทอยบนเสนทางวกฤตจะเรยกวา กจกรรม
วกฤต Critical Activity
43
การกาหนดระยะเวลาดวย Statisticแยกแยะกจกรมของโครงการ
กาหนดกจกรรมทตองดาเนนใหเสรจสนกอนดาเนนกจกรรมตอไป
กาหนดระยะเวลาทงหมด 3 คา
เวลาทากจกรรมใหเสรจสนเรวสด Optimistic เวลาทากจกรรมใหเสรจสนชาสด Pessimistic เวลาทากจกรรมใหเสรจสนทเปนไปไดมากทสด Realistic
44
การกาหนดระยะเวลาดวย Statisticนาคาทง 3 มาคานวณหาคาใชจรงเพยงคาเดยว เรยกวา คาระยะเวลา
คาดหวง Expected Time โดยใชสตร
ET = o + 4r + p6
45
ขนตอนท 3 : คานวณหาคาระยะเวลาคาดหวง
กจกรรม กจกรรม กาหนดระยะเวลา คาระยะเวลา
กอนหนา (สปดาห) คาดหวง
o r p ETT1 - 1 5 9 5
T2 1 5 6 7 6
T3 1 3 6 9 6
T4 2, 3 1 2 3 2
T5 4 3 6 7 5.5
T6 4 4 5 6 5
T7 6 1 3 5 3
T8 5, 7 1 1 1 1
46
ขนตอนท 4 : วาดแผนภาพ PERT/CPM4.1 วาดเรมจากโหนดกจกรรมท 1
1
ET = 5
47
ขนตอนท 4
4.2 วาดโหนดกจกรรมท 2 ซงมกจกรรมท 1 กอนหนา
1
ET = 5
2
ET = 6
48
ขนตอนท 4
4.3 วาดโหนดกจกรรมท 3 ซงมกจกรรมท 1 กอนหนา
1
ET = 5
2
ET = 6
3
ET = 6
49
ขนตอนท 4
4.4 วาดโหนดกจกรรมท 4 ซงมกจกรรมท 2,3 กอนหนา
1
ET = 5
2
ET = 6
3
ET = 6
4
ET = 2
50
ขนตอนท 4
4.5 วาดโหนดกจกรรมท 5 ซงมกจกรรมท 4 กอนหนา
1
ET = 5
2
ET = 6
3
ET = 6
4
ET = 2
5
ET = 5.5
51
ขนตอนท 4
4.6 วาดโหนดกจกรรมท 6 ซงมกจกรรมท 4 กอนหนา
1
ET = 5
2
ET = 6
3
ET = 6
4
ET = 2
5
ET = 5.5
6
ET = 5
52
ขนตอนท 4
4.7 วาดโหนดกจกรรมท 7 ซงมกจกรรมท 6 กอนหนา
1
ET = 5
2
ET = 6
3
ET = 6
4
ET = 2
5
ET = 5.5
6
ET = 5
7
ET = 3
53
ขนตอนท 4
4.8 วาดโหนดกจกรรมท 8 ซงมกจกรรมท 5,7 กอนหนา
1
ET = 5
2
ET = 6
3
ET = 6
4
ET = 2
5
ET = 5.5
6
ET = 5
7
ET = 3
8
ET = 1
54
ขนตอนท 5 : คานวณหาเสนทางวกฤต
5.1 เรมหาจากวนแรกสด (TE)Earliest Expected Completion Time : TE
โดยทาการบวกสะสมคา ET จากโหนดซายมอไปทางขวาจนถงโหนดสดทายของแตละเสนทาง
55
ขนตอนท 5.1 : หาคา TE
1
ET = 5
2
ET = 6
3
ET = 6
4
TE = 13
5
ET = 5.5
6
ET = 57
TE = 21
8
TE = 22
TE = 5
TE = 11
TE = 11
ET = 2
TE = 18.5
ET = 1
TE = 18
ET = 3
56
ขนตอนท 5 : คานวณหาเสนทางวกฤต
5.2 เรมหาจากวนสดทาย (TL)Latest Expected Completion Time : TL
คาเรมตนของ TL จะมคาเทากบ TE คาสดทาย จากนนใหทาการลบออก
ดวยคา ET ของแตละโหนด เรมตนจากโหนดทางขวามอไปทางซาย
จนถงโหนดแรกของแตละเสนทาง
57
ขนตอนท 5.2 : หาคา TL
1
ET = 5
2
ET = 6
3
ET = 6
4
TE = 13TL = 13
5
ET = 5.5
6
ET = 57
TE = 21TL = 21
8
TE = 22TL = 22
TE = 5TL = 5
TE = 11TL = 11
TE = 11TL = 11
ET = 2
TE = 18.5TL = 21
ET = 1
TE = 18TL = 18
ET = 3
58
ขนตอนท 5 : คานวณหาเสนทางวกฤต
5.3 คานวณหาคาเวลายดหยน (Slack Time) คอ ระยะเวลาทกจกรรมสามารถลาชาโดยไมสงผลกระทบใหโครงการลาชา
ซงกจกรรมทมเวลายดหยนจะอยบนเสนทางทไมใชเสนทางวกฤต
(Noncritical Path)
หาไดจากผลตางของ TE และ TL
ถาคาเวลายดหยนเปนศนย (0) แสดงวากจกรรมนนเปนกจกรรมทอยบนเสนทางวกฤต
59
ขนตอนท 5.3 : คานวณหาคาเวลายดหยน
กจกรรม TE TL เวลายดหยน เสนทางวกฤต
TE - TL
1 5 5 0 วกฤต
2 11 11 0 วกฤต
3 11 11 0 วกฤต
4 13 13 0 วกฤต
5 18.5 21 2.5 -
6 18 18 0 วกฤต
7 21 21 0 วกฤต
8 22 22 0 วกฤต
60
ขอแตกตางระหวาง Gantt และ PERT/CPM
Gantt Chart
1. เหมาะสาหรบโครงการทมขนาดเลก
2. สามารถแสดงใหเหนถงกจกรรมท
ทาในเวลาเดยวกนได
3. แสดงกจกรรมทสาคญตอโครงการ
ได (Critical Path)
PERT/CPM Chart
1. เหมาะสาหรบโครงการทมขนาดใหญ
2. สามารถแสดงกจกรรมทสาคญได
(Critical Path) ทาใหมการควบคมการใช
ทรพยากรไดอยางคมคา
Ex 2 PERT/CPM
62
สรป : กราฟ (graph)
กราฟ (graph) เปนโครงสรางขอมลแบบไมเปนเชงเสน
(nonlinear data structure)
กราฟประกอบดวยโหนดและเอจ แตละโหนดสามารถม
ความสมพนธกบโหนดอนๆ ไดมากกวาหนง โดยไมพจารณาถงลาดบความสมพนธกอนหลง
กราฟ เปนโครงสรางขอมลทมการนาไปใชในงานทเกยวของกบการแกปญหาทคอนขางซบซอน เชน การวางขายงาน
คอมพวเตอร การวเคราะหเสนทางวกฤต การวางแผน
ขายงาน และปญหาเสนทางทสนทสด เปนตน
GRAPH
63
สรป : กราฟ (graph)
การแทนกราฟในความจาหลกวธทงายและตรงไปตรงมา
ทสดคอ การเกบเอจทก ๆ เอจในแถวลาดบ 2 มต แตวธน
คอนขางเปลองเนอทเนองจากมบางเอจทเกบซ าเดม
อกวธหนงกคอใชแถวลาดบ 2 มตเกบโหนดและพอยนเตอร
ชไปยงตาแหนงโหนดตาง ๆ ทสมพนธดวย
หรอใชวธแอดจาเซนซลสตโดยใชลงคลสตแทนแถวลาดบ
1 มต
GRAPH
64
สรป : กราฟ (graph)
วธทนยมมากทสดคอ การแทนดวยแอดจาเซนซเมทรกซ โดยถากราฟของเราม n โหนดตองสรางเมทรกซจตรสขนาด n x n และคาในเมทรกซจะเกบคาระหวางโหนดสองโหนดมคใดบางทมความสมพนธกน เราสามารถหาไดวามเสนทางขนาดเทาใด และมกเสนทาง
GRAPH