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

Post on 04-Feb-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2

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

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

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

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

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

• เชน a flight

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

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

• เชน a flight route

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

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

• เชน route network

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

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

• เชน flight network

ORD PVD

ORD PVD

FlightAA126

849miles

4

EXAMPLE

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

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

5

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

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

LOO

P

6

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

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

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

VG = { a, b, c, d }

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

Applications

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

7

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

• Local area network• Internet• Web

8

• 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

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

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

◎ ตวอยาง

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

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

10

• 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

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

ตอไปน

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

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

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

13

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

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

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

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

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

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

สองดาน)

14

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

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

15

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

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

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

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

16

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

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

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

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

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

18

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

19

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

20

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

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

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

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 ดวย

22

การแทนดวยLinked List

23

การแทนดวย Node Directory

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

24

การแทนดวย Node Directory

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

25

การแทนดวย Multi List

เมอ

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

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

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

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

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

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

26

การแทนดวย Multi List

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

27

กราฟทม Weighted Edges

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

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

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

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

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

28

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

29

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

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

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

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

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

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

30

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

31

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

32

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

33

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

34

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

35

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

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

Search : DFS)

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

Search :BFS)

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

(Priority First Search :PFS)

36

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

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

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

37

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

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

38

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

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

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

39

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

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

40

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

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

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

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

41

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

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

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

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

42

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

Q & A

43

top related