โครงสร้างข้อมูลกราฟ · 2017-08-31 ·...

43
1 Charter 11 โครงสร้างข้อมูลกราฟ Graphs

Upload: others

Post on 11-Mar-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

1

Charter 11

โครงสรางขอมลกราฟ Graphs

โครงสรางขอมลกราฟ (Graphs)

ความหมาย โครงสรางขอมลกราฟ (Graphs) เปนโครงสรางทไมเปนแบบรายการเชงเสน (Non-linear) กราฟเปนโครงสรางขอมลประเภทหนงทแสดงความสมพนธระหวาง vertex และ edge กราฟจะประกอบดวยกลมของ vertex ซงแสดงในกราฟดวยสญลกษณรปวงกลม และ กลมของ edge (เสนเชอมระหวาง vertex) ใชแสดงถงความสมพนธระหวาง vertex หากม vertex ตงแต 2 vertex ขนไปมความสมพนธกน ใชสญลกษณเสนตรงซงอาจมหวลกศร หรอไมมกได หรอกลาวอกลกษณะหนงวา กราฟ คอ เซตของจด (points) และเซตของเสน (lines) ซงเสนจะเปนตวเชอมโยงจากจดหนงไปยงอกจดหนง โดยเรยกจดเหลานวาโหนดของกราฟ (nodes of graph) และเรยกเสนวาดาน (edges)

2

Definition ! กราฟ G ประกอบดวยเซตจ ำกด 2 คอเซต V และ เซต E 1. เซต V = {v1, v2,…, vn} ทมสมำชก v1, v2,…, vn เรยกวำ จดยอด (vertices หรอ nodes)! 2. เซต E = {e1, e2,…, em} ทมสมำชก e1, e2,…, em เรยกวำ ดาน (edges) โดยทดำน e = (vi,vj) แตละดำนในเซต E ตรงกบ คทไมเปนอนดบ (vi,vj) = (vj,vi) ของจดยอดในเซต V เรำเขยนแทนกรำฟ G ดวย G = (V,E)

Graphs in Mathematics!

• Directed edge (ขอบมทศทาง) • เขยนดวยคอนดบ () • เชน a flight

• Undirected edge (ขอบไมมทศทาง) • เขยนดวยคทไมเปนอนดบ () • เชน a flight route

• Directed graph (กราฟระบทศทาง) • ทกขอบในกราฟเปน ขอบระบทศทาง • เชน route network

• Undirected graph (กราฟไมระบทศทาง) • ทกขอบในกราฟเปน ขอบไมระบทศทาง • เชน flight network

ชนดของขอบ(Edge Types)

ORD PVD

ORD PVD

Flight AA126

849 miles

5

ตวอยางของกราฟ

โครงสรางขอมลกราฟ (Graphs)

6

ก ำหนดให VG คอ เซตของโหนดในกรำฟ G EG คอ เซตของดำนในกรำฟ G สำมำรถเขยนแทนควำมหมำยของกรำฟไดดงน VG = { a, b, c, d } EG = { 1, 2, 3, 4, 5, 6, 7, 8 }

โครงสรางขอมลกราฟ (Graphs)

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

7

LOOP

โครงสรางขอมลกราฟ (Graphs)

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

Applications

Applications

• เครอขายคอมพวเตอร Computer networks • Local area network • Internet • Web

ค าศพทตาง ๆ ในกราฟ •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

ค าศพทตาง ๆ ในกราฟ •Path (ทำงเดน)

• ล ำดบของจดยอดและขอบ • เรมทจดยอด และจบทจดยอด

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

ตวอยำง P1=(V,b,X,h,Z) เปนทำงเดนอยำงงำย P2=(U,c,W,e,X,g,Y,f,W,d,V) เปนทำงเดนแตไมใชทำงเดนอยำงงำย

ค าศพทตาง ๆ ในกราฟ •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) เปนวงจรแตไมเปน วงจรอยำงงำย

กราฟจะเรยกวา กราฟอยางงาย (Simple Graph) ถามคณลกษณะตอไปน 1. กราฟตองไมมลป (Loops) 2. โหนดแตละคจะตองมดานไมเกน 1 ดาน

13

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

โครงสรางขอมลกราฟ (Graphs)

แบงออกเปน 2 ประเภท ไดแก 1. กราฟไมมทศทาง (Undirected Graphs) 2. กราฟมทศทาง (Directed Graphs)

14

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

โครงสรางขอมลกราฟ (Graphs)

15

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

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

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

โครงสรางขอมลกราฟ (Graphs)

16

คอ กราฟทมดาน (Edges) ของกราฟมลกศรแสดงทศทางความสมพนธ ทเกดขน

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

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

โครงสรางขอมลกราฟ (Graphs)

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

