40
คณิตศาสตรเต็มหนวย 1 อาจารยรตี โบจรัส บทที7 ตนไม (Trees) เนื้อหาที่เกี่ยวของ : บทที4 ความสัมพันธและกราฟมีทิศทาง ในหัวขอนีเราจะศึกษาความสัมพันธชนิดพิเศษที่มีประโยชนสําหรับวิทยาการคอมพิวเตอร ความสัมพันธนี้จะแสดงในรูปกราฟมีทิศทาง ซึ่งจําเปนในการสรางฐานขอมูลและตัวแปลภาษา เรามักเรียก ความสัมพันธนี้วาตนไม (ทรี) หรือ (rooted trees) เนื่องจากลักษณะของกราฟคลายตนไม 7.1 ทรี - ทรี (ตนไม ) คือ ความสัมพันธบนเซตจํากัด A ที่จุดยอด 0 v A มีเสนทางจาก 0 v ไปยังจุดยอดอื่นใน A เพียงเสนทางเดียว แตไมมีเสนทางจากจุด 0 v ไปยัง 0 v - รากของตนไมคือ จุดยอด 0 v จากนิยามขางตน - rooted tree 0 ( , ) T v คือ ตนไม T ที่มีราก 0 v ทฤษฎีบท1 ให 0 ( , ) T v คือ rooted tree ดังนั้น (i) ไมมี cycle ใน T (ii) 0 v เปนเพียงรากเดียวของ T (iii) แตละจุดยอดใน T (ยกเวนจุดยอด 0 v ) จะมี in – degree เปน 1 แตจุดยอด 0 v จะไมมี in – degree ดูการพิสูจน ในเอกสารอางอิงหนา 255 ตัวอยาง 1 ตัวอยาง 2 - จุดยอด 4 5 6 7 8 9 , , , , , v v v v v v อยูใน Level 2 - เรียกจุดยอด 3 v วา parent ของ offspring 7 8 9 , , v v v - บางครั้งเรียก offspring ของจุดยอดใดๆ วา siblings - height of a tree คือ Level ที่มากที่สุดของตนไม (ในตัวอยางนีheight = 2) - Leaves of a tree คือ จุดยอดที่ไมมี offspring - (ในตัวอยางนีleaves คือ 4 v , 5 v , 6 v , 7 v , 8 v , 9 v ) 0 v 1 v 2 v 3 v Level 0 Level 1 - จุดยอด 0 v เปนราก เพราะไมมี in – degree - จุดยอด 1 2 3 , , v v v อยูใน Level 1 เพราะมีเสนเชื่อมจาก ราก 0 v - จุดยอด 0 v อยูใน Level 0 - บางครั้งเรียกจุดยอด 0 v วา parent ของจุดยอดใน Level 1 และเรียกจุดยอดใน Level 1 วา offspring ของ 0 v Level 0 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 9 v 0 v Level 1 Level 2

บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 1

อาจารยรตี โบจรัส

บทท่ี7 ตนไม (Trees) เนื้อหาที่เกี่ยวของ : บทที่ 4 ความสัมพันธและกราฟมีทศิทาง ในหวัขอนี้ เราจะศึกษาความสัมพันธชนิดพิเศษที่มีประโยชนสําหรับวทิยาการคอมพวิเตอร ความสัมพันธนี้จะแสดงในรูปกราฟมีทิศทาง ซ่ึงจําเปนในการสรางฐานขอมูลและตวัแปลภาษา เรามักเรียกความสัมพันธนี้วาตนไม (ทรี) หรือ (rooted trees) เนื่องจากลักษณะของกราฟคลายตนไม 7.1 ทรี - ทรี (ตนไม) คือ ความสัมพันธบนเซตจํากดั A ที่จุดยอด ∈0v A มีเสนทางจาก 0v ไปยังจุดยอดอืน่ใน A เพียงเสนทางเดียว แตไมมเีสนทางจากจุด 0v ไปยัง 0v - รากของตนไมคือ จุดยอด 0v จากนยิามขางตน - rooted tree 0( , )T v คือ ตนไม T ที่มีราก 0v

ทฤษฎีบท1 ให 0( , )T v คือ rooted tree ดังนั้น

(i) ไมมี cycle ใน T (ii) 0v เปนเพยีงรากเดียวของ T

(iii) แตละจดุยอดใน T (ยกเวนจดุยอด 0v ) จะมี in – degree เปน 1 แตจุดยอด 0v จะไมมี in – degree ดูการพิสูจน ในเอกสารอางอิงหนา 255 ตัวอยาง 1 ตัวอยาง 2 - จุดยอด 4 5 6 7 8 9, , , , ,v v v v v v อยูใน Level 2

- เรียกจดุยอด 3v วา parent ของ offspring

7 8 9, ,v v v

- บางครั้งเรียก offspring ของจุดยอดใดๆ วา siblings - height of a tree คือ Level ที่มากที่สุดของตนไม

(ในตวัอยางนี้ height = 2) - Leaves of a tree คือ จุดยอดที่ไมมี offspring - (ในตวัอยางนี้ leaves คือ 4v , 5v , 6v , 7v , 8v ,

9v )

0v

1v 2v 3v

Level 0

Level 1

- จุดยอด 0v เปนราก เพราะไมมี in – degree - จุดยอด 1 2 3, ,v v v อยูใน Level 1 เพราะมีเสนเชื่อมจาก

ราก 0v - จุดยอด 0v อยูใน Level 0 - บางครั้งเรียกจุดยอด 0v วา parent ของจุดยอดใน Level 1 และเรียกจุดยอดใน Level 1 วา offspring ของ 0v

Level 0

1v 2v 3v

4v 5v 6v 7v 8v 9v

0v

Level 1

Level 2

Page 2: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 2

อาจารยรตี โบจรัส

- ในทีน่ี้เราสมมติใหจดุยอดมีจํานวนจํากดั ดังนั้นตนไมตองมี height of a tree เสมอ - สมมติให offspring ของแตละจดุยอด มีอันดับเชิงเสน (linearly ordered) ถาจุดยอด v มี 4 offspring เราสมมติไดวาจดุยอดนี้มีอันดับ ซ่ึงเราอาจเรียกอันดับทีห่นึ่ง, อันดับที่สอง, อันดับที่สามหรืออันดับที่ส่ีได - เมื่อวาดกราฟมีทิศทางของตนไม เราสมมติไดทันทวีามีอันดับของ offspring ของแตละจุดยอดซึ่งเรียงจากซายไปขวา เราเรียกตนไมนีว้า ตนไมแบบอันดับ (an ordered tree) ทฤษฎีบท2 ให 0( , )T v เปน rooted tree บนเซต A ดังนั้น

(i) T มีคุณสมบัติไมสะทอน (irreflexive) (ii) T มีคุณสมบัติอสมมาตร (asymmetric) (iii) ถา ∈( , )a b T และ ∈( , )b c T แลว ∉( , )a c T สําหรับสมาชิก , ,a b c ทุกตวัใน A

ตัวอยาง 3 ให = 1 2 3 4 5 6 7 8 9 10{ , , , , , , , , , }A v v v v v v v v v v

และ = 2 3 2 1 4 5 4 6 5 8 6 7 4 2 7 9 7 10{( , ),( , ),( , ),( , ),( , ),( , ),( , ),( , ),( , )}T v v v v v v v v v v v v v v v v v v

จงแสดงวา T เปน rooted tree พรอมทั้งหา root วิธีทํา เนื่องจากไมมีเสนเชื่อมที่เร่ิมตนจากจุดยอด 1 3 8 9, , ,v v v v และ 10v จุดยอดเหลานี้จึงไมเปน root ของ

ตนไมและไมมีเสนเชื่อมจากจุดยอด 6 7 2 5, , ,v v v v ไปยงัจุดยอด 4v ดังนั้นจุดยอดเหลานี้จึงไมสามารถเปน root

ได ถา T เปน rooted tree แลวจะตองมี root ท่ีจุดยอด 4v จึงไดมีเสนเชื่อมจาก 4v ไปยังจดุยอดอ่ืนทุกจุด เชน ทางเดิน 4 6 7 9, , ,v v v v ทําใหมีเสนทางจาก 4v ไปยัง 9v เพราะวา 4 6( , )v v , 6 7( , )v v และ 7 9( , )v v อยูใน T

ท้ังหมด จึงไดวากราฟมีทิศทางของ T ซ่ึงมี 4v เปนจุดเร่ิมตน ดังรูป

4v

2v 5v 6v

1v 3v 8v 7v

9v 10v

root คือ 4v

Page 3: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 3

อาจารยรตี โบจรัส

- ถา n เปนจํานวนเต็มบวก เราจะกลาววา ตนไม T เปน n – tree ถาจุดยอดทุกจุดมี offspring อยางมากเทากับ

