โครงสร้างข้อมูล (data structure)

45
โโโโโโโโโโโโโโโ (DATA STRUCTURE) โโโโโโโโโโโโโโโโโโ โโโโ (Graph)

Upload: maribel-herandez

Post on 05-Jan-2016

105 views

Category:

Documents


4 download

DESCRIPTION

โครงสร้างข้อมูล (Data Structure). โครงสร้างข้อมูลแบบ กราฟ (Graph). โครงสร้างข้อมูลแบบกราฟ (Graph). - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: โครงสร้างข้อมูล  (Data Structure)

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

Page 2: โครงสร้างข้อมูล  (Data Structure)

โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• กราฟ (Graph)  เป็�นโครงสร�างข้�อมู�ลแบบไมู�ใช่�เช่�งเส�นอ�กช่น�ดหน��ง

กราฟเป็�นโครงสร�างข้�อมู�ลที่��มู�การน!าไป็ใช่�ในงานที่��เก��ยวข้�องก$บการแก�ป็%ญหาที่��ค�อนข้�างซั$บซั�อน เช่�น การวางข้�ายงานคอมูพิ�วเตอร* การว�เคราะห*เส�นที่างว�กฤต� และป็%ญหาเส�นที่างที่��ส$ -นที่��ส.ด เป็�นต�น

Page 3: โครงสร้างข้อมูล  (Data Structure)

ตั�วอย่�าง

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

Page 4: โครงสร้างข้อมูล  (Data Structure)

