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

Post on 11-Jan-2016

59 views 0 download

description

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

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

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

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

Graph

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

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

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

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

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

ส�ตวิ ทดลอง

ต-กอธี�การฯ

400 m

350 m 300 m800 m

800 m

400 m

700 m

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

A B

C

E

D

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

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

ส�ตวิ ทดลอง

ต-กอธี�การฯ

400 m

350 m 300 m800 m

800 m

400 m

700 m

400

800350 300

400

800700

กร�งเทพฯ

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

ปท�มูธีาน�

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

ล)าปาง

กร�งเทพฯ

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

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

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

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

ระด�บัข้��นข้องกราฟ (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

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

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)

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

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)

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

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

ด�งน��น :

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

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

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

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

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 =

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 =

กราฟ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 =

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

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

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

การท$องเข้�าไปในกราฟ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

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

Depth-First Traversal

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

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

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

การท$องเข้�าไปในกราฟ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

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

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

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

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

Breadth-First Traversal

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

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.

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

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

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

Unweighted Shortest Path:

v2

v3 v5v4

v6

v1

v7

v2

v3 v5v4

v6

v1

v7

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.

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

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