n - ถาจุดยอดทกุจุดของ T (ยกเวน leave) มี n offspring เทานั้น เราจะเรยีก T วาเปน a complete n – tree - โดยท่ัวไปเราเรียก 2 – tree วา a binary tree (ตนไมแบบทวิภาค) และเรียก a complete 2 – tree วา a complete binary tree. (ตนไมแบบทวิภาคบริบูรณ) - เนื่องจาก binary tree มีบทบาทในการคนหาขอมูล เราจึงพบวาตนไมใดๆ สามารถแสดงไดในรูป a binary tree เสมอ ทฤษฎีบท 3 ให 0( , )T v เปน rooted tree และ ∈v T แลว ( )T v เปน rooted tree ท่ีมี root คือ v เราจะเรียก

( )T v วา subtree (ตนไมยอย) ของ T ซ่ึงเร่ิมตนท่ีจดุยอด v (ดูบทพิสูจนในเอกสารอางอิง หนา 257) ตัวอยาง 4 พิจารณา tree T ในตัวอยาง 3 ซ่ึงมี 4v เปน root จะได subtree 2 5( ), ( )T v T v และ 6( )T v ของ T ดงัรูป

4v

2v 5v 6v

1v 3v 8v 7v

9v 10v

2v

1v 3v

5v

8v 7v

9v 10v

6v

2( )T v 5( )T v

6( )T v

Page 4: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 4

อาจารยรตี โบจรัส

Exercises 7.1 In Exercises 1 through 6, each relation R is defined on the set .A

In each case determine if R is a tree and, if it is, find the root.

1. { }( ) ( ) ( ) ( ){ }

, , , ,

, , , , , , ,

A a b c d e

R a d b c c a d e

=

=

2. { }( ) ( ) ( ) ( ) ( ){ }acbddcebbaR

edcbaA,,,,,,,,,

,,,,==

3. { }( ) ( ) ( ) ( ) ( ){ }dfcfafecbaR

fedcbaA,,,,,,,,,

,,,,,==

4. { }( ) ( ) ( ) ( ) ( ){ }3,6,5,6,2,5,4,3,1,2

6,5,4,3,2,1==

RA

5. { }( ) ( ) ( ) ( ) ( ) ( ){ }6,4,5,4,4,3,3,2,1,2,1,1

6,5,4,3,2,1==

RA

6. { }( ) ( ) ( ) ( ) ( ) ( ){ }yvzvvuxuwuutR

zyxwvutA,,,,,,,,,,,

,,,,,,==

