chapter 6 โครงสร้างข้อมูลแบบกราฟ (graph ... ·...

43

Upload: others

Post on 04-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น
Page 2: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

2

• เปนโครงสรางทไมเปนแบบรายการเชงเสน (Non-linear) • กราฟเปนโครงสรางขอมลประเภทหนงทแสดง

ความสมพนธระหวาง vertex และ edge กราฟจะประกอบดวยกลมของ vertex ซงแสดงในกราฟดวยสญลกษณรปวงกลม และ กลมของ edge (เสนเชอมระหวาง vertex) ใชแสดงถงความสมพนธระหวาง vertex หากม vertex ตงแต 2 vertex ขนไปมความสมพนธกน ใชสญลกษณเสนตรงซงอาจมหวลกศร หรอไมมกได

• กราฟ คอ เซตของจด (points) และเซตของเสน (lines) ซงเสนจะเปนตวเชอมโยงจากจดหนงไปยงอกจดหนง โดยเรยกจดเหลานวาโหนดของกราฟ (nodes of graph) และเรยกเสนวาดาน (edges)

Page 3: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

• Directed edge (ขอบมทศทาง)

• เขยนดวยคอนดบ (μ,ν)

• เชน a flight

• Undirected edge (ขอบไมมทศทาง)

• เขยนดวยคทไมเปนอนดบ (μ,ν)

• เชน a flight route

• Directed graph (กราฟระบทศทาง)

• ทกขอบในกราฟเปน ขอบระบทศทาง

• เชน route network

• Undirected graph (กราฟไมระบทศทาง)

• ทกขอบในกราฟเปน ขอบไมระบทศทาง

• เชน flight network

ORD PVD

ORD PVD

FlightAA126

849miles

Page 4: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

4

EXAMPLE

the set of vertices V = {0,1,2,3,4}

the set of edges E = {01, 12, 23, 34, 04, 14, 13}

Page 5: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

5

• ในบางครงการเชอมตอระหวางโหนดสองโหนดใดๆ อาจมดานเชอมตอไดหลายๆ ดาน ซงตางกท าใหเกดการเชอมโยงตอระหวางโหนดสองโหนด

• ส าหรบบางโหนดอาจจะไมมการเชอมโยงใด ๆ เกดขน และบางดานกเชอมกบโหนดเดม ซงจะเรยกดานทเกดขนในลกษณะนวาลป (loops)

LOO

P

Page 6: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

6

ก าหนดให VG คอ เซตของโหนดในกราฟ G

EG คอ เซตของดานในกราฟ G

สามารถเขยนแทนความหมายของกราฟไดดงน

VG = { a, b, c, d }

EG = { 1, 2, 3, 4, 5, 6, 7, 8 }

Page 7: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

Applications

• เสนทางการคมนาคม Transportation networks• Highway network• Flight network

7

Page 8: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

Applications• เครอขายคอมพวเตอร Computer networks

• Local area network• Internet• Web

8

Page 9: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

• End vertices (จดยอดปลาย) (or endpoints) of an edge• U and V are the endpoints of a

• Edges incident (ตกกระทบ) on a vertex• a, d, and b are incident on V

• Adjacent (ประชด) vertices• U and V are adjacent

• Degree (ดกร) of a vertex• X has degree 5

• Parallel edges (ดานขนาน)• h and i are parallel edges

• Self-loop (ลป)• j is a self-loop

9

Page 10: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

• Path (ทางเดน)• ล าดบของจดยอดและขอบ• เรมทจดยอด และจบทจดยอด

• Simple path (ทางเดนอยางงาย)• ทางเดนทมจดยอดและขอบแตกตางกน

◎ ตวอยาง

◎ P1=(V,b,X,h,Z) เปนทางเดนอยางงาย

◎ P2=(U,c,W,e,X,g,Y,f,W,d,V) เปนทางเดนแตไมใชทางเดนอยางงาย

10

Page 11: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

• Cycle (วงจร)• ทางเดนทมจดเรมและจดปลายเดยวกน• Simple cycle (วงจรอยางงาย)• วงจรทมจดยอดและขอบแตกตางกน

◎ ตวอยาง

◎ C1=(V,b,X,g,Y,f,W,c,U,a,V) เปนวงจรอยางงาย

◎ C2=(U,c,W,e,X,g,Y,f,W,d,V,a,U) เปนวงจรแตไมเปน

◎ วงจรอยางงาย

11

Page 12: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

กราฟจะเรยกวา กราฟอยางงาย (Simple Graph) ถามคณลกษณะ

ตอไปน

◎ 1. กราฟตองไมมลป (Loops)

◎ 2. โหนดแตละคจะตองมดานไมเกน 1 ดาน

12กราฟอยางงาย (Simple Graph)

Page 13: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

13

◎ แบงออกเปน 2 ประเภท ไดแก

◎ 1. กราฟไมมทศทาง (Undirected Graphs)

◎ 2. กราฟมทศทาง (Directed Graphs)

ประเภทของกราฟ

Page 14: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

● คอ กราฟทมดาน (Edges) ของกราฟจะไมมลกศรแสดง

ทศทางความ สมพนธทเกดขน (มองความสมพนธไดทง

สองดาน)

14

กราฟไมมทศทาง (Undirected Graphs)

กราฟไมมทศทาง (Undirected Graphs)

Page 15: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

15

กราฟมทศทาง (Directed Graphs)

● คอ กราฟทมดาน (Edges) ของกราฟมลกศรแสดงทศทาง

ความสมพนธทเกดขน

กราฟมทศทาง (Directed Graphs)

Page 16: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

16

การแทนโครงสรางขอมลกราฟ

คอ การแทนความสมพนธทเกดขนจากรปกราฟดวยรปทสามารถประมวลผลดวยคอมพวเตอร ซงแบงออกเปน 2 วธไดแก

1. การแทนดวย Adjacency Matrix

2. การแทนดวย Node Directory

Page 17: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

17

• เมตรกซประชด เปนวธการแทนกราฟโดยจดเกบขอมลดวย

โครงสรางแบบ Matrix

• Implement โดยใชโครงสราง Array 2 มต

• การเกบขอมลใน Adjacency Matrix ม 2 แบบคอ

1.กรณ Unweighted Graph ใหก าหนดคาทเกบดงน

ถาม edge (v,w) ให A[v,w] = 19

ถาไมม edge (v,w) ให A[v,w] = 09

2. กรณ Weighted Graph ใหก าหนดคาทเกบดงน

ถาม edge (v,w) ให A[v,w] = weight

ถาไมม edge (v,w) ให A[v,w] = 09

Page 18: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

18

การแทน Undirected Graphs ดวย Adjacency Matrix

Page 19: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

19

การแทน Directed Graphs ดวย Adjacency Matrix

Page 20: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

20

การแทนโครงสรางขอมลกราฟดวย Linked List

การแทนดวย Linked List จะเกบขอมลเฉพาะโหนดทมความสมพนธกน (โหนดทไมเปนศนย) เทานน ซงท าใหประหยดเนอทไดมากกวาการแทนกราฟดวยอารเรย

การแทนกราฟดวย Linked List แบงออกเปน 2รปแบบ ไดแก1. การแทนดวย Node Directory ประกอบดวย 2 สวน คอ- Node Directory- Edge Information2. การแทนกราฟแสดงดวยวธ Multi-List

Page 21: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

21

การแทนโครงสรางขอมลกราฟดวย Linked List

• ลสตประชด เปนวธการแทนกราฟโดยจดเกบขอมลดวย

โครงสรางแบบ Singly Linked List

• ประกอบดวยลสตของจดยอด และลสตของขอบ

• การเกบขอมลใน Adjacency list ม 2 แบบ คอ

1.กรณ Unweighted Graph ใหก าหนดคาทเกบ ดงน

• ถาม edge (v,w) ให Pointer ของ v ชไปยง w

• ถาไมม edge (v,w) ให Pointer ของ v ชไปยง Null

2. กรณ Weighted Graph ใหก าหนดคาทเกบ ดงน

• ถาม weight บน edge (v,w) ให Pointer ของ v ชไปยง

w และเกบขอมล weight ดวย

Page 22: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

22

การแทนดวยLinked List

Page 23: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

23

การแทนดวย Node Directory

การแทน Undirected Graphs ดวยวธ Node Directory

Page 24: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

24

การแทนดวย Node Directory

การแทน Directed Graphs ดวยวธ Node Directory

Page 25: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

25

การแทนดวย Multi List

เมอ

Vi หมายถง โหนด i

Vj หมายถง โหนด j

NEXTi หมายถง พอยนเตอรทชไปยงโหนดทอยถด

จากโหนด Vi ทท าใหเกดดาน

NEXTj หมายถง พอยนเตอรทชไปยงโหนดทอยถด

จากโหนด Vj ทท าใหเกดดาน

Page 26: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

26

การแทนดวย Multi List

แสดงเซตของดานดวย Multi List

Page 27: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

27

กราฟทม Weighted Edges

คอ กราฟทมการก ากบขอมลอยบนดานของกราฟ

โดยขอมลดงกลาวนนอาจจะหมายถงระยะทาง จ านวนวน

หรอจ านวนเงน เปนตน ทงนขนอยกบความสมพนธของ

กราฟนนทแทนความหมายของสงใด เชน ตวอยางแผนท

แสดงระยะทางจากระหวางเมองตาง ๆ

Page 28: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

28

ตวอยางกราฟทม Weighted Edges แสดงระยะทางระหวางเมองตาง ๆ

Page 29: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

29

• การแทรกเวอรเทกซ (Insert Vertex)

• การลบเวอรเทกซ (Delete Vertex)

• การเพมเอดจ (Add Edge)

• การลบเอดจ (Delete Edge)

• การคนหาเวอรเทกซ (Find Vertex)

• การทองเขาไปในกราฟ (Traverse Graph)

Page 30: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

30

การแทรกเวอรเทกซ (Insert Vertex)

Page 31: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

31

การลบเวอรเทกซ (Delete Vertex)

Page 32: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

32

การเพมเอดจ (Add Edge)

Page 33: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

33

การลบเอดจ (Add Edge)

Page 34: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

34

การคนหาเวอรเทกซ (Find Vertex)

Page 35: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

35

การทองเขาไปในกราฟ (Traverse Graph)

• การทองเขาไปใน กราฟแบบแนวลก (Depth-First

Search : DFS)

• การทองเขาไปใน กราฟแบบแนวกวาง (Breadth-First

Search :BFS)

• การทองเขาไปใน กราฟแบบล าดบความส าคญ

(Priority First Search :PFS)

Page 36: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

36

การทองเขาไปในกราฟ (Traverse Graph)

• การทองเขาไปในกราฟแบบแนวลก (Depth-First Search) เปนลกษณะการทองเขาไปยงโหนดเรมตน แลวใหโหนดใกลเคยงเปนโหนดเรมตน เขาเยยมโหนดท าตอไปจนกระทงไมมโหนดใกลเคยงจงยอนกลบมายงโหนดกอนหนา และเขาเยยมโหนดอกดานดวยรปแบบเดยวกนจนครบ เทยบไดกบการทองเขาไปในทรแบบพรออเดอร

1.Push vertex2.Pop vertex และประมวลผล3.Push adjacent ทงหมดของ Vertex ในขอ 24.ท าซ าขอ2-3จนกวาจะครบทก Vertex และ Stack วาง

Page 37: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

37

การทองเขาไปในกราฟ (Traverse Graph)

• การทองเขาไปในกราฟแบบแนวลก (Depth-First Search)

Page 38: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

38

การทองเขาไปในกราฟ (Traverse Graph)

• การทองเขาไปในกราฟแบบแนวกวาง (Breath-First Search)

เปนการทองเขาไปในกราฟโดยเขาเยยมโหนดตวแรกและด าเนนการ หากมโหนดใกลเคยงจะด าเนนการกบโหนดทอยดานซายกอน1.Enqueue vertex2.Dequeue vertex และประมวลผล3.Enqueue adjacent ทงหมดของ Vertex ในขอ 24.ท าซ าขอ 2-3 จนกวาจะครบทก Vertex และ Queue วาง

Page 39: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

39

การทองเขาไปในกราฟ (Traverse Graph)

• การทองเขาไปในกราฟแบบแนวกวาง (Breath-First Search)

Page 40: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

40

การทองเขาไปในกราฟ (Traverse Graph)

• การทองเขาไปในกราฟแบบแนวล าดบความส าคญ (Priority-First Search)

มรปแบบของการทองเขาไปเยยม (Visit) โหนดตางๆ ดวยรปแบบของควทม

ล าดบความส าคญ (Priority Queues) แทนทโครงสรางสแตกหรอควแบบทวไป คอ การเพมควเขามาโดยพจารณาและด าเนนการในล าดบทส าคญกอน

Page 41: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

41

กราฟประกอบดวย• โหนดเวอรเทกซ (Vertex) • เซตของเสนเชอมระหวางเวอรเทกซหรอเอดจ (Edge) • เสนเชอมระหวางเวอรเทกซทงแบบมทศทาง (Directed edge) • กราฟเสนเชอมไมมทศทางแนนอน เรยกวา กราฟแบบไมมทศทาง

(Undirected edge) • โครงสรางกราฟมทงเสนเชอมแบบมทศทาง และเสนเชอมแบบไมม

ทศทาง เรยกวา กราฟผสม (Mixed Graph) • ถามเสนเชอมเชอมระหวางโหนด 2 โหนดใดๆ มากกวา 1 การส ารวจ

ตามแนวกวาง (Breadth-first) การส ารวจตามแนวลก (Depth-first) และ การส ารวจตามล าดบ (Priority-first)

Page 42: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

42

โอภาส เอยมสรวงศโครงสรางขอมล (Data Structures) เพอการออกแบบโปรแกรมคอมพวเตอร.—กรงเทพฯ: ซเอดยเคชน, 2549.

Page 43: Chapter 6 โครงสร้างข้อมูลแบบกราฟ (Graph ... · 2019-11-17 · •เขียนด้วยคู่อันดับ (μ,ν) •เช่น

Q & A

43