รายวิชา ง40 206 ...

35
รรรรรรร ร40206 รรรรรรรรร รรรรรรรรรรรรรรรรรรรร รรรรรรรรรรรรรรรรรรรรรรรร

Upload: sef

Post on 11-Jan-2016

57 views

Category:

Documents


0 download

DESCRIPTION

รายวิชา ง40 206 โครงสร้างข้อมูลและขั้นตอนวิธี. โรงเรียนมหิดลวิทยานุสรณ์. Graph. กราฟเป็นโครงสร้างข้อมูลชนิดหนึ่งประกอบด้วย 2 ส่วน คือ เซตของสมาชิกที่เรียกว่าบัพ (node) เซตของเส้นเชื่อม (edge) นำมาใช้แก้ปัญหาในการทำงานหลายด้าน เช่น - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

รายวิ�ชา ง40206 โครงสร�างข้�อมู�ลและข้��นตอนวิ�ธี�

โรงเร�ยนมูหิ�ดลวิ�ทยาน�สรณ์

Page 2: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Graph

Page 3: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

• กราฟเป็�นโครงสร างข้ อมู�ลชน�ดหน��งป็ระกอบด วย 2 ส�วน ค�อ– เซตข้องสมูาช�กท�#เร�ยกวิ$าบั�พ (node)– เซตข้องเส�นเช'#อมู (edge)

• น ามูาใช แก ป็#ญหาในการทำ างานหลายด าน เช�น– จำ)าลองเคร'อข้$ายคอมูพ�วิเตอร เพ'#อหิาค$าใช�จำ$ายท�#น�อย

ท�#ส�ดในการเด�นสายส�ญญาณ์– จำ)าลองเส�นทางการเด�นทางเพ'#อหิาระยะทางท�#ส��นท�#ส�ด– การวิางสายโทรศั�พท

Page 4: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ต-กอ�นเตอร ฯ วิ�ทยาล�ยด�ร�ยางค ฯ

คณ์ะวิ�ทยาศัาสตร

ส�ตวิ ทดลอง

ต-กอธี�การฯ

400 m

350 m 300 m800 m

800 m

400 m

700 m

ถ้�าต�องการต�ดต��งสายส�ญญาณ์ Fiber optic เพ'#อเช'#อมูเคร'อข้$ายคอมูพ�วิเตอร ท��ง 5 อาคารเข้�าด�วิยก�น จำะต�องเช'#อมูต$ออย$างไรจำ-งจำะใช�งบัประมูาณ์น�อยท�#ส�ด และใช�งบัประมูาณ์เท$าไร (ก)าหินดใหิ�สาย Fiber optic ราคาเมูตรละ 100 บั.)

Page 5: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

A B

C

E

D

ต-กอ�นเตอร ฯ วิ�ทยาล�ยด�ร�ยางค ฯ

คณ์ะวิ�ทยาศัาสตร

ส�ตวิ ทดลอง

ต-กอธี�การฯ

400 m

350 m 300 m800 m

800 m

400 m

700 m

400

800350 300

400

800700

Page 6: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

กร�งเทพฯ

ชลบั�ร�เพชรบั�ร�

ปท�มูธีาน�

อย�ธียา เช�ยงใหิมู$

ล)าปาง

กร�งเทพฯ

ส�ราษฎร ธีาน�ภู�เก5ต

ไมู$ระบั�ท�ศัทาง ระบั�ท�ศัทาง

Page 7: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

A

B

C

D

F

E G

กราฟไมู$ระบั�ท�ศัทาง

ก)าหินดใหิ� กราฟ G เป7นกราฟไมู$ระบั�ท�ศัทางประกอบัด�วิย เซตข้อง node {A, B, C, D, E, F, G} และ เซตข้อง edge { (A,B), (A,D), (A,C), (C,D), (C,F), (E,G), (A,A) }

กราฟ G

Page 8: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

A

B

C

D

F

E G

กราฟระบั�ท�ศัทาง

ก)าหินดใหิ� กราฟ H เป7นกราฟระบั�ท�ศัทางประกอบัด�วิย เซตข้อง node {A, B, C, D, E, F, G} และ เซตข้อง edge {(A,A), (A,B), (A,C), (A,D), (C,D), (F,C), (E,G)}

กราฟ H

Page 9: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

ระด�บัข้��นข้องกราฟ (Degree)

a

b c d

f e g