In Exercises 7 through 10, consider the rooted tree ),( 0vT shown in Figure 7.4.

7. (a) List all level-3 vertices. (b) List all leaves. 8. (a) What are the siblings of 8v ? (b) What are the descendants of 8v ? 9. (a) Compute the tree )( 2vT . (b) Compute the tree )( 3vT . 10. (a) What is the height of ),( 0vT ? (b) What is the height of )( 3vT ? In Exercises 11 through 14, consider the rooted tree ),( 0vT shown in Figure 7.5.

11. (a) List all level-4 vertices. (b) List all leaves. 12. (a) What are the siblings of 2v ? (b) What are the descendants of 2v ?

Figure 7.4

Page 5: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 5

อาจารยรตี โบจรัส

13. (a) Compute the tree )( 4vT . (b) Compute the tree )( 2vT . 14. (a) What is the height of ),( 0vT ? (b) What is the height of )( 4vT ? 7.2 ทรีติดฉลาก (Labeled Trees) บางครั้งเราพบวาการติดฉลากใหจุดยอดหรือเสนเชื่อมของกราฟมีทิศทาง จะชวยแสดงวากราฟมีทิศทางนั้นถูกนําไปใชเฉพาะดาน ซ่ึงจําเปนมากถาเรานําทรีไปใชกับวทิยาการคอมพวิเตอร ในทีน่ี้เราจะยกตวัอยางกลุมของจุดยอดของทรีติดฉลาก ดังนั้นเราจึงแสดงจุดยอดดวยจุดและแสดงฉลากของแตละจุดยอดถัดจากจดุนั้น พิจารณาการแสดงนิพจนพีชคณิต

( )( ) ( ) ( )( )− × + − − +3 2 2 3x x x เราสมมติวาไมมีตัวดําเนินการใด (เชน + − × ÷, , , ) กระทําการไดจนกวาจะหาคานิพจนท้ังสองดาน

ใหไดกอน แลวจึงนํามากระทําการดวยตัวดําเนินการหลัก ในตวัอยางนี้เราตองการหาคา − ×(3 (2 ))x และ − − +(( 2) (3 ))x x กอนแลวจึงนาํมารวม +( ) กัน ซ่ึงจะตองหาคา −( 2)x กับ +(3 )x แลวนํามาลบกัน

กอน เชนกันอยางนี้เร่ือยไป (ลบ ( - ) เปนตวัดําเนินการหลักของ ( − 2x ) กับ ( +3 x )) เราจึงตองพิจารณาตวัดําเนินการหลัก (a central operator) ใหไดกอนสําหรับนพิจน − ×(3 (2 ))x มีตัวดําเนินการหลัก คือ การลบ ทําใหเปล่ียนตวัดําเนินการนพิจนขางตนใหอยูในรูปทรีไดเปน

root คือ ตัวดําเนินการหลักของนิพจนหลัก (ในตวัอยางนีคื้อ +) offspring ของ root คือตัวดําเนินการหลักของนิพจน ซายและขวา (ในตวัอยางนี้คือ - , -)

Figure 7.5

+

× 3

+

2 x x x 2 3

Page 6: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 6

อาจารยรตี โบจรัส

ตัวอยาง ทรีท่ีสอดคลองกับนิพจนพีชคณติ ((3 (1 )) ((4 (7 ( 2))) (7 ( )))x y x y× − ÷ + − + × + ÷

ตัวอยางทรีติดฉลากตอไปนีมี้ความสําคัญในการพัฒนาโครงสรางขอมูลทางคอมพิวเตอร เร่ิมจากกาํหนด n – tree 0( , )T v โดยสมมติใหแตละจดุยอดของ T มี offspring มากสุดคือ n ท่ีเรียงจาก 1 ถึง n (แต offspring

บางตัวในลําดบัอาจไมครบจาํนวน n ได) ดังนั้น offspring ของจุดยอดใดๆ จะมีสัญลักษณของจํานวนที่แตกตางกัน จากเซต {1,2, , }n…

บางครั้งเราเรียกกราฟมีทิศทางทีติดฉลาก วา positional และ positional tree คือ ทรีมีลําดับ (ordered trees) ดวย เมื่อเราวาดกราฟมีทิศทางของ positional tree จะสมมติใหตําแหนง offspring ของแตละจุดยอดเรียงลําดับแบบสมมาตร ลงไปยังดานลางจดุยอด และวางตําแหนงทีเ่หมาะสมของแตละ offspring รูปที่ (i) แสดงกราฟมีทิศทางของ positional 3 – tree ถามี offspring 1 ของจุดยอด v ใดๆ, เสนเชื่อมจาก v ไปยัง offspring นั้นจะอยูดานลางทางซายถามี offspring 2 ของจดุยอด v ใดๆ จะอยูในแนวตั้งจานลางจาก v เชนเดียวกับ offspring 3 จะอยูดานลางทางขวามือ โดยท่ัวไปจะไมมีการแสดง root เพราะ root ไมใช offspring

รูปท่ี (i)

y 2

÷

×

+

×

− 3

+

1 x 7 4 −

7 x y +

÷

2

2 1

1 2 3

1

3

3

3

3

1 2 3

Page 7: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 7

อาจารยรตี โบจรัส

Positional binary tree เปนการเขียนสัญลักษณ left และ right แทนตวัเลข 1 และ 2 ดังรูป (ii) แสดงกราฟมีทิศทางของ positional binary tree ท่ีแสดง offspring ดวย L หรือ R ซ่ึงทรีติดฉลากอาจมีสัญลักษณอ่ืนได

• (เพิ่มเติม) Computer representation of binary positional trees ในหวัขอ 4.6 ไดแสดงการเก็บขอมูลในรูปของ cell ท่ีบรรจุขอมูลกับ pointer ซ่ึงเราเรียกกลุมของ cell ท่ีเช่ือมกันดวย pointer วา linked list ในหวัขอนี้จะขยายความจากหัวขอ 4.6 โดยแตละ cell จะมีการเก็บขอมูล 1 ตําแหนง และ pointer 2 ตําแหนง ดังรูป ตําแหนงตรงกลางใชเก็บขอมูล สวนตําแหนงดานซายและขวาใชเก็บ pointer ทีเรียกวา lift pointer กับ right pointer นอกจากนี้เราจะใชสัญลักษณ สําหรับ pointer ทีไมมีการเชื่อมไปยังขอมูลอ่ืนอีก การเกบ็ขอมูลดวย cell แบบใหมนี้จะชวยใหการคนหาขอมูลสะดวกขึ้น เราจะสราง array จํานวน 3 array ทีมี array Left เก็บ pointer ของ left offspring, array Right เก็บ pointer ของ right offspring และ array Data เก็บขอมูลของแตละจดุยอด เราจะใชคา 0 เพื่อแสดงวาไมมี offspring ตัวอยาง 1

จาก positional binary tree รูปท่ี (iii) สามารถแสดงในรูปของ double linked list (รูปท่ี iv) และรูปท่ี v แสดงในรูปของ array

L

L

L

L

L L

L

L

R

R

R

R

R

R

R

R

รูปที่ (ii)

+

×

− + −

x x x

3

2 2 3

รูปที่ (iii)

Page 8: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 8

อาจารยรตี โบจรัส

รูปที่ (v)

Index Left Data Right

1 2 0

2 3 + 8

3 4 - 5

4 0 3 0

5 6 × 7

6 0 2 0

7 0 x 0

8 9 - 12

9 10 - 11

10 0 x 0

11 0 2 0

12 13 + 14

13 0 3 0

14 0 x 0

start

+ − + x

3

× x

2

3

− 2

x

รูปที่ (iv)

Page 9: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 9

อาจารยรตี โบจรัส

ตัวอยาง 2 พิจารณา tree เขียน tree ในรูป double linked list ดังนี้

÷

×

+

×

− 3

+

÷ −

+ 1

7

2

4 7 x

y

x y

Index Left Data Right

1 7 0

2 0 3 0

3 2 × 5

4 0 1 0

5 4 − 6

6 0 x 0

7 3 ÷ 15

8 0 4 0

9 8 + 11

10 0 7 0

11 10 − 13

12 0 y 0

13 12 + 14

14 0 2 0

15 9 × 17

16 0 7 0

17 16 + 19

18 0 x 0

19 18 ÷ 20

20 0 y 0

start

÷

7

+

×

3

× + ÷ y

x

− + 2

− x 4 7 y

1

Page 10: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 10

อาจารยรตี โบจรัส

Exercises 7.2 In Exercises 1 though 10, construct the tree of the algebraic expression.

1. (7 (6 2)) ( ( 4))x y+ − − − − 2. ( ( ( ))) ((3 (2 7)) 4)x y x y+ − + × ÷ × × 3. 3 ( (6 (4 (2 3))))x− + × ÷ − 4. (((2 7) ) ) (3 11)x y× + ÷ ÷ − 5. ((2 ) (2 )) ( 2)x x x+ − × − − 6. (11 (11 (11 11))) (11 (11 11))− × + + + × 7. (3 (2 (11 (9 4)))) (2 (3 (4 7)))− − − − ÷ + + + 8. ( ) (( 3) ( 4))x y x z÷ ÷ × − ÷ 9. ((2 ) (3 (4 ))) ( (3 11))x x x× + − × + − × 10. ((1 1) (1 2)) ((2 ) 1)x+ + − ÷ − +

11. The following is the doubly linked list representation of a binary positional labeled tree.

Construct the digraph of this tree with each vertex labeled as indicated.

Index Left Data Right

1 8 0

2 5 D 7

3 9 E 0

4 2 C 3

5 0 F 0

6 0 B 4

7 0 G 0

8 6 A 0

9 0 H 0

Page 11: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 11

อาจารยรตี โบจรัส

12. The following is the doubly linked list representation of a binary positional labeled tree. Construct the digraph of this tree with each vertex labeled as indicated

13. The following is the doubly linked list representation of a binary positional labeled tree.

Construct the digraph of this tree with each vertex labeled as indicated

Index Left Data Right

1 9 0

2 10 M 7

3 0 Q 0

4 8 T 0

5 3 V 4

6 0 X 2

7 0 K 0

8 0 D 0

9 6 G 5

10 0 C 0

Index Left Data Right

1 7 0

2 0 c 9

3 2 a 6

4 0 t 0

5 0 s 0

6 10 a 11

7 3 n 8

8 4 d 13

9 0 f 0

10 0 r 0

11 0 o 0

12 0 g 0

13 12 s 5

Page 12: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 12

อาจารยรตี โบจรัส

In Exercises 14 – 15 , give arrays LEFT, DATA and RIGHT describing the tree. (created in the indicated exercise.) 14. (7 (6 2)) ( ( 4))x y+ − − − − 15. ((2 ) (2 )) ( 2)x x x+ − × − − 7.3 การคนหาทรี ถาทรี T เปนทรีติดฉลาก จุดยอดแตละจดุจะมีฉลากแสดง กระบวนการทีเ่ขาถึงจุดยอดแตละจุดของทรีดวยลําดับเฉพาะเรียกวา การคนหาทรี (searching the tree or a tree search) บางครั้งเรียกวา walking หรือ traversing the tree ในที่นีเ้ราจะพิจารณา การคนหาทรีแบบทวิภาค (binary positional tree) ท่ีแตละจดุยอดจะมี offspring มากสุดไมเกินสอง คือ Lv (the left offspring) และ Rv (the right offspring) ให T เปนทรีแบบทวิภาคที่ระบุตําแหนงซ่ึงมี root v ถามี Lv แลวจะเรยีก subtree ( )LT v วา left subtree ของ T ทํานองเดียวกนั ถามี Rv แลวจะเรียก subtree ( )RT v วา right subtree ของ T สังเกตวา ( )LT v เปนทรีแบบทวภิาคระบุตําแหนงที่มี root Lv และทํานองเดยีวกับ ( )RT v มี root Rv การกําหนด root แบบนี้จะชวยใหเราคนหา algorithm ในรูปความสัมพันธเวยีนเกิดดีข้ึน วิธีการคนหาทรี แบบ preorder search พิจารณา algorithm สําหรับการหาทรีแบบทวิภาคระบตํุาแหนง T ท่ีมี root v algorithm preorder (root, left, right) ข้ันตอน 1 หาราก v ข้ันตอน 2 ถามี Lv ใหใช algorithm นี้กับ ( ( ), )L LT v v

ข้ันตอน 3 ถามี Rv ใหใช algorithm นี้กับ ( ( ), )R RT v v

ตัวอยาง 1 ให T เปนทรีแบบทวิภาคระบตํุาแหนง ท่ีมีกราฟมีทิศทาง ดังรูป root ของทรีคือจุด A ถาเขาถึง จุดยอด v จะแสดงอักษร v โดยใช algorithm preorder (ถาทรีมีจุดยอดเพียงจดุเดยีว จดุนี้คือ root ดังนั้นจะแสดงอกัษรของ root เทานั้น) รูปขางลางนี้แสดงกลองที่ลอมรอบ subtree และแสดง subtrees เหลานี้ในรูปตัวเลขมุมดานลางเพื่อใชอางถึง

A

B

C

D F

EI

H

K

LJG

รูป (1.1)

Page 13: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 13

อาจารยรตี โบจรัส

จาก algorithm prcorder - visit root ดังนั้น พิมพ A - คนหา subtree 1, และ subtree 1 - ใช algorithm Prcorder สําหรับ subtree 1 visit root ของ subtree 1 ดังนั้น พิมพ B - คนหา subtree 2 และ subtree 4 visit root ของ subtree 2 ดังนั้น พิมพ C - คนหา subtree 3 (มีจุดยอดเดียว) visit root ของ subtree 3 ดังนั้น พิมพ D จากการคนหา subtree 1 จะได การเรียงตวัอักษร ABCD เราตองคนหา subtree 2 และ 4 กอนจึงจะคนหา subtree 7 และเราตองคนหา subtree 3 ใหเสร็จกอน จึงจะถือวา การคนหา subtree 2 เรียบรอยแลว จากการคนหา subtree 4 จะไดลําดับการเรียงอักษร EFG ดังนั้นจึงไดการเรียงอักษร HIJKL จากการคนหา subtree 7 เมื่อคนหาทรี T สมบูรณ จะไดการเรียงอักษร ABCDEFGHIJKL ตัวอยาง 2 พิจารณานิพจน ( ) ( ( ))a b c d e− × + ÷ ท่ีมีกราฟดังรูป (1.3)

×

ab c

d e

+

÷

รูป 1.3

A

B

C

D

E

F G

H

I K

L J

1

2 3

4 5 6

7

8 9 10 11

รูป 1.2

Page 14: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 14

อาจารยรตี โบจรัส

เราจะใช procedure Preorder คนหาทรีนี้ โดยแสดง subtree ดังรูป 1.4 ทํานองเดียวกบัตัวอยาง1 จะไดการเรียงลําดับเปน a b c d e×− + ÷ ซ่ึงเปน Prefix หรือ polish form ของ

นิพจนพีชคณตินี้ ตัวเลขในกลองส่ีเหล่ียมมุมลางคือ ลําดับของ subtree ท่ีใช algorithm preorder คนหาจากตัวอยางนี้ ถาเราให 6, 4, 5, 2a b c d= = = = และ 2e = การหาคา 6 4 5 2 2×− + ÷ จะทาํตามขั้นตอน

ดังนี ้ 1) 64 5 2 2×− + ÷

2) 2 5 2 2× + ÷ จาก 6 4− มีคาเปน 6 4 2− =

3) 2 5 1× + แทน 2 2÷ ดวย 2 2 1÷ =

4) 2 6× แทน 5 1+ ดวย 5 1 6+ =

5) 12 แทน 2 6× ดวย 2 6 12× =