17

โครงสรางขอมลกราฟ (Graphs)

18

การแทนดวย Adjacency Matrix

• เมตรกซประชด เปนวธกำรแทนกรำฟโดยจดเกบขอมลดวยโครงสรำงแบบ 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

19

I j 1 2 3 4 5 6

1 0 1 0 0 0 02 1 1 1 0 0 03 0 1 0 1 1 14 0 0 1 0 0 05 0 0 1 0 0 06 0 0 1 0 0 0

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

โครงสรางขอมลกราฟ (Graphs)

20

I j 1 2 3 4 5 6

1 0 1 0 0 0 02 0 1 1 0 0 03 0 0 0 0 1 14 0 0 1 0 0 05 0 0 0 0 0 06 0 0 0 0 0 0

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

โครงสรางขอมลกราฟ (Graphs)

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

- Node Directory - Edge Information

2. การแทนกราฟแสดงดวยวธ Multi-List

21

โครงสรางขอมลกราฟ (Graphs)

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

22

โครงสรางขอมลกราฟ (Graphs)

• ลสตประชด เปนวธกำรแทนกรำฟโดยจดเกบขอมลดวยโครงสรำงแบบ 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 ดวย

23

การแทนดวย Linked List

โครงสรางขอมลกราฟ (Graphs)

24

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

การแทนดวย Node Directory

โครงสรางขอมลกราฟ (Graphs)

25

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

การแทนดวย Node Directory

โครงสรางขอมลกราฟ (Graphs)

26

การแทนดวย Multi List

เมอ Vi หมายถง โหนด i Vj หมายถง โหนด j NEXTi หมายถง พอยนเตอรทชไปยงโหนดทอยถดจากโหนด Vi ทท าใหเกดดาน NEXTj หมายถง พอยนเตอรทชไปยงโหนดทอยถดจากโหนด Vj ทท าใหเกดดาน

โครงสรางขอมลกราฟ (Graphs)

27

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

การแทนดวย Multi List

โครงสรางขอมลกราฟ (Graphs)

กราฟทม Weighted Edges

คอ กราฟทมขอมลก ากบอยบนดานของกราฟ โดยขอมลดงกลาวอาจจะหมายถงระยะทาง จ านวนวนหรอจ านวนเงน เปนตน ทงนขนอยกบความสมพนธของกราฟนนแทนความหมายของสงใด เชน ตวอยางแผนทแสดงระยะทางระหวางเมองตาง ๆ

28

โครงสรางขอมลกราฟ (Graphs)

29

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

โครงสรางขอมลกราฟ (Graphs)

การด าเนนงานของกราฟ (Graph Operations)

• กำรแทรกเวอรเทกซ (Insert Vertex) • กำรลบเวอรเทกซ (Delete Vertex) • กำรเพมเอดจ(Add Edge) • กำรลบเอดจ (Delete Edge) • กำรคนหำเวอรเทกซ (Find Vertex) • กำรทองเขำไปในกรำฟ (Traverse Graph)

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

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

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

Search :PFS)

การด าเนนงานของกราฟ (Graph Operations)

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

เปนลกษณะกำรทองเขำไปยงโหนดเรมตน แลวใหโหนดใกลเคยงเปนโหนดเรมตน เขำเยยมโหนดท ำตอไปจนกระทงไมมโหนดใกลเคยงจงยอนกลบมำยงโหนดกอนหนำ และเขำเยยมโหนดอกดำนดวยรปแบบเดยวกนจนครบ เทยบไดกบกำรทองเขำไปในทรแบบพรออเดอร

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

การด าเนนงานของกราฟ (Graph Operations)

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

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

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

การด าเนนงานของกราฟ (Graph Operations)

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

Search)

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

โครงสรางขอมลกราฟ (Graphs)

กรำฟประกอบดวยโหนดเวอรเทกซ (Vertex) และเซตของเสนเชอมระหวำงเวอรเทกซหรอเอดจ (Edge) เสนเชอมระหวำงเวอรเทกซทงแบบมทศทำง (Directed edge) กรำฟเสนเชอมไมมทศทำงแนนอน เรยกวำกรำฟแบบไมมทศทำง (Undirected edge) และโครงสรำงกรำฟมทงเสนเชอมแบบมทศทำง และเสเชอมแบบไมมทศทำง เรยกวำ กรำฟผสม (Mixed Graph) ซงบำงครงกมเสนเชอมเชอมระหวำงโหนด 2 โหนดใดๆ มำกกวำ 1 กำรส ำรวจตำมแนวกวำง (Breadth-first) กำรส ำรวจตำมแนวลก (Depth-first) และกำรส ำรวจตำมล ำดบ (Priority-first)

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

Reference :