กราฟ G

ในกราฟ G : deg(a) = 2, deg(b) = deg(c) = deg(f) = 4,

deg(d) = 1, deg(e) = 3 และ deg(g) = 0

กราฟไมู$ระบั�ท�ศัทาง

Page 10: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

a

b c d

f e g

กราฟ X

ในกราฟ X : deg(a) = 2, deg(b) = deg(c) = 4,

deg(d) = deg(f) = deg(e) = 3 และ deg(g) = 1

ระด�บัข้��นข้องกราฟ (Degree)

กราฟไมู$ระบั�ท�ศัทาง

Page 11: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

a

b c d

f e g

กราฟ Y

ในกราฟ Y : deg(a) = 4 deg(d) = 2

deg(g) = 1 deg(b) = 4deg(e) = 3 deg(c) = 2 deg(f) = 4

จำงหิา degree ข้อง node แต$ละ node ในกราฟ Y

ระด�บัข้��นข้องกราฟ (Degree)

กราฟไมู$ระบั�ท�ศัทาง

Page 12: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

deg-(a) = 2 deg-(b) = 2

กราฟ G

a b c

e d f

ระด�บัข้��นข้องกราฟ (Degree)

กราฟระบั�ท�ศัทางระด�บัข้��นในdeg-(v) ค'อจำ)านวินข้องเส�นเช'#อมูท�#ช��เข้�าหิา node v

ระด�บัข้��นนอกdeg+(v) ค'อจำ)านวินข้องเส�นเช'#อมูท�#ออกจำาก node v

ในกราฟ G : deg-(c) = 3 deg-(d) = 2

deg-(e) = 2 deg-(f) = 0deg+(a) = 3

deg+(b) = 1deg+(c) = 2 deg+(d) = 2

deg+(e) = 3 deg+(f) = 0deg(a) = 5

deg(b) = 3deg(c) = 5 deg(d) = 4

deg(e) = 5 deg(f) = 0

ด�งน��น :

Page 13: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

deg-(a) = 3 deg-(b) = 3

กราฟ G

a b c

e d f

ระด�บัข้��นข้องกราฟ (Degree)

กราฟระบั�ท�ศัทางdeg-(v) ค'อจำ)านวินข้องเส�นเช'#อมูท�#

ช��เข้�าหิา node vdeg+(v) ค'อจำ)านวินข้องเส�นเช'#อมูท�#ออก

จำาก node v

ในกราฟ G : deg-(c) = 1 deg-(d) = 1

deg-(e) = 0 deg-(f) = 2deg+(a) = 2

deg+(b) = 1deg+(c) = 1 deg+(d) = 1

deg+(e) = 3 deg+(f) = 2deg(a) = 5

deg(b) = 4deg(c) = 2 deg(d) = 2

deg(e) = 3 deg(f) = 4

ด�งน��น :

จำงหิาระด�บัข้��น (degree) ข้อง node แต$ละ node ในกราฟ G

(หิาระด�บัข้��นในและนอกด�วิย)

Page 14: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

1 2 3 4 5 6123 4 5 6

1

2 3

4 5

6

กราฟ H

เมูทร�กซ ประช�ด A =

0 1 0 0 0 01 1 1 0 0 0 0 1 0 1 1 10 0 1 0 0 00 0 1 0 0 00 0 1 0 0 0

การแทนกราฟด�วิย Adjacency Matrix

Page 15: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

X Y Z WXYZW

กราฟG

เมูทร�กซ ประช�ด A =

0 0 0 11 0 1 11 0 0 10 0 1 0

X Y

W Z

ก าหนดให v1=X, v2=Y, v3=Z, v4=W

Page 16: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

X Y Z WXYZW

กราฟG

เมูทร�กซ ประช�ด A =

0 0 0 11 0 1 11 0 0 10 0 1 0

X Y

W Z

ก าหนดให v1=X, v2=Y, v3=Z, v4=W

0 0 1 01 0 1 20 0 1 11 0 0 1

A2 =

1 0 0 11 0 2 21 0 1 10 0 1 1

A3 =

0 0 1 12 0 2 31 0 1 21 0 1 1

A4 =

Page 17: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

X Y Z WXYZW

กราฟG

เมูทร�กซ ประช�ด A =

0 0 0 11 0 1 11 0 0 10 0 1 0

X Y

W Z

ก าหนดให v1=X, v2=Y, v3=Z, v4=W