• Algorithm Inorder (left, root, right) ข้ันที่ 1 คนหา subtree ทางซาย ( ( ), )L LT v v ถาหาได

ข้ันที่ 2 หาราก v ข้ันที่ 3 คนหา subtree ทางขวา ( ( ), )R RT v v ถาหาได

• Algorithm Postorder (left, right, root) ข้ันที่ 1 คนหา subtree ทางซาย ( ( ), )L LT v v ถาหาได

ข้ันที่ 2 คนหา subtree ทางขวา ( ( ), )R RT v v ถาหาได

ข้ันที่ 3 หาราก v

×

− +

÷

a b c

d e

รูป 1.4

1 3 2

5

7 8 6 4

Page 15: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 15

อาจารยรตี โบจรัส

จาก preorder search จะไดลําดับการคนหาคือ root, left, right inorder search จะไดลําดับการคนหาคือ left, root, right postorder search จะไดลําดับการคนหาคือ left, right, root ตัวอยาง 3 จากตัวอยาง 1 ถาใช algorithm inorder คนหาทรี เร่ิมตน คนหา subtree 1 ซ่ึงตองคนหา subtree 2 และ subtree 3 กอน จาก subtree 3 ไดอักษร D กอน จาก subtree 2 ไดอักษร C แลวหยุดเนื่องจากไมมี subtree ทางขวาที C ตอไปคนหา root ของ subtree 1 ไดอักษร B แลวจึงคนหา subtree 4 ทําใหไดลําดับ F E G และได root คือ A จากนั้นคนหา subtree 7 ได

ลําดับการเรียง I J H K L เมื่อคนหาทรดีวย algorithm inorder จะไดลําดับ DC B F E G A I J H K L

ตัวอยาง 5 ตวัอยางนี้จะใชการคนหาแบบ inorder และ postorder กับนพิจนพีชคณิตใน ตัวอยาง2 ถาใช inorder ทําใหไดลําดับ a b c d e− × + ÷ ซ่ึงเปนลําดับเดียวกันกับตวัอยาง 2 ที่ไมมวีงเล็บ

เนื่องจากตวัดําเนินการอยูภายในตวัแปรจึงเรียกรูปแบบนีว้า infix notation นิพจนทีไ่มมีวงเล็บดังกลาว ทําให

A

B

C

D

E

F G

H

I K

L J

1

2 3

4 5 6

7

8 9 10 11

รูป 1.2

×

ab c

d e

+

÷

รูป 1.3

Page 16: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 16

อาจารยรตี โบจรัส

สับสนเพราะอาจหมายถึง ( (( ) ))a b c d e− × + ÷ ที่มีทรีแตกตางจากตัวอยาง2 ดงันั้น polish notation จาก

Preorder จึงถูกนํามาใชในคอมพิวเตอร แต infix notation จะเปนรูปแบบที่คนนิยมใช จาก algorithm postorder ทําใหไดลําดับ a b c d e− ÷+× เรียกรูปแบบนีว้า postfix หรือ reverse

Polish สังเกตวา ตัวดําเนนิการอยูหลังจากตัวแปร ถา 2, 1, 3, 4a b c d= = = = และ 2e = จะไดลําดบัการ

คํานวณ ดังนี ้ 1) 2 1 3 4 2− ÷ + ×

2) 1 3 4 2 ÷ + × แทน 2 1 − ดวย 2 1 1− =

3) 1 3 2+ × แทน 4 2÷ ดวย 4 2 2÷ =

4) 1 5 × แทน 3 2 + ดวย 3 2 5+ =

5) 5 แทน 1 5 × ดวย 1 5 5× =

reverse polish form ไมจําเปนตองพิจารณาวงเล็บวาอยูตําแหนงใด จึงนยิมใชรูปแบบนี้ เพื่อคํานวณคาในเครื่องคํานวณ

การคนหาทรทีั่วไป ในที่นี้จะแสดงการหาทรีแบบทวิภาค

ตัวอยาง 6 จากรูป (6.1) แสดงกราฟมีทิศทางของทรีติดฉลาก T เราสมมติใหเซตของ siblings เรียงลําดับจากซายมือไปขวามือ ดังนัน้ offspring ของจุดยอด 1 คือ จดุยอด 2, 3 และ 4 จะถูกเรียงลําดับเปน 2, 3, 4 ทํานองเดียวกับ offspring ของจุดยอด 5 จะถูกเรยีงลําดบัเปน 11, 12, 13 รูป (6.2) แสดงกราฟมีทิศทางของทรีแบบทวิภาค ( )B T เสนเชื่อมทางซายของแตละจุดยอด v คือ offspring ลําดับแรก และเชื่อมทางขวาตอไปเรื่อยๆ สําหรับ offspring ลําดับถัดไป บางครั้งเรียกการเขียน ( )B T ในรูป 6.2 วา linked – list representation ของ T

2

5

11

1

4

10 9 8

3

7 6

13 12

1

2

5

11

12

13

3

4 8 9

6

7 10

รูป (6.1) T รูป (6.2) ( )B T

Page 17: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 17

อาจารยรตี โบจรัส

ตัวอยาง 7 รูป (7.1) แสดงกราฟทิศทางของทรีติดฉลาก ที่มี siblings เรียงลําดับจากซายไปขวา รูป (7.2) แสดง กราฟมีทิศทางของ ( )B T และ รูป (7.3) แสดง array ของ ( )B T Exercise 7.3 In Exercises 1 through 5 , the digraphs of labeled, positional binary trees are shown. In each case we suppose that visiting a node results in printing out the label of that node. For each exercise, show the result of performing a preorder search of the tree whose digraph is shown. 1. 2. 3. 4.

a

d c b

e f g

a

b

e

f

g

c

d

รูป (7.1) T รูป (7.2) ( )B T

Left Data Right

2 0 3 a 0 6 b 4 0 c 5 0 d 0 0 e 7 0 f 8

Index

1 2 3 4 5 6 7 8 0 g 0

รูป (7.3)

x

y

s

z

t

u

v

Figure (i)

×

+

2 3

1

2

Figure (ii)

g

a

b

c

h

i k

d

e

j f

Figure (iii)

1

2

4

6

3

5

7

Figure (iv)

Page 18: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 18

อาจารยรตี โบจรัส

5. In Exercises 6 through 13, visiting a node means printing out the label of the node. 6. Show the result of performing an inorder search of the tree shown in Figure (i). 7. Show the result of performing an inorder search of the tree shown in Figure (ii). 8. Show the result of performing an inorder search of the tree shown in Figure (iii). 9. Show the result of performing an inorder search of the tree shown in Figure (iv). 10. Show the result of performing a postorder search of the tree shown in Figure (i). 11. Show the result of performing a postorder search of the tree shown in Figure (ii). 12. Show the result of performing a postorder search of the tree shown in Figure (iii). 13. Show the result of performing a postorder search of the tree shown in Figure (iv). For Exercises 14 through 16, consider the tree whose digraph is shown in Figure (vi) and the accompanying list of words. Subpose that visiting a node means printing out the word corresponding to the number that labels the node. 14. Give the sentence that results from doing a preorder search of the tree. 15. Give the sentence that results from doing an inorder search of the tree. 16. Give the sentence that results from doing a postorder search of the tree.

1. ONE 7. I 2. COW 8. A 3. SEE 9. I 4. NEVER 10. I 5. PURPLE 11. SAW 6. NEVER 12. HOPE

1

2

4

7 8

5

3

6

10 9

12 11

Figure (vi)

A

L G O

R I T H M SFigure (v)

Page 19: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 19

อาจารยรตี โบจรัส

In Exercises 17 and 18 , evaluate the expression, which is given in Polish, or prefix, notation. 17. 3 4 7 2 12 3 6 4× − + − ÷ × −

18. 3 4 15 2 6x y y÷ −× × + × − , where x is 2 and y is 3.

In Exercises 19 through 20, evaluate the expression, which is given in reverse Polish, or postfix, notation. 19. 4 3 2 5 4 2 5 3÷ − × × × ÷ ÷

20. 3 7 4 9 6 5 2× − × × + ÷

Page 20: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 20

อาจารยรตี โบจรัส

7.4 ทรีไมระบุทิศทาง (Undirected trees) ทรีไมระบุทิศทางเปน symmetric closure อยางงายของทรี (ทรีไมระบุทิศทางเปนความสัมพันธทีเ่กิดจากทรีที่เสนเชื่อมทุกเสนมสีองทิศทาง) เราจะแสดงทรไีมระบุทิศทางดวยกราฟมากกวา digraph กราฟของทรีไมระบุทิศทาง T นี้จะมีเสนเชือ่มอยางเดยีวไมมีหัวลูกศร และเชื่อมจากจดุยอด a ไป b เมือ่ใดก็ตามที่ ( , )a b

และ ( , )b a เปนสมาชิกของ T เราจะเรียกเซต { , }a b นี้วาเสนเชื่อมไมระบุทิศของ T (an undirected edge)

