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

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

Upload: tumetr

Post on 18-Jul-2015

802 views

Category:

Education


1 download

TRANSCRIPT

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

โครงสรางขอมล (Data Structure)

โครงสรางขอมลแบบกราฟ (Graph) กราฟ (Graph)  เปนโครงสรางขอมลแบบไมใชเชง

เสนอกชนดหนง กราฟเปนโครงสรางขอมลทมการนำาไปใชในงานทเกยวของกบการแกปญหาท

คอนขางซบซอน เชน การวางขายงานคอมพวเตอร การวเคราะหเสนทางวกฤต และปญหาเสนทางทสน

ทสด เปนตน

โครงสรางขอมลแบบกราฟ (Graph)ศพททเกยวของ1. เวอรเทก (Vertex) หมายถง โหนด2.เอดจ (Edge) หมายถง เสนเชอมของโหนด3. ดกร (Degree) หมายถง จำานวนเสนเขาและออก ของ

โหนดแตละโหนด4. แอดจาเซนทโหนด (Adjacent Node) หมายถง โหนดทม

การเชอมโยงกน

Graph แบงเปน

1. Directed Graph (Digraph) (Arc)

2. Undirected Graph

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

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

A กบ B

D กบ F

ใชใช

ไม ใช ไม ใช

โครงสรางขอมลแบบกราฟ (Graph) เส นทาง (Path)

ใชเรยกลำาดบของ เวอรเทก (Vertex) ทเชอมตอกนจากจดหนงไปยงอกจดหนง

(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 ได ในทศทางเด ยวได ในทศทางเด ยว

Graph Storage Structure

การเกบขอมลในหนวยความจำาสามารถทำาได 2 แบบ

ดงน

1. Adjacency Matrix : ใชอาร เรย เก บใชอาร เรย เก บ

ข อม ลข อม ล

2. Adjacency List : ใชล งค ล สต เก บข อม ลใชล งค ล สต เก บข อม ล

Adjacency Matrix เปนโครงสรางทประกอบไปดวยโหนดและเสนเชอม

ตอทบอกถงเสนทางของการเดนทาง หรอความสมพนธในทศทางซงสามารถนำามาแทนความ

สมพนธนนดวยการกำาหนดเมตรกซ n x n Mk เปนเมทรกซของกราฟใด ๆ k คอทางเดนทม

ความยาว k จากโหนดหนงไปอกโหนดหนง

Adjacency Matrix

0 : ไมเปนแอดจาเซนซกน1 : เปนแอดจาเซนซกน

Transitive Closure ในกรณทเราอยากทราบวาในกราฟจากโหนดหนง

ไปยงโหนดหนงมจำานวนเสนทางมากเทาไร เราสามารถหาคาไดจากการคณเมทรกซ

ตวอยาง

Adjacency List

Graph Traversal สามารถทำาได 2 วธ

1. แนวลก : Depth-first Traversal

2. แนวราบ : Breath-first Traversal

Depth-first Traversal เปนลกษณะการทองเขาไปยงโหนดเรมตน แลวใหโหนด

ใกลเคยงเปนโหนดเรมตน เขาเยยมโหนด ทำาตอไปจน กระทงไมมโหนดใกลเคยงจงยอนกลบมายงโหนดกอนหนา

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

1. Push vertex

2. Pop vertex และประมวลผล3. Push adjacent ทงหมดของ Vertex ในขอ 2

4. ทำาซำาขอ 2-3 จนกวาจะครบทก Vertex และStack วาง

Breath-first Traversalเปนการทองเขาไปในกราฟโดยเขาเยยมโหนดตว

แรก และดำาเนนการ หากมโหนดใกลเคยงจะดำาเนนการกบโหนดทอยดานซายกอน

1. Enqueue vertex

2. Dequeue vertex และประมวลผล3. Enqueue adjacent ทงหมดของ Vertex ใน

ขอ 2

4. ทำาซำาขอ 2-3 จนกวาจะครบทก Vertex และQueue วาง

Network หมายถง Graph ททก Edge ม Weight กำากบ โดย

ความหมายของ Weight นนขนอยกบการใชงาน

Adjacency Matrix

Adjacency List

Network Application Minimum Spanning Tree เปนรปแบบของการ

คนหาโดยกำาหนดเรยกใชโหนดทกโหนดและทกเสน การเชอมตอ มาลำาดบความสำาคญของนำาหนกโดยเรม

จากคานอยทสดในขายงาน ทำาการเชอมตอคโหนด นน และดำาเนนการตอไปในคานำาหนกทตอกน แตถา

โหนดใดมการเชอมตอคโหนดแลวจะไมเชอมตออก Shortest Path เปนอลกอรทมทใชในการหาระยะ

ทางทสนทสดเชนเดยวกบ MST แตจะเปลยนจากการหาเสนทางจากโหนดแรกไปยงโหนดปลายทาง

ของขายงาน เปนโหนดทกำาหนดเปนโหนดตนทางไป ยงโหนดตาง ๆ โดยหาระยะทางสนทสดแตละเสนทาง

Minimum Spanning Tree Spanning Tree หมายถง Tree ทประกอบดวย

ทก Vertex ใน Graph ซงอาจมไดมากกวา 1 แบบ

Minimum Spanning Tree Spanning Tree

แบบท แบบท 11 แบบท แบบท 22

Minimum Spanning Tree Minimum Spanning Tree (MST) หมายถง

Spanning Tree ทมผลรวมของ Weight ทงหมดนอยทสด

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

2. เลอก Edge จาก Vertex ใน Tree ไปยง Vertex ทไมอย

ใน Tree และม Weight ตำาสด

3. ทำาซำาขอ 2 จนกวาจะครบทก Vertex

ตวอยาง

จงหา Minimum Spanning Tree

Total weight = 13Total weight = 13

Shortest Path Shortest Path หมายถง Path ทส นท สดระหวาง 2

Vertex

หาเสนทางการสงขอม ลจากตนทางไปปลายทาง โดย

ใหมระยะทางส นท สด1. ใส Vertex เรมตนใน Tree2. เลอก Edge จาก Vertex ใน Tree ไปยง

Vertex ทไมอยใน Tree และมผลรวมของ Weight ตำาสด

3. ทำาซำาขอ 2 จนกวาจะครบทก Vertex

Shortest Path จงหา Shortest Path จากโหนด A ไปยงโหนดอน