โครงสร�างข้�อมู�ลแบบกราฟ (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

Page 5: โครงสร้างข้อมูล  (Data Structure)

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

Page 6: โครงสร้างข้อมูล  (Data Structure)

โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• แอดจาเซนท์�โหนด (Adjacent Node)

A ก�บ B D ก�บ F

ใช่�ใช่�ไมู�ใช่�ไมู�ใช่�

Page 7: โครงสร้างข้อมูล  (Data Structure)

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

• เส�นท์าง (Path)

ใช่�เร�ยกล!าด$บข้อง เวอร*เที่ก (Vertex) ที่��เช่2�อมูต�อก$นจากจ.ดหน��งไป็ย$งอ�กจ.ดหน��ง

(A,B,C,D,E)

(A,B,E,F)

Page 8: โครงสร้างข้อมูล  (Data Structure)

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

Path ที่��ป็ระกอบด�วยอย�างน�อย 3 Vertex และมู�จ.ดเร��มูต�นและส�-นส.ดเด�ยวก$น

เช่�น(B,C,E,B)(B,C,E,B)

(B,C,D,E,B)(B,C,D,E,B)

Page 9: โครงสร้างข้อมูล  (Data Structure)

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

มู�เพิ�ยง Arc เด�ยวและมู�จ.ดเร��มูต�นและส�-นส.ดเด�ยวก$น

Page 10: โครงสร้างข้อมูล  (Data Structure)

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

Directed Graph : มู�การก!าหนดที่�ศัที่าง• Strongly Connected ที่.ก ๆ 2 Vertex มู� Path ที่$-งไป็และกล$บ (ที่.กโหนดในกราฟมู�พิาที่ต�ดต�อถึ�งก$นหมูด)

Page 11: โครงสร้างข้อมูล  (Data Structure)

โครงสร�างข้�อมู�ลแบบกราฟ (Graph)• Weakly Connected : มู�อย�างน�อย 2 Vertex ที่��มู� Path ใน

ที่�ศัที่างเด�ยว (บางโหนดไมู�สามูารต�ดต�อไป็ย$งที่.กโหนดในกราฟน$-นได�)

A A ไป ไป G G ได�ในท์#ศท์างเด%ย่วได�ในท์#ศท์างเด%ย่ว

Page 12: โครงสร้างข้อมูล  (Data Structure)

ส�ตัรหาจ&านวนเอดจ�ข้องกราฟสมูบ�รณ์�แบบมู%ท์#ศท์าง = N * (N –1)จากภาพิที่�� (ข้) ซั��งเป็�นกราฟแบบมู�ที่�ศัที่าง และจ!านวนเวอร*เที่กซั*ที่��มู�ที่$-งหมูดเที่�าก$บ 4 เวอร*เที่กซั* จ�งค!านวณหาจ!านวนเอดจ*ได�ด$งน�-

ส�ตรหาจ!านวนเอดจ*ข้องกราฟมู�ที่�ศัที่าง = N * (N –1)

= 4 * ( 4 – 1)

= 4 * 3

= 12 เส�น

Page 13: โครงสร้างข้อมูล  (Data Structure)

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

Undirected Graph : ไมู�มู�การก!าหนดที่�ศัที่าง

• เป็�นกราฟที่��ไมู�ระบ.ที่�ศัที่างข้องการเช่2�อมูต�อซั��งสามูารถึที่!าให�สามูารถึเด�นที่างไป็มูาระหว�างก$นได�

Page 14: โครงสร้างข้อมูล  (Data Structure)

ส�ตัรหาจ&านวนเอดจ�ข้องกราฟสมูบ�รณ์�แบบไมู�มู%ท์#ศท์าง = (N * (N – 1)) / 2

กราฟแบบไมู�มู�ที่�ศัที่าง และจ!านวนเวอร*เที่กซั*ที่��มู�ที่$ -งหมูด เที่�าก$บ 4 เวอร*เที่กซั* จ�งค!านวณหาจ!านวนเอดจ*ได�ด$งน�-

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

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

Page 15: โครงสร้างข้อมูล  (Data Structure)

กราฟท์%(มู%น&)าหน�ก (Weighted Graphs)• กราฟที่��แตั�ละเอดจ�จะมู�ค�าบ�งบอกถึ�งความูหมูายอย�างใด

อย�างหน��ง เช่�น ระย่ะท์าง ความูเร+ว เวลาเด#นท์าง ค�าโดย่สาร เป็�นต�น

ปท์,มูธาน% สระบ,ร%

กร,งเท์พ

ฉะเช่#งเท์รา

นครนาย่ก

ปราจ%นบ,ร%

1

0

1

4

6

1

0

11

0

78

27

6

1

0

0

2

9

5

8

Page 16: โครงสร้างข้อมูล  (Data Structure)

กราฟท์%(มู%น&)าหน�ก

Page 17: โครงสร้างข้อมูล  (Data Structure)

• เป็�นกราฟที่��ไมู�ก!าหนดน!-าหน$กข้องเส�นเช่2�อมูต�อโดยให�แต�ละเส�นมู�น!-าหน$กเป็�น 1 เที่�าก$นหมูดที่.กเส�น

•กราฟท์%(ไมู�มู%น&)าหน�ก (Unweighted Graphs)

A

B

C

D

11

1E

1

Page 18: โครงสร้างข้อมูล  (Data Structure)

Graph Storage Structure

การเก3บข้�อมู�ลในหน�วยความูจ!าสามูารถึที่!าได� 2 แบบ ด$งน�-

1. Adjacency Matrix : ใช่�อาร�เรย่�เก+บข้�อมู�ลใช่�อาร�เรย่�เก+บข้�อมู�ล

2. Adjacency List : ใช่�ล#งค�ล#สตั�เก+บข้�อมู�ลใช่�ล#งค�ล#สตั�เก+บข้�อมู�ล

Page 19: โครงสร้างข้อมูล  (Data Structure)

Adjacency Matrix• เป็�นโครงสร�างที่��ป็ระกอบไป็ด�วยโหนดและเส�นเช่2�อมูต�อที่��บอกถึ�งเส�น

ที่างข้องการเด�นที่าง หร2อความูส$มูพิ$นธ์*ในที่�ศัที่างซั��งสามูารถึน!ามูาแที่นความูส$มูพิ$นธ์*น$-นด�วยการก!าหนดเมูตร�กซั* n x n

• Mk เป็�นเมูที่ร�กซั*ข้องกราฟใด ๆ k ค2อที่างเด�นที่��มู�ความูยาว k จากโหนดหน��งไป็อ�กโหนดหน��ง

Page 20: โครงสร้างข้อมูล  (Data Structure)

Adjacency Matrix

0 : ไมู�เป็�นแอดจาเซันซั�ก$น 1 : เป็�นแอดจาเซันซั�ก$น

Page 21: โครงสร้างข้อมูล  (Data Structure)

การแท์นกราฟด�วย่อะเรย่�สองมู#ตั#

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

Page 22: โครงสร้างข้อมูล  (Data Structure)

การแท์นท์%(กราฟ

Page 23: โครงสร้างข้อมูล  (Data Structure)

การแท์นท์%(กราฟ

Page 24: โครงสร้างข้อมูล  (Data Structure)

Adjacency List

Page 25: โครงสร้างข้อมูล  (Data Structure)

Graph Traversal

สามูารถึที่!าได� 2 ว�ธ์�1. แนวล�ก : Depth-first Traversal 2. แนวราบ : Breath-first Traversal

Page 26: โครงสร้างข้อมูล  (Data Structure)

Depth-first Traversal• เป็�นล$กษณะการที่�องเข้�าไป็ย$งโหนดเร��มูต�น แล�วให�โหนดใกล�เค�ยง

เป็�นโหนดเร��มูต�น เข้�าเย��ยมูโหนด ที่!าต�อไป็จนกระที่$�งไมู�มู�โหนดใกล�เค�ยงจ�งย�อนกล$บมูาย$งโหนดก�อนหน�า และเข้�าเย��ยมูโหนดอ�กด�านด�วยร�ป็แบบเด�ยวก$นจนครบ เที่�ยบได�ก$บการที่�องเข้�าไป็ในที่ร�

แบบพิร�ออเดอร*1. Push vertex2. Pop vertex และป็ระมูวลผล3. Push adjacent ที่$-งหมูดข้อง Vertex ในข้�อ 24. ที่!าซั!-าข้�อ 2-3 จนกว�าจะครบที่.ก Vertex และ Stack ว�าง

Page 27: โครงสร้างข้อมูล  (Data Structure)

• ผลการที่�อง A – B – E – F – G – C – D – H – I - J

A

B C

E F G

D

H I J

Depth-first Traversal

Page 28: โครงสร้างข้อมูล  (Data Structure)

Breath-first Traversalเป็�นการที่�องเข้�าไป็ในกราฟโดยเข้�าเย��ยมูโหนดต$วแรก และด!าเน�นการ หากมู�โหนดใกล�เค�ยงจะด!าเน�นการก$บโหนดที่��อย��ด�านซั�ายก�อน1. Enqueue vertex2. Dequeue vertex และป็ระมูวลผล3. Enqueue adjacent ที่$-งหมูดข้อง Vertex ในข้�อ 24. ที่!าซั!-าข้�อ 2-3 จนกว�าจะครบที่.ก Vertex และ Queue ว�าง

Page 29: โครงสร้างข้อมูล  (Data Structure)

• ผลการที่�อง A – B – C – D – E – F – G – H – I - J

A

B C

E F G

D

H I J

Breath-first Traversal

Page 30: โครงสร้างข้อมูล  (Data Structure)

Network• หมูายถึ�ง Graph ที่��ที่.ก Edge มู� Weight ก!าก$บ โดยความูหมูาย

ข้อง Weight น$-นข้�-นอย��ก$บการใช่�งาน

Page 31: โครงสร้างข้อมูล  (Data Structure)

Adjacency Matrix

Page 32: โครงสร้างข้อมูล  (Data Structure)

Adjacency List

Page 33: โครงสร้างข้อมูล  (Data Structure)

Network Application• Minimum Spanning Tree เป็�นร�ป็แบบข้องการค�นหาโดยก!าหนดเร�ยกใช่�โหนดที่.กโหนดและที่.กเส�นการเช่2�อมูต�อ มูาล!าด$บความูส!าค$ญข้องน!-าหน$กโดยเร��มูจากค�าน�อยที่��ส.ดในข้�ายงาน ที่!าการเช่2�อมูต�อค��โหนดน$-น และด!าเน�นการต�อไป็ในค�าน!-าหน$กที่��ต�อก$น แต�ถึ�าโหนดใดมู�การเช่2�อมูต�อค��โหนดแล�วจะไมู�เช่2�อมูต�ออ�ก

• Shortest Path เป็�นอ$ลกอร�ที่�มูที่��ใช่�ในการหาระยะที่างที่��ส$ -นที่��ส.ดเช่�นเด�ยวก$บ MST แต�จะเป็ล��ยนจากการหาเส�นที่างจากโหนดแรกไป็ย$งโหนดป็ลายที่างข้องข้�ายงาน เป็�นโหนดที่��ก!าหนดเป็�นโหนดต�นที่างไป็ย$งโหนดต�าง ๆ โดยหาระยะที่างส$-นที่��ส.ดแต�ละเส�นที่าง

Page 34: โครงสร้างข้อมูล  (Data Structure)

Minimum Spanning Tree• Spanning Tree หมูายถึ�ง Tree ที่��ป็ระกอบด�วยที่.ก Vertex

ใน Graph ซั��งอาจมู�ได�มูากกว�า 1 แบบ

Page 35: โครงสร้างข้อมูล  (Data Structure)

Minimum Spanning Tree

• Minimum Spanning Tree (MST) หมูายถึ�ง Spanning Tree ที่��มู�ผลรวมูข้อง Weight ที่$-งหมูดน�อยที่��ส.ด

1. ใส� Vertex เร��มูต�นใน Tree

2. เล2อก Edge จาก Vertex ใน Tree ไป็ย$ง Vertex ที่��ไมู�อย��ใน Tree และมู� Weight ต!�าส.ด

3. ที่!าซั!-าข้�อ 2 จนกว�าจะครบที่.ก Vertex

Page 36: โครงสร้างข้อมูล  (Data Structure)

ต$วอย�าง

จงหา Minimum Spanning Tree

Page 37: โครงสร้างข้อมูล  (Data Structure)

Total weight = 13Total weight = 13

Page 38: โครงสร้างข้อมูล  (Data Structure)

Shortest Path

• Shortest Path หมูาย่ถึ1ง Path ท์%(ส�)นท์%(ส,ดระหว�าง 2 Vertex

• หาเส�นท์างการส�งข้�อมู�ลจากตั�นท์างไปปลาย่ท์าง โดย่ให�มู%ระย่ะท์างส�)นท์%(ส,ด1. ใส� Vertex เร��มูต�นใน Tree2. เล2อก Edge จาก Vertex ใน Tree ไป็ย$ง Vertex ที่��ไมู�อย��ใน Tree และมู�ผลรวมูข้อง Weight ต!�าส.ด3. ที่!าซั!-าข้�อ 2 จนกว�าจะครบที่.ก Vertex

Page 39: โครงสร้างข้อมูล  (Data Structure)

Shortest Path• จงหา Shortest Path จากโหนด A ไป็ย$งโหนดอ2�น ๆ

Page 40: โครงสร้างข้อมูล  (Data Structure)
Page 41: โครงสร้างข้อมูล  (Data Structure)
Page 42: โครงสร้างข้อมูล  (Data Structure)

แบบฝึ3กห�ด• 1. จากกราฟที่��ก!าหนดให�ต�อไป็น�- จงตอบค!าถึามู

A

B D

C E F

Page 43: โครงสร้างข้อมูล  (Data Structure)

แบบฝึ3กห�ด• 1.1 หา Path จาก A ถึ�ง F• 1.2 หา Cycle จาก B ถึ�ง E• 1.3 จงแที่นที่��กราฟด�วยเมูตร�กซั*• 1.4 จงแที่นที่��กราฟด�วย Link List

Page 44: โครงสร้างข้อมูล  (Data Structure)

แบบฝึ3กห�ด• 2. จากกราฟที่��ก!าหนดให� จงหาระยะที่างด$งต�อไป็น�-

A

B D

C E F

25

4 2 3

35

Page 45: โครงสร้างข้อมูล  (Data Structure)

แบบฝึ3กห�ด• 2.1 จงหาระยะที่างที่��ส$ -นที่��ส.ดด�วย Minimum Spanning Tree• 2.2 จงหาระยะที่างที่��ส$ -นที่��ส.ดด�วย Shortest Path