0 0 1 01 0 1 20 0 1 11 0 0 1

A2 =

Y-Z-W

Y-X-W

วิ�ถ้�ควิามูยาวิ 2 จำาก Y ถ้-ง W มู� 2 วิ�ถ้� ด�งน��

1 0 0 11 0 2 21 0 1 10 0 1 1

A3 =

0 0 1 12 0 2 31 0 1 21 0 1 1

A4 =

Page 18: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

กราฟG

X Y

W Z X Y Z WXYZW

เมูทร�กซ ประช�ด A =

0 0 0 11 0 1 11 0 0 10 0 1 0

ก าหนดให v1=X, v2=Y, v3=Z, v4=W

Z-X-W-Z

วิ�ถ้�ควิามูยาวิ 3 จำาก Z ถ้-ง Z มู� 1 วิ�ถ้� ด�งน��

0 0 1 01 0 1 20 0 1 11 0 0 1

A2 =

1 0 0 11 0 2 21 0 1 10 0 1 1

A3 =

0 0 1 12 0 2 31 0 1 21 0 1 1

A4 =

Page 19: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การแทนกราฟด�วิย Adjacency List

Page 20: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การแทนกราฟด�วิย Adjacency List

Page 21: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การท$องเข้�าไปในกราฟTraverse Graph

Depth-First Traversal

B C

E

D

F

A

G H I

Depth-first traversal : A – B – E – F – C – D – G – H - I

เป7นการท$องเข้�าไปในกราฟ โดยจำะโปรเซสในท�กๆโหินดในแนวิด�#งตามูการส'บัทองข้องโหินดน��นก$อน แล�วิจำ-งค$อยเคล'#อนไปย�งโหินดประช�ดท�#อย�$ข้�างเค�ยงต$อไป

Page 22: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การท$องเข้�าไปในกราฟTraverse Graph

Depth-First Traversal

X H

G

Y

P

A

E

M J

A X

H

G

P

E

G

E

G

Y

M

G

M

G

J

G G

1 2 3 4 5 6 7 8 9

Depth-first traversal : A – X – H – P – E – Y – M – J - G

1

2 3

4

5

6

7

89

Stack contents

Page 23: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การท$องเข้�าไปในกราฟTraverse Graph

Depth-First Traversal

1. Push โหินดแรกลงใน stack2 . เมู'#ออย�$ในล�ป จำะด)าเน�นการ Pop stack เพ'#อโปสเซส

โหินดน��น จำากน��น push โหินดประช�ดท�กต�วิลงใน stack 3. ท)าตามูข้�อ 2 จำนกระท�#ง stack วิ$าง

Page 24: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การท$องเข้�าไปในกราฟTraverse Graph

Breadth-First Traversal

B C

E

D

F

A

G H I

Breadth-first traversal : A – B – C – D – E – F – G – H - I

เป7นการท$องเข้�าไปในกราฟแบับัแนวิกวิ�าง โดยจำะท)าการโปรเซสโหินดประช�ดท�กต�วิก$อนท�#จำะลงส�$ระด�บัถ้�ดไป

Page 25: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การท$องเข้�าไปในกราฟTraverse Graph

Breadth-First Traversal

X H

G

Y

P

A

E

M J

A X

H

G

P

H

E

P E

Y

M

J

Y J

1 2 3 4 5 6 7 8 9

Breadth-first traversal : A – X – G – H – P – E – M – Y - J

1

2

3

4

5

6

7

8

9

Queue contents

Page 26: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

การท$องเข้�าไปในกราฟTraverse Graph

1. Enqueue โหินดแรก ลงในค�วิ2 . เมู'#ออย�$ในล�ป จำะท)าการ Dequeue ค�วิน��นออกไปและท)า

การโปสเซสส$วินหิน�าข้องค�วิ หิล�งจำากท�#ได�โปรเซสโหินดน��นแล�วิ ก5จำะด)าเน�นการน)าโหินดประช�ดต�วิถ้�ดไปมูาไวิ�ในค�วิ

3 .ท)าซ)�าจำนกระท�#งค�วิวิ$าง

Breadth-First Traversal

Page 27: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Shortest Path Algorithms

v2

v3 v5v4

v6

v1

v7

•The shortest weighted path from v1 to v6 has a cost of 6 and goes from v1 to v4 to v7 to v6.

•The shortest unweighted path between these vertices is 2.