และเรียกจุดยอด ,a b วา จดุยอดประชิด (adjacent vertices) ดังนั้นเสนเชื่อมไมระบุทิศทาง { , }a b จะสอดคลอง

กับเสนเชื่อมปกติ ( , )a b และ ( , )b a เสนเชื่อมในกราฟของทรีไมระบุทิศทาง T สอดคลองกับเสนเชื่อมไม

ระบุทิศทางใน T ตัวอยาง 1 รูป(1.1) แสดงกราฟของทรีไมระบุทิศทาง T รูป(1.2) และ (1.3) แสดง digraph ของทรีทั่วไป 1T และ 2T ตามลําดับ ที่มี T เปน symmetric closure ตัวอยางนี้แสดงใหเห็นวา โดยทั่วไปทรีไมระบุทิศทางจะสอดคลองกับทรีระบุทิศทางหลายแบบ สังเกตวากราฟของ T ในรูปที่(1.1) มีเสนเชื่อม 6 เสน (เสนเชือ่มไมระบุทิศทาง) แมวา ความสัมพันธ T จะมจีํานวน 12 คู ให R เปนความสัมพันธสมมาตร และให 1 2: , , ..., np v v v เปนทางเดินใน R เราจะกลาววา p เปน

ทางเดินอยางงาย ถาไมมีเสนเชื่อมสองเสนใดๆ ของ p สอดคลองกับเสนเชื่อมไมระบุทศิทางที่เหมือนกัน ถา

1v เทากับ nv ( p เปน cycle) เราจะเรียก p วาเปน cycle อยางงาย (a simple cycle) ตัวอยาง 2 รูป(2.1) แสดงกราฟความสัมพนัธสมมาตร R ทางเดิน , , , ,a b c e d เปนทางเดินอยางงาย แตทางเดิน

, , , , ,f e d c d a ไมเปนทางเดนิอยางงาย เพราะวา ,d c และ ,c d สอดคลองกับเสนเชื่อมไมระบุทิศทางเสน

เดียวกัน สวนทางเดิน , , , , , ,f e a d b a f และ , , ,d a b d เปน cycle อยางงายแต , , , , ,f e d c e f ไมเปน cycle

อยางงาย เพราะ ,f e และ ,e f สอดคลองกับเสนเชื่อมไมระบุทิศทางเสนเดียวกนั

b a

c

d

g

f e

รูป (1.1)

b

c

e f d

g

a

รูป (1.2)

c

d

g

f e b a

รูป (1.3)

Page 21: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 21

อาจารยรตี โบจรัส

ความสัมพันธสมมาตร R เปน acyclic ถาความสัมพันธ R ไมมี cycle อยางงาย และความสัมพันธสมมาตร R เปนความสัมพันธเชื่อมโยง (connected) ถามีทางเดินใน R จากจุดยอดใดๆ ไปยังจุดยอดอืน่ๆ ทฤษฎีบท 1 ให R เปนความสัมพันธสมมาตรบนเซต A ขอความตอไปนี้ สมมูลกัน (a) R เปนทรีไมระบุทิศทาง (b) R เปนความสัมพันธเชื่อมโยงและเปน acyclic ดูพิสูจนจากเอกสารอางอิงหนา 274 ให R เปนความสัมพันธสมมาตรบนเซต A , R เปนทรีไมระบทุิศทางก็ตอเมือ่ ขอความอยางใดอยางหนึ่งตอไปนีเ้ปนจริง (a) R เปน acyclic, และถามีเสนเชื่อมไมระบทุิศทางใดๆ เพิม่ในความสัมพันธ R แลวความสัมพันธใหมนีจ้ะไมเปน acyclic (b) R เปนความสัมพันธเชื่อมโยงและถานําเสนเชื่อมไมระบุทิศทางใดๆ ออกจากความสัมพันธ R แลว ความสัมพันธใหมนี้ จะไมเปนความสมัพันธเชื่อมโยง สังเกตวา ทฤษฎีบท1 และ 2 แสดงวา ทรีไมระบุทิศทางจะตองมีจํานวนเสนเชื่อมถูกตองและชัดเจน ถามีการสราง cycle จํานวนหนึง่หรือมากกวาทรีนั้นจะเปนทรีไมเชื่อมโยง ทฤษฎีบท 3 ทรีที่มีจุดยอด n จุด จะมีเสนเชื่อม 1n − เสน ดูการพิสูจนจากเอกสารอางอิงหนา 274

• ทรีแผกระจายของความสัมพันธเชื่อมโยง ถา R เปนความสัมพันธสมมาตรและเชื่อมโยงบนเซต A ทรี T บน A จะเปนทรีแผกระจายสําหรับ

R (a spanning tree for R ) ถา T เปนทรีที่มีจุดยอดเดียวกับ R และ เกดิจากการลบเสนเชื่อมโยงบางเสนของ R

ตัวอยาง 3 ความสัมพันธสมมาตร R มีกราฟดังรูป(3.1) และทรี T ′ มี digraph ดังรูป(3.2) และเปนทรีแผกระจาย เชนเดียวกับทรี T ′′ มี digraph ดังรูป(3.3) และเปนทรีแผกระจายของ R เนื่องจาก ,R T ′ และ T ′′

เปนความสัมพันธบนเซต A เดียวกัน เราจึงกําหนดสัญลักษณของจดุยอดเพื่อแสดงสมาชิกที่สอดคลองกัน จากตัวอยางนี้จะเห็นวาทรแีผกระจายไมไดมีเพียงหนึ่งเดยีว (not unique)

รูป(2.1)

f

e

d c

b

a

Page 22: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 22

อาจารยรตี โบจรัส

รูป(3.4) แสดงทรีแผกระจายไมระบุทิศทางของ R ที่มาจากทรีแผกระจายในรูป(3.3) ถา R เปนความสัมพันธซับซอนที่มีคุณสมบัติสมมาตรและมีความเชื่อมโยง อาจทําใหการคนหา R ยากขึน้ แตถาทําให R อยูในรูปทรีแผกระจาย จะใชข้ันตอนวิธีการคนหาทรีในหัวขอ 7.3 ได ตัวอยาง 4 ในตัวอยางนี้จะแสดงการยายเสนเชื่อมไมระบทุิศทางทีละขั้นตอน ของกราฟรูป(3.1) จนไดทรีแผกระจายไมระบุทิศทาง ดังรูป(3.4) ข้ันตอนนี้ใชไดดีสําหรับความสัมพันธขนาดเล็กที่มีกราฟอยางงาย สําหรับความสัมพันธที่ใหญข้ึนและถูกเก็บในคอมพิวเตอรจะไมสะดวกเพราะแตละขัน้ตอนจะตองตรวจสอบความเชื่อมโยง

b

a

c

e d

f R

รูป(3.1)

b

a

c

ed

fT ′

รูป(3.2)

d

a

b c

fe

รูป(3.3) T ′′

รูป(3.4)

a

c

eb

d

f

a

c e

b

d f

a

c e

b

f

ace

b

f

ace

b

f

a

c e

b

f d d d d

a

c e

b

d f

(i) (ii) (iii) (iv) (v)

(vii)

Page 23: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 23

อาจารยรตี โบจรัส

• ทรีแผกระจาย (Spanning trees) นิยาม ให G เปนกราฟเชิงเดียว (simple graph) ทรีแผกระจายของ G คือ กราฟยอย (subgraph) ของ G ที่เปนทรีและมีจดุยอดทกุจุดของ G เชน กราฟเชิงเดยีว G ทรีแผกระจายของกราฟ G (มีจุดยอด 6 จุด เสนเชื่อม 5 เสน) กราฟเชิงเดยีว (simple graph) ที่มีทรีแผกระจายจะตองเปนกราฟเชื่อมโยง (connected) เพราะมีทางเดินในทรีแผกระจายระหวางจดุยอด 2 จุดใดๆ และบทกลับเปนจริงดวย คือ “กราฟเชื่อมโยงเชิงเดียวจะมีทรีแผกระจาย” ตัวอยาง 5 จงหาทรีแผกระจายของกราฟเชงิเดียว G ดังรูป วิธีทํา กราฟ G เปนกราฟเชือ่มโยง แตไมเปนทรีเพราะม ีsimple cycle

- ถาลบเสนเชื่อม {a, e} จะไมเปน cycle แตกราฟยอยยังเปนกราฟเชื่อมโยงและมีจดุยอดทุกจุดของ G - ถาลบเสนเชื่อม {e ,f} จะไมมี simple cycle และถาลบเสนเชื่อม {c ,f} ทําใหไดกราฟเชิงเดียวที่ไมม ี

simple cycle กราฟยอยนี้ คือ ทรีแผกระจายเพราะมจีุดยอดทุกจุดของ G

ลบเสนเชื่อม {a, e}

F

E

D C B

A

F

E

D C B

A

c b d

g e

a

f

c b d

g e

a

f

c b d

g e

a

f

Page 24: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 24

อาจารยรตี โบจรัส

