Upload
maribel-herandez
View
108
Download
4
Embed Size (px)
DESCRIPTION
โครงสร้างข้อมูล (Data Structure). โครงสร้างข้อมูลแบบ กราฟ (Graph). โครงสร้างข้อมูลแบบกราฟ (Graph). - PowerPoint PPT Presentation
Citation preview
โครงสร�างข้�อมู�ล (DATA STRUCTURE) โครงสร�างข้�อมู�ลแบบ กราฟ (Graph)
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• กราฟ (Graph) เป็�นโครงสร�างข้�อมู�ลแบบไมู�ใช่�เช่�งเส�นอ�กช่น�ดหน��ง
กราฟเป็�นโครงสร�างข้�อมู�ลที่��มู�การน!าไป็ใช่�ในงานที่��เก��ยวข้�องก$บการแก�ป็%ญหาที่��ค�อนข้�างซั$บซั�อน เช่�น การวางข้�ายงานคอมูพิ�วเตอร* การว�เคราะห*เส�นที่างว�กฤต� และป็%ญหาเส�นที่างที่��ส$ -นที่��ส.ด เป็�นต�น
ตั�วอย่�าง
E = {AB,AC,AD,CD,CF,DE,EF,FG,EG}
a b
c
d e V = a,b,c,d,e
A
B
C
F
ED
G
V = {A,B,C,D,E,F,G} E = {ab,ac,ad,be,ce,cd,ed
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)ศั$พิที่*ที่��เก��ยวข้�อง1. เวอร*เที่ก (Vertex) หมูายถึ�ง โหนด2. เอดจ (Edge) หมูายถึ�ง เส�นเช่2�อมูต�อระหว�างเวอร*เที่3กซั*บนกราฟ แบบ Undirected Graph
3. Arc หมูายถึ�ง เส�นที่��เช่2�อมูต�อระหว�างเวอร*เที่3กซั*บนกราฟ แบบ Directed Graph
4. ด�กร� (Degree) หมูายถึ�ง จ!านวนเส�นเข้�าและออก ข้องโหนดแต�ละโหนด5. แอดจาเซันที่*โหนด (Adjacent Node) หมูายถึ�ง โหนดที่��มู�การเช่2�อมูโยง
ก$น
• Graph แบ�งเป็�น1. Directed Graph (Digraph) (Arc)
2. Undirected Graph
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• แอดจาเซนท์�โหนด (Adjacent Node)
A ก�บ B D ก�บ F
ใช่�ใช่�ไมู�ใช่�ไมู�ใช่�
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)
• เส�นท์าง (Path)
ใช่�เร�ยกล!าด$บข้อง เวอร*เที่ก (Vertex) ที่��เช่2�อมูต�อก$นจากจ.ดหน��งไป็ย$งอ�กจ.ดหน��ง
(A,B,C,D,E)
(A,B,E,F)
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• Cycle
Path ที่��ป็ระกอบด�วยอย�างน�อย 3 Vertex และมู�จ.ดเร��มูต�นและส�-นส.ดเด�ยวก$น
เช่�น(B,C,E,B)(B,C,E,B)
(B,C,D,E,B)(B,C,D,E,B)
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• ล�ป (Loop)
มู�เพิ�ยง Arc เด�ยวและมู�จ.ดเร��มูต�นและส�-นส.ดเด�ยวก$น
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)
Directed Graph : มู�การก!าหนดที่�ศัที่าง• Strongly Connected ที่.ก ๆ 2 Vertex มู� Path ที่$-งไป็และกล$บ (ที่.กโหนดในกราฟมู�พิาที่ต�ดต�อถึ�งก$นหมูด)
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• Weakly Connected : มู�อย�างน�อย 2 Vertex ที่��มู� Path ใน
ที่�ศัที่างเด�ยว (บางโหนดไมู�สามูารต�ดต�อไป็ย$งที่.กโหนดในกราฟน$-นได�)
A A ไป ไป G G ได�ในท์#ศท์างเด%ย่วได�ในท์#ศท์างเด%ย่ว
ส�ตัรหาจ&านวนเอดจ�ข้องกราฟสมูบ�รณ์�แบบมู%ท์#ศท์าง = N * (N –1)จากภาพิที่�� (ข้) ซั��งเป็�นกราฟแบบมู�ที่�ศัที่าง และจ!านวนเวอร*เที่กซั*ที่��มู�ที่$-งหมูดเที่�าก$บ 4 เวอร*เที่กซั* จ�งค!านวณหาจ!านวนเอดจ*ได�ด$งน�-
ส�ตรหาจ!านวนเอดจ*ข้องกราฟมู�ที่�ศัที่าง = N * (N –1)
= 4 * ( 4 – 1)
= 4 * 3
= 12 เส�น
โครงสร�างข้�อมู�ลแบบกราฟ (Graph)
Undirected Graph : ไมู�มู�การก!าหนดที่�ศัที่าง
• เป็�นกราฟที่��ไมู�ระบ.ที่�ศัที่างข้องการเช่2�อมูต�อซั��งสามูารถึที่!าให�สามูารถึเด�นที่างไป็มูาระหว�างก$นได�
ส�ตัรหาจ&านวนเอดจ�ข้องกราฟสมูบ�รณ์�แบบไมู�มู%ท์#ศท์าง = (N * (N – 1)) / 2
กราฟแบบไมู�มู�ที่�ศัที่าง และจ!านวนเวอร*เที่กซั*ที่��มู�ที่$ -งหมูด เที่�าก$บ 4 เวอร*เที่กซั* จ�งค!านวณหาจ!านวนเอดจ*ได�ด$งน�-
ส�ตรหาจ!านวนเอดจ*ข้องกราฟไมู�มู�ที่�ศัที่าง = (N * (N – 1)) / 2
= (4 * (4 – 1)) / 2 = (4 * 3 ) / 2 = 12 / 2 = 6 เส�น
กราฟท์%(มู%น&)าหน�ก (Weighted Graphs)• กราฟที่��แตั�ละเอดจ�จะมู�ค�าบ�งบอกถึ�งความูหมูายอย�างใด
อย�างหน��ง เช่�น ระย่ะท์าง ความูเร+ว เวลาเด#นท์าง ค�าโดย่สาร เป็�นต�น
ปท์,มูธาน% สระบ,ร%
กร,งเท์พ
ฉะเช่#งเท์รา
นครนาย่ก
ปราจ%นบ,ร%
1
0
1
4
6
1
0
11
0
78
27
6
1
0
0
2
9
5
8
กราฟท์%(มู%น&)าหน�ก
• เป็�นกราฟที่��ไมู�ก!าหนดน!-าหน$กข้องเส�นเช่2�อมูต�อโดยให�แต�ละเส�นมู�น!-าหน$กเป็�น 1 เที่�าก$นหมูดที่.กเส�น
•กราฟท์%(ไมู�มู%น&)าหน�ก (Unweighted Graphs)
A
B
C
D
11
1E
1
Graph Storage Structure
การเก3บข้�อมู�ลในหน�วยความูจ!าสามูารถึที่!าได� 2 แบบ ด$งน�-
1. Adjacency Matrix : ใช่�อาร�เรย่�เก+บข้�อมู�ลใช่�อาร�เรย่�เก+บข้�อมู�ล
2. Adjacency List : ใช่�ล#งค�ล#สตั�เก+บข้�อมู�ลใช่�ล#งค�ล#สตั�เก+บข้�อมู�ล
Adjacency Matrix• เป็�นโครงสร�างที่��ป็ระกอบไป็ด�วยโหนดและเส�นเช่2�อมูต�อที่��บอกถึ�งเส�น
ที่างข้องการเด�นที่าง หร2อความูส$มูพิ$นธ์*ในที่�ศัที่างซั��งสามูารถึน!ามูาแที่นความูส$มูพิ$นธ์*น$-นด�วยการก!าหนดเมูตร�กซั* n x n
• Mk เป็�นเมูที่ร�กซั*ข้องกราฟใด ๆ k ค2อที่างเด�นที่��มู�ความูยาว k จากโหนดหน��งไป็อ�กโหนดหน��ง
Adjacency Matrix
0 : ไมู�เป็�นแอดจาเซันซั�ก$น 1 : เป็�นแอดจาเซันซั�ก$น
การแท์นกราฟด�วย่อะเรย่�สองมู#ตั#
A
B
C
D
0 1 1 1
1 0 0 1
1 0 0 1
1 1 1 0
A B C DA
B
C
D
การแท์นท์%(กราฟ
การแท์นท์%(กราฟ
Adjacency List
Graph Traversal
สามูารถึที่!าได� 2 ว�ธ์�1. แนวล�ก : Depth-first Traversal 2. แนวราบ : Breath-first Traversal
Depth-first Traversal• เป็�นล$กษณะการที่�องเข้�าไป็ย$งโหนดเร��มูต�น แล�วให�โหนดใกล�เค�ยง
เป็�นโหนดเร��มูต�น เข้�าเย��ยมูโหนด ที่!าต�อไป็จนกระที่$�งไมู�มู�โหนดใกล�เค�ยงจ�งย�อนกล$บมูาย$งโหนดก�อนหน�า และเข้�าเย��ยมูโหนดอ�กด�านด�วยร�ป็แบบเด�ยวก$นจนครบ เที่�ยบได�ก$บการที่�องเข้�าไป็ในที่ร�
แบบพิร�ออเดอร*1. Push vertex2. Pop vertex และป็ระมูวลผล3. Push adjacent ที่$-งหมูดข้อง Vertex ในข้�อ 24. ที่!าซั!-าข้�อ 2-3 จนกว�าจะครบที่.ก Vertex และ Stack ว�าง
• ผลการที่�อง A – B – E – F – G – C – D – H – I - J
A
B C
E F G
D
H I J
Depth-first Traversal
Breath-first Traversalเป็�นการที่�องเข้�าไป็ในกราฟโดยเข้�าเย��ยมูโหนดต$วแรก และด!าเน�นการ หากมู�โหนดใกล�เค�ยงจะด!าเน�นการก$บโหนดที่��อย��ด�านซั�ายก�อน1. Enqueue vertex2. Dequeue vertex และป็ระมูวลผล3. Enqueue adjacent ที่$-งหมูดข้อง Vertex ในข้�อ 24. ที่!าซั!-าข้�อ 2-3 จนกว�าจะครบที่.ก Vertex และ Queue ว�าง
• ผลการที่�อง A – B – C – D – E – F – G – H – I - J
A
B C
E F G
D
H I J
Breath-first Traversal
Network• หมูายถึ�ง Graph ที่��ที่.ก Edge มู� Weight ก!าก$บ โดยความูหมูาย
ข้อง Weight น$-นข้�-นอย��ก$บการใช่�งาน
Adjacency Matrix
Adjacency List
Network Application• Minimum Spanning Tree เป็�นร�ป็แบบข้องการค�นหาโดยก!าหนดเร�ยกใช่�โหนดที่.กโหนดและที่.กเส�นการเช่2�อมูต�อ มูาล!าด$บความูส!าค$ญข้องน!-าหน$กโดยเร��มูจากค�าน�อยที่��ส.ดในข้�ายงาน ที่!าการเช่2�อมูต�อค��โหนดน$-น และด!าเน�นการต�อไป็ในค�าน!-าหน$กที่��ต�อก$น แต�ถึ�าโหนดใดมู�การเช่2�อมูต�อค��โหนดแล�วจะไมู�เช่2�อมูต�ออ�ก
• Shortest Path เป็�นอ$ลกอร�ที่�มูที่��ใช่�ในการหาระยะที่างที่��ส$ -นที่��ส.ดเช่�นเด�ยวก$บ MST แต�จะเป็ล��ยนจากการหาเส�นที่างจากโหนดแรกไป็ย$งโหนดป็ลายที่างข้องข้�ายงาน เป็�นโหนดที่��ก!าหนดเป็�นโหนดต�นที่างไป็ย$งโหนดต�าง ๆ โดยหาระยะที่างส$-นที่��ส.ดแต�ละเส�นที่าง
Minimum Spanning Tree• Spanning Tree หมูายถึ�ง Tree ที่��ป็ระกอบด�วยที่.ก Vertex
ใน Graph ซั��งอาจมู�ได�มูากกว�า 1 แบบ
Minimum Spanning Tree
• Minimum Spanning Tree (MST) หมูายถึ�ง Spanning Tree ที่��มู�ผลรวมูข้อง Weight ที่$-งหมูดน�อยที่��ส.ด
1. ใส� Vertex เร��มูต�นใน Tree
2. เล2อก Edge จาก Vertex ใน Tree ไป็ย$ง Vertex ที่��ไมู�อย��ใน Tree และมู� Weight ต!�าส.ด
3. ที่!าซั!-าข้�อ 2 จนกว�าจะครบที่.ก Vertex
ต$วอย�าง
จงหา Minimum Spanning Tree
Total weight = 13Total weight = 13
Shortest Path
• Shortest Path หมูาย่ถึ1ง Path ท์%(ส�)นท์%(ส,ดระหว�าง 2 Vertex
• หาเส�นท์างการส�งข้�อมู�ลจากตั�นท์างไปปลาย่ท์าง โดย่ให�มู%ระย่ะท์างส�)นท์%(ส,ด1. ใส� Vertex เร��มูต�นใน Tree2. เล2อก Edge จาก Vertex ใน Tree ไป็ย$ง Vertex ที่��ไมู�อย��ใน Tree และมู�ผลรวมูข้อง Weight ต!�าส.ด3. ที่!าซั!-าข้�อ 2 จนกว�าจะครบที่.ก Vertex
Shortest Path• จงหา Shortest Path จากโหนด A ไป็ย$งโหนดอ2�น ๆ
แบบฝึ3กห�ด• 1. จากกราฟที่��ก!าหนดให�ต�อไป็น�- จงตอบค!าถึามู
A
B D
C E F
แบบฝึ3กห�ด• 1.1 หา Path จาก A ถึ�ง F• 1.2 หา Cycle จาก B ถึ�ง E• 1.3 จงแที่นที่��กราฟด�วยเมูตร�กซั*• 1.4 จงแที่นที่��กราฟด�วย Link List
แบบฝึ3กห�ด• 2. จากกราฟที่��ก!าหนดให� จงหาระยะที่างด$งต�อไป็น�-
A
B D
C E F
25
4 2 3
35
แบบฝึ3กห�ด• 2.1 จงหาระยะที่างที่��ส$ -นที่��ส.ดด�วย Minimum Spanning Tree• 2.2 จงหาระยะที่างที่��ส$ -นที่��ส.ดด�วย Shortest Path