2

1 310

2

46

1

85

2

4

Page 28: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Unweighted Shortest Path:

Dijkstra’s Algorithm

v2

v3 v5v4

v6

v1

v7

We are only interested in the number of edges contained on the path, so there are no weight on the edges.

The strategy for searching a graph is known as breadth-first search.

The vertices closest to the start are evaluated first, and the most distant vertices are evaluated last.

Page 29: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Unweighted Shortest Path:

v2

v3 v5v4

v6

v1

v7

v known dv pv

V1 0 0

V2 0 0

V3 0 0 0

V4 0 0

V5 0 0

V6 0 0

v7 0 0

Initial configuration

Assume that the starting vertex is v3

Page 30: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Unweighted Shortest Path:

v2

v3 v5v4

v6

v1

v7

v Initial state

known dv pv

V1 0 0

V2 0 0

V3 0 0 0

V4 0 0

V5 0 0

V6 0 0

V7 0 0

Q: V3

V3 dequeued

known dv pv

0 1 V3

0 0

1 0 0

0 0

0 0

0 1 V3

0 0

V1, V6

V1 dequeued

known dv pv

1 1 V3

0 2 V1

1 0 0

0 2 V1

0 0

0 1 V3

0 0

V6, V2, V4

V6 dequeued

known dv pv

1 1 V3

0 2 V1

1 0 0

0 2 V1

0 0

1 1 V3

0 0

V2, V4

Page 31: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Unweighted Shortest Path:

v2

v3 v5v4

v6

v1

v7

v V2 dequeued

known dv pv

V1 1 1 V3

V2 1 2 V1

V3 1 0 0

V4 0 2 V1

V5 0 3 V2

V6 1 1 V3

V7 0 0

Q: V4, V5

V4 dequeued

known dv pv

1 1 V3

1 2 V1

1 0 0

1 2 V1

0 3 V2

1 1 V3

0 3 V4

V5, V7

V5 dequeued

known dv pv

1 1 V3

1 2 V1

1 0 0

1 2 V1

1 3 V2

1 1 V3

0 3 V4

V7

V7 dequeued

known dv pv

1 1 V3

1 2 V1

1 0 0

1 2 V1

1 3 V2

1 1 V3

1 3 V4

empty

Page 32: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Unweighted Shortest Path:

v2

v3 v5v4

v6

v1

v7

v2

v3 v5v4

v6

v1

v7

Page 33: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Weighted Shortest Path:

Dijkstra’s Algorithm

v2

v3 v5v4

v6

v1

v7

2

1 310

2

46

1

85

2

4This thirty-year-old solution is an example of a greedy algorithm. Greedy algorithms generally solve a problem in stages by doing what appears to be the best thing at each stage.

Page 34: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Weighted Shortest Path:

Dijkstra’s Algorithm

v2

v3 v5v4

v6

v1

v7

2

1 3 10

2

4 61

85

2

4

v known dv pv

V1 0 0 0

V2 0 0

V3 0 0

V4 0 0

V5 0 0

V6 0 0

v7 0 0

Initial configuration

v known dv pv

V1 1 0 0

V2 0 2 V1

V3 0 0

V4 0 1 V1

V5 0 0

V6 0 0

v7 0 0

After v1 is declared known

v known dv pv

V1 1 0 0

V2 0 2 V1

V3 0 3 V4

V4 1 1 V1

V5 0 3 V4

V6 0 9 V4

v7 0 5 V4

After v4 is declared known

Page 35: รายวิชา ง40 206  โครงสร้างข้อมูลและขั้นตอนวิธี

Weighted Shortest Path:

Dijkstra’s Algorithm

v2

v3 v5v4

v6

v1

v7

2

1 3 10

2

4 61

85

2

4

v known dv pv

V1 1 0 0

V2 1 2 V1

V3 0 3 V4

V4 1 1 V1

V5 0 3 V4

V6 0 9 V4

v7 0 5 V4

v known dv pv

V1 1 0 0

V2 1 2 V1

V3 1 3 V4

V4 1 1 V1

V5 1 3 V4

V6 0 8 V3

v7 0 5 V4

After v5&v3 are declared known

v known dv pv

V1 1 0 0

V2 1 2 V1

V3 1 3 V4

V4 1 1 V1

V5 1 3 V4

V6 0 6 V7

v7 1 5 V4

After v7 is declared knownAfter v2 is declared known