ลบเสนเชื่อม {e ,f} ลบเสนเชื่อม { c, g} สรางทรีแผกระจายของ G โดยลบเสนเชื่อมที่ทําใหเกิด simple cycle ตัวอยาง ทรีแผกระจายแบบอืน่ ทฤษฎีบท 4 กราฟเชิงเดยีวจะเปนกราฟเชื่อมโยง ก็ตอเมื่อ กราฟนั้นมทีรีแผกระจาย ดูบทพิสูจนในเอกสารอางอิง [2] ใหนกัศึกษาคนควา ประโยชนของทรีแผกระจาย เชน ใชใน IP multicasting จากเอกสารอางอิง [3] ข้ันตอนการสรางทรีแผกระจาย (algorithms for constructing spanning trees) การสรางทรีแผกระจาย ใชหลักการลบเสนเชื่อมที่ทําใหเกิดวงจรเชงิเดียว (simple cycle) แตวิธีการนี้ยังไมมีประสิทธิภาพเพราะตองทราบวงจรเชงิเดียว ดังนัน้เราจึงใชข้ันตอนการสรางทรีแผกระจายดวยการเพิ่มเสนเชื่อม ซ่ึงหลักการนี้เปนพื้นฐานของ algorithms ทั้งสองแบบ การสรางทรีแผกระจายของกราฟเชื่อมโยงเชิงเดียว โดยใช

1) a depth-first search (DFS) เปนขั้นตอนวิธีที่หาเสนเชื่อมไปยังจดุยอดอืน่ๆตามแนวลึก โดยเริ่มจากจุดยอดใดจุดยอดหนึ่งในกราฟที่ถูกกําหนดใหเปนจุดยอดเริ่มตน ไปยังจดุยอดที่ตดิกับจุดยอดนั้น จากนั้นใชจดุยอดนี้เปนจุดยอดเริ่มตนและทาํตามขั้นตอนเดียวกัน จนไมสามารถหาเสนเชื่อมใดๆไดแลว (ไมมจีุดยอดใดที่ตดิกับจุดยอดนั้นแลว) ใหยอนกลบัไปจุดยอดกอนหนาและหาเสนเชื่อมไปยังจุดยอดที่เหลือดวยวิธีการเดียวกันจนครบทกุจุด บางครั้งเรียก depth-first search วา backtracking

c b d

g e

a

f

c b d

g e

a

f

c b d

g e

a

f

c b d

g e

a

f

c b d

g e

a

f

c b d

g e

a

f

Page 25: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 25

อาจารยรตี โบจรัส

2) a breadth-first search (BFS) เปนขั้นตอนวธีิที่หาเสนเชื่อมไปยังจดุยอดอื่นๆตามแนวกวาง โดยเริ่มจากจุดยอดใดจุดยอดหนึ่งในกราฟที่ถูกกาํหนดใหเปนจดุยอดเริ่มตน ไปยังจุดยอดทีต่ิดกับจดุยอดนั้น จากนั้นจนครบ ถือเปนจุดยอดชุดแรก จากนั้นยอนกลับมาเริ่มตนใหมที่จุดยอดชุดแรกนั้น ไปยังจดุยอดอ่ืนๆซึ่งยังไมไดเดินทางไป ทําวิธีการเดียวกันจนครบทุกจุด

ตัวอยาง 6 จงใช a depth-first search หาทรีแผกระจายของกราฟ ดังรูป วิธีทํา เลือกจุดยอด f เปนจุดยอดเริ่มตน (เลือกจุดยอดใดก็ได) สรางทางเดินโดยเพิ่มเสนเชื่อมทีย่ังไมมี เชน สรางทางเดิน f, g, h, k, j (อาจสรางทางเดินอื่นได) ยอนกลับมที่จุดยอด k พบวา ไมมีเสนเชื่อมใดเริ่มตนที่จุด k ที่มีจุดยอดอื่นอีก ดังนั้นยอนกลับมาที ่ จุดยอด h สรางทางเดิน h, i และยอนกลับมาที่ h แลวไปจุดยอด f จากจดุยอด f สรางทางเดิน f, d, e ,c, a และยอนกลับไปที่ c สรางทางเดิน c, b ข้ันตอนการใช depth-first search สรางทรีแผกระจายของ G

a

b

c

d

e

g

f

i

h

j

k

a

b

c

d

e

g

f

i

h

j

k

f

k

f

g

h

k

j

f

g h

k

j

i

f

g h

j

i

d e

c

a

f

g

h

k

j

i

d e

c

a b

Page 26: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 26

อาจารยรตี โบจรัส

ตัวอยาง 7 จงใช DFS หาทรีแผกระจายของกราฟ G ถาลําดับจุดยอดเปน (i) 8, 7, 6, 5, 4, 3, 2, 1 และ (ii) 1, 2, 3, 4, 5, 6, 7, 8 กราฟ G วิธีทํา (i) ใชจุดยอด 8 เปนจุดเริ่มตนและสรางทางเดิน ดังรูป ทรีแผกระจายของกราฟ G โดยใช DFS เมื่อลําดับจุดยอดเปน 8, 7, 6, 5, 4, 3, 2, 1

(ii) ใชจุดยอด 1 เปนจุดเริ่มตนและสรางทางเดิน ดังรูป

1 2

3 4

5 6

7 8

1

2

3

4

5

7

6

8 1 2

3 4

5 6

7 8

7

1

2

4

3

5

6

8

k

j

1 2

3 4

5 6

7 8

Page 27: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 27

อาจารยรตี โบจรัส

ตัวอยาง 8 จงใช a breadth-first search (BFS) หาทรีแผกระจายของกราฟ G ดังรูป กราฟ G วิธีทํา เลือกจดุยอด e เปน root และเพิ่มเสนเชื่อมที่อยูประชิดกับจุด e จะไดเสนเชื่อมจากจุด e ไป b, d, f และ i โดยจุดยอดทั้งสี่นี้อยูมน level 1จากนั้นเพิ่มเสนเชือ่มจากจุดยอดเลานี้ไปยังจดุยอดประชดิทีย่ังไมถูกรวมไวในทรี จะเสนเชื่อมจาก b ไป a และ c, จาก d ไป h, จาก f ไป j และ g และจาก i ไป k จุดยอดใหม , c, h, j, g, k อยูใน level 2 ทําตามขั้นตอนแบบเดียวกันนี้ จนดุดยอดทุกจดุอยูในทร ี e ข้ันตอนการใช a breadth-first search (BFS) สรางทรีแผกระจายของกราฟ G ทรีแผกระจายของ G โดยวิธี BFS

a b c

d e f g

h i

k

l

j

m

e

d b

f i

h

b f d i

a c

e

k j g

m l

h

b f d i

a c

e

k j g

a b c

d e f g

h i

k

l

j

m

Page 28: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 28

อาจารยรตี โบจรัส

ตัวอยาง 9 จงใช BFS หาทรีแผกระจายของกราฟ G ถาลําดับจุดยอดเปน (i) 8, 7, 6, 5, 4, 3, 2, 1 และ (ii) 8, 6, 4, 2, 7, 5, 3, 1 กราฟ G วิธีทํา (i) ใชจุดยอด 8 เปนจุดเริ่มตนและสรางทางเดิน ดังรูป ทรีแผกระจายของกราฟ G โดยใช BFS เมื่อลําดับจุดยอดเปน 8, 7, 6, 5, 4, 3, 2, 1

(ii) ใชลําดับจดุยอด 8, 6, 4, 2, 7, 5, 3, 1

1 2

3 4

5 6

7 8

5

3

4

1

2

6

8

7

8

1 2

3 4

5 6

7 8

4

3

5

1

7

6

8

2

1 2

3 4

5 6

7 8

Page 29: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 29

อาจารยรตี โบจรัส

ตัวอยาง 10 จงใช BFS และ DFS หาทรีแผกระจายของกราฟ G เมื่อกาํหนดจุด E เปน root ของทรี กราฟ G วิธีทํา (i) ใช BFS โดยใหจดุยอด E เปน root ข้ันที่ 1 ข้ันที่ 2 ข้ันที่ 3

A B C

D E F G

H I

K

J M

L

H

B F D I

A C

E

K J G

E

D B

F I

L M

H

B F D I

A C

E

K J G

A B C

D E F G

H I

K

J M

L

Page 30: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 30

อาจารยรตี โบจรัส

(ii) ใช BFS โดยใหจุดยอด E เปน root ข้ันที่ 1 ข้ันที่ 2 ข้ันที่ 3 ข้ันที่ 4

E E

B

A

D

H

I

J

F

C

E

B

A

D

H

I

J

F

C G

M

K

L

E

B

A

D

H

I

J

F

C G

M

A B C

D E F G

H I

K

J M

L

Page 31: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 31

อาจารยรตี โบจรัส

Exercise 7.4 In Exercises 1 through 4, construct an undirected spanning tree for the connected graph G by removing edges in succession. Show the graph of the resulting undirected tree. 1. Let G be the graph shown in Figure (i). 2. Let G be the graph shown in Figure (ii). 3. Let G be the graph shown in Figure (iii). 4. Let G be the graph shown in Figure (iv). In exercise 5 through 7 (Figure (i)-(iv)), use Prim’s algorithm to construct a spanning tree for the connected graph shown. Use the indicated vertex as the root of the tree and draw the digraph of the spanning tree produced. 5. Figure (i); use e as the root. 6. Figure (iii); use c as the root. 7. Figure (iv); use e as the root. 8. Consider the connected graph shown in Figure (v). Show the graphs of three different undirected spanning trees.

f

a

b

e

d

c

Figure (i)

Figure (ii)

1 2

3 4

5

d c

b a

Figure (iii)

a b c

d

e

Figure (iv)

g

f

e

d

c

b

a

Figure (v)

Page 32: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 32

อาจารยรตี โบจรัส

9. For the undirected tree shown in Figure (vi), show the digraphs of all spanning trees. How many are there?

7.5 ทรีแผกระจายนอยท่ีสุด (Minimal spanning trees) การประยกุตของความสัมพันธเชื่อมโยงสมมาตรจะใชกราฟ (ไมระบทุิศทาง) ของความสัมพันธ สรางแบบจําลองสถานการณ ที่ใชเสนเชื่อมเปนตัวกําหนดขอมูลเชนเดียวกับจุดยอด กราฟถวงน้ําหนกั (a weighted graph) คือกราฟที่เสนเชื่อมแตละเสนแสดงคาตัวเลขที่เรียกวา น้ําหนกั (weight) ตัวอยาง1 เมืองเล็กๆ เมืองหนึ่งแสดงเสนทางระยะหางระหวางหมูบานแตละแหงดังรูป 1.1 ตัวอยาง2 บริษัทส่ือสารแหงหนึ่ง สํารวจคาใชจายเพื่อปรับปรุงระบบเครือขายระหวางสถานีรับ - สงสัญญาณ โดยแสดงขอมลูในรูปกราฟถวงน้ําหนัก ดังรูป2.1 จุดยอด = สถานี, คาใชจาย (หนวยเปน ลานเหรียญสหรฐั) เพื่อปรับปรงุระบบของแตละจุด = ตัวเลขบนเสนเชื่อม

จุดยอด = หมูบาน ตัวเลขบนเสนเชื่อมระหวางจุดยอด ,i j

คือ ระยะหางระหวางหมูบาน i กับ j

A

B

C

D

F G

H

E

3 3

3

6

2 5

5 4

4 6

2 2

รูป 1.1

2.7 B

2.6 C 4.2 E

4.4

F2.5 2.1

2.2

5.3

3.3 2.9 3.6

2.1 2.4 3.4 1.8 2.8

3.2 1.7

A

H

G

IJ

D

รูป 2.1

Figure (vi)

1

4 5

3

2

Page 33: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 33

อาจารยรตี โบจรัส

น้ําหนกัของเสนเชื่อม ( , )i jv v อาจหมายถึง ระยะทางระหวาง จุดยอด iv และ jv จุดยอด u เปนจุด

ยอดที่อยูใกลกบัจุดยอด v ถา u และ v ประชิดกนัและไมมเีสนเชื่อมอื่นกับ v ที่มีน้ําหนกันอยกวาเสนเชื่อม ( , )u v จุดยอด v อาจมีจุดยอดที่ใกลที่สุดมากกวาหนึ่งจดุ

ตัวอยาง3 จากกราฟรูป 1.1 จดุยอด C เปนจุดยอดที่ใกลกับจุดยอด A มากที่สุด จุดยอด E และ G ตางก็เปนจุดยอดที่อยูใกลกับจุดยอด F จุดยอด v จะเปนเซตของจุดยอดที่อยูใกลกบัจุดยอด 1 2{ , ,..., }kV v v v= ในกราฟ ถา v ประชิดกับ

สมาชิกบางตัว iv ของ V และไมมีจุดยอดอื่นประชิดกับสมาชิก V ที่ถูกเชื่อมดวยเสนเชื่อมที่มีน้ําหนกันอยกวา ( , )iv v จุดยอด v อาจเปนสมาชกิของ V

ตัวอยาง4 จากกราฟในรูป 2.1 ให { , , }V C E J= ดังนั้นจดุยอด D เปนจุดยอดที่อยูใกลกบั V มากที่สุด

เพราะเสนเชื่อม ( , )D E มีน้ําหนกั 2.2 และไมมีจดุยอดอันใดประชิดกับจุดยอด ,C E หรือ J ที่เสนเชื่อมมี

น้ําหนกันอยกวาเสนเชื่อมนี ้ จากกราฟประยุกตของกราฟมีน้ําหนกั ทําใหเราหาทรีแผกระจายไมระบุทิศทาง ที่มีน้าํหนักของเสนเชื่อมในทรีรวมกันนอยที่สุด เทาที่เปนไปได ทรีไมระบุทศิทางลักษณะนี้เราเรียกวา ทรีแผกระจายนอยที่สุด (a minimal spanning tree) เราสามารถนํา Prim’s algorithm มาสรางทรีแผกระจายนอยสุดสําหรับกราฟถวงน้ําหนกัซึ่ง Prim’s algorithm จะนํามาใชกบัความสัมพันธเชื่อมโยงสมมาตร ที่แสดงในรูปกราฟไมระบุทิศทางมีน้ําหนัก Prim’s algorithm ให R เปนความสัมพันธเชื่อมโยงสมมาตรที่มีจุดยอด n จุด ข้ันที่1 เลือกจุดยอด 1v ของ R และให 1{ }, { }V v E= =

ข้ันที่2 เลือกจุด iv ที่เปนจุดใกลสุดของ V ซ่ึงประชิดกับ ,i jv v V∈ โดยเสนเชื่อม ( , )i jv v ตองไมเปน cycle

ที่เกิดจากสมาชิกของ E เพิ่มจดุยอด iv เปนสมาชิกของ V และเพิ่มเสนเชื่อม ( , )i jv v เปนสมาชิกของ E

ข้ันที่3 ทําซํ้าในขั้นตอนที่2 จนกระทั้ง 1E n= − ดังนั้น V จะมีจุดยอดทั้งหมด n จุดของ R , E จะมีเสนเชื่อมของทรีแผกระจายนอยสุดของ R สําหรับ Prim’s algorithm นี้ เราจะเริ่มที่จุดยอดใดๆ ของ R ได และสรางทรีแผกระจายนอยที่สุด จากการเพิ่มเสนเชื่อมที่อยูใกลสุดของเซตจุดยอดที่ถูกเชือ่มแลว ตราบเทาที่เสนเชื่อมเหลานี้ไมเปน cycle ทฤษฎีบท1 Prim’s algorithm จากหวัขอนี ้สรางทรีแผกระจายนอยสุดของความสัมพันธ ดูพิสูจนจากเอกสารอางอิงหนา 281

Page 34: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 34

อาจารยรตี โบจรัส

ตัวอยาง5 จากตัวอยาง1 จงใช Prim’s algorithm วางแผนการเดินทางเชือ่มทุกหมูบานโดยใชระยะทางนอยที่สุด จากรูป 1.1 ถาเลือกจุด A เปนจดุแรกของการเดินทาง จะไดจุด C เปนจุดใกลที่สุดที่อยูจากจุด A คือ 2 กม. ดังนั้นเสนทาง ( , )A C เปนเสนทางแรกที่ถูกเลือก พิจารณาเซตของจุดยอด { , }A C จะไดจุด B เปนจดุที่อยู

ใกลที่สุด เราอาจเลือกเสนทาง ( , )A B หรือ ( , )B C เปนเสนทางที่สอง ถาเลือก ( , )B C จุด B จะเปนจดุที่อยู

ใกลที่สุดสําหรับ { , , }A B C แตเสนทาง ( , )A B จะทําใหเกดิ cycle ดังนั้นจงึพิจารณาจดุใกลสุดถัดไป และ

เลือกเสนทาง ( , )C F [หรือ ( , )C E ] รูป (i) ถึง (iii) แสดงขั้นตอนเริ่มตน รูป (iv) แสดงเสนทางสุดทายที่

เปนไปได, รูป (v) แสดงทรีแผกระจายนอยที่สุดที่ใช Prim’s algorithm โดยเริ่มตนจากจุด E สังเกตวาระยะทางรวมของรูป (iv) และ (v) คือ 21 กม.

6 B D H

A C

F G

E

2

6 3

4

4 5

2

5 2

3 3

A

C

2

(i)

A

C

2

(ii)

B A

C

2

(iii)

B

F

3

5 3

A

C

2

(iv)

3

F

5 4

E

G

H D 2

2

3 2

2

2 3

5 3

4

A

B

C E

F G

D H

(v)

Page 35: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 35

อาจารยรตี โบจรัส

ตัวอยาง6 ทรีแผกระจายนอยสุดของรูป (2.1) อาจหาไดจาก Prim’s algorithm โดยเริ่มตนที่จุดยอดใดๆ รูป (6.1) แสดงทรแีผกระจายนอยสุด ที่มีจุดเริ่มตนที่ I คาใชจายเพื่อปรับปรงุการเชื่อมตอระบบทั้งหมดประมาณ 20,200,000 เหรียญสหรัฐ Prim’s algorithm ในหวัขอ 7.4 เปนกรณเีฉพาะสําหรับเสนทางที่มีน้ําหนักเปน 1 เทากันทุกเสน ดงันั้นทรีแผกระจายใดๆ จงึเปนทรีแผกระจายนอยสุด (ทรีแผกระจายแตละแบบจะมี 1n − เสนทางเพือ่เชื่อมจุดยอด n จุด) เราสามารถใช Prim’s algorithm ในรูปแบบเมตริกซ หัวขอ 7.4 ปรับปรุงสําหรับเสนทางที่มีน้ําหนกั เราจึงแสดงสมาชิกของเมตริกซดวยคาน้าํหนัก ดังตัวอยางตอไปนี ้ Prim’s algorithm (ในรูปแบบของเมตริกซ) ให R เปนความสัมพันธเชื่อมโยงสมมาตร ที่มีจุดยอด n จุด และ M เปนเมตริกซแสดงคาน้ําหนกัของ R ข้ันที่1 เลือกสมาชิกที่นอยที่สุดในเมตริกซ M เชน ijm ให a เปนจุดยอดที่แสดงดวยแถวท่ี i และ b เปน

จุดยอดที่แสดงดวยหลักที่ j ข้ันที่2 รวมจดุยอด a และ b ดังนี้ แทนแถวที่ i ดวย

A B C

D E

F

G

H

I

J

2.4

2.6

2.1 2.2

2.1 2.5

2.8 1.8

1.7

A B

C D

3 3

4

5

2

0 4 3 0

4 0 5 3

3 5 0 2

0 3 2 0

A B C D

A

B

C

D

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

, 1min( , ) 0, 0

0 0

ik jk

jk ik

ikik jk ik jk

ik jk

m m

m mm k n

m m m m

m m

⎧ ⎫⎪ ⎪⎪ ⎪= ≤ ≤⎨ ⎬≠ ≠⎪ ⎪

= =⎪ ⎪⎩ ⎭

ถา

ถา ถา

ถา

Page 36: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 36

อาจารยรตี โบจรัส

แทนหลักที่ j ดวย แทนสมาชิกในแนวทแยงมมุดวยสมาชิกแนวทแยงมุมเดิมของ M ลบสมาชิกแถวที่ i และหลักที่ j เรียกเมตริกซใหมนีว้า M ′ ข้ันที่3 ทําซํ้าในขั้นที่ 1 และ 2 สําหรับเมตริกซ M ′ และเมตริกซยอยจนไดจุดยอดเพยีง 1 จุด แตละขัน้ตอน

ใหเก็บขอมูลเซตของจุดยอดเริ่มตนที่ถูกรวมกับจดุยอดอื่น ข้ันที่4 สรางทรีแผกระจายนอยที่สุด ดังนี ้

แตละขั้นตอน เมื่อรวมจุดยอด a และ b ใหเลือกเสนเชื่อมทีม่ีคาน้ําหนกันอยที่สุด จากจดุยอดเร่ิมตนที่แทนดวย a ไปยังจุดยอด b

ตัวอยาง7 ใช Prim’s algorithm หาทรีแผกระจายนอยที่สุดของกราฟ (7.1) วิธีทํา เลือก 2ijm = (คาน้ําหนักนอยที่สุด)

ในที่นี้เลือก 3,4m และรวม C กับ D จะได

0 4 3

4 0 3

3 3 0

A B C

A

M B

C

′ ′

⎡ ⎤⎢ ⎥′= ⎢ ⎥⎢ ⎥′⎣ ⎦

เมื่อ { , }C C D′↔ และเสนทางที่หนึ่ง ( , )C D

ทําซํ้าในขั้นที่ 1 และ 2 บน M ′ โดยใช 1,3 3m = จะได

, 1min( , ) 0, 0

0 0

ki jk

kj ik

kiki kj ki kj

ki kj

m m

m mm k n

m m m m

m m

⎧ ⎫⎪ ⎪⎪ ⎪= ≤ ≤⎨ ⎬≠ ≠⎪ ⎪

= =⎪ ⎪⎩ ⎭

ถา

ถา ถา

ถา

A B

C D

3 3

4

5

2

รูป (7.1)

0 4 3 0

4 0 5 3

3 5 0 2

0 3 2 0

A B C D

A

BM

C

D

⎡ ⎤⎢ ⎥⎢ ⎥=⎢ ⎥⎢ ⎥⎣ ⎦

Page 37: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 37

อาจารยรตี โบจรัส

0 3

3 0

A B

A

B

′⎡ ⎤⎢ ⎥⎣ ⎦

เมื่อ { , , }A A C D′↔ และเสนทางที่ถูกเลือกคือ ( , )A C

รวมจุดยอดสดุทายจนไดเสนทาง ( , )B D

ดังนั้นทรีแผกระจายนอยสุดของ (7.1) คือรูป (7.2) Kruskal’s algorithm ใชหาเสนทางที่เหมาะสม ให R เปนความสัมพันธเชื่อมโยงสมมาตร ที่มีจุดยอด n จุด และให 1 2{ , ,..., }kS e e e= เปนเซต

ของเสนทางที่มีคาน้ําหนกัของ R ข้ันที่1 เลือกเสนเชื่อม 1e ใน S ที่มีคาน้ําหนักนอยที่สุด ให 1{ }L e= แทน S ดวย 1{ }S e− ข้ันที่2 เลือกเสนเชื่อม ie ใน S ที่มีคาน้ําหนักนอยสุดและไมทําใหเกดิ cycle จากสมาชิกใน E แทน E

ดวย { }iE e∪ และแทน S ดวย { }iS e− ข้ันที่3 ทําซํ้าขั้นตอนที่ 2 จนกระทั่ง 1E n= − ตัวอยาง8 จากรูป(1.1) ถาใช Kruskal’s algorithm จะไดทรีแผกระจายนอยที่สุดดังรูป(8.1) โดยมีลําดับการเลือกเสนทางคือ ( , ),( , ),( , ),( , ),( , ),( , )D E D H A C A B E G E F และ ( , )C E ไดคาน้ําหนกัรวมคือ 21

กิโลเมตร อยางไรก็ตามดวยข้ันตอนวิธีทั้งสองจะไดทรีแผกระจายนอยสุดที่มีคาน้ําหนักรวมเทากัน

C

B A

D 2

3 3

B

2

3

A C 5

F

4 E

2 3

2 D H

G

Page 38: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 38

อาจารยรตี โบจรัส

ตัวอยาง9 จงใช Kruskal’s algorithm หาทรีแผกระจายนอยที่สุดของความสัมพันธที่มีกราฟดังรูป 9.1 เร่ิมตนมีเสนเชื่อมสองเสนที่มีคาน้ําหนกันอยที่สุดคือ ( , )B C และ ( , )E F จึงเลือกทั้งสองเสนทาง และมีเสน

เชื่อมสามเสนคือ ( , ),( , ),( , )A G B G D E ที่มีคาน้ําหนักเปน 12 เราสามารถเลือกเสนทางตามนี้ไดที่ไมทําให

เกิด cycle เสนทาง ( , )F G มีคาน้ําหนัก 14 เปนคาน้ําหนกัที่นอยสุดที่เหลืออยูเพิ่มเสนทาง ( , )F G ทําใหได 6

เสนทางสําหรับกราฟที่มีจุดยอด 7 จุด ดังนั้นจึงได ทรีแผกระจายนอยสุด ดังรูป Exercise 7.5 In exercise 1 through 3, use Prim’s algorithm as given in this section to find a minimal spanning tree for the connected graph shown. Use the specified vertex as the initial vertex. 1. Let G be the graph shown in Figure (i). Begin at F.

Figure (i)

A

B C

D

E F G

20 12 16

10

15 15

12

10 14 12

20

A

B C

D

E F G

12

10

12

10 14 12

Page 39: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 39

อาจารยรตี โบจรัส

2. Let G be the graph shown in Figure (ii). Begin at G.

Figure (ii)

3. Let G be the graph shown in Figure (iii). Begin at K.

Figure (iii)

In exercise 4-5, use the matrix version of Prim’s algorithm to find a minimal spanning tree for the indicated graph. 4. Let G be the graph shown in Figure (iv).

Figure (iv).

Page 40: บทที่7คิง - Worayoot · 2013-09-13 · - รากของต นไม คือ จุดยอด v0 จากนิยามข างต น - rooted tree (,

คณิตศาสตรเต็มหนวย 40

อาจารยรตี โบจรัส

5. Let G be the graph shown in Figure (v).

Figure (v)

เอกสารอางอิง [1] Kolman, Busby amd Ross, Discrete Mathematical Structures, 5th Ed.,Prentice Hall , International, 2004.

[2] Kenneth H. Rosen, Discrete Mathematics and Its Applications, 4th Ed., McGraw-Hill, 1999.

[3] M.K.Das, Discrete mathematical structures for computer scientists and engineers, Alpha science, 2007.