design and analysis of algorithms - burapha universityseree/lecture/... · 2001-06-09 ·...

381
01: SolveDQ( P ) 02: { 03: if ( P is trivial ) return Solve(P) 04: divide P into P 1 , P 2 , …, P k 05: for (i=1 to k) 06: S i = SolveDQ( P i ) 07: S = combine( S 1 , S 2 , …, S k ) 08: return S 09: } 01: Partition( A, p, r ) 02: { 03: c = A[p] 04: i = p–1; 05: while ( i < j ) { 06: while ( A[––j] < c ) { } 07: while ( A[++i] > c ) { } 08: if (i < j) swap(A[i], A[j]) 09: } 10: return j 11: } DESIGN & ANALYSIS OF ALGORITHMS สมชาย ประสิทธิ์จูตระกูล ภาควิชาวิศวกรรมคอมพิวเตอร จุฬาลงกรณมหาวิทยาลัย การออกแบบ และวิเคราะห 2 3 2 1 4 3 3 4 4 1 1 2 1 2 3 4

Upload: others

Post on 04-Jan-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

01: SolveDQ( P )02: {03: if ( P is trivial ) return Solve(P)04: divide P into P1 , P2 , …, Pk05: for (i=1 to k)06: Si = SolveDQ( Pi )07: S = combine( S1 , S2 , …, Sk )08: return S09: }

01: Partition( A, p, r )02: {03: c = A[p]04: i = p–1; j = r+105: while ( i < j ) {06: while ( A[––j] < c ) { }07: while ( A[++i] > c ) { }08: if (i < j) swap(A[i], A[j])09: }10: return j11: }

DESIGN & ANALYSIS OF ALGORITHMS

สมชาย ประสทธจตระกลภาควชาวศวกรรมคอมพวเตอร

จฬาลงกรณมหาวทยาลย

การออกแบบและวเคราะห

2

3 2

1 4 3

3 4 4 1 12

1 2 3 4

Page 2: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

เพอใหผเขยนไดทราบวามใครใชหนงสอเลมนบาง จะไดตดตอกลบไดในอนาคตเมอมการปรบปรงเปลยนแปลงเนอหา จงอยากขอใหผอานกรอกรายละเอยดเลกๆ นอยๆ แจงใหผเขยนดวยวธใด วธหนงดงน

วธแรก : ไปท http://www.cp.eng.chula.ac.th/~somchai/books เพอกรอกรายละเอยด

วธทสอง : ในกรณทกาลงอานเอกสารฉบบนอยดวย Acrobat กสามารถกรอกรายละเอยดในชองวางขางลางนไดโดยตรงแลวกดปม SUBMIT (วธนมขอจากดเลกนอยวาตองกรอกเปนภาษาองกฤษเทานนและตองเปดเอกสารนดวย web browser เพอสงขอมลจาก form)

ชอ :

สถานศกษา :

email addr. :

ความคดเหน :ขอแนะนา

ขอบคณครบ

Page 3: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

การออกแบบและวเคราะห

อลกอรทม เอกสารคาสอนวชา 2110427

สมชาย ประสทธจตระกลภาควชาวศวกรรมคอมพวเตอรจฬาลงกรณมหาวทยาลย

Page 4: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

ราคา (ตามคากระดาษและคาถายเอกสาร) บาท

สงวนลขสทธตาม พ.ร.บ.ลขสทธ พ.ศ. 2521

Page 5: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 10:17 : [email protected]

ในปจจบนใครๆ กคงเหนบทบาททสาคญของคอมพวเตอรทไปแทรกซมในแทบทกกจกรรม ประจาวนไมทางตรงกทางออม คอมพวเตอรทางานไดเรวขน มขนาดเลกลง มโปรแกรมทใชงายขน ชวยเสรมกจกรรมของมนษยไดมากขน ทงนกเพราะวาเบองหลงฮารดแวรทเราจบตองได เบองหลงซอฟตแวรทเรานามาตดตงสงงานฮารดแวรนน กคอ “กน” ความคดของผสรางหรอทเรยกวาอลกอรทมทถกแปลงมาเปนฮารดแวรและโปรแกรมทใชงานไดจรง อลกอรทมจงเปนศาสตรซงมบทบาทสาคญมากในการศกษาทางวทยาการและวศวกรรมคอมพวเตอร วชาอลกอรทมเบองตน หรอโดยสวนใหญมกตงชอวา การออกแบบและวเคราะหอลกอรทม จงถกบรรจเปนวชาพนฐานในสาขาวชาดงกลาว

คาวา “Algorithm” นนศพทบญญตของราชบณฑตยสถานใชคาวา “ขนตอนวธ” ซงถาจะขยายความอยางไมเปนทางการ กคอขนตอนวธการแกไขปญหาเชงคานวณดวยคอมพวเตอร ถงแมวา “Algorithm” มความหมายดงกลาว แตเปนคาทมาจากคาวา “Al-Khwarizmi” ซงเปนชอนกคณตศาสตร (อานรายละเอยดไดในปลายบทท 2) ดงนนเพอเปนการใหเกยรตนกคณตศาสตรทานน ผมจงขอทบศพทใชคาวา “อลกอรทม” แทน จงขอใชเนอทตรงนชแจงเหตผลของการเลอกไมใชศพทบญญตคาวา “Algorithm” น

วธการศกษาอลกอรทมทไดผลวธหนง (ซงผมขอใชในทน) กคอการศกษาจากตวอยาง นกเรยนจะพบตวอยางปญหาแทรกตามกลวธการออกแบบมาตรฐานทวไป ทคนในวงการทาๆ กน นนคอกอนจะออกแบบเกง กขอใหไปศกษาสงทผอนไดเคยออกแบบกนมาในอดตเปนตวอยาง วธศกษาแบบนกมทงขอดขอเสย ขอดกคอยงรตวอยางมาก กรแนวทางหลากหลายซงพรอมทประยกตกบปญหาใหมทจะพบในอนาคต แตกมขอเสยวาจะยดตดกบกลวธเกาๆ ไมคอยยอมคดอะไรแผลงๆ ใหมๆ (จงมกพบบอยๆ วาแนวคดแปลกๆ ใหมๆ มาจากคนนอกวงการ) จงขอใหนกเรยนระแวงในประเดนนดวย

คานา

Page 6: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

๔ การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 10:17 : [email protected]

ผออกแบบอลกอรทมทดจาตองรจกขอปญหาทสนใจ รจกเลอกกลวธการออกแบบ รจกเลอกใชโครงสรางขอมลทเหมาะสม และทสาคญตองรจกวเคราะหดวยวาผลทไดออกแบบไวดเลวเพยงใด ดงนนกอนจะเขาสเรองราวทางอลกอรทมนน นกเรยนจะตองมพนฐานทางการเขยนโปรแกรม โครงสรางขอมล และภนทนคณตศาสตร

ผมขอเนนวาพนฐานทางการเขยนโปรแกรมนนจาเปนอยางยงยวด เนองจากเราจะตองรวาแนวคดทนาเสนอในอลกอรทมนนทาใหเหนจรงไดดวยฮารดแวรหรอซอฟตแวร ดงนนจงตองมความสามารถในการเปลยนแนวคดมาเปนโปรแกรมททางานไดจรง ขอใหนกเรยนเขยนโปรแกรมเปนสกหนงภาษา (โดยสวนตวชอบ C C++ หรอ Java) อลกอรทมตางๆ ทพบในเอกสารนเมอเขยนโปรแกรมสมบรณแลวอยางมากกอยในหลกเปนรอยบรรทด ซงถอวาไมมาก ผมพบวาทกษะสวนนเปนสงทนาเปนหวงทสดสาหรบนกเรยนทจะเรยนอลกอรทมใหไดผล

จงอยากขอเนนอกประการหนงสาหรบนกเรยนวา วชาทางสาขานไมใชมานงฟง จา แลวกสอบ การศกษาจะไดผลด (ตอตวนกเรยนเอง) กคอตองอาน คด ทา และถาม (สวนการเขาเรยนและการเขาสอบนนเปนเรองของระเบยบและกฏเกณฑ) เราสามารถเจาะเนอหาในรายละเอยดจากการอานตารา ฝกสมองจากการคดระหวางการทาแบบฝกหด ฝกฝมอจากการทาการบานการเขยนโปรแกรม และสรางความกระจางในเนอหาจากการถามและถกเถยงกบผอน ผมอยากใหบรรยากาศการเรยนรเปนแบบ “อาน+คด+ทา+ถาม” มากกวาแบบ ฟง+บน+สอบ+ทง

เอกสารนประกอบไปดวยเนอหาหาสวนดวยกนคอ

1) เรองพนฐาน (บทท 1 และ 2)2) การวเคราะห (บทท 3 4 และ 5)3) โครงสรางขอมล (บทท 6 และ 7)4) การออกแบบ (บทท 8 ถง 12)5) การจดกลมปญหา (บทท 13)

เนอหาทงหมดสามารถใชสอนไดในหนงภาคการศกษา แตอาจไมสามารถครอบคลมไดทกตวอยาง ถาสนใจเฉพาะองคความรพนฐานทางอลกอรทม ผสอนอาจขามเนอหาในบทท 5 (เรองการวเคราะหถวเฉลย) บทท 6 (ในกรณทไมอยากทวนเรองโครงสรางขอมล) และบทท 7 (เรองโครงสรางขอมลแบบยง) ได เพอจะไดมโอกาสครอบคลมไดครบทกตวอยาง และลงลกในรายละเอยดของการทางานของอลกอรทมและการวเคราะห

Page 7: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 10:17 : [email protected] คานา ๕

ตองขอบอกวาผมเองไมเคยลงทะเบยนเรยนวชานมากอน และกทาวจยทางดานการออกแบบวงจรรวมความจสงระหวางการศกษา แตพบวางานวจยทงหลายในสาขาทสนใจ (ซงกคอสายฮารดแวร) นนมแตเรองของอลกอรทม เมอเรมอาชพอาจารยกพบวามวชานปรากฏอยในหลกสตร แตไมเคยเปดสอนมาเปนเวลาสบกวาป กเลยเปดเปนวชาเลอก สอนและเรยนรสงใหมๆไปพรอมๆ กบนกเรยนมาเปนเวลา 6 ป จากนนจงผลกดนใหเปนวชาบงคบในหลกสตร สอนมาไดอก 3 ป อยมาวนหนงไดยมสมดจดการเรยนของนกเรยนคนหนง (คณปภาณน) มาดพบวาเธอเขยนสรปคาสอนของผมไดดกวาเศษกระดาษทผมใชเตรยมการสอนเสยอก กเลยรสกวานาจะมหนงสอทางดานนใหอานกนเปนภาษาไทยเสยท เพราะผมพบวานกเรยนไมคอยอานเนอหาในตาราภาษาองกฤษกนเลย อกทงตารากมราคาแพง จงใชเวลาวนละประมาณ 2 ชวโมงหลงลกเขานอนแลว เปนเวลาประมาณครงป เขยนไดเปนเอกสารคาสอนฉบบน ผสนใจสามารถเขาชมเอกสารฉบบน เอกสารชดปรบปรงทจะตองมในอนาคต (พรอมทผดซงพบเปนระยะๆ) ภาพยนตรประกอบการสอน (ประมาณ 20 ชวโมง) และเรองราวอนๆ ประกอบการเรยนการสอนวชานไดท

http://www.cp.eng.chula.ac.th/~somchai/2110427

สดทายนตองขอขอบคณภาควชาวศวกรรมคอมพวเตอร จฬาลงกรณมหาวทยาลย ทสนบสนนวสดครภณฑและโอกาส ใหผมไดผลตตนฉบบทใชเปนเอกสารประกอบคาสอนวชา 2110427 ไดอยางราบรน

สมชาย ประสทธจตระกลภาควชาวศวกรรมคอมพวเตอร

จฬาลงกรณมหาวทยาลย[email protected]

๘ กนยายน ๒๕๔๓

Page 8: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

๖ การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 10:13 : [email protected]

1 บทนา 1การหาคานอยสดในแถวลาดบ ............................................................................................1การหาคานอยสดอนดบทสอง ......................................................................................5

การหา majority ...................................................................................................................7การใหสจดบนกราฟดวยสสามส ......................................................................................10การออกแบบอลกอรทม ....................................................................................................11เนอหาทจะเรยนในวชาน...................................................................................................12สงทจะไมสนใจในวชาน...................................................................................................13พนฐานทนกเรยนตองม ....................................................................................................14

2 ปญหาและอลกอรทม 17ปญหา ................................................................................................................................17ตวอยางปญหา ...................................................................................................................18ขนาดของตวอยางปญหา.............................................................................................19

อลกอรทม .........................................................................................................................21แบบฝกหด.........................................................................................................................23

3 การเตบโตของฟงกชน 25อตราการเตบโต.................................................................................................................25สญกรณเชงเสนกากบ .......................................................................................................29

สารบญ

Page 9: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 10:13 : [email protected] สารบญ ๗

โอเลก..........................................................................................................................29โอเมกาเลก ..................................................................................................................29ทตาใหญ .....................................................................................................................29โอใหญ........................................................................................................................30โอเมกาใหญ ................................................................................................................31คณสมบตของสญกรณเชงเสนกากบ ..........................................................................32ขอใชเครองหมาย = แทน �........................................................................................37การใชสญกรณเชงเสนกากบในสมการ ......................................................................38การใชสญกรณเชงเสนกากบ ......................................................................................39

แบบฝกหด ........................................................................................................................41

4 การวเคราะหอลกอรทม 43คาสงมลฐาน......................................................................................................................43คาสงมาตรเวลา .................................................................................................................46การวเคราะหรปแบบการทางาน .......................................................................................46การทางานแบบลาดบ..................................................................................................46คาสง if … then … else ..............................................................................................47วงวนแบบ for .............................................................................................................48วงวนแบบ while .........................................................................................................50การเรยกแบบเวยนเกด ................................................................................................53ประเภทของการวเคราะห ...........................................................................................59

แบบฝกหด ........................................................................................................................66

5 การวเคราะหกรณถวเฉลย 69Stack แบบม multipop ......................................................................................................71วธการวเคราะหกรณถวเฉลย ............................................................................................72Stack แบบม multipop (ตอ)..............................................................................................74

Page 10: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

๘ การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 10:13 : [email protected]

วธทางบญช .................................................................................................................74วธพลงงานศกย ...........................................................................................................75

ตวนบฐานสอง ..................................................................................................................76วธรวมกลม..................................................................................................................77วธทางบญช .................................................................................................................78วธพลงงานศกย ...........................................................................................................79

Stack ขนาดไมจากด..........................................................................................................79วธรวมกลม..................................................................................................................81วธทางบญช .................................................................................................................81วธพลงงานศกย ...........................................................................................................81

Binary search แบบ dynamic ............................................................................................83แบบฝกหด.........................................................................................................................85

6 โครงสรางขอมล (แบบงาย) 87รายการ ..............................................................................................................................88ตนไมคนแบบทวภาค........................................................................................................90ตารางแฮช..........................................................................................................................94ฮป......................................................................................................................................98กราฟ ...............................................................................................................................100แบบฝกหด.......................................................................................................................101

7 โครงสรางขอมล (แบบยง) 105ตนไม splay .....................................................................................................................105การ splay...................................................................................................................106การคน.......................................................................................................................108การเพม......................................................................................................................108การลบ .......................................................................................................................109

Page 11: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 10:13 : [email protected] สารบญ ๙

การวเคราะหกรณถวเฉลย.........................................................................................110ฮปทวนาม .......................................................................................................................112ตนไมทวนาม ............................................................................................................112การหาคยทนอยสด (FindMin) .................................................................................114การเชอมตนไมทวนาม .............................................................................................114การแทนฮปทวนามในหนวยความจา .......................................................................115การผสานฮป (Merge)...............................................................................................116การเพม (Insert) ........................................................................................................118การลบคยทนอยสด (ExtractMin).............................................................................118การลดคาของคย (DecreaseKey) ..............................................................................118การสรางฮป (BuildHeap) .........................................................................................119

ฮปทวนามแบบขเกยจ .....................................................................................................119การแทนฮปทวนามแบบขเกยจในหนวยความจา .....................................................120การลบคยทนอยสด...................................................................................................121

ฮปฟโบนกช....................................................................................................................124การลดคาของคย (DecreaseKey) ..............................................................................124การลบคยทนอยสด (ExtractMin).............................................................................127

เซตไมมสวนรวม ............................................................................................................129การยเนยนดวยความสง.............................................................................................131การยเนยนดวยขนาด.................................................................................................132การอดวถ ..................................................................................................................133การยเนยนดวยลาดบชน ...........................................................................................133รหสเทยมของ MakeSet, Union และ Find ...............................................................134การวเคราะห .............................................................................................................134

แบบฝกหด ......................................................................................................................138

8 การแบงแยกและเอาชนะ 141การคนแบบทวภาค .........................................................................................................142

Page 12: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

๑๐ การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 10:13 : [email protected]

การเรยงลาดบแบบผสาน ................................................................................................144การเรยงลาดบแบบเรว.....................................................................................................145ปญหาการเลอก ...............................................................................................................150มธยฐานของมธยฐานของหา ....................................................................................153

การยกกาลงมอดลาร........................................................................................................156การคณเมทรกซ ...............................................................................................................157คจดใกลกนทสด..............................................................................................................159ดารายอดนยม ..................................................................................................................163แบบฝกหด.......................................................................................................................165

9 กาหนดการพลวต 169ปญหาการหาคาเหมาะทสด.............................................................................................169ลกษณะเฉพาะของปญหา................................................................................................172โครงสรางยอยเหมาะทสด ........................................................................................173การซอนเหลอมของปญหายอย.................................................................................177

ขนตอนการออกแบบดวยกาหนดการพลวต ...................................................................181ตนไมคนแบบทวภาคเหมาะทสด ...................................................................................182ลาดบยอยเพมขนทยาวสด ...............................................................................................188วถสนสดแบบแหลงตนทางเดยว ....................................................................................190วถสนสดแบบทกค..........................................................................................................193ลาดบยอยรวมยาวสด.......................................................................................................196การคณลกโซเมทรกซ .....................................................................................................200แบบฝกหด.......................................................................................................................204

10 อลกอรทมแบบตระกลาม 209ปญหา Knapsack .............................................................................................................211

Page 13: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 10:13 : [email protected] สารบญ ๑๑

ลกษณะเฉพาะของปญหา ...............................................................................................215ปญหาการเลอกกจกรรม .................................................................................................216วถสนสดแบบแหลงตนทางเดยว ....................................................................................218ตนไมแบบทอดขามเลกสด .............................................................................................223อลกอรทมของครสกล ..............................................................................................223อลกอรทมของพรม...................................................................................................225การพสจนความถกตองของอลกอรทมของพรมและของครสกล.............................227

รหสฮฟฟแมน .................................................................................................................228แบบฝกหด ......................................................................................................................233

11 การคนคาตอบในตนไมและกราฟ 237รปแบบของผลเฉลย........................................................................................................238การแจงกรณและตรวจสอบผลเฉลย ...............................................................................241การแจงกรณวธเรยงสบเปลยน .................................................................................242การแจงกรณเซตยอย.................................................................................................243การแจงกรณการแบงสวนเซต ..................................................................................245

ตนไมปรภมสถานะ ........................................................................................................246การคนตามแนวลก แนวกวาง และตามตนทนนอยสด ...................................................251

Live–node และ E–node ...........................................................................................251การคนตามแนวลก....................................................................................................252การคนตามแนวกวาง ................................................................................................255การคนตามตนทนนอยสด ........................................................................................259

กราฟปรภมสถานะ .........................................................................................................261การยอนรอย ....................................................................................................................265การขยายและจากดเขต ....................................................................................................275แบบฝกหด ......................................................................................................................286

Page 14: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

๑๒ การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 10:13 : [email protected]

12 อลกอรทมเชงสม 289อลกอรทมแบบมอนตคารโล ..........................................................................................291การทวนสอบการคณเมทรกซ...................................................................................292สวนตดนอยสด .........................................................................................................294การทดสอบความเปนจานวนเฉพาะ .........................................................................297การจบคสตรง ...........................................................................................................303

อลกอรทมแบบลาสเวกส ................................................................................................306อลกอรทมแบบลาสเวกสทไมตองเรยกซา................................................................307อลกอรทมแบบลาสเวกสทอาจตองเรยกซา ..............................................................308ปญหาการเลอก .........................................................................................................309การจบคสตรง ...........................................................................................................309ปญหา n ควน ............................................................................................................310การแฮชเชงจกรภพ ...................................................................................................312

แบบฝกหด.......................................................................................................................316

13 เอนพบรบรณ 321อลกอรทมทมและทไมมประสทธภาพ ...........................................................................322ปญหางายและยาก ...........................................................................................................324ปญหาการตดสนใจ .........................................................................................................325กลมปญหา P ...................................................................................................................327กลมปญหา NP ................................................................................................................328การทวนสอบ ............................................................................................................328อลกอรทมเชงไมกาหนด...........................................................................................329

การลดรปปญหา ..............................................................................................................331กลมปญหา NP บรบรณ ..................................................................................................334การออกแบบอลกอรทมสาหรบปญหา NP–Hard...........................................................344

Page 15: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 10:13 : [email protected] สารบญ ๑๓

การคนเฉพาะท .........................................................................................................345อลกอรทมเชงประมาณ .............................................................................................348

แบบฝกหด ......................................................................................................................357

บรรณานกรม 365

Page 16: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป
Page 17: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] 1

บทท 1

จะวาไปแลวจดประสงคหลกทตองการใหนกเรยนทผานการเรยนวชานไดกคอ ความสามารถในการออกแบบขนตอนวธทมประสทธภาพเพอแกไขปญหาทไดรบ ทสามารถนาไปเขยนเปนโปรแกรมคอมพวเตอรได ความสามารถในการออกแบบนจะเรยนและถายทอดกนอยางไร วธหนงกคอการยกตวอยางกลวธมาตรฐานตางๆ ทนกคอมพวเตอรเขาใชกนอยในการแกไขปญหาพรอมทงยกตวอยางปญหาและขนตอนวธแกไขปญหาเหลานน ประเดนสาคญอยทวามนไมมสตรสาเรจในการออกแบบ ดงนนปญหาหนงๆ นนจะมขนตอนวธแกไขอยหลายแบบ จงจาเปนอยางยงทเราจะตองมความรในการวเคราะหเพอเปรยบเทยบขอดขอเสยของแตละวธทออกแบบขนได ดงนนสงทจะศกษากนจะประกอบดวย

� การศกษาลกษณะปญหา� การออกแบบอลกอรทม� การวเคราะหอลกอรทม

อนเปนสามเรองหลกทจะไดเรยนกน สาหรบในบทนานจะขอยกตวอยางเลกๆ ดงตอไปน

การหาคานอยสดในแถวลาดบปญหาทสนใจในหวขอนคอการหาขอมลตวทมคานอยสดทเกบในแถวลาดบ A อานแลวกจะรสกไดทนทวา "หมมาก" เรยนกนมาตงแตวชาแรกในการเขยนโปรแกรมแลว (ใหเขาใจวาผมมสมมตฐานวานกเรยนมความรสกเชนนจรงๆ หากใครยงไมรวาจะเขยนโปรแกรมแกปญหาน

บทนา

Page 18: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

2 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

อยางไร กแสดงวาคงมาเรยนผดวชาแลว !!!) ผมขอเสนอโปรแกรมทหาคานอยสดใหดสามโปรแกรม

เรมดวยโปรแกรมทหนง งายสด ตรงไปตรงมา กคอการไลตรวจสอบไป n–1 ครงตงแตตวทสองถงตวสดทาย โดยจาเฉพาะตวทนอยกวาจากการเปรยบเทยบ ไดโปรแกรมดงน *

01: findMin( int A[1..n] )02: {03: m = A[1]04:05: for ( i = 2 to n )06: if ( A[i] < m ) m = A[i]07: return m08: }

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

โปรแกรมทสอง เขยนมาจาก recurrence ขางลางน

mn = min(An–1 , mn–1) สาหรบ n > 1 , m1 = A1

ซงบอกเราวาถาอยากจะหาตวนอยสดของแถวลาดบทม n ตว (mn) ใหไปหาตวนอยสดของแถวลาดบ n–1 ตวแรก (mn) กอน แลวนาผลมาเปรยบเทยบกบตวสดทาย สามารถเขยนโปรแกรมrecursive จากนยามของปญหาไดตรงไปตรงมาดงน

09: findMin( A[1..n] )10: {11: if ( n == 1 ) return A[1]12: m = findMin( A[1..n-1] )13: return ( A[n] < m ? A[n] : m )14: }

บางคนบอกวาแบบนไมเหนมอะไรเลย ในทางปฏบตกยงเปนการเปรยบเทยบแบบลาดบจากตวแรกไปตวทายอยด (ไปลองคดดเองวาทาไม ?)

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

* จะขอละเลยเรองจกจกอาทเชน ถา A ไมมขอมลเลยจะเกดอะไรขน เพราะจะทาให coding แลดรมรามเปลองกระดาษ

Page 19: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 3

15: findMin( A[1..n] )16: {17: return findMinR( A[1..n] )18: }19:20: findMinR( A[a..b] )21: {22: if ( a == b ) return A[a]23: int mid = (a + b) / 224: int m1 = findMin( A[a..mid] )25: int m2 = findMin( A[mid+1..b] )26: return ( m1 < m2 ? m1 : m2 )27: }

คาถามทอยากจะถามตอนน กคอใน 3 โปรแกรมทเขยนใหดน โปรแกรมใดนาใชทสด ?

นาใชในแงไหน ? ในแงของอลกอรทมแลวเขาพจารณากนสองประเดนหลกคอประสทธภาพเชงเวลาหรอพดงายๆวาใครทางานเรวกวากน และเรองของปรมาณหนวยความจาทใชระหวางการทางาน แนนอนวามประเดนอนๆ ทนานามาพจารณาดวยเชนความซบซอนของการเขยนโปรแกรม (หรอพดงายๆวา โปรแกรมใดเขยนงายกวากน อานเขาใจงายกวากน) เปนตน อยางไรกตามจะขอยดสองประเดนเรองเวลาและเนอทเปนสาคญในการพจารณา

เรามาสนใจเวลาการทางานกน สามโปรแกรมขางบนนโปรแกรมใดทางานเรวสด ? คาตอบงายๆ กคอพมพโปรแกรมเขาเครอง สงแปล ลองทดสอบกบขอมลจรงเลย แลวกจบเวลา ทาแบบนออกจะดทอไปหนอย เหมอนกบบอกวาจะสงดาวเทยมแบบไหนด กบอกวาลองสงไปสกสามลกสามแบบ แลวกจะรเองวาแบบไหนด เราจะตองมความสามารถทจะประเมนประสทธภาพผลงานทไดออกแบบไวโดยไมตองเขยน+แปล+สงงานโปรแกรมจรง อนนเปนเรองของการวเคราะห

จากโปรแกรมทเขยนใหดขางบนน เพอความงายในการอางองจะกาหนดใหคราวๆ วา เวลาการทางานของคาสงในบรรทดท k (ดหมายเลขกากบบรรทด) คอ tk โปรแกรมแรกเปนการทางานแบบลาดบคอไลเปรยบเทยบตวทสองไปถงตวทาย ดงนนถามขอมล n ตว กตองทางานทคาสงfor n ครง แตทางานในวงวน for n–1 ครง (คาสงครงสดทายท for จะไมเปนจรงกเลยหลดจากวงวน) บวกกบเวลานอกวงวนอกเลกนอย รวมเปนเวลา

T1(n) = t3 + t5n + t6(n–1) + t7

โปรแกรมทสองเราวเคราะหไดจาก recurrence ของเวลาการทางานดงน

T2(n) = T2(n–1) + t11 + t12 + t13 สาหรบ n > 1, T2(1) = t11

Page 20: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

4 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

T2(n) คอเวลาในการหาตวนอยสดในขอมล n ตว เทากบเวลาในการหาตวนอยสด n–1 ตวแรกตามดวยภาระอกเลกนอย แตถามขอมลตวเดยวก return คาไดเลย (ใชเวลา t11) recurrence นงายมาก หาผลเฉลยดงน

T2(n) = T2(n–1) + t11 + t12 + t13= T2(n–2) + 2(t11 + t12 + t13)= T2(n–3) + 3(t11 + t12 + t13)…= T2(n–(n–1)) + (n–1)(t11 + t12 + t13)= t11 + (n–1)(t11 + t12 + t13)= t11n + (t12 + t13)(n–1)

โปรแกรมทสามม recurrence ของเวลาการทางานคอ

T3(n) = T3( �n/2� ) + T3( �n/2� ) + t22+t23+t24+t25+t26 สาหรบ n > 1, T3(1) = t22

กาหนดให e = t22+t23+t24+t25+t26 และให n = 2k จะวเคราะหหาผลเฉลยไดงายขนดงนT3(n) = 2T3(n/2) + e

= 2( 2T3(n/22) + e ) + e = 22 T3(n/22) + 2e + e= 22( 2T3(n/23) + e ) + 2e + e = 23 T3(n/23) + 22e + 2e + e…= 2k T3(n/2k) + 2k–1e + 2k–2e + … + 21e + 20e…= 2lg n T3(n/2lg n) + 2lg n –1 e + 2lg n –2e + … + 21e + 20e= 2lg n t22 + 2lg n –1 e + 2lg n –2e + … + 21e + 20e

= n t22 + e(n–1)

= t22 n + (t22+t23+t24+t25+t26)(n–1)

สรปเวลาการทางานของทงสามโปรแกรมดงนโปรแกรมท 1 T1(n) = t5n + t6(n–1) + t3 + t7

โปรแกรมท 2 T2(n) = t11n + (t12 + t13)(n–1)

โปรแกรมท 3 T3(n) = t22n + (t22+t23+t24+t25+t26)(n–1)

เวลาทางานจรงจะเปนเทาใดคงขนกบเวลาการทางานจรงของแตละคาสง ซงทงนขนกบวาใชภาษาอะไร compiler ตวไหน ทางานบนเครองอะไร แตถาจะพจารณาละเอยดสกเลกนอยจะพบวาคาสงทเขยนสวนใหญกเปนคาสงพนๆ เวลาการทางานคงไมแตกตางกนมากนก จะมกแตคาสงเรยกฟงกชนในบรรทดท 12, 24 และ 25 ทออกจะ "แพง" แพงในทนหมายความวามภาระเยอะ การเรยกฟงกชนมภาระในการจดการ stack frame สงคาพารามเตอร และยายการทางานไปยงฟงกชนอน ดงนนในเชงประสทธภาพการทางานแลวสรปไดวา

Page 21: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 5

� ทงสามโปรแกรมทางานใชเวลาแปรตามคาของ n เปนฟงกชนเชงเสนทงสน

� โปรแกรมท 1 นาจะทางานไดเรวสดเนองจากคาสงททางานซา (คาสง if และ for) ใชเวลานอยกวาของโปรแกรมอน (ซงมการเรยกฟงกชน)

เหนอย กวาจะวเคราะหโปรแกรมเลกๆ เสรจ (วาไปแลว นเปนโปรแกรมทเลกทสดทอธบายกนในวชาน) ในแงของศาสตรทางอลกอรทมนน เราคงจะไมลงไปวเคราะหกนในรายละเอยดของแตละคาสงแบบทไดทามาหรอก เพราะพอถงทสด tk ตางๆ ทตดอยในฟงกชนเวลากไมรคาอยด (เพราะมนขนกบปจจยหลายๆ อยางทกลาวมาเชน ภาษา ตวแปล เครอง) สงทเราสนใจมากกวากคอแนวโนมการเพมของเวลาการทางานเมอขนาดของขอมลเพมขน จากโปรแกรมทงสามทเขยนใหดนเวลาแปรตามจานวนขอมลในลกษณะเชงเสนทงสน นนคอถาจานวนขอมลเพมขน 100 เทา เวลาการทางานกมากขน 100 เทาตาม การเตบโตของฟงกชนทแทนประสทธภาพการทางานนแหละทเราสนใจจะวเคราะหกน และเราจะไดศกษาเครองมอทชวยใหเราวเคราะหอลกอรทมทซบซอนไดงายๆ กนตอไป

การหาคานอยสดอนดบทสองตวอยางทแลวบอกเราวาจะหาคานอยสด ใหเขยนโปรแกรมแบบธรรมดาใชวงวนวงไลเปรยบเทยบขอมลในแถวลาดบกจะเรวกวาแบบใชลกเลน เขยนเปน recursive ซะยงยาก คราวนเรามาเสรมความตองการของปญหาใหมากขนคอ นอกจากตองการจะหาคานอยสดแลว เรายงตองการคานอยสดอนดบสองดวย จะทาอยางไรด ?

ก "หม" อก กเพยงเขยนอกวงวนหนงหลงการหาคานอยสด แลวหาตวนอยสดในแถวลาดบทไมพจารณาชองทเปนตวนอยสดทหาไดในวงวนแรก เพยงเทานกเสรจ (ผมคงไมตองเขยนโปรแกรมใหดนะ) ดวยขนตอนวธน แนนอนวาการหาตวนอยสดอนดบสองกจะใชเวลาเปนฟงกชนเชงเสนกบจานวนขอมลเชนกนกบการหาตวนอยสด

มวธอนหรอไม ทจะไดตวนอยสดอนดบทสอง ดวยภาระทเปนฟงกชนซงโตชากวาเชงเสน

คาตอบคอม โดยใชผลทไดจากการหาตวนอยสดในโปรแกรมท 3 ทนาเสนอในหวขอทแลว ถาจะลองแจกแจงขนตอนการเปรยบเทยบขอมลในโปรแกรมท 3 นนพบวาเปนการเปรยบเทยบขอมลทละค ๆ ซงสามารถจาลองไดดวยตนไมแบบทวภาคดงตวอยางในรปท 1–1 ซงแสดงขนตอนการนาขอมลมาเปรยบเทยบจนไดตวทนอยสด ถาลองไลการทางานของโปรแกรมท 3 จะ

Page 22: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

6 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

พบวาลาดบของขอมลทถกนามาเปรยบเทยบเสมอนการแวะผานตนไมแบบหลงลาดบ นนคอมการเปรยบเทยบขอมลตามลาดบดงน (6,7), (8,5), (6,5), (0,2), (3,1), (0,1) และสดทาย (5,0)แลวไดคาตอบคอ 0

6 7 8 5 0 2 3 1

6 5 0 1

5 0

0

รปท 1–1 ตนไมแบบทวภาคจาลองขนตอนการหาคานอยสดในแถวลาดบ

ใหสงเกตวาตวนอยสดอนดบสองจะตองเปนขอมลตวใดตวหนง ในบรรดาตวทเคยเปรยบเทยบกบตวนอยสด แลวแพมากอน จากตวอยางพบวา ตวทเคยเปรยบเทยบกบ 0 กม 5, 1, และ 2 ดงนนเรากเพยงแตนารายการของขอมลตวทเคยเปรยบเทยบกบตวนอยสด มาหาตวนอยสด กจะไดตวนอยสดอนดบทสอง

คาถามกคอแลววธนดตรงไหน ? คาตอบอยตรงทวาจานวนขอมลทเคยเปรยบเทยบกบตวนอยสดนนมอยางมากเทากบความสงของตนไม เนองจากตนไมแบบทวภาคนไดดลดงนนจานวนขอมลทตองนาพจารณาเพอหาตวนอยสดอนดบทสองกมอยางมากเพยง log2 n ตว ดงนนถามขอมล n ตว เราสามารถหาตวนอยสด และตวนอยสดอนดบทสองไดโดยใชการเปรยบเทยบขอมลทงสนไมเกน n + log2n – 2 ครง (n–1 ครงเพอหาตวนอยสด และอกอยางมาก log2n –1 ครงเพอหาตวนอยสดอนดบทสอง)

แนนอนวาวธทอธบายมาน คงเขยนเปนโปรแกรมไดไมสนกระทดรดเทากบวธแรก ในบางกรณวธทขยายจากโปรแกรมท 3 อาจชากวาแบบลยงายๆ กได แตแนนอนวา ถาจานวนขอมลมคามาก แบบขยายจากโปรแกรมท 3 ยอมตองเรวกวาแน

Page 23: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 7

การหา majorityกาหนดให A เปนแถวลาดบทเกบขอมลจานวน n ตว ปญหากคออยากรวา A มขอมลทเปนmajority หรอไม (majority คอขอมลทปรากฎอยในแถวลาดบเกนครงหนงของจานวนขอมลทงหมด)

ลยหาสกครกไดคาตอบ กเพยงแตเรมพจารณาขอมลตวแรกแลวกนบดวามอยใน A เกนครงหรอไม ถาไมเกนกพจารณาตวทสองแลวนบอก ทาเชนนไปเรอยๆ จนกวาจะเจอ majority หรอเมอพจารณาหมดทกตวแลวกยงไมพบ วธนพจารณาหนงตว กตองลยนบ n รอบ เนองจากตองพจารณา n ตว กตองเสยเวลาเปนฟงกชนทแปรตาม n2 แนนอน

ถาตองการเรวกวาน จะมวธอนหรอไม เราควรสงสยกอนเลยวาม เพราะวธแรกนนเปนแบบลยทอๆ ใครๆ กคดได สงเกตไดวาเรานบจานวนตวทปรากฏของแตละขอมลไดงายขนมาก ถาเราจดเรยงลาดบขอมลในแถวลาดบเสยกอน ดงตวอยางขางลางน

2 3 2 3 4 5 3 3 2 2 2 2 1 1 2 2 2 2 3 3 3 2 2 3 2เรยงลาดบจากนอยไปมากได

1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 5

หลงจากเรยงลาดบแลวเราสามารถนบไดงายขนดงน01: isThereMajority( A[1..n] )02: {03: mergeSort( A )04:05: d = A[1], c = 106: for (i=2 to n) {07: if ( d == A[i] )08: ++c09: else {10: d = A[i]; c = 111: }12: if ( c > n/2 ) return true13: }14: return false15: }

เวลาการทางานเทากบเวลาในการเรยงลาดบขอมล บวกกบเวลาในการนบ การนบทเขยนใหดนทางานเปนฟงกชนแปรตาม n เวลาการเรยงลาดบขอมลทเราจะไดศกษาในรายละเอยดตอไปนนดวยขนตอนวธทดทสดเปนฟงกชนทแปรตาม n log2 n ดงสรปไดตอนนวาเวลาการทางานรวมถกกาหนดโดยการเรยงลาดบขอมล

Page 24: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

8 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

มเรวกวานอกหรอไม ? (ถามอยางนกแสดงวาควรจะม) ใหสงเกตวาหลงการเรยงลาดบขอมลนนจากตวอยางทแสดงขางบนน ม 2 เปน majority และ 2 กเปนตว median ของแถวลาดบดวยลองคดดซ ตวทเปน majority กตองมปรากฎอยในแถวลาดบเกนครง เมอนามาเรยงลาดบแลวตว majority ทงหลายกจะเกาะตดกนยาวเกนครง มนจะเรมทไหนในแถวลาดบ มนกตองผานเสนแบงครงแถวลาดบ ทาใหเราไดเงอนไขจาเปนของ majority วาจะตองเปน median ดวย (แตในทางกลบกนไมจาเปนตองเปนจรง นนคอ median ไมจาเปนตองเปน majority) ดงนนเราไดขนตอนวธแบบท 3 ดงน

01: isThereMajority( A[1..n] )02: {03: c = 0, m = findMedian( A )04:05: for ( i=1 to n )06: if ( m == A[i] ) ++c07:08: return ( c > n/2 )09: }

นนคอหา median แลว เอาคาของ median ทหาไดนมาวงนบในแถวลาดบวามเกนครงหรอไม เวลาการทางานกเทากบการหา median บวกกบการวงนบในแถวลาดบ การหา median (ซงเราจะไดศกษาตอไป) นนมวธทใชเวลาเปนฟงกชนแปรตาม n แบบเชงเสน ทาใหเราสามารถหา majority ไดในเวลาเปนฟงกชนเชงเสนกบ n ดวย

แลวมวธดกวานหรอไม ? หลายคนอาจเกดคาถามในใจตอนนแลววา จะไปรไดอยางไรวามวธดกวานหรอไม กคงเปนการดถาเราจะรวาไมมวธดกวานแลว อนนตองใชการพสจนเขาชวยจงจะสามารถบอกไดวาปญหาทเผชญอยน ถาพบขนตอนวธทมประสทธภาพเทาใดจงจะถอวาดทสด สาหรบปญหา majority น เราพบขนตอนวธ (หา median + นบ) ทใชเวลาเปนฟงกชนเชงเสนกบ n แลว ถามวาเรานาจะพบขนตอนวธอนทใชเวลาเปนฟงกชนทโตชากวา n หรอไม อาทเชน n หรอ log n หรอไม คาตอบคอไมมทาง เพราะการทเราจะรวาแถวลาดบทมขอมล n ตวม majority หรอไมนนอยางนอยเรากตองดขอมลในแถวลาดบอยางนอย n/2 ตว (เพอจะไดสรปวาเปน majority) ซงกฟงกชนเชงเสนกบ n ดงนนเราสรปไดวาเราเจอขนตอนวธทดเยยมแลว(ซงกคอ หา median + นบ)

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

Page 25: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 9

ยงมอกวธหนงในการแกไขปญหา majority น ทออกพกลๆ หนอย คอแทนทจะไปหา medianใหเสยเวลาแลวคอยมานบ ทาไมเราไมเสยงสมขอมลมาหนงตวในแถวลาดบ แลวมานบเลย กคงมคนแยงทนทวาวธนมโอกาสผด แนนอนวธนมโอกาสผด หรอจะพดอกนยหนงกได (แบบเขาขางตวเอง) วาวธนกมโอกาสถก ดงนนสงทนาสนใจกคอวาโอกาสถกเปนเทาใด เราลองมาแยกเปนสองกรณ

1. กรณทแถวลาดบ A ไมม majority : กรณนสบายใจไดเลยวาจะตองไดคาตอบทถกแนนอนเพราะไมวาเราจะสมขอมลใดมานบ กยอมนบแลวไดจานวนไมเกนครง (เพราะไมมตวไหนเกนครง)

2. กรณทแถวลาดบ A ม majority : กรณนจะพบวาเรามโอกาสเกนครงทขอมลทถกสมเลอกมานนเปน majority เพราะขอมลทเปน majority มเกนครง

เหนอยางนแลวยงกงวลอยหรอเปลา ถาเปนนกพนนกคงยอมเสยงใชวธน เพราะเขยนกงาย รบรองวาทางานเรวแนๆ (แค สม+นบ) แถมยงมโอกาสไดคาตอบถกมเกนครง เนองจากเราไมใชนกพนน เรากไมอยากใชวธน แตวาคนสวนใหญเชอเรองดวง เชอวาคนๆ หนงเกดมาคงไมโชครายตลอดชวตหรอก ทาไมเราไมทาการ "สม+นบ" แบบนสก 30 ครงด ถามสกหนงครงในคาตอบบอกวา "ม majority" เรากสบายใจวามแน (เพราะไดโชคดสมพบ majority จรงๆ จงนบแลวเกนครง) แตถาทง 30 ครงมแตคาตอบวา "ไมม majority" เรากนาจะเชอวาเราคงไมโชครายขนาดวาความจรงม majority แตสมเทาไรกไมพบหรอก และยงถาเราเปนนกสถตเคยเรยนมาวาโอกาสถกตอครงมเกนครง แสดงวาโอกาสทจะผดทง 30 ครง (คอซวยจรง !!!) มนอยกวา 1ในพนลาน ( 2–30 ) ทงนเนองจากการทดลองแตละครงไมขนตอกน วาไง คราวนนาใชวธ "สม+นบ k ครง" หรอไม ถายงไมกลาเสยง ลองให k เปนสก 50 แลวคานวณความโชครายทจะไดคาตอบผดดส จะพบวามนอยกวาโอกาสทวงจรอเลทรอนกสของเครองคอมพเวอตรจะทาผดพลาดเสยอก

เราจะไดศกษาขนตอนวธแบบสมในลกษณะนกนตอไปในวชาน ซงพบวามใชกนในทางปฏบตจรงๆ

Page 26: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

10 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

การใหสจดบนกราฟดวยสสามสมาดกนอกสกปญหาหนง ปญหานตองการคาตอบแควาเราสามารถใหสจดบนกราฟทใหมาดวยสสามสไดหรอไมได (การใหสจดบนกราฟทถกตองคอจดทมเสนเชอมตอกนตองไมมสเดยวกน) คาตอบของปญหานงายมากๆ กคอตองการรแควาได หรอไมได เราจะมขนตอนวธอยางไรในการหาคาตอบ

วธงายๆ ทอๆ กคอลยใหสมนทกรปแบบ ถาลองใหทกรปแบบแลวไมมแบบไหนถกตองเลย กแสดงวาใหสไมได แตถาเจอสกแบบทใหสได กหยดการทางานแลวกตอบวาใหสได กเทานนคาถามทตามมากคอ วธนจะตองลองใหสกแบบจงจะไดคาตอบ จานวนการใหสนนกคงขนกบลกษณะของกราฟทกาหนดมาให เอาเปนวาเราอยากรกรณเลวสดกแลวกน (ซงกคอกรณทใหสกราฟไมได กวาจะสรปไดกตองลองทกแบบ) ถากราฟม n จด ในกรณเลวสดจะตองลอง 3n

แบบ (เพราะหนงจดใหสไดสามส n จดกใหสได 3n แบบ) วเคราะหแลวไดคาตอบแบบนกคงตองรองวาไมไหว มากเกนไป เพราะถากราฟทใหมามสก 50 จด ตองลอง 350 แบบ ลองคดดคราวๆ กได ถาใชคอมพวเตอรลองใหส สมมตวาสามารถใหทดสอบการใหสไดพนลานรปแบบใน 1 วนาท กยงตองรอ 350 / 109 ซงมากกวา 1014 วนาท หรอมากกวา 3 ลานป !!!

บางคนอาจจะทนอานมาถงตรงนไมไหว เพราะตองการแยงวา ทาไมไปลยแบบทอๆ ตง 3n

แบบเลา กเพยงแคดซวา ในกราฟทใหมานมสจดไหนทมเสนเชอมตอกนถงกนหมดหรอไม(หรอพดวามกราฟยอยแบบบรบรณขนาดสจดหรอไม) ถามกแสดงวาใชสามสไมพอแนๆ(เพราะกราฟยอยแบบบรบรณขนาด k จดตองการ k ส) การลองลยหยบจดสจดจาก n จดมาทดสอบวาเปนกราฟยอยแบบบรบรณหรอไมนน ทดลองเพยง C(n,4) = n(n–1)(n–2)(n–3) / 24แบบ ซงนอยกวา 3n มากมายมหาศาล (n = 50 เราทดลองเพยง 2 แสนกวากรณเทานน แคดดนวกเสรจแลว) ขาวรายกคอวาถาทดลองหมดทกกรณแลว ไมปรากฎพบกราฟยอยแบบรบรณขนาดสจดเลย กยงสรปไมไดวาใชสามสได ดกราฟวงลอในรปท 1–2 เปนตวอยาง

รปท 1–2 กราฟวงลอหาซตองใชสสถงพอ

Page 27: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 11

ขนตอนวธหนงทไดผลดมากในการหาคาตอบของปญหานกคอการใชกลวธการยอนรอย (ซงเราจะไดอธบายกนละเอยดตอไป) วธนจะใหคาตอบรวดเรวมากสาหรบกราฟทวไปๆ แตกจะมกราฟบางแบบทวธแบบนหาคาตอบไดในเวลาทชามากจนรอไมไหวเหมอนกน

ใครจะลองคดออกแบบขนตอนวธเพอแกปญหานตอนนกได แตขอบอกไวตอนนเลยวาปญหาการใหสสามสบนกราฟนน ในปจจบนยงไมมใครคดวธทประกนวาไดคาตอบในเวลาอนรวดเรวในกราฟทกๆ กรณได เปนปญหาหนงทจดอยในกลมปญหาท "สงสยวายาก" ทเขยนวาสงสยนกเพราะวายงไมมใครพสจนไดวามนยาก และกยงไมมใครหาขนตอนวธททางานไดในเวลาอนรวดเรวเพอแกปญหาดงกลาว ปญหากลมนเปนปญหาทมมาก พบในปญหาทตองแกอยจรงๆ ในหลายๆ วงการ จดเปนกลมปญหาทนาสนใจ ซงเราจะไดอธบายกนในภายหลง

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

� ตองเขาใจตวปญหาอยางถองแท อะไรคอ input มขนาดใหญไดมากเทาไร (10, 1000, 106,1020,…) อะไรคอ output ตองการคาตอบเดยว หรอทกคาตอบ ตองการคาตอบทดทสดหรอแคคาตอบดๆ กพอ ตองการคาตอบทถกตองแนๆ หรอยอมเสยงผดไดแตโอกาสนอยตองการคาตอบเรวขนาดไหน (ภายใน 1 วนาท ภายใน 1 นาท ภายใน 1 เดอน…) ปญหานตองแกไขหาคาตอบถขนาดใด (ครงสองครงในชวต หรอทกๆ นาท) ปจจยเหลานจะเปนตวชวยกาหนดแนวทางการออกแบบ

� ปญหาทเราพบอยนน เหมอนหรอสามารถแปลงไปเปนปญหาทมใหพบเหนใน "ทองตลาด" (เชนจากหนงสอ วารสาร หรออนเตอรเนต) หรอไม ถามจะไดไมตองเสยเวลาคด(แลวเอาเวลาไปคดแกปญหาทไมมใครแกไขมากอนจะดกวา) ถาไมเหมอนแลวปญหาของเราเปนกรณพเศษ หรอกรณทวไปของปญหาใน "ทองตลาด" หรอเปลา ถาใช อยางนอยกมแนวทางการแกปญหาอยบาง อยางไรกตามขอเนนวาปญหาสวนใหญทจะพบในวชานเปนปญหา "ทองตลาด" จดประสงคของวชานกอยากใหนกเรยนสามารถหาแนวทางแกไขปญหาได โดยไมตองไปดใน "ทองตลาด"

Page 28: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

12 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

� การออกแบบอลกอรทมนนคงตองทากนหลายๆ รอบ จนกวาเราจะไดอลกอรทมทมประสทธภาพทเรายอมรบ (หรออาจจะเลกเมอหมดแรง หรอหมดเวลา หรอสนหวง …) การวเคราะหประสทธภาพมกนาไปสการปรบปรงอลกอรทมทออกแบบไวใหดขน เพราะเราไดรจดทเปนตวกาหนดประสทธภาพของอลกอรทม

� ตองเลอกใชโครงสรางขอมลทเหมาะสมดวย เพราะอลกอรทมทตองมการจดเกบและจดการขอมลนน วธการจดเกบและจดการจะสงผลโดยตรงตอประสทธภาาพทงในเชงเวลาและเนอทหนวยจาทใชของอลกอรทม

� เราควรจะรวาปญหาทเราเผชญอยนนมความยากงายเพยงไร ถาเราสามารถพสจนความยากของปญหาวาอยในกลมใด กจะทาใหเราเลอกกลวธในการออกแบบทเหมาะสม

� ถางายมกใชกลวธการแบงแยกและเอาชนะ (divide and conquer) กาหนดการพลวต(dynamic programming) หรออลกอรทมแบบตะกลาม (greedy algorithm) แตถาตองการใหเรวขนไปอกอาจใชอลกอรทมเชงสม (randomized algorithms)

� ถายากมกใชการคนเชงการจด (combinatorial search) เชนการยอนรอย (back-tracking) หรอการขยายและจากดเขต (branch and bound) ถาลดความทะเยอทะยานของคาตอบลง เชนตองการคาตอบทดๆ กพอไมจาเปนตองดทสด กอาจใชการคนเฉพาะท (local search) หรออลกอรทมเชงประมาณ (approximation algorithm) เขาชวย

� แตไมวาปญหาจะงายหรอยาก ถาเปนปญหาทมขนาดเลกจรงๆ บางทลยเอา (แบบทเขาเรยกกนวา brute force) กเพยงพอ

เนอหาทจะเรยนในวชานกลาวโดยสรป เราจะมาเรยนสามเรองดวยกนในวชาน คอการวเคราะหอลกอรทม การออกแบบอลกอรทม และการศกษาความซบซอนของปญหา

การวเคราะหอลกอรทมนนเราจะเนนทประสทธภาพเชงเวลาของอลกอรทม (จะเนนเรองเนอทหนวยความจาบางเปนครงคราว) การวเคราะหประสทธภาพเชงเวลากคอการนบจานวนคาสงท

Page 29: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 13

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

จากนนเราจงมาศกษากลวธมาตรฐานทวไป ในการออกแบบอลกอรทม อนประกอบการแบงแยกและเอาชนะ กาหนดการพลวต อลกอรทมแบบตะกลาม การคนเชงการจดในกราฟปรภมสถานะ การยอนรอย การขยายและจากดเขต อลกอรทมเชงสม และอลกอรทมเชงประมาณ แตละกลวธจะเหมาะกบปญหาในแตละลกษณะ การเรยนในหวขอเหลานจะเปนการเรยนดวยตวอยาง โดยนาเสนอปญหา "ของเลน" ฟงงายๆ แตวธแกไขปญหาและการวเคราะหบางทอาจยงยาก ปญหา "ของเลน" เหลานฟงดแลวรสกเปนปญหายกเมฆขนมา แตในโลกแหงความเปนจรงแลว มใหพบใหเหน และตองการวธแกไขกนจรงๆ และในชวงนเราจะนาเสนอโครงสรางขอมลใหมๆ (นอกเหนอจากทไดศกษากนมาในวชาโครงสรางขอมลเบองตน) เสรมในกรณทประสทธภาพของอลกอรทมทนาเสนอนนขนกบโครงสรางขอมลทเหมาะสม

เราจะปดทายเนอหาทจะนาเสนอดวยการจดกลมการจาแนกปญหาตามความซบซอน (หรอจะพดวาตามความยากงาย ) ของปญหา โดยจะเนนกลมปญหาหนงทเรยกวา NP บรบรณ (NP-complete) ซงเปนกลมปญหาทนาสนใจเพราะวาเปนกลมปญหาทพบมากในทางปฏบต อกทงเปนกลมปญหาททกคนสงสยวายาก แตยงพสจนไมได อกทงทกๆ ปญหาในกลมนมความซบซอนเทาเทยมกนทงหมด ถาใครพบอลกอรทมทมประสทธภาพทแกปญหาหนงในกลมน กหมายความวาไดพบวธแกทกๆ ปญหาในกลมดวย (คนๆ นนดงแนๆ )

สงทจะไมสนใจในวชานเนองจากประสทธภาพการทางานของโปรแกรมนนขนกบปจจยหลายๆ อยางมาก ทเราจะสนใจกคออลกอรทมของโปรแกรม หรอจะพดวาเปนแนวคด หรอ "กน" การทางานของโปรแกรมเราจะไมมาสนใจหรอโตเถยงกนในประเดนตอไปน ถงแมวาจะมผลโดยตรงกบเวลาและปรมาณหนวยความจาทใช

� ใชภาษาคอมพวเตอรนดกวา จะไมมาสนใจหรอกวาใช machine code เรวสด นาใชคาสงMMX หรอคาสง Streaming ใหมๆ ของ Pentium III หรอวาใช Java แลวชาแน เวลาการทางานกไมแนนอน ใช C ดกวา อะไรทานองน

� ใชตวแปลของบรษท A ดกวาของบรษท B อนนเราจะไมมาโฆษณาผลตภณฑ

Page 30: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

14 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

� ใชคาสงทเหมาะสม เรองจกจกเกยวกบคาสงในภาษาอาทเชน ++k จะเรวกวา k++ นดนงเปนตน

� ใชความรเรองสถาปตยกรรมคอมพวเตอร ในวชานเราจะพดแตอลกอรทมทมหนวยประมวลผลเพยงตวเดยว อกทงจะไมสนใจเรองทไปขนกบสถาปตยกรรมคอมพวเตอรอาทเชนการอางองหนวยความจาทตาแหนงทหาร 4 ลงตว จะเรวกวาทหารไมลงตว หรอการอางองหนวยความจาในอาเรยสองมตแบบใช for loop 2 loops ซอนกนแลวเปลยน rowกอน column จะชากวาเปลยน column กอน row เพราะเรองของ data cache เปนตน

� ใชลกเลนการเขยนโปรแกรม โปรแกรมททางานตามแนวคดของอลกอรทมเดยวกน อาจมไดหลากหลายรปแบบ นกเขยนโปรแกรมสามารถใชลกเลนมากมายเพอใหโปรแกรมของตวเองทางานไดเรวกวา อาทเชนการใช sentinel การเปลยนการเรยกแบบ recursiveเปนแบบวงวนธรรมดา เปนตน ใครสนใจเรองพวกนไปหาอานในหนงสอ ProgrammingPearl และ More Programming Pearl ของ Jon Bentley ได (หนงสอเกาหาซอลาบาก แตหองสมดภาควชาฯ มใหยม)

ขอยาอกทวาปจจยตางๆ ทนาเสนอมาขางบนนลวนมสาคญอยางยงตอประสทธภาพของโปรแกรมอยางมาก แตสงทเราตองการเนนในวชานคออลกอรทมหรอแนวคดการทางานของโปรแกรม ตวอลกอรทมนมผลโดยตรงอยางมหาศาลมากกวาเรองทพดถงเสยอก ซงสามารถแสดงใหดไดวาอลกอรทมทดแตเขยนโปรแกรมกระจอก จะไดผลทดกวาอลกอรทมกระจอกแตเขยนโปรแกรมสดยอด (แตความจรงเรานาจะมความสามารถทงออกแบบอลกอรทมทเจงและเขยนโปรแกรมไดสดยอดดวยนะ)

พนฐานทนกเรยนตองมขอเนนตรงนเลยวาผทจะเรยนวชานใหไดผลทด ตองหมนปฏบต พนฐานทนกเรยนตองมกคอตองผานวชาการเขยนโปรแกรมคอมพวเตอร วชาโครงสรางขอมล และวชาคณตศาสตรดสครตแทบวาคณจะขาดอยางใดอยางหนงไมไดเอาเสยเลย จะออกแบบอลกอรทมทดไดกตองวเคราะหดวยคณตศาสตรเปน ตองเลอกใชโครงสรางขอมลทเหมาะสม เพราะมผลโดยตรงตอประสทธภาพการทางาน และแนนอนวาตองเปลยนอลกอรทมทเปนแนวคดใหเปนรปธรรม

Page 31: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:38 : [email protected] บทท 1 บทนา 15

โดยการเขยนโปรแกรมได เราจะไมจากดภาษาคอมพวเตอรทจะใชกนในวชาน ใชภาษาคอมพวเตอรใดกไดทเหมาะสม (กแนะนา C, Pascal, หรอ Java) … เอาละ ขมามากพอแลว ถายงคดจะเรยนวชานตอ (ไมคดลดหรอถอนวชาน) กเรมกนเลย

Page 32: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

16 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:38 : [email protected]

Page 33: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:40 : [email protected] 17

บทท 2

กอนจะเขาเรองการวเคราะหและออกแบบอลกอรทม บทนจะขอสรางความเขาใจและสรางความคนเคยเกยวกบลกษณะของปญหาทเราจะไดพบกนในวชานวามลกษณะใดกนบาง จะไดอธบายความหมายของคาวาตวอยางปญหา ขนาดของตวอยางปญหา และคาวาอลกอรทมในบทนดวย

ปญหาคาวาปญหา (problem) ทเราจะพดกนในวชานเปนปญหาทคานวณหาคาตอบได (computational problem) หรออกนยหนงกคอปญหาทใหคอมพวเตอรแกไขหาคาตอบใหได อาทเชนปญหาการหาตวนอยสด ปญหาการทดสอบจานวนเฉพาะ ปญหาการใหสจดของกราฟ ปญหาการหา majority การเรยงลาดบขอมล และอนๆ อกสารพด การบรรยายลกษณะของปญหานนจะตองระบลกษณะของขอมลขาเขา และผลทตองการใหชดเจน เชน

ปญหาการหาคานอยสด :ขอมลขาเขา : เซตของจานวนจรง S = { a1 , a2 , …, an }ผลทตองการ : ak โดยท ak � S และ ak � aj สาหรบคา j = 1, 2, …, n

ปญหาการทดสอบความเปนจานวนเฉพาะ :ขอมลขาเขา : จานวนเตมบวก p, p > 1ผลทตองการ : จรง ถา p เปนจานวนเฉพาะ, เทจ ถา p เปนจานวนประกอบ

ปญหาและอลกอรทม

Page 34: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

18 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:40 : [email protected]

ปญหาการใหสจดของกราฟ :ขอมลขาเขา : กราฟ G = (V, E ) และจานวนเตมบวก kผลทตองการ : จรง ถาเราสามารถใหสจดใน G ดวยสอยางมาก k ส

เทจ ถาไมมวธใหสจดใน G ดวยสอยางมาก k ส

ปญหาทเราจะมาหาวธแกกนในวชานพอแบงหมวดหมไดดงน

1. ปญหาของเซต ลาดบ และสตรง (set sequence and string problems) เชนการเรยงลาดบ (sorting) การคน (searching) การเลอก (selection) การแบงสวน (partitioning) เปนตน

2. ปญหาเชงจานวน (numerical problems) เชนการทดสอบความเปนจานวนเฉพาะ (primality testing) การแยกตวประกอบ (factorization) การยกกาลง (exponentiation) การคณเมตรกซ (matrix multiplication) การสรางจานวนสม (random number generation) เปนตน

3. ปญหาทางกราฟ (graph problems) เชนสภาพเชอมโยง (connectivity) ตนไมแบบทอดขามเลกสด (minimum spanning tree) วถสนสด (shortest path) การไหลในขายงาน (network flow) การเดนทางของพนกงานขาย (travelling salesperson) การใหสกราฟ (graph coloring) เปนตน

4. ปญหาทางเรขาคณตเชงคานวณ (computational geometry problems) เชนเปลอกนน (convex hull) จดใกลกนทสด (closest point) การสามเหลยม (triangulation) เปนตน

เราจะคอยๆ พบรายละเอยดตางๆ ของแตละปญหาในบทถดๆ ไป

ตวอยางปญหาถาอลกอรทม A ถกออกแบบมาไวแกปญหา P สงท A รบเปนขอมลขาเขากคอขอมลขาเขาทเปนไปไดของ P เราเรยกขอมลขาเขาหนงๆ ของ P วาเปนตวอยางปญหา (problem instance) หรอบางทเรยกวาตวอยางขอมลขาเขา (input instance) หรอบางครงเรยกสนๆ วาตวอยาง (instance) เฉยๆ เชน

Page 35: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:40 : [email protected] บทท 2 ปญหาและอลกอรทม 19

� {3, 4, 5, 7, 30, 0, 2, 3, 5, 6} เปนตวอยางหนงของปญหาการหาคานอยสด

� 137466234876298251 เปนตวอยางหนงของปญหาการทดสอบความเปนจานวนเฉพาะ

� กราฟ G = (V, E) โดยท V = {1,2,3,4,5,6}, E = { (1,2), (1,4), (1,5), (2,3), (2,4), (2,5), (3,4), (5,6) } ซงแทนกราฟในรปท 2–1 และ k = 3 กเปนตวยางหนงของปญหาการใหสจดของกราฟ

1

2 3

4

56

รปท 2–1 กราฟในตวอยางของปญหาการใหสกราฟ

ขนาดของตวอยางปญหาเมอเราพดวา f(n) เปนฟงกชนทแทนประสทธภาพของอลกอรทมหนงนน ตว n กคอขนาดของตวอยางปญหาทอลกอรทมนนรบไปหาคาตอบ ขอเนนวา n คอขนาดของตวอยางปญหา ไมใชคาของตวอยางปญหา หนวยของขนาดทวาน จะเปนบต ไบต เวรด ตว กอน จด เสน อะไรกแลวแตสะดวก เชนรายการ {3, 4, 5, 7, 30, 0, 2, 3, 5, 6} มขนาด 10 ตว หรอจะพดวาใชทเกบ 10 เวรดกได เลข 13746286234876298251 มขนาด 20 หลกฐานสบ หรอจะพดวา 64 บตฐานสอง (เพราะตองใชทเกบ 1 + �log213746286234876298251� = 64 บต) กได และกราฟในรปท 2–1มขนาด 6 จด 8 เสน จากสามตวอยางขางบนน พอสรปขนาดของตวอยางปญหาไดดงน

ปญหาการหาคานอยสด :ขอมลขาเขา : เซตของจานวนจรง S = { a1 , a2 , …, an }ขนาดของตวอยางปญหา : n

ปญหาการทดสอบจานวนเฉพาะ :ขอมลขาเขา : จานวนเตมบวก p, p > 1ขนาดของตวอยางปญหา : 1 + �log2 p�

ปญหาการใหสจดของกราฟ :ขอมลขาเขา : กราฟ G = (V, E ) และจานวนเตมบวก k

Page 36: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

20 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:40 : [email protected]

ขนาดของตวอยางปญหา : V และ E

บางคนอาจสงสยวาทาไมตองมาจจกบจานวนหลก จานวนบตในปญหาการทดสอบจานวนเฉพาะดวย ในขณะทไมเหนสนใจวาจะใชกบตเลยสาหรบจานวนในเซต S ของปญหาการหาคานอยสด การระบลกษณะของขอมลขาเขาของปญหานน ถาจะใหละเอยดตองบอกขนาดของขอมลดวย อาทเชนจานวนเตมแตละจานวนทใหมานนจะมขนาดไมจากดหรอเปลา (หมายถงกหลกกได) แตโดยทวไปแลวบางทถอวาเปนทรกน โดยไมตองระบอยางเดนชด เชนปญหาการหาคานอยสดนน แตละจานวนในเซต S มกมขนาดใหญไมมาก คาวา "ใหญไมมาก" ในทนกมกตความวาไมมากเกนทเกบไดในหนงเวรดของเครองคอมพวเตอร นนคอ "เลก" พอทจะทาใหการประมวลผล เชนบวก ลบ คณ หาร เปรยบเทยบ… จานวนดงกลาวใชเวลาคงตวไมเปลยนแปลงตามคาของจานวนนน (หนงเวรดของคอมพวเตอรในปจจบนกสไบต ดงนนคาวา "เลก" ในทนกเกบจานวนเตมไดเปนหลายพนลานทเดยว)

แตวาถาเปนปญหาการทดสอบจานวนเฉพาะละก สวนใหญกตองถอวาเปนจานวนทมคามาก โดยจานวนหลกของ p กจะเปนตวกาหนดประสทธภาพ ถอกนไดเลยวาถาเปนปญหาเชงจานวน ซงเปนปญหาประเภททยงเกยวกบการประมวลผลจานวนโดยตรง จะถอวา เราจะไมจากดจานวนหลกของขอมลขาเขาของปญหา แตถาเปนปญหาทยงเกยวกบเซตหรอรายการของจานวนเชน การเรยงลาดบขอมล การหาผลรวมของขอมล การผสานรายการขอมล การหาคานอยสด การเลอกตวมธยฐานของกลม เปนตน จะถอวา จานวนในเซตหรอรายการเหลานนมขนาด "เลก"

ทตองมาเนนในประเดนนเพราะหากคดขนาดของตวอยางปญหาผดไป จะสงผลโดยตรงตอการตความผลลพธของการวเคราะหอลกอรทม มาดตวอยางงายๆ ตอไปน สมมตวาเราออกแบบวธการทดสอบจานวนเฉพาะโดยใชการลองหารดอๆ ทอๆ เลย คอถาอยากจะทดสอบวา p เปนจานวนเฉพาะหรอไม กลยทดลองหาร p ดวย 2, 3, … ไปเรอยๆ จนถง p–1 ถาพบตวทหาร pลงตวกแสดงวา p เปนจานวนประกอบ แตถาทดลองหารทง p–2 ตวแลวไมมตวใดหาร p ลงตวเลย กแสดงวา p เปนจานวนเฉพาะ แนนอนวาการทางานจะเปน loop หมนลองหารอยางมาก p–2 รอบ ถากาหนดใหการทดสอบวาหารลงตวหรอไมนนใชเวลาคงตว แสดงวาประสทธภาพการทางานของอลกอรทมนยอมใชเวลาในกรณชาสดเปนฟงกชนเชงเสนของ p การพบวาอลกอรทมใชเวลาเปนเชงเสนนน จะรสกวาเรว แตอยาลมมนเปนเชงเสนกบคาของจานวนทมาทดสอบจานวนเฉพาะ ไมใชขนาดของจานวนทมาทดสอบ สงทเราอยากรกคอวาถาเพมขนาด

Page 37: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:40 : [email protected] บทท 2 ปญหาและอลกอรทม 21

ของ p ไปอก 1 หลก (ไมใชเพมคาของ p ไปอก 1) แลวจะเสยเวลาเพมขนเทาใด นนหมายความวาเราตองการฟงกชนทแปรตามขนาดของ p เนองจากอลกอรทมนเปนฟงกชนเชงเสนของคา pแสดงวาเปนฟงกชนเลขชกาลงของขนาดของ p ( เพราะ p = 2lg p ) กจะใหความรสกทนทวาการเพมขนาดของ p ไปอก 1 บตจะเสยเวลาเพมขนอก 1 เทาตว แสดงวาเปนวธทชาเกนไป (ลองคดดวาจะเสยเวลาเทาไรในการทดสอบเลข 100 บต ซงถอวาเลกมากสาหรบปญหาการทดสอบความเปนจานวนเฉพาะททากนทกวนน ซงเราจะไดศกษากนในบทหลงๆ )

อลกอรทมในเมอเราจะวากนถงเรองอลกอรทมกนในทงวชาน กคงตองใหนยามคาวาอลกอรทมกนเสยหนอย อลกอรทม (ศพทราชบณฑตใชคาวา "ขนตอนวธ" แตจะขอใชทบศพท เพราะเปนคาทมาจากชอคน) หมายความถงลาดบของขนตอนเชงคานวณซงแปลงตวอยางขอมลขาเขาของปญหา ไปเปนผลลพธทตองการ ขอเนนวาขนตอนตางๆ ในอลกอรทมตองเปนขนตอนทใชหลกการคานวณ หรอจะพดงายๆ กคอขนตอนตางๆ สามารถแปลงไปเปนคาสงททางานดวยเครองคอมพวเตอรได (ดงนนอะไรทใชอารมณกไมนาจดเปนอลกอรทม) ถาเราทาตามขนตอนในอลกอรทมแลว จะตองทาเสรจ และไดคาตอบทถกตอง สาหรบทกๆ ตวอยางปญหา ดงนนเราจะไมยอมรบอลกอรทมทการทางานตดอยในวงวนไมสนสด หรออลกอรทมประเภทททางานแลวไดคาตอบถกบาง ผดบาง ดงนนจดประสงคของการออกแบบอลกอรทมสาหรบแกไขปญหาหนงๆ กคอการทางานทถกตอง และการทางานทมประสทธภาพ

เราสามารถบรรยายอลกอรทมไดดวยภาษาเขยน บรรยายไปเปนยอหนาสนๆ ไดใจความ และเขาใจถงกนหรอแนวคดการทางาน อาทเชนอาจบรรยายการเรยงลาดบขอมลแบบผสานไดดงน

การเรยงลาดบขอมลแบบผสานนนอาศยการแบงชดขอมลทตองการเรยงลาดบออกเปนสองชดยอยขนาดเทาๆ กน จากนนนาขอมลทงสองชดยอยไปเรยงลาดบขอมล (ซงกใชวธแบบผสานเหมอนกน) เมอไดขอมลสองชดยอยทเรยงลาดบแลว จงนามาผสานกนเพอไดขอมลชดใหญทเรยงลาดบทงหมด

บางทเราอาจบรรยายอลกอรทมดวยรหสเทยม (pseudo code) ซงเขยนคลายโปรแกรมภาษาคอมพวเตอร แตละเลยเรองจกๆ จกๆ ของตวภาษาเพอความกระทดรด เชนไมตองประกาศ

Page 38: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

22 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:40 : [email protected]

ประเภทตวแปร เปนตน ซงอาจปนดวยคาบรรยายไดสาหรบกรณของคาสงทงายพอ แตไมตองการลงรายละเอยด อาทเชนอาจบรรยายการเรยงลาดบขอมลแบบผสานไดดงน

01: MergeSort( A[], left, rght )02: {03: if ( left < rght ) {04: m = (left + rght) / 2;05: MergeSort( A, left, m );06: MergeSort( A, m+1 , rght );07: Merge( A, left, m, rght );08: }09: }

หรอบางอาจเขยนแบบน01: MergeSort( A[left..rght] )02: {03: if ( left < rght ) {04: m � (left + rght) / 2;05: MergeSort( A[left.. m] );06: MergeSort( A[m+1..rght] );07: A[left..rght] � Merge( A[left..m], A[m+1..rght]);08: }09: }

คาสงทงหลายทใชกจะเปนคาสงพนๆ ทพบเหนไดในภาษาคอมพวเตอรทวไป สาหรบในเอกสารชดน จะใชคาสง และ operator ตางๆ ทคลายคลงกบทพบใชภาษา C, C++ หรอ Java ซงเปนทคนเคยของนกเรยนอยแลว โดยการสงผานขอมลตางๆ ระหวางฟงกชนนนกกระทาในลกษณะทมประสทธภาพ ตวอยางเชนรหสเทยมของ mergesort ทแสดงใหเหนขางบนน การสงแถวลาดบ A เมอมการเรยกฟงกชนนนกจะเปนการสงตาแหนงไป ไมไดตองเสยเวลามานงทาสาเนาทงแถวลาดบกอนสงไป อนนเปนสงทเปนไปไดในทางปฏบตทเราจะตองเขาใจดวยระหวางการวเคราะหอลกอรทม

อนงคาวา "algorithm" มาจากชอของนกคณตศาสตรชาวเปอรเซย Abu Ja'far Muhammad ibn Musa al-Khwarizmi (ดรปท 2–2ประกอบ) ผเขยนหนงสอเกยวกบเรองของจานวนของชาวฮนดและอาหรบ "Algoritmi de numero Indorum" (ภาษาลาตน) ซงแปลวา "Al-Khwarizmi on the Hindu Art of Reckoning" (ภาษาองกฤษ) เขาเปนผเรมใชเลขศนยในระบบทศนยม นอกจากนคาวา "algebra" กมาจากคาวา "al-jabr" ซงเปนคาในชอหนงสอทางพชคณตของเขาอกเลมหนงเชนกน

รปท 2–2 Al-Khwarizmi(780-850)

Page 39: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:40 : [email protected] บทท 2 ปญหาและอลกอรทม 23

แบบฝกหด1. จงบรรยายปญหาเชงคานวณตอไปน ดวยลกษณะของขอมลขาเขา และผลทตองการ (ปญหาใดทไมเคยไดยนมากอน กใหไปคนควาตามแหลงขอมลอนประกอบ)ก) ปญหาการเดนทางของพนกงานขาย (traveling salesperson)ข) ปญหาตนไมแบบทอดขามเลกสด (minimum spanning tree)ค) ปญหาตวหารรวมมาก (greatest common divisor)ง) ปญหาเปลอกนน (convex hull)จ) ปญหาการสามเหลยม (triangulation)ฉ) ปญหาการจบคสตรง (string matching)ช) ปญหาเซตอสระใหญสด (independent set)ซ) ปญหาผลรวมของเซตยอย (sum of subset)ฌ) ปญหาการแบงสวนเชงเสน (linear partition)

2. จงบอกตวกาหนดขนาดของตวอยางปญหา ของปญหาตางๆ ในขอท 1

3. จงบรรยายอลกอรทมการเรยงลาดบขอมลแบบฟอง (bubble sort) ดวยรหสเทยม

4. จงบรรยายอลกอรทมการเรยงลาดบขอมลแบบฟอง ดวยขอความไมเกน 3 บรรทด

5. จงบรรยายอลกอรทมการคนแบบทวภาค (binary search) ดวยขอความไมเกน 3 บรรทด

6. ใชแหลงขอมลอนเพอบรรยายลกษณะของปญหาดงตอไปนก) Satisfiabilityข) Maximum 2-Satisfiabilityค) Bin packingง) Integer programming

7. ใชแหลงขอมลอนเพอบรรยายลกษณะของปญหาดงตอไปนก) Halting problemข) 3x+1 problemค) Word correspondence problemง) Hilbert’s tenth problem

Page 40: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

24 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:40 : [email protected]

Page 41: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] 25

บทท 3

จากตวอยางทไดนาเสนอในบทท 1 เราไดแสดงใหเหนถงเวลาการทางานของโปรแกรมทเปนฟงกชนของจานวนขอมล เชนการหาคานอยสด การหา majority เปนตน แนนอนวาถาจานวนขอมลมากขน ยอมตองกนเวลาการทางานมากขนตาม แตจะมากขนแคไหน เทาไรนน กคงขนกบลกษณะของฟงกชน สงทเราจะสนใจกนในบทนกคอการเตบโตของฟงกชน ทจะใชเปนตวเปรยบเทยบประสทธภาพของอลกอรทม โดยจะพจารณาการเตบโตของฟงกชนเฉพาะกรณทขอมลมจานวนมากๆ เพอศกษาภาพรวมการเตบโต โดยจะใชสญกรณจานวนหนงทชวยบรรยายลกษณะการเตบโต เพอใชในการเปรยบเทยบไดงาย

อตราการเตบโตหากยอนกลบไปดตวอยางการหาคานอยสดในแถวลาดบในบทท 1 ทเราแสดงโปรแกรมตวอยางใหสามโปรแกรมนน พบวามประสทธภาพเชงเวลาดงนโปรแกรมท 1 T1(n) = t5n + t6(n–1) + t3 + t7

โปรแกรมท 2 T2(n) = t11n + (t12 + t13)(n–1)

โปรแกรมท 3 T3(n) = t22n + (t22+t23+t24+t25+t26)(n–1)

ทงสามโปรแกรมนมฟงกชนทมการเตบโตเปนเชงเสนดวยความชนทแตกตางกน ฟงกชนจรงๆ จะเปนเชนไร กคงขนกบวาเวลาเขยนเปนโปรแกรมจรง แปลเปนคาสงททางานจรง และใชงานบนเครองจรงแลว จะเปนอยางไร ซงขนกบปจจยหลายอาท ประสบการณของผเขยนโปรแกรม ภาษาและตวแปลทเลอกใช อกทงเครองทใชทางานจรงดวย ดงนนการจะเปรยบเทยบการ

การเตบโตของฟงกชน

Page 42: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

26 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

ทางานจรงนนคงจะลาบาก แตสงทเราสรปไดอยางหนง ซงไมขนกบปจจยทกลาวถงน กคอทงสามโปรแกรมนใชเวลาการทางานเปนเชงเสน หมายความวาเวลาการทางานจะเพมขน k เทาเมอเราเพมปรมาณขอมลอก k เทา

หรอถาจะดตวอยางการหาคานอยสดอนดบทสองทแสดงในบทท 1 นนเราพบวาแบบทหนงนนจะใชฟงกชนเชงเสนในการหาตวนอยสดอนดบทสอง ในขณะทแบบทเปนสวนขยายของโปรแกรมทสามนนจะใชเวลาเปนฟงกชน log ฐานสองของจานวนขอมล โดยทเราไมไดแสดงใหเหนรายละเอยดของโปรแกรม แตเราสรปไดวาถาเราเพมขอมลเปน 2 เทา โปรแกรมททางานแบบเชงเสนจะใชเวลาเพมเปน 2 เทาเชนกน ในขณะทโปรแกรมทมพฤตกรรมการเตบโตของเวลาการทางานเปนฟงกชน log ฐานสองนนจะใชเวลาเพมอก 1 หนวยเวลาเทานน อนนเหนไดวาอตราการเตบโตของฟงกชนทงสองนตางกนมากๆ

ดงนนสงทเราสนใจจะเปรยบเทยบกคออตราการเตบโตของฟงกชนทแทนประสทธภาพของอลกอรทม รปท 3–1 แสดงตวอยางฟงกชนทมอตราการเตบโตแตกตางกน

n

nn22n

log n

nn22n

รปท 3–1 ตวอยางฟงกชนทมอตราการเตบโตแตกตางกน

บางคนอาจแยงวากเลนเขยนฟงกชนแบบคราวๆ บางทโปรแกรมทใชเวลาเปนแบบ log n อาจมคาคงตวขางหนา log n ทมคามากกได เพราะมจานวนคาสงตอรอบการทางานมากมายเหลอเกน อนนเปนขอสงเกตทด กขอยกตวอยางใหด กแลวกน สมมตวาโปรแกรม P1 ใชเวลา 1000�log n ในขณะทโปรแกรม P2 ใชเวลา n ถามวา P1 ใชเวลามากกวา P2 เมอ n มคาเทาใด ทดลองเปลยนคา n สกครกรวา 1000�log n > n เฉพาะเมอ n < 3551 เทานน อนนเปนสงทแสดงใหเหนวาถาฟงกชน f โตเรวกวาฟงกชน g แลวคาของ f ตองมากกวา g เมอ n � n0 ดงนนอตรา

Page 43: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 27

การเตบโตของฟงกชนจะใชเปรยบเทยบอลกอรทมไดอยางสอความหมาย กเมอเรากาลงพดถงกรณทขอมลมจานวนมาก

แลวจะพจารณากรณมากสกแคไหน กเพอใหมนใจแนๆ กคดตอนทมนมขนาดมากเขาใกลอนนตเลย เราเขยน f(n) � g(n) เพอแทนวา f(n) โตชากวา g(n) โดยมนยามดงน

0)()(lim)()( �

�� ngnfiffngnf

n�

ในทางกลบกน ถาคาลมตขางบนนมคาเปนอนนต เรากบอกวา f(n) โตเรวกวา g(n) แตถาคาลมตนเปนคาอนทไมใช 0 และ อนนต เรากจะเรยกวาทง f(n) และ g(n) โตพอกน

ตองขอเนนตรงนครบวา ฟงกชนทเราพดกนในเรองของอลกอรทมนนเปนฟงกชนทใหคาเปนจานวนไมตดลบ เราจะไมพจารณากรณประสทธภาพตดลบ (ไมรหมายความวาอะไรเหมอนกน) จะไดไมตองมาหวงกรณ –�

ในการหาลมตขางบนน กขอใหนกถงกฎของโลปตาล (l'Hôpital's Rule) ทเคยเรยนกนในแคลคลส จะชวยไดเยอะทเดยว ขอเขยนทบทวนใหดโดยไมพสจนทมาดงน

กฎของโลปตาล ถา f(n) และ g(n) เปนฟงกชนทหาอนพนธได โดยท ��

��

)(lim nfn

และ

��

��

)(lim ngn

แลว)()(lim

)()(lim

ngnf

ngnf

nn �

��

����

ตวอยางท 3-1 จงเรยงลาดบฟงกชนตอไปนตามอตราการเตบโต : 0.5n, 1, log n, n, 10n

พอสรปไดดงน� 0.5n � 1 � log n เพราะวา 0.5n เปนฟงกชนซงนอกจากจะไมโตแลว คายงลดลงเรอยๆ แต 1 นนเปนฟงกชนนงๆ ไมเพมไมลด ในขณะทlog n เปนฟงกชนทโต

� มาด log n กบ n จากกฎของโลปตาลจะไดวา 01

)/1)(10ln/1(limloglim ��

����

nn

nnn

ดง

นน log n � n� จากขอบนยอมไดวา 10log n � 10n ดงนน n � 10n

ดงนน 0.5n � 1 � log n � n � 10n

Page 44: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

28 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

ตวอยางท 3-2 จงเปรยบเทยบอตราการเตบโตของ ln9 n กบ n0.1

ใชกฎของโลปตาลไดดงน

0)1.0(

ln189lim

...)1.0(

ln89lim

1.0

ln9lim1.0

)/1)(ln9(limlnlim

1.09

0

1.02

7

1.0

8

)11.0(

8

1.0

9

��

��

��

���

����

n

n

n

nn

n

n

nn

n

n

n

n

nnn

สรปไดวา ln9 n � n0.1

อยากใหนกเรยนลองไปทาตอเพอแสดงใหเหนจรงวา loga n � nb สาหรบจานวนจรง b > 0 และขอใหสงเกตดวยวาฐานของ log จะเปนฐานอะไรกไดทมคามากกวา 1 กทาให loga n � nb

เนองจากเราสามารถเปลยนจากฐานหนงไปอกฐานหนงไดโดยการคณคาคงตวคาหนง ซงกไมทาใหคาของลมตเปลยนไปแตอยางใด

ตวอยางท 3-3 จงเปรยบเทยบอตราการเตบโตของ n10 กบ 2n

จากความรทวา log an � nb แสดงวา lg10n � n แทน lg n ดวย n จะไดวา n10 � 2n

(ออลมบอกไปวา คนในวงการเขาชอบใช lg แทน log ฐาน 2 เนองจากมนเปนฐานทพบบอยในคอมพวเตอร กเลยจะใชบางในเอกสารน)

และในทานองเดยวกนกบตวอยางทแลว อยากใหนกเรยนลองไปทาตอเพอแสดงใหเหนจรงวา na � bn สาหรบจานวนจรง b > 1 จากสองตวอยางขางตนน ขอสรปอตราการเตบโตของฟงกชนทใชมากดงน� logan � nb, b > 0 หมายความวาฟงกชน polylogarithmic โตชากวาฟงกชน polynomial� na � bn , b > 1 หมายความวาฟงกชน polynomial โตชากวาฟงกชน exponential

Page 45: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 29

สญกรณเชงเสนกากบมวธแทนความสมพนธของฟงกชนในแงของอตราการเตบโตอกแบบหนง คอการใชสญกรณเชงเสนกากบ (asymptotic notations) การใชสญกรณในลกษณะนจะชวยทาใหการเขยนบรรยายฟงกชนกระทาไดงาย เนองจากเปนการแทนพฤตกรรมของฟงกชน f(n) เมอ n มคามากๆ อกทงทาใหการจดการฟงกชน (เชนการบวก การหาผลรวม การหาคามาก คานอย และอนๆ ) กระทาไดงายขน เราจะลงในรายละเอยดของสญกรณ 5 ตวดงน �, �, �, � และ � (ขอเนนตรงนหนอยครบวาเรองนยามของสญกรณตางๆ ทจะพดตอไปนนน หนงสอหลายๆ เลมจะใหนยามแตกตางกนไป ขนกบวาผเขยนจะเครยดหรอจจขนาดไหน สาหรบผมเอางายๆ กคอใหจาไวเสมอวาสญกรณทจะใชตอไปนใชกบฟงกชนทใหคาไมตดลบ เพราะเรากาลงพดถงฟงกชนทแทนประสทธภาพของอลกอรทม)

โอเลกเราเรมดวยสญกรณโอเลก เขยนแทนดวย � ซงมนยามดงน

�(g(n)) = ���

���

���

0)()(lim|)(

ngnfnf

n

พดงายๆ กคอวา �(g(n)) กคอเซตของฟงกชนทงหลายทโตชากวา g(n) ดงนนจากตวอยางกอนหนานเราจะไดวา log1000n � �( n0.00001 ) , n1000

� �( (1.0001)n ) เปนตน

โอเมกาเลกในทางกลบกน เรานยามให �(g(n)) กคอเซตของฟงกชนทงหลายทโตเรวกวา g(n) ดงน

�(g(n)) = ���

���

���� )(

)(lim|)(ngnfnf

n

ซงกเหนไดชดเจนวา f(n) � �( g(n)) กตอเมอ g(n) � �( f(n))

ทตาใหญสาหรบกรณทฟงกชนโตดวยอตราเดยวกน เรากมสญกรณใหคอ � ซงมนยามดงน

Page 46: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

30 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

���

���

�����

cccngnfnfng

n,0,

)()(lim|)())((

หรอจะเขยนนยามแบบไมตองยงกบลมตกจะไดแบบน

�(g(n)) = { f(n) | มคาคงตวบวกสามตวคอ c1, c2 และ n0 ททาให c1g(n) � f(n) � c2g(n)เมอ n � n0 }

เขยนซะยดยาวอยางน กเพราะนยามแบบนมองเหนภาพไดงายกวา พจารณารปท 3–2 เราบอกวา f(n) � �(g(n)) กแสดงวา g(n) เปนฟงกชนทกาหนดขอบเขตการเตบโตของ f(n) ทงขอบเขตบนและขอบเขตลาง เมอ n มคามากพอ (คอเมอมคาตงแต n0 เปนตนไป) คา c1 และ c2

เปนแคตวคณ g(n) เพอใหขอบเขตลางและบนมรปแบบการเตบโตคลาย g(n) เพยงแตเอยงลงและขนเลกนอย รปท 3–2 แสดงใหเหนวา f(n) จะไมหลดออกนอกขอบเขตลางและบนนเลยเมอ n � n0 เราเรยก g(n) วาเปนฟงกชนกาหนดขอบเขตทกระชบของ f(n)

n

f (n)

c1 g(n)

n0

c2 g(n)

รปท 3–2 f(n) � �(g(n))

โอใหญโอใหญไมไดมไวเพอใหตรงขามกบโอเลก เราเขยน f(n) � �(g(n)) เพอบอกวา f(n) เปนฟงกชนทโตไมเรวกวา g(n) นนคอ �(g(n)) = �(g(n)) � �(g(n)) คอเปนเซตทรวมฟงกชนทโตชากวาและทโตเทากบ g(n) หรอเขยนเปนนยามไดอกแบบหนงดงน

�(g(n)) = { f(n) | มคาคงตวบวกสองตวคอ c และ n0 ททาให f(n) � cg(n) เมอ n � n0 }

Page 47: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 31

หมายความวาถา f(n) � �(g(n)) แสดงวาการเตบโตของ f(n) จะถกกาหนดขอบเขตดานบนไวดวยลกษณะการเตบโตของ g(n) นนคอเราสามารถหาคาคงตวบวก c ท f(n) � cg(n) แสดงเปนตวอยางไดดงรปท 3–3

n

f (n)

c g(n)

n0รปท 3–3 f(n) � �(g(n))

โอเมกาใหญเรามแบบโตชากวา (�) โตเรวกวา (�) โตเทากน (�) และโตไมเรวกวา (�) กตองปดทายดวยโตไมชากวา นนคอเราเขยน f(n) � �(g(n)) เพอบอกวา f(n) เปนฟงกชนทโตไมชากวา g(n)นนคอ �(g(n)) = �(g(n)) � �(g(n)) คอเปนเซตทรวมฟงกชนทเรวกวาและทโตเทากบ g(n)หรอเขยนเปนนยามไดอกแบบหนงดงน

�(g(n)) = { f(n) | มคาคงตวบวกสองตวคอ c และ n0 ททาให cg(n) � f(n) เมอ n � n0 }

หมายความวาถา f(n) � �(g(n)) แสดงวาการเตบโตของ f(n) จะถกกาหนดขอบเขตดานลางไวดวยลกษณะการเตบโตของ g(n) นนคอเราสามารถหาคาคงตวบวก c ท cg(n) � f(n) แสดงเปนตวอยางไดดงรปท 3–4

Page 48: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

32 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

n

c g(n)

n0

f (n)

รปท 3–4 f(n) � �(g(n))

คณสมบตของสญกรณเชงเสนกากบสญกรณทงหลายทไดนาเสนอมานมคณสมบตทนาสนใจดงนTransitivity :

f(n) � �(g(n)) และ g(n) � �(h(n)) จะไดวา f(n) � �(h(n))f(n) � �(g(n)) และ g(n) � �(h(n)) จะไดวา f(n) � �(h(n))f(n) � �(g(n)) และ g(n) � �(h(n)) จะไดวา f(n) � �(h(n))f(n) � �(g(n)) และ g(n) � �(h(n)) จะไดวา f(n) � �(h(n))f(n) � �(g(n)) และ g(n) � �(h(n)) จะไดวา f(n) � �(h(n))

Reflexivity :f(n) � �(f(n))f(n) � �(f(n))f(n) � �(f(n))

Symmetry :f(n) � �(g(n)) กตอเมอ g(n) � �(f(n))

Transpose symmetry :f(n) � �(g(n)) กตอเมอ g(n) � �(f(n))f(n) � �(g(n)) กตอเมอ g(n) � �(f(n))

Page 49: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 33

ขอใหระวงไวนดหนงวา การเปรยบเทยบฟงกชนสองฟงกชนตามอตราการเตบโตโดยใชสญกรณทกลาวมาน อาจกระทาไดไมเสมอไป อาทเชน n กบ n1+sin(n) เนองจากจานวนยกกาลง 1+ sin(n) มคาแกวงไปมาระหวาง 0 กบ 2 เมอ n มคาเพมขน เปนตน

เราสามารถจดการกบเซตเชงเสนกากบทกลาวมาได หลากหลายรปแบบเพอเปนการลดหรอเปลยนในอยในรปแบบทงายขนไดอาทเชน (จะไมขอแสดงวธพสจนใหด)

กาหนดให f1(n) = O(g1(n)) และ f2(n) = O(g2(n))f1(n) + f2(n) = O(g1(n) + g1(n))f1(n) + f2(n) = O( max( g1(n) , g1(n) ) )f1(n) f2(n) = O(g1(n) g1(n))f1(n)k = O( g1(n)k )

��

��

�� ��

��

n

k

n

kkfOkfO

11)())((

ตวอยางท 3-4 จงแสดงใหเหนจรงวา 2n2 + 500n + 1000log n = O(n2)

ตองหาคา c และ n0 ททาให 2n2 + 500n + 1000log n � cn2 เปนจรงเสมอเมอ n � n0 ให c = 1502 กสบายใจไดเลยวาอสมการนเปนจรงแนเมอ n � 1

ตวอยางท 3-5 จงแสดงใหเหนจรงวา 2n2 + 500n + 1000log n = O(n200)

จากผลของตวอยางท 3-4 2n2 + 500n + 1000log n = O(n2) และความจรงทแทบไมตองแสดงใหเหนวา n2 � n200 = O(n200) ดงนน 2n2 + 500n + 1000log n = O(n200) บางคนเขาเรยกการระบขอบเขตบน ทสงกวาทควรจะเปนเชนในตวอยางน หรอในทางกลบกนขอบเขตลางตากวาทควรจะเปนวา ขอบเขตหลวม (loose bound)

ตวอยางท 3-6 จงแสดงใหเหนจรงวา (n/2) lg (n/2) = �(n lg n)

ตองหาคา c และ n0 ททาให cn lg n � (n/2) lg (n/2) เมอ n � n0 เขยนใหมไดเปน

Page 50: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

34 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

cn lg n � (n/2) lg n – (n/2) lg 2 หารดวย n lg n ตลอดได c � (1/2) – (1/2)(lg 2)/(lg n) ให n = 4 จะไดคา c � (1/2) – (1/2)(lg 2)/(lg 4) = 1/4 ดงนนอสมการขางตนเปนจรงเมอ c = 1/4 และ n0 = 4

ตวอยางท 3-7 จงแสดงใหเหนจรงวา )( 2

1nk

n

k���

ขอนงาย ใครๆ กรวาสตรสาเรจของผลบวกในโจทยคอ n(n+1)/2 = n2/2 + n/2 � (1/2)n2 สาหรบทกๆ n � 0 หรอเราจะพสจนโดยใชกลวธการแยกผลบวก โดยไมตองรสตรสาเรจกไดดงน

� �

� �

� �

)(

)2/(

20

2

212/

2/

1

12/

2/

11

n

n

n

kkk

n

nk

n

k

n

nk

n

k

n

k

��

��

��

��

���

���

����

ตวอยางท 3-8 จงแสดงใหเหนจรงวา )(log1

1n

kH

n

kn ��� �

เราสามารถแยก 11 +12 +…+

1n เปน หลายๆ ชดในลกษณะดงน

�� ��1

1+0 , ��

��1

2+0 +1

2+1 , ��

��1

4+0 +1

4+1 +1

4+2 +1

4+3 , ��

��1

8+0 +1

8+1 +…+1

8+7 , …เขยนใหมไดเปน

� �

� �

� �

)(log1lg

1

2

1

2

11

lg

0

lg

0

12

0

lg

0

12

01

nOn

jk

n

i

n

i ji

n

i ji

n

ki

i

��

���

����

��

��

��

� �

� ��

��

� ทางขวาอาจมจานวนพจนทผลบวกมากกวาทางซาย จงเปนขอบเขตบน

� ตด j ทง ยงคงเปนขอบเขตบน

� 0,12

112

0���

��

����

���

ii

ji

Page 51: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 35

ตวอยางท 3-9 จงแสดงใหเหนจรงวา )(log1

1n

kH

n

kn ��� �

คราวนหาอกแบบโดยการประมาณผลบวกดวยปรพนธ นนคอ

����

��

��

1

1

)()()(n

m

n

mk

n

m

dxxfkfdxxf

สาหรบกรณท f(x) เปนฟงกชนทเพมทางเดยว (monotonically increasing) แตถาเปนฟงกชนทลดทางเดยว (monotonically decreasing) เราจะประมาณไดดงน

�����

��

n

m

n

mk

n

m

dxxfkfdxxf1

1)()()(

เนองจาก 1k เปนฟงกชนลดทางเดยว ndxkk

nn

kln11

12�� ��

ดงนน Hn � 1 + ln n = �(log n)

ตวอยางท 3-10 จงแสดงใหเหนจรงวา � �1

1

���k

n

i

k ni โดยท k เปนคาคงตว

อกวธหนงในการแสดง f(n) � �(g(n)) นอกจากจะใชการหาลมตหรอการหาคาสามคาเพอแสดงขอบเขตกระชบดงทนยามไว กคอการแสดงใหเหนวา f(n) � �(g(n)) และ f(n) � �(g(n))หมายความวา g(n) มลกษณะการเตบโตทเปนทงขอบเขตบนและขอบเขตลางของ f(n) จาก

โจทย เราจะแสดงใหเหนวา � �1

1

���k

n

i

k ni และ � �1

1

���k

n

i

k ni

เรมดวยขอบเขตบนกอน เนองจากภายในผลบวกนน i มคาตงแต 1 ถง n แสดงวา i � n สรปไดวา ik � nk ดงนนเมอรวมทกๆ i ตงแต 1 ถง n ยอมไดวา ��

��

�ni

kni

k ni11

= nk+1 = O(nk+1)

สาหรบขอบเขตลาง ถาเราหาผลบวกของ ik สาหรบทกๆ i ตงแต �n/2� ถง n ยอมไดคาไมมากกวาผลบวกทตองการหา ดงนน

� �����

�n

nikn

ik ii

2/1 ถาเราแทน ik ในผลบวกทางขวาดวย

(n/2)k จะไดวา � � � ���

��

�n

nikn

nik ni

2/2/)2/( � (n/2)k+1 = (1/2)k+1nk+1 = �(nk+1)

Page 52: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

36 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

จากทแสดงใหเหนวา � �1

1

���k

n

i

k ni และ � �1

1

���k

n

i

k ni ดงนน � �1

1

���k

n

i

k ni

ตวอยางท 3-11 จงแสดงใหเหนจรงวา log n! = �( n log n )

เราจะเรมดวยการพสจนวา log n! = �(n log n) จากนยามของแฟกทอเรยล n! = n� (n–1) … 2�1 ขอแทนทกๆ พจนทางขวาดวย n จะไดวา n! � nn หาคา log ได log n! � n log n = �(n log n)

ตอมาจะพสจนวา log n! = �(n log n) จากนยามของแฟกทอเรยล n! = n� (n–1) … 2�1 คราวนขอแทนพจน n, (n–1), …, (n/2) ดวย (n/2) และแทนพจน (n/2–1), (n/2–2), …, 2, 1 ดวย 1 จะไดวา n! (n/2)n/2 หาคา log จะได log n! (n/2) log (n/2) = �(n log n) (จากตวอยางท 3-6)

จากขอบเขตบนและลางทแสดงใหเหนจรงแสดงวา log n! = �( n log n )

ตวอยางท 3-12 จงแสดงใหเหนจรงวา loga n = �( logb n ) สาหรบคาคงตว a, b > 1

เนองจากเราสามารถแปลงฐานของ log ได จาก loga n = (logb n) / (logb a) = �( logb n )

ตวอยางขางบนนตองการชใหเหนวาเรามกจะไมใสฐานของ log ในสญกรณเชงเสนกากบเพราะวานอกจากจะสะดวกแลว ยงไมมผลใดๆ ดวย ดงนนในเชงเสนกากบแลว log1.1 n กบ log100 n มอตราการเตบโตเทากน

ตวอยางท 3-13 จงแสดงใหเหนจรงวา log na = �( log n ) สาหรบคาคงตวบวก a

เหนไดชดวา log na = a log n = �( log n )

นกเปนอกตวอยางทตองการแสดงใหเหนวาเลขชกาลงภายใน log นนไมมความหมายใดๆ ตออตราการเตบโต ดงนน log n1000 กบ log n มอตราการเตบโตเทากน (อนนจะขดกบความรสกในครงแรกทพบ แตขอใหเขาใจดวยวามนเปนพฤตกรรมของฟงกชนเมอ n มคามาก)

ตวอยางท 3-14 จงแสดงใหเหนจรงวา alg n �( alog n )

Page 53: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 37

หวงวาทกคนคงไมลมเอกลกษณ an bb na loglog� ดงนน alg n = nlg a ในขณะท alog n = nlog a

เนองจาก lg n ไมเทากบ log n ดงนน nlg a �( nlog a ) แสดงวา alg n �( alog n )

ตวอยางขางบนนตองการเนนวาฐานของ log ทเปนเลขชกาลงของพจนอน จะมาตดทงไมโดยพจารณาไมได ดงนนกลาวโดยสรปวา ถาจะตดไมพจารณาฐานของ log กขอใหระวงๆ กนหนอย

ตวอยางท 3-15 จงแสดงใหเหนจรงวา )()(20

nOhOnk

hh

����

����

���

โดยท k = �lg n �

(ผลบวกขางบนนคอประสทธภาพของการสราง binary heap โดยใชวธการคอยๆ percolate down ยอนจากขอมลในแถวลาดบตวสดทายมายงตวแรก) เราสามารถดงโอใหญซงอยภายในผลบวกออกมาอยนอกผลบวกได จากนนจะทาใหเราจดการกบผลบวกไดงายขน อกทงเมอเรารวาคาตอบจะเปนโอใหญซงเปนขอบเขตบน ทาใหเรากลาทจะขยายผลบวกใหรวมพจนจานวนมากขนเพอลดรปผลเฉลยทไดใหสวยขน ดงน

)()2(22

)(2 000

nOnOhnOhnOhOn

hh

k

hh

k

hh

����

��

���

����

��

��

��

���

����

���

��

����

�����

���

ขอใชเครองหมาย = แทน ����บางคนอาจสงเกตเหน และเกดความสงสยมาตงแตอานตวอยางทผานมาแลววา ตอนแรกกนยามใหสารพด , �, �, � และ � เปนเซต แลวกเขยนสวยๆ มาตลอดเชน f(n) � �(g(n))แลวอยดๆ กมาใชเครองหมาย = แทน � ในสองสามหนาทผานมา ซงนกเรยนมธยมกเหนชดๆ วาผด ยอมรบครบวามนผด แตกยงจงใจจะใชเครองหมาย = ครบ ทงนกเพราะวาผมเหนมนแตไหนแตไรแลวละครบวาเขาใช = กนทงนน จงจะขอใชผดดวยคน เนองจากมนชนตาและสะดวกด (ไมตองเปลยนฟอนตบอย) แตมนกมเหตผลบางเหมอนกนวาทาไมเขาถงใชมนผดแบบน ลองอานเหตผลท Donald Knuth (ปรมาจารยทางคอมพวเตอร) เขยนไวในหนงสอ Concrete Mathmematic ดงน

� ใชมานาน กเลยชน

Page 54: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

38 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

� ในวงการคอมพวเตอรเราใชเครองหมาย = กนผดๆ อยแลว (เชน A = B มหลายความหมายในภาษาคอมพวเตอร) ขอใชผดอกสกครงจะเปนไร

� ปกตเราอาน f(n) = �(g(n)) วา f(n) เปนโอใหญของ g(n) คออาน "=" วา "เปน" ซงกเปนลกษณะของการเทากบทางเดยว (เชนลงเปนสตว แตไมไดหมายความวาสตวเปนลง) หรออกนยหนง f(n) = �(g(n)) ไมไดหมายความวา �(g(n)) = f(n)

� (อนนเขาทาหนอย) การใช = จะทาใหเราจดการกบนพจนทมสญกรณเชงเสนกากบไดอยางเปนธรรมชาต และงายขน ดงทจะกลาวตอไป

การใชสญกรณเชงเสนกากบในสมการโดยทวไปเราเขยนบรรยายฟงกชนแบบละเอยดครบถวน เชน f(n) = 2n3 + 3n +7.5/n แตในบางครง เราอาจละเลย ไมอยากลงรายละเอยดพจนทไมคอยสาคญ เชนการใชเครองหมาย � แลวตดสวนทคดวาไมสาคญทง เชนเขยนเปน f(n) � 2n3 หรออาจใชสญกรณเชงเสนกากบชวยกจะไดความหมายทมากกวาเครองหมาย � เชนเขยนเปน f(n) = 2n3 + �(n) เปนการบอกวา f(n) = 2n3

+ g(n) โดยท g(n)� �(n) การใชเครองหมาย = นถงแมจะผดความหมาย แตจะชวยใหเราเขาใจความหมายของ f(n) ไดงายขน กลาวคอ f(n) กคอ 2n3 บวกอะไรบางอยางทมอตราการเตบโตเทากบ n ใหสงเกตวาใชสญกรณเชงเสนกากบกบสวนของฟงกชนทมอตราการเตบโตทชากวา สวนทโตเรวกวากยงเขยนเหมอนเดม นนคอเราคงไมเขยน f(n) = �(n3) + 3n +7.5/n เพราะเขยนแบบน 3n +7.5/n ไมเหนมความหมายใดๆ เนองจากมามนโตชากวา n3 ดงนนจะเหมอนกบเขยน f(n) = �(n3)

บางคนอาจอยากถามวา แลวเราไปหาเรองเขยนแบบคราวๆ ทาไม ถาเรารตวฟงกชนจรงๆ อยแลว อนนถกตองถาเรารของละเอยด กไมตองทาใหมนหยาบ แตทเราจะใชสญกรณเชงเสนกากบในสมการในลกษณะนนน กสาหรบกรณทเราไมรของละเอยด หรอถารของละเอยดกตองเขยนกนยดยาวมากๆ เชนจากความรในอดตเกยวกบเรองจานวนฮารมอมค Hn มนยามวา

Hn = 11 +

12 +…+

1n

ทคนปรารถนาอยากไดกคอรปแบบปดของ Hn แตกหาไมได ทจะพอมใหเหนกเชน

Hn = ln n + � + 1

2n –1

12n2 +�n

120n4

Page 55: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 39

โดยท 0 < �n < 1 และ � คอคาคงตวออยเลอรมคาเทากบ 0.5772156649…

แตถาเรากาลงสนใจวา Hn มแนวโนมการเปลยนแปลงคาอยางไร กอาจเขยนไดดงน

Hn = ln n + � + �(1/n)

เพอชใหเหนไปเลยวาพจนหลงๆ ทไมไดเขยนใหดนนโตไมเกน 1/n หรอจะเขยนแบบนHn = ln n + �(1)

กไมผดเหมอนกน (แตละเอยดนอยลงหนอย) หรอสดๆ เลยกเขยนแบบนกยงได

Hn = �(log n)

และทเราจะพบบอยมากในการใชสญกรณเชงเสนกากบในสมการ กคอการเขยนเปนสวนหนงของความสมพนธเวยนเกด เพอแทนประสทธภาพของอลกอรทม ตวอยางงายๆ เชนการเรยงลาดบแบบผสาน (mergesort) นนเราแบงจานวนขอมลออกเปนสองสวนเทาๆ กน แลวไปเรยงลาดบทงสองสวนใหเสรจกอนแลวจงมาผสานกน ถากาหนดให t(n) คอเวลาในการเรยงลาดบขอมลจานวน n ตวแบบผสาน เราจะเขยนความสมพนธเวยนเกดไดเปน

t(n) = 2t(n/2) + เวลาในการผสาน

กมาหากนวาเวลาในการผสานใชเวลาทงสนเทาไร เปน n–1 ? เปน n ? เอะหรอวาไมใชทงสองเพราะอาจมคาคงตวคณขางหนาดวยกได แตขอใหสงเกตวาไมวาจะเปน n หรอเปน n–1 หรอวามคาคงตวคณอยขางหนากตาม เราเขยนดงนได

t(n) = 2t(n/2) + �(n)

ซงหมายความวาการผสานขอมลนนใชเวลาทเปนฟงกชนซงโตแบบเชงเสน หลงการวเคราะหแลวกจะได t(n) ในรปแบบของสญกรณเชงเสนกากบดวย

การใชสญกรณเชงเสนกากบจากทไดกลาวมาเกยวกบความหมายของสญกรณเชงเสนกากบตางๆ บางคนอาจรสกวาสญกรณเหลานฟยเฟอย บางตวนยามไดจากตวอน ถงแมวาจะดวาฟมเฟอย เชน O กบ � เพราะมนคกนถา f(n) = O(g(n)) กตอเมอ g(n) = �(f(n)) เปนตน แตเรามกใชมนในความหมายทแตกตางกน เพอใหเขาใจงายขน อาทเชนประโยคตางๆ ตอไปน

Page 56: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

40 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

� "Insertion sort ใชเวลาในการเรยงลาดบขอมล n ตวเปน O(n2)" หมายความวาเวลาการทางานเปนฟงกชนทโตไมเรวกวา n2

� "Insertion sort ใชเวลาในการเรยงลาดบขอมล n ตวเปน �(n)" บอกวาอยางนอยInsertion sort กตองใชเวลาทเปนฟงกชนทโตแบบเชงเสน

� "อลกอรทมการเรยงลาดบขอมล n ตวทใชการเปรยบเทยบขอมลเปนหลก ยอมใชเวลาเปน �(n log n)" หมายความวาถาเราคดอลกอรทมการเรยงลาดบอนหนงทใชเวลาเปนO(n log n) แสดงวาเราไดพบวธทเรยงลาดบทมอตราการเตบโตของเวลาการทางานทดทสดแลว

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

อกประเดนทเราไดพดถงมากอนหนาน กคอการใชสญกรณเชงเสนกากบมาเปนตวบอกพฤตกรรมการทางานของอลกอรทม ถาอลกอรทม A ใชเวลาการทางานเปน �(n2) กแสดงวาเรารลกษณะการเตบโตของเวลาการทางานทแนนอนวาเปนฟงกชนยกกาลงสอง แตถาบอกวาอลกอรทม B ใชเวลาการทางานเปน O(n5) กเพยงรวาเวลาการทางานมลกษณะการเตบทไมเลวกวาn5 ซงของจรงอาจเปนเชงเสนกได (เพราะเพยงบอกแคขอบเขตบน) ถงแมวาเราจะรวาอลกอรทมของเรามประสทธภาพเปน �(n2) เรากคงไมไปเทยวบอกชาวบานวาอลกอรทมของเรานนเปน O(n10) ซงกไมผด ไมไดโกหก แตกไมนาทาจรงไหม ? ดงนนโดยทวไปถาเราสามารถวเคราะหประสทธภาพไดเปน � จะเปนการบรรยายพฤตกรรมทแนนอนกวา แตถาเราวเคราะหโดยไมรขอบเขตลาง (คอสรปเปน �ไมได) เรากควรเปนนกการตลาดทดพอทจะบอกประสทธภาพทเปนขอบเขตบนทตาสดเทาทจะตาได ตวอยางเชนการวเคราะหวธสราง binaryheap ดวยการคอยๆ percolate down ขอมลเพอปรบ heap (หวงวาคงยงจาไดในวชาโครงสรางขอมล) ถาเราวเคราะหแบบลวกๆ กคอ percolate down ครงละ O(log n) ตองทา n ครงรวมเปนO( n log n) ซงกเปนคาตอบทไมผด เพราะเปนขอบเขตบน (จะบอกวา O(n5) กไมผดเชนกน)แตมนบงบอกถงความเลวของวธทคดขน แทนทจะโฆษณาความด ทงๆ ทถาเราวเคราะหละเอยดหนอยดงททาในตวอยางท 3-15 กจะพบวาแทจรงแลวมประสทธภาพเปน O(n) (แตจะวเคราะหใหละเอยดอกสกเทาใด กคงไมทาใหขอบเขตบนตากวา O(n) อกแน)

Page 57: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 0:11 : [email protected] บทท 3 การเตบโตของฟงกชน 41

ขอปดทายดวยเรองการใชสญกรณเชงเสนกากบอกเรองหนง มาดตวอยางการเขยนในบรรทดขางลางนวาแปลกๆ หรอไม

f(n) = n2 = �( 5n2+ 3n + 3 )

ทเขยนขางบนนกไมมอะไรผด (นอกจากการใช = ) แตมนจะแปลกตรงทวาจะไมคอยเหนใครเขาเขยนกน ทงนกเพราะวาจดประสงคของการใชสญกรณเหลานกเพอการบรรยายฟงกชนทยงดวย กลมของฟงกชนทอานงายกวา บรรยายอตราการเตบโตทดกวา ดงนนสวนใหญเราจะเหนฟงกชนงายๆ อยในวงเลบของสญกรณเชน g(n) = 5n2 + 3n +3 = �(n2) เพราะเราตองการบรรยายฟงกชน g(n) ทยงดวย � เพอบอกวามการอตราการเตบโตเทากบ n2 ทตความไดงายๆ

แบบฝกหด1. จงอธบายความหมายของ O(1) �(1) และ �(1)

2. ถา f1(n) = �( g1(n) ) และ f2(n) = �( g2(n) ) แลว f1(n) + f2(n) = �( min{ g1(n), g2(n) } ) หรอวา f1(n) + f2(n) = �( max{ g1(n), g2(n) } ) พสจนใหดดวย

3. ถา t1(n) = O(f(n)) และ t2(n) = O(f(n)) ขอใดตอไปนเปนจรงก) t1(n) + t2(n) = O(f(n))ข) t1(n) – t2(n) = o(f(n))ค) t1(n) / t2(n) = O(1)ง) t1(n) = O(t2(n))

4. จงเรยงลาดบฟงกชนขางลางนตามอตราการเตบโตn 3n n2 + log n n0.01 log log n n!

n / log n (1.01)n 106 3–n nn (log n)10

5. จงหาความสมพนธของ f(n) และ g(n) ในขอตางๆ ขางลางนวา f(n) = O(g(n) หรอวา g(n) = O(f(n))ก) f(n) = (n2–n) / 7 g(n) = 0.5nข) f(n) = n0.03 g(n) = lg (n2+3n)

Page 58: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

42 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 0:11 : [email protected]

ค) f(n) = n log n g(n) = n n ง) f(n) = 9( log n )3 g(n) = 9 log n3

6. จงหาวาขอยอยตอไปน จรงหรอเทจก) n log n = O( n1.5)ข) n + log n = O(n)ค) 2n2 + n = O( n + n n + 20n)ง) n log n = O(n)จ) n + n = O( n log n )ฉ) 2n = �( 2n+1)ช) n! = �( (n+1)! )

7. จงพสจน หรอพสจนแยงขอยอยตอไปนก) nlog n = O( (log n)n )ข) nlog log log n = O( (log n)! )ค) (n!)! = O( ((n–1)!)! ((n–1)!)n! )

8. กาหนดให f(n) และ g(n) เปนฟงกชนทใหคาบวก จงพสจน หรอพสจนแยงขอยอยตอไปนก) f(n) = �(f(n/2))ข) f(n) = O( (f(n))2 )ค) f(n) + o(f(n)) = �(f(n))ง) ถา f(n) = O(g(n)) แลว 2f(n) = O(2g(n) )จ) ถา f(n) = O(g(n)) แลว log f(n) = O( log g(n) )

9. จงพสจนวาสาหรบจานวนเตมบวก k ใดๆ )log(lg 1

1nnOii k

n

i

k �

��

10. จงพสจนวา � � )()/lg(1

nOinn

i��

Page 59: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] 43

บทท 4

ขอยาอกทวาผมอยากใหนกเรยนทเรยนวชานไป มความสามารถในการออกแบบอลกอรทมทมประสทธภาพด เราจะไดเรยนแนเกยวกบการออกแบบ แตในบทนเราจะมาวากนเรองการวเคราะหเพอใหรถงประสทธภาพของอลกอรทมทเราไดออกแบบไว โดยจะขอเนนเฉพาะประสทธภาพเชงเวลาการทางานเปนหลก ซงหาไดโดยตรงจากปรมาณของคาสงทถกใชงานในโปรแกรม และเราจะวเคราะหอลกอรทมเชงเสนกากบ หมายความวาจะเขยนฟงกชนทแทนประสทธภาพของอลกอรทมดวยสญกรณเชงเสนกากบ เพราะวาเปนการวเคราะหงาย และเพยงพอทจะใชในการเปรยบเทยบอลกอรทม เราจะเรมดวยเรองของคาสงมลฐานและคาสงมาตรเวลาซงเปนตวกาหนดประสทธภาพ ตามดวยการวเคราะหรปแบบการทางานของโปรแกรมอนไดแก การทางานเปนลาดบ คาสง if…then…else คาสงทเปนวงวน และการทางานเปน recursive ปดทายดวยประเภทของการวเคราะห อนไดแกกรณเลวสด กรณเฉลย และกรณถวเฉลย

คาสงมลฐานการวเคราะหประสทธภาพเชงเวลาของอลกอรทม มหลกการกคอการนบจานวนคาสงทถกใชงาน แนนอนวาแตละคาสงทเราเขยนบรรยายอลกอรทมนนคงใชเวลาทางานจรงในทางปฏบตไมเทากน แตสงทเราตองการกคอคาสงตางๆ ทเรานบนนตองเปนคาสงมลฐาน คอเปนคาสงพนๆ งายๆ ใชเวลาการทางานสนๆ โดยเฉพาะอยางยงตองทางานเสรจไดโดยไมขนกบขนาดของขอมลทประมวลผล นนคอใชเวลาเปน �(1) ลองมาดตวอยางรหสเทยมของอลกอรทมการ

การวเคราะหอลกอรทม

Page 60: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

44 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

ทดสอบจานวนเฉพาะตอไปน (ทใชทฤษฎบทของวลสนทกลาวไววา p เปนจานวนเฉพาะ กตอเมอ (p–1)! � –1 (mod p) )

01: isPrime( p )02: {03: if ( ((p–1)! + 1) % p == 0 ) then return true;04: else return false;05: }

เราจะเหนไดวาคาสงเพอคานวณ ((p–1)! + 1) % p นนเขยนงายแตใชเวลาการทางานทแปรตามคาของ p ถงแม p จะมคาไมใหญมากสก 20 บต แตการคานวณขางบนนกใชเวลามหาศาล ดงนนคาสงดงกลาวไมใชคาสงมลฐาน จะมานบการทางานในคาสงนเปน "หนง" คาสงกเหนจะไมเปนธรรมแน ในการวเคราะหเรากควรจะเขยนรหสเทยมใหประกอบดวยแตคาสงมลฐานกจะเปนการด แตอยางไรกตามบางครงการเขยนคาสงสนๆ แตทานานๆ คอไมใชคาสงมลฐานนนกอาจจะกระทดรดไดใจความมากกวา ดงนนจงเปนสงทผวเคราะหจะตองตระหนกไวดวย

กลาวโดยสรปกคอการวเคราะหประสทธภาพเชงเวลาของอลกอรทมนน เราตองแปลงคาสงตางๆ ใหเปนคาสงมลฐานเสยกอน แลวหาฟงกชนของจานวนครงทคาสงมลฐานตางๆ ถกใชงาน ตามขนาดของขอมลขาเขาทไดรบ

ตวอยางท 4-1 จงหาวเคราะหการเรยงลาดบแบบเลอก (selection sort)01: SelectionSort( A[1..n] )02: {03: for (i=n downto 2) {04: j = indexMax( A[1..i] );05: Swap( A, i, j );06: }07: }

อลกอรทมนอาศยการหาคามากสดในแถวลาดบ จากนนสลบกบตวหลงสดในแถวลาดบนน กระทาเชนนไปเรอยๆ โดยลดขนาดของแถวลาดบทพจารณาลงเรอยๆ จนเหลอเพยง 1 ตวกเสรจ จากอลกอรทมนเหนไดวาบรรทดท 4 ไมใชคาสงมลฐาน (แตเขยนบรรทดเดยวแบบนอาจเขาใจกวา) ถาเขยนเปนกระจายเปนคาสงมลฐานทงหมด จะไดเปนรหสเทยมดงน (ใหสงเกตวาเราไมตองไมกงวลกบคาสง swap มาก ถงแมวาเราจะรวา 1 swap โดยทวไปเทากบ 3 moves กตาม เพราะ swap ในทนกเปนคาสงมลฐานเชนนน ไมตองไปแปลงใหมนเปนมลฐานยงขน)

Page 61: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 45

01: SelectionSort( A[1..n] )02: {03: for (i=n downto 2) {04: j = 1;05: for (k=2; k<=i; k++)06: if ( A[j] < A[k] ) j = k;07: Swap( A, i, j );08: }09: }

ในทนเราจะนบใหไดเปนฟงกชนของ n (n คอจานวนขอมลในแถวลาดบ) สรปการนบไดดงน

� บรรทดท 3 คาสง for นอกสด ถกใชงาน n ครง เพราะตองการลดคา i จาก n จนเหลอแค 2 แตในรอบสดทายจะลดเปน 1 แลวผดเงอนไขจงหลดออกจาก loop (เพราะฉะนนจะทาคาสงตางๆ ภายใน for loop นอกเปนจานวน n–1 ชด)

� บรรทดท 4 คาสง j = 1 ถกใชงาน n–1 ครง� บรรทดท 7 คาสง Swap ถกใชงาน n–1 ครง� บรรทดท 5 คาสง for วงใน ถกใชงาน �

�� nii

2 = n(n+1)/2 – 1 ครง

� บรรทดท 6 คาสง if ในสด ถกใชงาน ���

nii

2)1( = n(n–1)/2 ครง

สรปแลวมคาสงมลฐานถกใชงานทงสน n + (n–1) + (n–1) + n(n+1)/2 – 1 + n(n–1)/2 เทากบเทาไรลองยบใหเหลอนพจนสวยๆ หนอยกแลวกน เอะลมไป ไมตองไปเสยเวลายบหรอก กบอกไวตงแตตนบทแลววาเราจะวเคราะหใหอยในรปของสญกรณเชงเสนกากบ ดงนนผลทไดกคอใชเวลาเปน �(n2) อนนใชความรทวา �(f(n)+g(n)) = �(max(f(n), g(n))) (ลองพสจนด)

ถงตรงนกคงรสกวา หนง โดนหลอกใหคดมากคดละเอยด แลวตอนหลงกมาใชสญกรณเชงเสนกากบเตะความละเอยดทงไปหมด กบสอง โลงอกในสงทเราละเลยไปหลายจดในตอนนบคาสงเพราะในทสดกไมมผล อาทเชนถาจะคดใหละเอยดแลวการทางานในคาสง if ตวในสดนนใชเวลาเทาใดยอมขนกบผลของการเปรยบเทยบดวย หรอเรอง 1 swap เทากบ 3 moves เหลานลวนเปนสงทไมตองลงในรายละเอยดมาก เพราะสญกรณเชงเสนกากบไมสนใจอยด

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

Page 62: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

46 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

คาสงมาตรเวลาจากทแสดงใหดในตวอยางทผานมานนพบวา หลายคาสงในรหสเทยมทเขยนขนนน ไมไดไปมสวนเปนตวกาหนดอตราการเตบโตของเวลาการทางานเอาเลย แตเรากตองเสยเวลาไปคดนบจานวนครงทมนถกใชงานอยด แลวกมาถกเขยทงในตอนหลง เพอลดภาระเหลาน กอนจะเรมนบ เราควรพจารณาเสยกอนวาคาสงไหนในอลกอรทม ทเปนตวกาหนดเวลาการทางานโดยรวม เราเรยกคาสงประเภทนวาเปนคาสงมาตรเวลาของอลกอรทม (ซงมไดมากกวาหนงคาสงในอลกอรทม) คาสงมาตรเวลาเปนคาสงทถกใชทางานมากทสดในอลกอรทม คอเวลาการทางานจะแปรโดยตรงตามจานวนครงทคาสงมาตรเวลาถกใชงาน จากตวอยางท 4-1 นนคาสง if ทอยวงวนในสด หรอคาสง for วงในจะเปนคาสงมาตรเวลาของอลกอรทมน (แตอยาไปเลอกคาสง j = k หลง if เพราะมนอาจไมถกใชงานเลยกได) เราจงสามารถนบเฉพาะจานวนครงทคาสงมาตรเวลาถกใชงานกเพยงพอในการวเคราะห

การวเคราะหรปแบบการทางานทผานมาเรากไดคนกบการนบคาสงกนมาบางแลว ในหวขอนเราจะมาพจารณากนเปนกรณๆ ไป อนไดแก การทางานแบบลาดบ คาสง if…then…else คาสงวงวน for, while และการเรยกแบบเวยนเกด (recursive calls)

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

ตวอยางท 4-2 กาหนดใหอลกอรทม A ประกอบดวยการทางานของชดคาสง P1 ตามดวยชดคาสง P2

Page 63: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 47

� ถา P1 และ P2ใชเวลาการทางานเปน �(n) ทงสองชดจะไดวา A มเวลาการทางานเปน �(n)+ �(n) = �(n)

� ถา P1 และ P2ใชเวลาการทางานเปน �(n) และ �(n) ตามลาดบจะไดวา A มเวลาการทางานเปน �(n)+ �(n) = �(n)

� ถา P1 และ P2ใชเวลาการทางานเปน �(n) และ �(n2) ตามลาดบจะไดวา A มเวลาการทางานเปน �(n)+ �(n2) = �(n2)

� ถา P1 และ P2ใชเวลาการทางานเปน �(n2) และ �(n) ตามลาดบจะไดวา A มเวลาการทางานเปน �(n2)+ �(n) = �(n2)

จะเหนไดวาในแตละกรณนน เราจะเลอกตวทมภาระการทางานทมอตราการเตบโตทมากกวาเปนผลลพธ ขอใหสงเกตกรณทสองท �(n)+ �(n) = �(n) นนเพราะวามขอบเขตบนของเวลาการทางานเทากน และขอบเขตลางของ P1

นนสงกวาจงตองใชขอบเขตลางของ P1 เปนผลลพธ

คาสง if … then … elseกาหนดใหชดคาสง P1 , P2, และ P3 ใชเวลาการทางานเปน t1, t2 และ t3 ตามลาดบ ดงนนคาสง

if P1 then P2 else P3

ยอมใชเวลา t โดยท t1+ min( t2, t3 ) � t � t1+ max( t2, t3 ) หากพจารณาในรปของสญกรณเชงเสนกากบแลว การจะไดผลลพธเปน � กตองมนใจวาขอบเขตบนและลางมอตราการเตบโตเดยวกน ในกรณไมเทากคงไดผลลพธในรปของ �

ตวอยางท 4-3 กาหนดให ชดคาสง P1 , P2, และ P3 ใชเวลาการทางานเปน �(n2), �(nlogn) และ �(n) ตามลาดบ คาสง if P1 then P2 else P3 ยอมใชเวลาเปน �(n2) เพราะเวลาทใชในการตดสนหลง if นนใชเวลาทโตเรวกวาชดคาสงหลง then และ else

ตวอยางท 4-4 กาหนดให ชดคาสง P1 , P2, และ P3 ใชเวลาการทางานเปน �(n), �(nlogn) และ �(n) ตามลาดบ คาสง if P1 then P2 else P3 ยอมใชเวลาเปน �(nlogn) เพราะเปนสวนทโตเรวกวาใคร

Page 64: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

48 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

ตวอยางท 4-5 กาหนดให ชดคาสง P1 , P2, และ P3 ใชเวลาการทางานเปน �(n), �(nlogn) และ �(nlogn) ตามลาดบ คาสง if P1 then P2 else P3 ยอมใชเวลาเปน �(nlogn) เพราะเปนสวนทโตเรวกวาใคร อกทงไมสามารถสรปขอบเขตลางได

วงวนแบบ forวงวนแบบ for เปนวงวนทวเคราะหงาย เพราะโดยปกตผเขยนจะระบอยางเดนชดวาจะหมนอยในวงวนกรอบ ถาชดคาสงภายในวงวนใชเวลา ti ในการทางานรอบท i และวงวนนหมนทางานเปนจานวน m รอบ การทางานทงหมดยอมเทากบ t1 + t2 + … + tm เราควรวเคราะหการทางานของชดคาสงภายในวงวนกอนวาเปนเทาไร ซงนอกจากจะแปรตามขนาดของขอมลขาเขาแลว อาจจะแปรตามหมายเลขรอบททางานดวย แลวจงนามารวมกนเปนประสทธภาพโดยรวม

ตวอยางท 4-6 จงวเคราะหอลกอรทมการเรยงลาดบแบบเลอกตอไปน01: SelectionSort( A[1..n] )02: {03: for (i=n downto 2 ) {04: j = indexMax( A[1..i] );05: Swap( A, i, j );06: }07: }

จะพบวาบรรทดท 4 ใชเวลา �(i) (เพราะตองหาตวมากสดของขอมลทม i ตว) บรรทดท 5 ใชเวลา �(1) ดงนนชดคาสงในวงวน for (บรรทดท 4 และ 5) ใชเวลาทงสน �(i)+ �(1) = �(i) เมอตองทาในวงวน for ทงสน n–1 รอบ จะไดเวลาโดยรวมเปน

� �2

221

2)1(

)( nnn

iin

i

n

i���

���

��

��

��

���� ��

��

ตวอยางท 4-7 จงวเคราะหอลกอรทมตอไปน01: for (i=1 to m)02: for (j=1 to m)03: s+= A[i][j];

Page 65: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 49

อลกอรทมนมวงวน for สองวงซอนกน คาสงภายในสดใชเวลาเปน �(1) การวเคราะหโดยทวไปจะเรมทวงในสดกอน แลวคอยๆ นาผลจากวงในมารวมกนเปนผลของวงนอก กระทาเชนนไปเรอยๆ จนถงวงนอกสด ดงน

� �2

111 11 1)(1)1( mmm

m

i

m

i

m

i

m

j

m

i

m

j��

��

��

�����

���

���

���� ��� ���

��� �� �

ตวอยางท 4-8 จงวเคราะหอลกอรทมตอไปน01: for (i=1 to m)02: for (j=1 to i)03: s+= A[i][j];

ตวอยางนคลายตวอยางทแลว ตางๆ ตรงทวงวน for ในบรรทดท 2 จบคา j ท i วเคราะหเวลารวมไดดงน

� �2

1111 11 1)()(1)1( mmmi

m

i

m

i

m

i

m

i

i

j

m

i

i

j��

��

��

������

���

���

�� ���� ���

���� �� �

� �2

2/2/11 11 1 22)(1)1( mmmi

m

mi

m

mi

m

i

m

i

i

j

m

i

i

j��

��

��

����

���

����

���

���

�� ���� ���

���� �� �

เปนการหาทงขอบเขตบนและลางของเวลารวม ซงเหมอนกนแสดงวาเวลารวมเปน �(m2)(หรอจะใชการหาผลบวกไปตรงๆ �

���

� ���

��

����� ��

�� 2)1()()( 11

mmii mi

mi = �(m2) กไมผด)

ตวอยางท 4-9 จงวเคราะหอลกอรทมตอไปน01: for (i=2 to m–1)02: for (j=3 to i)03: s+= A[i][j];

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

� � � � � �221

2

1

2

1

2 3)()1( mmmii

m

i

m

i

m

i

i

j������

��

��

����� ����

� �

Page 66: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

50 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

ตวอยางท 4-10 จงวเคราะหอลกอรทมตอไปน01: Dummy( G(V,E))02: {03: c = 0;04: for (each vertex u in V )05: for (each vertex w adjacent to u )06: ++c;07: return c;08: }

ตวอยางนมวงวนแบบ for ทไมตรงไปตรงมานก เราเหนวงวนสองวงซอนกน กจะมความรสกวาอยากเขยนผลบวกซอนกนสองชน เหนชดวาวงวนนอกจะหมนเปนจานวนรอบเทากบจานวนจดของกราฟ สวนวงในนนจะหมนเทากบจานวนเสนเชอมทตอกบจดทเลอก นนคอบรรทดท 6 ซงเราเลอกเปนคาสงมาตรเวลา (เหนดวยไหม ?) ถกใชงานเปนจานวนครงเทากบผลบวกของดกรของทกๆ จดในกราฟ หรอเทากบสองเทาของจานวนเสนเชอมนนเอง (จากความรในทฤษฎกราฟ) ดงนนใชเวลาทงหมดเปน �( |E| )

หยดกอน รสกวาคาตอบของตวอยางขางบนนจะมอะไรผดหรอเปลา ! การเลอกบรรทด 6 เปนคาสงมาตรเวลาอยางเดยวกอาจจะไมคอยถกตองนก เพราะถาทกๆ จดในกราฟไมตอกบจดอนเลย (ซงกคอกราฟทไมมเสนเชอมเลย) กแสดงวาไมเคยมาทาบรรทดท 6 เลย (ใชเวลาเปน 0!!)ดงนนเราตองสนใจนบคาสงมาตรเวลาอนดวย ซงกคอคาสง for ในบรรทดท 4 ดวย เพราะอยางนอยกตองดทกๆ จดของกราฟ (คาสง for ตรงนกเหนชดวาอลกอรทมนตองเปน �( |V| ) ดงนนอลกอรทมนใชเวลาเปน O(|V| + |E| )

วงวนแบบ whileการวเคราะหวงวนแบบ while นนจะตองอาศยการสงเกตมากหนอย เพราะจานวนรอบททานนไมไดระบอยางชดเจนเหมอนอยางวงวนแบบ for เราตองดเงอนไขทจะหลดจากวงวน whileแลวหาวาตวแปรทมผลตอเงอนไขนมการเปลยนแปลงคาอยางไร จะขอยกตวอยางดงตอไปน

ตวอยางท 4-11 จงวเคราะหอลกอรทมตอไปน01: while ( n > 0 )02: n = � n / 2 �;

Page 67: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 51

ใหสงเกตวา วงวนนจะเลกทางานเมอ n � 0 กตองมาดวาคาของ n เปลยนแปลงอยางไร คาของ n นนลดลงทละครง (ปดเศษทง) กแสดงวา n จะตองจบลงทศนยอยางแนนอน (เปนทรกนวา nจะมคาเรมดวยจานวนไมตดลบนะ) การทมคาลดลงทละครงนน n ในรอบท k ยอมมคา n / 2k

กอนท n จะมคาเปนศนยแลวเลกทางานนน n กตองเทากบ 1 ดงนนรอบททาให n มคาเปน 1 กคอ k = lg n ดงนนเวลาการทางานเปน �( lg n )

ตวอยางท 4-12 จงวเคราะหอลกอรทมตอไปน01: i = 1; j = n;02: while ( i < j ) {03: i = i+3;04: j = j–5;05: }

วงวนนทางานตราบเทาท i < j โดยท i มคาเรมตนทนอยกวา j i เพมทละสาม j ลดลงทละหาแสดงวาจะตองมชวงท i � j แลวหลดจากวงวนแน และคาของ i และ j จะเขยบเขาหากนทละ 8แสดงวา จานวนรอบทหมนในวงวนมคาอยางมาก n/8 รอบ ดงนนเวลาการทางานเปน �( n )

ตวอยางท 4-13 จงวเคราะหอลกอรทม insertion sort ตอไปน01: Insertion_Sort( A[1..n] )02: {03: for (j = 2 to n) {04: key = A[j]05: i = j–106: while (i>0 and A[i]>key) {07: A[i+1] = A[i]08: i = i–109: }10: A[i+1] = key11: }12: }

เรามาสนใจกนทวงวนแบบ while ในบรรทดท 6 ถง 9 กอน ชดคาสงภายในวงวนใชเวลา �(1) วงวนจะเลกทางานเมอ i � 0 หรอ A[i] � key สาหรบกรณทเลกเมอ i � 0 นน เนองจาก i มคาลดลงทละหนงในบรรทดท 8 แสดงวาจานวนรอบการทางานเปน O(i) สวนอกเงอนไขนนมนขนลกษณะของขอมลทเกบอยใน A ทเราไมร ดงนนขอบเขตบนของจานวนรอบทเรามนใจแนวาจะหลดจากวงวนกคอ O(i) เนองจากกอนเขาวงวน i = j–1 ในบรรทดท 5 แสดงวาจานวนรอบทหมนในวงวนแบบ while นกคอ O(j) กมาถงวงวนแบบ for วงนอก การทางานของบรรทดท 4, 5 และ 10 นนเปน �(1) เมอพจารณารวมกบภาระทตองทาในวงวนแบบ while

Page 68: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

52 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

สรปไดวาตองใชเวลาทาชดคาสงภายในวงวนแบบ for รอบท j เปน O(j) เนองจากวงวนแบบ for นหมนเปลยน j จาก 2 ถง n ดงนนสรปวาเวลาการทางานทงหมดเปน �

�nj j2 )( = O(n2)

ตวอยางท 4-14 จงวเคราะหอลกอรทมการหา ห.ร.ม. ของยคลดตอไปน01: GCD( m, n )02: {03: while ( m > 0 ) {04: t = m05: m = n mod m06: n = t07: }08: return n09: }

เงอนไขของวงวนแบบ while ในบรรทดท 3 ระบวาการทางานจะสนสดเมอ m � 0 เนองจากคา m ทไดรบมาเปนจานวนบวก และใหสงเกตวา m มคาเปลยนไปในทางทลดลงในบรรทดท 5 (เพราะผลทไดจาก n mod m ตองมคาระหวาง 0 ถง m–1) ดงนนวงวนนตองจบการทางานแนเมอ m มคาเทากบ 0 แลววงวนนจะหมนสกกรอบ ? กอนอนจะขอพสจนใหเหนวาตลอดเวลานน n mod m < n/2 โดยแบงการพจารณาออกเปน 2 กรณคอกรณท m � n/2 และ กรณท m > n/2 ดงน กาหนดให n � m

กรณท m � n/2 : เนองจาก n mod m มคาระหวาง 0 ถง m–1 ซง'ตองนอยกวา m และ m � n/2 ดงนน n mod m < n/2

กรณท m > n/2 : จาก n � m แสดงวา �n/m � � 1 และจาก m > n/2 แสดงวา n/m < 2 สรปไดวา �n/m � = 1 ดงนน n mod m = n – m�n/m � = n – m < n – n/2 = n/2

เราไดพสจนแลววา n mod m < n/2 ตลอดเวลา เนองจากคาของ n ในรอบนกคอคาของ m ในรอบกอน (ดบรรทดท 4 และ 6) และ m ในรอบหนาจะมคา n mod m ดงนนการท n mod m <n/2 นนบอกเราวาคาของ m ในรอบหนาจะนอยกวาคาของ m/2 ในรอบกอน การลดลงของคา m ทนอยกวาทละครงนนแสดงใหเหนวา จานวนรอบซงกคอเวลาการทางานเปน O( log n )

ตวอยางท 4-15 จงวเคราะหอลกอรทมการหาคานอยสดในตนไมคนแบบทวภาคตอไปน

Page 69: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 53

01: BinaryNode findMin( BST T )02: {03: BinaryNode p;04:05: p = T.root;06: if ( p != NULL ) {07: while ( p.left != NULL ) {08: p = p.left;09: }10: }11: return p;12: }

ดจากอลกอรทมนอยางเดยวคงบอกอะไรไมได ถาไมรเรองอะไรเลยเกยวกบตนไมคนแบบทวภาค แตถายงจาสงทเรยนในวชาโครงสรางขอมลไดบาง กพอจะรวา การหาคานอยสดในตนไมคนแบบทวภาค (ซงขอมลทงหมดในตนไมยอยดานซายตองมคานอยกวาขอมลทราก) คอการเรมจากรากของตนไม (บรรทดท 5) แลววงไปยงโหนดทมคานอยกวา (นนคอวงไปทางลกซายในบรรทดท 8) ไปเรอยๆ ตราบเทาทยงพบโหนดทมโหนดอนทนอยกวา (กคอเงอนไขโหนดทยงมลกซายในบรรทดท 7) ดงนนจะหยดเมอพบโหนดทไมมใครนอยกวา (โหนดทไมมลกซาย) ซงกคอโหนดทคานอยสด

แลวอลกอรทมนใชเวลาเทาไร ในทนขนาดของขอมลขาเขากคอขนาดของตนไม ซงแทนไดโดยตรงดวยจานวนโหนด กาหนดให n คอจานวนโหนด เนองจากตนไมคนแบบทวภาคมโอกาสจะมรปรางเลวรายในลกษณะทโหนดตางๆ ของตนไมเรยงกนเปนแนวยาวไปทางซายมอตลอด นนคอการวงไลไปหาลกทางซาย (ในบรรทดท 8) นนตองผานทกๆ โหนดในตนไม แสดงวาเวลาการทางานเปน O(n)

การเรยกแบบเวยนเกดลกษณะการเขยนอลกอรทมทเราจะพบบอยมากๆ เลย กคอการเรยกแบบเวยนเกด (recursivecall) การเรยกในลกษณะนตวอลกอรทมตองประกนวาขนาดของตวปญหาตองเลกลง และเมอถงจดทมขนาดเลกพอ กจะเลกเรยกแบบเวยนเกด และหนไปทางานในลกษณะธรรมดาเพอหาคาตอบ ในการวเคราะหนนเราสามารถบรรยายเวลาการทางานของอลกอรทมทมการเรยกแบบเวยนเกดดวยความสมพนธเวยนเกด (recurrence) ของเวลาการทางานไดตรงเลย ดงน

� กาหนดให t(n) ใหเปนเวลาการทางานของการแกไขปญหาทมขนาด n

� บรรทดใดในอลกอรทมทเปนการเรยกแบบเวยนเกดกใหเขยนเวลาการทางานของบรรทดนนเปน t(m) โดยท m คอขนาดของขอมลขาเขา (ทตองมขนาดเลกลง)

Page 70: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

54 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

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

� เขยนความสมพนธเวยนเกดของ t(n) ใหเทากบ ผลรวมของสองขอทหาไดขางบน

� หาผลเฉลยของ t(n) ในรปของสญกรณเชงเสนกากบ

ตวอยางท 4-16 จงวเคราะหอลกอรทม SelectionSort ตอไปน01: SelectionSort( A[1..n] )02: {03: if ( n <= 1 ) return;04: j = indexMax( A[1..n] );05: Swap( A, n, j );06: SelectionSort( A[1..n–1]07: }

ในสวนทไมใชการเรยกแบบเวยนเกดนนมบรรทดท 4 เปนคาสงมาตรเวลา ซงถกใชงานเปน �(n) (จากตวอยางท 4-1) สวนบรรทด 6 เปนการเรยกแบบเวยนเกดทมขนาดของขอมลขาเขาลดลงหนง ดงนนเวลาการทางานเปน t(n) = t(n–1) + �(n) สาหรบ n > 1, t(1) = �(1) หาผลเฉลยโดยวธการคล ดงน

t(n) = t(n–1) + �(n)= t(n–2) + �(n–1) + �(n)

= ��

�ni

i1

)(

= �(n2)

ตวอยางท 4-17 จงวเคราะหอลกอรทมการคนแบบทวภาค (binary search) ตอไปน01: BinarySearch( A[left..rght], x )02: {03: if ( left > rght ) return –1;04: m = (left + rght) / 2;05: if ( x == A[m] ) return m;06: if ( x < A[m] )07: return BinarySearch( A[left..m–1],x);08: else09: return BinarySearch( A[m+1..rght],x);10: }

บรรทดท 3 ถง 5 ใชเวลาเปน �(1) สวนบรรทดท 6 ถง 9 ใชเวลาเปน �(1) + t( n/2 ) ดงนนไดเวลาการทางานเปน t(n) � t(n/2) + �(1) สาหรบ n > 1, t(1) = �(1) (ใหสงเกตวาความสมพนธ

Page 71: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 55

เวยนเกดทเขยนใชเครองหมาย � เพราะวาบรรทดท 6 ถง 9 ถกใชงานกเมอเงอนไขในบรรทดท 5 เปนเทจ หาผลเฉลยโดยวธการคล ดงน

t(n) � t(n/2) + �(1)� t(n/22) + �(1) + �(1)…

� t(n/2k) + ��

�ki

i1

)(

� �(1) + ��

�n

ilg

1)1(

� �( log n )= �( log n )

จากสองตวอยางทผานมา ไดแสดงใหเหนวาความสมพนธเวยนเกดของเวลาการทางานนนเขยนไดอยางตรงไปตรงมาจากตวอลกอรทม ภาระทยงยากกคอการหาผลเฉลยของความสมพนธเวยนเกด ซงตองอาศยความรทไดเคยเรยนมาในวชา discrete math. หลากหลายวธขนกบลกษณะของความสมพนธเวยนเกด ประกอบกบการใชสญกรณเชงเสนกากบ ในกรณทเราพบความสมพนธเวยนเกดแบบแบงแยกและเอาชนะ (divide and conquer recurrence) นน มวธหาผลเฉลยงายๆ ทไดคาตอบในรปของสญกรณเชงเสนกากบอยสองวธทใชบอยดงน

การใชตนไมจาลองการเวยนเกดเราใชตนไมจาลองการเวยนเกด (recursion tree) โดยทแตละโหนดของตนไมแทนการเรยกแบบเวยนเกด 1 ครง โดยมภาระทไมใชสวนทเปนการเรยนแบบเวยนเกดในอลกอรทมกากบทโหนด ถาโหนดใดตองเรยกแบบเวยนเกดตอ โหนดนนกจะมลกเปนจานวนตามจานวนครงทตองเรยกแบบเวยนเกดโดยขนาดของปญหาทโหนด ลกจะลดลงตามความสมพนธเวยนเกด แนนอนวาขนาดของปญหาตองลดลงเรอยๆ จนกระทงเปนกรณทไมตองเรยกแบบเวยนเกดตอ ผลเฉลยกคอผลรวมของภาระตามโหนดตางๆ ทงหมดในตนไม วธนดๆ ไปคลายๆ กบการคล แตการวาดเปนตนไมนนบางครงชวยใหเราจดการการคลไดงายขน

ตวอยางท 4-18 จงหาผลเฉลยของ t(n) = 2t(n/2) + �(n) สาหรบ n > 1, t(1) = �(1)

เรมทรากมขนาดของขอมลเปน n แสดงวาภาระทรากเปน �(n) แตละโหนดม 2 ลก (มาจากเลข 2 ทคณพจน t(n/2) ) โดยทขนาดของปญหาทลกเปนครงหนงของทพอ (มาจากการท n ถก

Page 72: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

56 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

หารดวย 2 ในพจน t(n/2)) จะไดตนไมดงรปท 4–1 ตนไมนสง lg n ผลรวมภาระในแตละระดบจะเทากบ �(n) เนองจากมทงหมด lg n ระดบ ภาระรวมจงเปน �(n log n)

n

n/2 n/2

n/4 n/4 n/4

1 1 1 1

n/4

n

n

n

n

lg n

�( n log n )

รปท 4–1 ตนไมการเวยนเกดของ t(n) = 2t(n/2) + �(n)

ตวอยางท 4-19 จงหาผลเฉลยของ t(n) = 2t(n/2) + �(n2) สาหรบ n > 1, t(1) = �(1)

เราเขยนตนไมจาลองการเวยนเกด ในทานองเดยวกนกบตวอยางทแลว ไดเปนตนไมดงรปท 4–2 ทมกเขยนผดกคอการนาภาระทโหนดพอมาหาร 2 ไดเปนภาระทโหนดลก ทถกจะตองเปนขนาดของปญหาทโหนดพอหาร 2 ไดเปนของทลก แลวทนาขนาดของปญหาทไดไปคานวณภาระ เชนในรปท 4–2 ขนาดของปญหาทโหนดในระดบท 1 (กาหนดใหรากอยระดบท 0) มขนาดของปญหาเปน n/2 ดงนนขนาดของปญหาทโหนดในระดบท 2 กจะเปน n/4 จงมภาระเปน (n/4)2

n2

(n/2)2 (n/2)2

(n/4)2

1 1 1 1…

n2

(1/2)n2

(1/4)n2

(1/2lg n) n2

lg n

�( n2 )(n/4)2 (n/4)2 (n/4)2

รปท 4–2 ตนไมการเวยนเกด t(n) = 2t(n/2) + �(n2)

สรปไดวาโหนดระดบท k มขนาดของปญหาเทากบ n/2k มภาระเทากบ (n/2k)2 เนองจากมโหนดในระดบท k ทงสน 2k โหนด ดงนนจงมภาระรวมทกโหนดในระดบท k เปน 2k(n/2k)2 = n2/2k

ตนไมนสง lg n ดงนนภาระรวมทงหมดจงเปน

Page 73: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 57

� � � �22lg

0

2lg

0

2)2(

2

1

2nnnn n

kk

n

kk

�������

��

��

��

��

��

��

� ��

��

ตวอยางท 4-20 จงหาผลเฉลยของ t(n) = t(an) + t(bn) + �(n) โดยท 0<b<1,0<a<1 และ a+b < 1

จากความสมพนธเวยนเกดเขยนไดเปนตนไมจาลองการเวยนเกด ไดดงรปท 4–3 จดสาคญของการสงเกตตนไมนกคอภาระรวมในแตละระดบ นนคอภาระรวมในระดบท k เทากบ (a+b)knเนองจากตนไมนสง logc n โดยท c = min( 1/a, 1/b) นนคอสงเปน �(log n) ดงนนภาระรวมทง

ตนเทากบ )()(1

1)())((0

log

0nn

babannba

k

kn

k

kc����

����

��

��

��

���� ��

��

n

an bn

a2n

1 1 1 1…

n

(a+b)n

(a+b)2n�(log n)

�( n )abn ban b2n

รปท 4–3 ตนไมการเวยนเกด t(n) = t(an) + t(bn) + �(n), 0<b<1,0<a<1 และ a+b<1

เราสามารถขยายผล (ลองทาดเอง) ทไดจากตวอยางขางบนนวา สาหรบความสมพนธเวยนเกด

)()()(1

nnTnTk

ii ����

� โดยท 0<i<1 และ 11

���

k

ii�

จะไดผลเฉลยเปน t(n) = �(n)

การใช master methodวธนจะชวยเราในการหาผลเฉลยของความสมพนธเวยนเกดในรปแบบ

t(n) = at(n/b) + f(n) โดยท a � 1, b > 1

ไดงายมากๆ โดยตรวจสอบวา a, b และ f(n) ตกอยในกรณใดในสามกรณตอไปน กจะไดคาตอบทนท

Page 74: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

58 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

1. ถา f(n) = �(n(logb a)–� ) สาหรบคาคงตว > 0 สกตวหนง แลว t(n) = �(nlogb a )

2. ถา f(n) = �(n(logb a) ) สาหรบคาคงตว > 0 สกตวหนง แลว t(n) = �(nlogb a log n )

3. ถา f(n) = �(n(logb a)+� ) สาหรบคาคงตว > 0 สกตวหนง และ af(n/b) � cf(n) สาหรบคาคงตว c < 1 สกตว เมอ n มคาใหญพอ แลว t(n) = �( f(n) )

(วธพสจนนนไมยงยาก จะขอละไมแสดงใหด) ตองขอเนนตรงนวาทงสามกรณขางบนน ไมไดครอบคลมความสมพนธเวยนเกดในรปแบบดงกลาวทเปนไปได (เชน T(n) = 2T(n/2) + nlog n) ซงจาตองอาศยกลวธอนๆ แทน

ตวอยางท 4-21 จงหาผลเฉลยของ t(n) = 9t(n/3) + n

จากโจทย a = 9, b = 3, log39 = 2 และ f(n) = n ตรงกบเงอนไขในกรณท 1 คอ n = �(n2 – 0.1 ) =

�(n1.9 ) ได �(n2) เปนผลเฉลย

ตวอยางท 4-22 จงหาผลเฉลยของ t(n) = t(n/3) + 1

จากโจทย a = 1, b = 3, log31 = 0 และ f(n) = 1 ตรงกบเงอนไขในกรณท 2 คอ 1 = �(n0 ) ได �( n0 log n ) = �( log n ) เปนผลเฉลย

ตวอยางท 4-23 จงหาผลเฉลยของ t(n) = 3t(n/4) + n log n

จากโจทย a = 3, b = 4, log43 < 0.8 และ f(n) = n log n ตรงกบเงอนไขในกรณท 3 คอ

� n log n = �(n0.8 + 0.2 )

� 3f(n/4) = 3(n/4) log (n/4) = (3/4)n log (n/4) � (3/4) n log n

ได �( f(n) ) = �( n log n ) เปนผลเฉลย

นอกจาก master method จะชวยใหเราหาผลเฉลยไดสะดวกรวดเรวแลว ยงชวยเราตความเพอระบสวนของอลกอรทมระหวางภาระของการเรยกแบบเวยนเกด(คอ nlogb a ) กบภาระของสวนทไมไดเรยกแบบเวยนเกด (คอ f(n)) ซงเปนตวกาหนดเวลาการทางานทงหมด โดยดจากสามกรณขางตน

Page 75: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 59

1. เงอนไข f(n) = �(n(logb a)–� ) บอกวาขนาดยอมลดเลขชกาลงลงใหนดหนงแลว (คอคา )พบวา f(n) ยงโตไมเรวกวาเลย เวลาการทางานจงถกกาหนดโดยสวนทเรยกแบบเวยนเกด

2. เงอนไข f(n) = �(nlogb a ) บอกวาภาระทงสองสวนเทากน

3. เงอนไข f(n) = �(n(logb a)+� ) บอกวาขนาดยอมเพมเลขชกาลงใหนดหนงแลว (คอคา )พบวา f(n) ยงโตไมชากวาภาระทเรยก recusive และเงอนไข af(n/b) � cf(n) กสรางความมนใจวาภาระ f(n) ททาในระดบนโตไมชากวาภาระรวมของ f(n) ททาในระดบถดไปเชนกน จงมนใจแนวาเวลาทงหมดถกกาหนดโดย f(n)

จงเปนประโยชนอยางยงตอผออกแบบอลกอรทมทตองการปรบปรงอลกอรทมใหดขน โดยสนใจสวนของอลกอรทมทเปนตวกาหนดเวลาการทางาน

ประเภทของการวเคราะหจากทเราเคยแสดงใหดวาเวลาการทางานของการหาคานอยสดในแถวลาดบนน เปนฟงกชนเชงเสนของจานวนขอมลในแถวลาดบ นนคอเปน �(n) โดยท n เปนจานวนขอมล แนนอนวาจานวนขอมลยงมากเวลาการทางานกยอมตองชาลง สาหรบบางอลกอรทมนนนอกจากประสทธภาพการทางานจะแปรตามขนาดของขอมลขาเขาแลว ยงแปรตามลกษณะของขอมลขาเขาดวย ตวอยางเชนจากอลกอรทมการเรยงลาดบขอมลแบบ insertion sort ทเคยวเคราะหในตวอยางท 4-13 ซงแสดงใหดอกทตอไปน

01: Insertion_Sort( A[1..n] )02: {03: for (j = 2 to n) {04: key = A[j]05: i = j–106: while (i>0 and A[i]>key) {07: A[i+1] = A[i]08: i = i–109: }10: A[i+1] = key11: }12: }

เราพบวาการหมนอยในวงวนแบบ while นนจะสนสด กเมอ i � 0 หรอ A[i] � key (ดบรรทดท 6) ในตวอยางท 4-13 นนเราพจารณาเฉพาะกรณแรกคอ i � 0 สวนกรณ A[i] � key นนขนกบ

Page 76: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

60 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

ขอมลในแถวลาดบ A เปนไปไดวาทกครงททางานทบรรทดท 6 เงอนไข A[i] > key เปนเทจในทกๆ รอบ ทาใหไมเคยเขาไปทางานคาสงในวงวนแบบ while เลย ซงกรณนเกดขนเมอขอมลในแถวลาดบนนเรยงตามลาดบทตองการจากนอยไปมากอยแลว เวลาการทางานกจะเปนจานวนรอบทหมนอยวงวนแบบ for โดยไมไดเขาไปหมนในวงวนแบบ while เลย ซงเปน �(n) จงสรปไดวาเวลาการทางานขนกบ

� ขนาดของขอมลขาเขา� ลกษณะของขอมลขาเขา

แลวเราจะวเคราะหอยางไร ถาเวลาการทางานขนกบลกษณะของขอมล เนองจากเราไมทราบลกษณะของขอมลทอลกอรทมนจะนาไปใชงานในขณะททาการวเคราะห กาหนดให In คอเซตของขอมลขาเขาทเปนไปไดทกๆ แบบทมขนาด n ของปญหาหนง และให t(n, i) คอเวลาการทางานของอลกอรทมหนงเมอรบขอมลขาเขาขนาด n แบบท i, i � In เรามแนวทางการวเคราะหอยสามแนวทางในการวเคราะหทจะใหผลทสอความหมาย ในการเปรยบเทยบอลกอรทมตางๆ ดงน

1. การวเคราะหกรณเลวสด (worst case analysis) วธนคดเฉพาะลกษณะของขอมลททาใหกรทางานใชเวลามากสดซงจะเปนตวกาหนดขอบเขตบนของเวลาการทางาน นนคอ

� �),(max)( intntnIi

worst�

2. การวเคราะหกรณเฉลย (average case analysis) เนองจากบางครงลกษณะของขอมลททาใหอลกอรทมทางานแบบเลวสดนนมโอกาสเกดขนนอยมากๆ เมอเทยบลกษณะของขอมลแบบอนๆ ดงนนถาเรารความนาจะเปนทลกษณะของขอมลในแบบตางๆ จะเกดขนในทางปฏบตทกๆ แบบ กสามารถหาคาคาดหวงของเวลา ซงเปนเวลาการทางานในกรณเฉลย กาหนดให p(i) คอความนาจะเปนทขอมลขาเขา i จะปรากฏในทางปฏบต จะไดวา �

nIiavg intipnt ),()()(

สงทเปนอปสรรคในการวเคราะหกรณเฉลยกคอ เรามกไมทราบ p(i) โดยทวไปกเลยกาหนดใหทกๆ กรณเทากนหมด (นนคอ p(i) =

1|In|

) ซงกงายด แตกอาจไมตรงกบความจรง

Page 77: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 61

3. การวเคราะหกรณถวเฉลย (amortized analysis) ในการวเคราะหเวลาการทางานของการดาเนนการตางๆ ของโครงสรางขอมลชนดหนงนน คงจะรสกมองโลกในแงรายเกนไป ถาเราจะวเคราะหแตกรณเลวสดของทกๆ การดาเนนการ การจดการโครงสรางขอมลนนโดยทวไปเชนเพม คน ลบขอมล นนมกมการกระทาหลายๆ ครงบนโครงสรางขอมลตวเดม เวลาการทางานทใชไปในแตละครงจะไมเหมอนกน บางครงเรว บางครงชา การวเคราะหกรณถวเฉลยน จะวเคราะหรายการของการปฏบตทเลวสด (คอใชเวลามากสด) แลวจงนาเวลาโดยรวมของทงรายการการดาเนนการท กระทาไปถวเฉลยกบจานวนการดาเนนการ (เนองจากการวเคราะหแบบนมรายละเอยดมาก จะขออธบายในบทถดไป)

หลายคนอาจสงสยวาทาไมไมมการวเคราะหกรณดสด (best case) การวเคราะหแบบนกทาไดโดยไดคาตอบเปน � �),(min)( intnt

nIibest

� แตผลทไดจะไมไดบอกอะไรเรามาก ตวอยางเชน

การคนขอมลแบบลาดบ (sequential search) ในรายการนนมกรณดสด กคอกรณทตวทจะคนอยทตาแหนงแรกในรายการพอด กเรวทสด เปรยบเทยบครงเดยวกพบ เราไมสามารถเอาผลการวเคราะหกรณดสดมาใชเปรยบเทยบอลกอรทมได เพราะเราสามารถฝงความรเฉพาะกรณของปญหาลงในอลกอรทมกไดเพอใหไดกรณทดสดเรวมากขนได เชนอลกอรทม selection sort ทเขยนใหดในตวอยางท 4-16 นนใชเวลาเปน �(n2) เสมอไมวาลกษณะขอมลจะเปนเชนไร แตถาเพยงแตเราเพมการตรวจสอบกอนวาขอมลในแถวลาดบเรยงจากนอยไปมากอยแลวหรอยง ถาเรยงจะไดไมตองทา selection sort ถาไมเรยงจงจะเรมทา กจะไดผลลพธทมกรณดสดคอ �(n)ซงมเพยงกรณเดยวเทานนในจานวน n! กรณทเปนไปไดของขอมลขาเขา (สมมตใหขอมลเปนจานวนเตมตงแต 1 ถง n) สวนขอมลขาเขาแบบอนๆ ยงใชเวลาเหมอนเดม สรปกคอกรณดสดนนนามาใชเปรยบเทยบไมได อกทงผออกแบบอลกอรทมสามารถเพมกล (ฉลาดแกมโกง !) เพอใหกรณดสดมประสทธภาพดได

สาหรบการวเคราะหกรณเฉลยนน หลายคนคงมความรสกวากรณทเปนไปไดของตวปญหานนอาจมมากมายเปนอนนต สมมตตวอยางงายๆ อยางเชนปญหาการเรยงลาดบขอมล ในกรณทขอมลเปนตวเลข กเหนไดชดวา In มขนาดใหญเปนอนนต แลวเราจะไปหา t(n,i) ของทกๆ i ไดอยางไร โดยทวไปเราจะไมใชวธแจกแจงทกๆ กรณหรอก แตเราจะอาศยความรเกยวกบลกษณะของขอมลขาเขามาเปนตวจากดจานวนกรณใหลดลง เชน ปญหาการเรยงลาดบขอมลนน ถาพจารณาเฉพาะกรณทขอมลทกๆ ตวไมเทากน จะเหนไดวากรณทเปนไปไดทงหมดจะลดรปลงมาเหลอ n! กรณ นนคอสามารถคดเฉพาะกรณทขอมลทจะเรยงลาดบคอจานวนเตม

Page 78: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

62 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

1,2,…,n กพอ ซงเหนไดวามกรณเรมตนของลาดบขอมลขาเขาทเปนไปได n! แบบ สมมตวา nเทากบ 4 ขอมลขาเขา 3, 2, 1, 4 กยอมแทนสารพดขอมลขาเขาทมตวมากสดอยทายสด และสามตวแรกเรยงจากมากมาหานอย เชน 30, 20, 10, 40 หรอ 33, 22, 9, 50 และอนๆ อกมากมาย เปนตน

จะขอแสดงตวอยางการวเคราะหกรณเลวสดและ กรณเฉลยในดจานวนหนง เพยงพอใหเหนภาพของสงทตองคานงถงขณะวเคราะห ตวอยางการวเคราะหจะปรากฎอกมากมายในทงวชาน

ตวอยางท 4-24 จงวเคราะหอลกอรทม sequential search ตอไปนในกรณเลวสด และกรณเฉลย01: SequentialSearch( A[1..n], x )02: {03: i = n;04: while ( i > 0 AND A[i] � x )05: ––i;06: return i;07: }

อลกอรทมนมคาสงมาตรเวลาคอบรรทดท 4 ซงทางานเปนจานวนมากสดเทากบ n+1 เพราะ iเรม n ลดลงทละหนงจนถง 0 ดงนนกรณเลวสดจะใชเวลาเปน �(n)สาหรบกรณเฉลยนน สมมตใหขอมลทกๆ ตวใน A มโอกาสถกคนเทาๆ กน เทากบ 1/n ดงนนเวลาการทางานโดยเฉลยในกรณทพบขอมลจะเทากบ 1n +

2n +

3n +…+

nn =

n(n+1)2n =

n+12 = �(n)

ตวอยางท 4-25 จงวเคราะหอลกอรทม binary search ตอไปนในกรณเลวสด และกรณเฉลย01: BinarySearch( A[1..n], x )02: {03: i = 1; j = n;04: while ( i � j ) {05: m = (i+j) / 2 :06: if ( x == A[m] ) return m;07: if ( x < A[m] ) then j = m–1;08: else i = m+1;09: }10: return 0;11: }

binary search ทเขยนขางบบนจะมหลกการทางานเหมอนกบทไดเขยนใหดในตวอยางท 4-17(เพยงแตวาแบบนใชวงวนแบบ while ในขณะทในตวอยางท 4-17 นนใชการเรยกแบบเวยนเกด)

Page 79: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 63

อลกอรทมนมคาสงมาตรเวลาคอบรรทดท 4 คาของ (j–i+1) มคาเรมตนท n หลงจากนนจะลดลงทละครงในลกษณะเชนนไปเรอยๆ ในกรณเลวสดกจะลดลงจน i > j การลดลงทละครงทาใหเราสรปไดวาเวลาการทางานในกรณเลวสดเปน �(log n)

แตในความเปนจรงแลว เราอาจพบขอมลตวทตองการกอนท i > j กได ถากาหนดใหโอกาสทเราตองการคนขอมลแตละตวในแถวลาดบมเทาๆ กน เทากบ 1/n สาหรบกรณเฉลย ดงนน โอกาสทเราจะหาพบในรอบแรกมเพยงหนงตว (คอตวท n/2) โอกาสทเราจะหาพบในรอบทสองมสองตว (คอตวท n/4 และตวท 3n/4) สงทสรปไดกคอโอกาสทเราจะหาพบในรอบท k ม

2k–1 ตว ดงนนกรณเฉลยจะหมนเปนจานวนรอบ = ��

�n

k

k

nklg

1

12 (เพอความงายขอกาหนดให n

มคาเทากบ 2 ยกกาลงเลขจานวนเตม)

จากความรใน discrete math : 1

)( 1

1�

� xxxx

mm

k

k

หาอนพนธทงสองขางได2

1

1

1

)1(11)1(

��

��

�x

xxx

xmkxmmm

k

k

แทน x =2, m = lg n ได 2212)lg1(2 lg1lglg

1

1�����

�nn

n

k

k nk

= n lg n – n + 1

ดงนน��

�n

k

k

nklg

1

12 = lg n –1 + 1n = �(log n) (ทาแทบตายไดกรณเฉลยเทากบกบกรณเลวสด)

ตวอยางท 4-26 จงวเคราะหอลกอรทม binary search ตอไปนในกรณเลวสด และกรณเฉลย01: BinarySearch( A[1..n], x )02: {03: i = 1; j = n;04: while ( i < j ) {05: m = (i+j) / 2 :06: if ( x < A[m] ) then j = m;08: else i = m;09: }10: if ( A[i] == x ) then return i;11: else return 0;12: }

อลกอรทมขางบนนคลายกบในตวอยางทแลว ตางกนตรงทไมมการตรวจสอบวาเทากบตวทตองการคนหรอไมในวงวน (โดยระวงไมตดตวตรงกลางทงนนคอให j = m หรอ i = m ) แลวคอยมาตรวจสอบตอนสดทายทเหลอเพยงตวเดยวแลวหลดจากวงวนวา ใชตวทตองการหรอไม

Page 80: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

64 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

อลกอรทมนหมนอยในวงวนเปนจานวน lg n รอบแนนอนไมวาลกษณะขอมลจะเปนเชนไร ดงนนกรณเลวสดและกรณเฉลย (รวมทงกรณดสด) ใชเวลาเปน �(log n) ทงสน

ดๆ ไปอลกอรทมนนาจะทางานในทางปฏบตชากวาแบบทเขยนในตวอยางทแลว แตความจรงจะถาพจารณาโดยนบจานวนการเปรยบเทยบเปนหลก ตอหนงรอบ แบบทเขยนในตวอยางนใชแคหนงเปรยบเทยบ ในขณะทแบบของตวอยางทแลวใชสองเปรยบเทยบ สรปจานวนการเปรยบเทยบทงหมดเปนดงน (ขอใหไปลองนบจานวนการเปรยบเทยบใหละเอยดดเอง จะไดดงตารางท 4–1)

ตารางท 4–1 จานวนการเปรยบเทยบของการคนแบบทวภาค

ตวอยางทแลว ตวอยางนกรณหาขอมลพบ กรณเลวสด 2( lg n – 1 ) + 1 1 + lg n กรณเฉลย 2( lg n – 2 + 1/n ) + 1 1 + lg nกรณหาขอมลไมพบ กรณเลวสด 2 lg n 1 + lg n กรณเฉลย 2 lg n 1 + lg n

อยางไรกตามหากวเคราะหเชงเสนกากบแลวกพบวาทกๆ กรณเปน �(log n) ทงสน

ตวอยางท 4-27 จงวเคราะหอลกอรทม insertion sort ตอไปนในกรณเฉลย01: Insertion_Sort( A[1..n] )02: {03: for (j = 2 to n) {04: key = A[j]05: i = j–106: while (i>0 and A[i]>key) {07: A[i+1] = A[i]08: i = i–109: }10: A[i+1] = key11: }12: }

เราไดวเคราะห insertion sort กนมาทหนงแลวในตวอยางท 4-13 ซงเราไดวาใชเวลาเปน O(n2) ผลทไดเปนโอใหญซงระบขอบเขตบน เพราะเราพจารณาเฉพาะเงอนไข i > 0 เทานนทบรรทด

Page 81: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 65

ท 6 คราวนเราจะมาดเงอนไข A[i] > key ซงขนกบลกษณะของขอมลใน A ในการวเคราะหกรณเฉลย

ถาเงอนไข A[i] > key เปนจรงตลอด จานวนรอบทหมนใน while กถกกาหนดโดยเงอนไข i > 0 ซงคอกรณเลวสดใชเวลาเปน �(n2) เงอนไข A[i] > key เปนจรงตลอดไดกเพราะวาขอมลใน Aนนเรยงจากมากไปนอยนนคอ A[1] > A[2] > A[3] > … > A[n] จงตองมการยายขอมลในวงวนแบบ while จน A[j] ซงคอขอมลตวใหมทกาลงพจารณาจะถกใสในชองแรกเสมอ

แตถาเปนเงอนไข A[i] > key เปนเทจทนทเมอตอนตนของวงวน กจะไมเขาไปทางานในวงวนเลย เปนกรณดสด นบจานวนรอบทงหมดกเพยงแคทหมนในวงวนแบบ forใชเวลาเปน �(n) เหตการณเชนนเกดขนไดกเมอขอมลใน A นนเรยงจากนอยไปมาก นนคอ A[1] < A[2] < A[3] < … < A[n] ดงนน A[j] จงไมตองยายไปไหน อยในชองเดม

แลวถาเปนกรณเฉลยจะเปนเชนไร เวลาการทางานกขนอยกบวา A[j] ทเปนขอมลตวใหมทกาลงพจารณาหาทแทรกวาจะลงทชอง 1, 2, 3, …, หรอ j (ซงเปนหนาทของวงวนแบบ while ในอลกอรทม ถาเรากาหนดใหการทขอมลตวใหมตวท j จะถกนาไปลงทตาแหนงตางๆ กนทง jชองนน มความนาจะเปนเทาๆ กน ดงนนเวลาโดยเฉลยของการทางานทงอลกอรทมจะเปน

� ��� �� ��� �� �

����

���

� �

���

���

��

���

���

� n

j

n

j

j

i

n

j

j

inji

jji

2

2

2 12 12

11

ทผานมาเราไดเหนตวอยางตางๆ ทมประสทธภาพเชงเวลาในกรณเลวสด และกรณเฉลยนนเทากน เราจะไดเหนตวอยางของอลกอรทมทกรณเลวสดนนแยกวากรณเฉลยกนตอไป (เชน quick sort ใชเวลากรณเลวสดเปน �(n2) แตในกรณเฉลยจะเปน �(n log n) )

การวเคราะหโดยทวไปทจะใชกนในวชานจะเปนกรณเลวสด เนองจากงาย และกมกสะทอนถงประสทธภาพในทางปฏบตจรง อยางไรกตามเราจะใชการวเคราะหในกรณเฉลยหรอถวเฉลย บางเปนครงคราว

Page 82: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

66 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

แบบฝกหด1. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของสวนของอลกอรทมตอไปน

01: s = 002: for ( i=1 to n )03: for ( j=i+1 to n )04: for ( k=1 to j )05: ++s

2. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของสวนของอลกอรทมตอไปน01: s = 002: for ( i=1 to n )03: for ( j=1 to i )04: for ( k=j to i+j )05: ++s

3. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของสวนของอลกอรทมตอไปน01: s = 002: for ( i=1 to n )03: for ( j=1 to i )04: for ( k=j to i+j )05: for ( m=1 to i+j–k )06: ++s

4. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของสวนของอลกอรทมตอไปน01: s = 002: for ( i=1 to n )03: for ( j=i+1 to n )04: for ( k=i+j–1 to n )05: ++s

5. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของสวนของอลกอรทมตอไปน01: s = 0 02: while (n > 0) {03: n = � n/8 �;04: sum++;05: }

6. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของสวนของอลกอรทมตอไปน01: i=0; j=n; s=002: while ( i < j ) {03: i = i+2;04: s++;05: j = j–3;06: }

7. จงวเคราะหเวลาการทางาน (เปนฟงกชนของ n) ของอลกอรทมตอไปน

Page 83: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 24/10/00 5:03 : [email protected] บทท 4 การวเคราะหอลกอรทม 67

01: Dummy( n )02: {03: if ( n <= 0 ) return04: for ( i=1 to n )05: for ( j=1 to n )06: s++07: for ( i=1 to 4 )08: Dummy( n/4 )09: }

8. พจารณาอลกอรทมขางลางน กาหนดใหการ Print(x[1..n]) ในบรรทดท 4 ใชเวลาเปน �(n) การ Swap ในบรรทดท 7 และ 9 ใชเวลาคงตว จงหาวาเมอเราเรยก WhatsThis( x[1..n], 0 ) จะใชเวลาเทาไร (ตอบในรปของ �)

01: WhatsThis( x[1..n], k )02: {03: if ( k == 0 ) for(i=1 to n) x[i] = i04: if ( k == n ) Print( x[1..n] )05: else {06: for (i=k+1 to n) {07: Swap( x[k+1], x[i] );08: WhatsThis( x[1..n], k+1 )09: Swap( x[i], x[k+1] );10: }11: }

9. จงใชตนไมจาลองการเวยนเกดเพอหาผลเฉลย (ในรปของ �) ของความสมพนธเวยนเกดตอไปนก) T(n) = 4T(�n/2�) + nข) T(n) = 2T(n/2) + n lg n

10. จงใช master method เพอหาผลเฉลย (ในรปของ � ) ของความสมพนธเวยนเกดตอไปนก) T(n) = 4T(n/2) + nข) T(n) = 4T(n/2) + n2

ค) T(n) = 4T(n/2) + n3

11. ปญหาหนงสามารถหาคาตอบไดโดยใชอลกอรทม A ทมเวลาเปน TA(n) = 7TA(n/2) + n2 และอลกอรทม B กแกปญหานไดแตใชเวลา TB(n) = aTB(n/4) + n2 จงหาคาของ a (จานวนเตม) ทมากสดทยงทาให B ทางานเรวกวา A ในเชงเสนกากบ

12. จงแสดงใหเหนจรงวา ถา )lg()/()( log nnbnaTnT kab��� โดยท k � 0 จะไดผลเฉลย )lg()( 1log nnnT kab �

��

Page 84: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

68 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 24/10/00 5:03 : [email protected]

13. จงวเคราะหจานวนการเปรยบขอมลทเกดขนในการคนแบบทวภาคตามอลกอรทมทแสดงในตวอยางท 4-25 และตวอยางท 4-26 เพอแสดงทมาของตารางท 4–1

14. จงวเคราหเวลาการทางานรณเลวสด และกรณเฉลยของการเรยงลาดบแบบฟอง (bubble sort)

15. อลกอรทมขางลางน มขนตอนการทางานคลายกบการหาตาแหนงทมคานอยทสดในแถวลาดบ A เพยงแตมเพมการเรยกฟงกชน LongProcess (บรรทดท 7) ทกครงทพบตาแหนงใหมทมคานอยกวาท เคยพบมา จงวเคราะหจานวนครงโดยเฉลยทฟงกชน LongProcess จะถกเรยกใช ในอลกอรทมขางลางน (กาหนดใหแถวลาดบ A เกบจานวนเตมทแตกตางกนหมด)

01: Exercise( A[1..n] )02: {03: m = 104: for ( i=2 to n ) {05: if ( A[i] < A[m] ) {06: m = i07: LongProcess( A, m )08: }09: }10: }

Page 85: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] 69

บทท 5

ถาเรามอลกอรทมหนงทประกอบดวยวงวนทมการเรยกชดคาสง P หลายๆ ครง หาก f(n) คอเวลาการทางานกรณเลวสดของ P หนงครง เวลารวมกรณเลวสดของวงวนทมการเรยก P เปนจานวน m ครงกคงเปน �(mf(n)) นกเรยนสงสยไหมวาทาไมไมกลาสรปวาเปน �(mf(n))เหตผลกเพราะวา มนไมแนวาการเรยก P หลายๆ ครงในกรณเลวสดนน ไมจาเปนวา P ตองทางานเลวสดเปนจานวน �(m) ครงเสมอไป

หลายอลกอรทมมการทางานในลกษณะนโดยเฉพาะอยางยงเมอ P มการยงเกยวกบการดาเนนการ (operation) ตางๆ กบโครงสรางขอมลหนงๆ ทงนเพราะวาการดาเนนการตางๆ อาทเชน เพม ลบ หรอคนขอมล ทเกดขนบนโครงสรางขอมลนนจะเกดขนบอยๆ และใชเวลาไมคอยเทากน ขนกบสภาพของโครงสรางขอมลขณะนนๆ ถาวเคราะหเฉพาะในกรณเลวสด อาจพบวาการดาเนนการนนชามาก แตพอคดแบบถวเฉลยแลวจะพบวาเรวกวาทคาด (เพราะวานานๆ ถงจะชาสดๆ สกท)

ตวอยางเชนโครงสรางขอมลแบบตนไมชนดหนงเรยกวาตนไม splay มลกษณะคลายๆ กบ ตนไมคนแบบทวภาคจะตางกนตรงทโครงสรางของตนไม splay จะมการปรบตวเองเมอมการดาเนนการกบขอมลในตนไม ไมวาจะเปนการเพมลบหรอแมกระทงคนขอมลในตนไม (ผมจะไมลงรายละเอยดของตนไม splay ในทน แคขอยกผลมาใหด) ถาเราวเคราะหกรณเลวสดของการเพม ลบ หรอคนขอมลนนจะพบวาทกคาสงใชเวลาเปน �(n) ทงสน เชนเดยวกบตนไมคนแบบทวภาค (เพราะวาโหนดตางๆ ในตนไมอาจเรยงกนเปนแนวยาวลงมา ทาใหสง �(n) ได) สงทแตกตางกนระหวางตนไม splay กบตนไมคนแบบทวภาคกอยตรงทวา สมมตใหมการดาเนนการกบตนไมเปนจานวน m ครง กรณเลวสดทเปน �(n) ของตนไมคนแบบทวภาคสามารถเกดขนตดๆ กนไดทง m ครงทาใหใชเวลารวมเปน �(mn) ในขณะทเหตการณทกรณ

การวเคราะหกรณถวเฉลย

Page 86: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

70 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

เลวสดเกดขนตลอด จะไมเคยเกดขนเลยกบตนไม splay ซงเราสามารถพสจนใหดไดดวยวา ไมวาจะเปนการดาเนนการชดใดๆ กตามทม m ครง เวลารวมจะเปน �(m log n) หรออกนยหนงลาดบของ m การดาเนนการทเลวสดบนตนไม splayใชเวลาเปน �(m log n) เมอคดแบบถวเฉลยตอการดาเนนการหนงๆ กนา m ไปหารไดเปน �(log n)

เวลา

จานวนการดาเนนการ

� เวลาทางานจรง

� เวลาถวเฉลย

� เวลาเลวสด

รปท 5–1 การวเคราะหกรณเลวสด และกรณถวเฉลย

รปท 5–1 แสดงการเปรยบเทยบผลทไดจากการวเคราะหกรณเลวสด กบกรณถวเฉลย ของเวลาทสะสมตามจานวนการดาเนนการ เมอคดมาจากการนาเวลาในกรณเลวสดมาคณดวยจานวนการดาเนนการ จะหางจากเวลารวมจรงมาก การวเคราะหกรณถวเฉลยจะใหเวลารวมทเปนขอบเขตบนของเวลารวมจรงทตากวาเวลารวมกรณเลวสด มโครงสรางขอมลหลายๆ ตวทมพฤตกรรมเชนน ซงเปนพฤตกรรมทเหตการณทกรณเลวสดของการดาเนนการจะเกดขนตดๆ กนนนไมม ดงนนเมอคดแบบถวเฉลยจะไดผลดกวา บางคนอาจสงสยวาเรากาลงพยายามวเคราะหเพอหาผลทเขาขางตวในทางทดหรอไม ตองตอบวาใช คอพอมองกรณเลวสดเฉพาะการดาเนนการหนงๆ นนไมด กเลยมามองกรณเลวสดของลาดบของหลายๆ การดาเนนการแทน ซงใหผลดกวา แตนไมใชการโกงผลการวเคราะห แตกลบเปนการสะทอนถงเหตการณทเกดขนจรง ในการใชงานโครงสรางขอมลหนงๆ ซงจะตองมการดาเนนการเกดขนกบโครงสรางขอมลตวนนมากมายหลายๆ ครง

Page 87: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 71

Stack แบบม multipopเรามาดตวอยางแรกกนเลยดกวา กาหนดให MStack คอโครงสรางขอมลประเภทหนงทมลกษณะเหมอนกบ stack ทกประการคอรองรบการดาเนนการ push, pop ได ทจะมพเศษเพมจาก stack กคอการดาเนนการ multipop ซงรบพารามเตอร k เพอระบวาจะให pop ขอมลออกจาก stack เปนจานวน k ตว (ถา stack มไมถง k ตวก pop เทาทจะ pop ได)

จากวธการสราง stack ทเคยเรยนกนมาในวชาโครงสรางขอมลนน พบวาการ push และ pop นนใชเวลาคงตว (ไมขนกบขนาดของ stack) เราสามารถเขยน multipop ดวยรหสเทยมดงน

01: multipop( Stack S, int k )02: {03: while (not empty(S) AND (k � 0) ) {04: pop( S );05: ––k;06: }07: }

บางคนอาจอยากทวงวาทาไมไมเขยนแบบเลอน top of stack เลยกสนเรองใชเวลาคงตวดวย ขอบอกตรงนกอนวานเปนการสาธตใหเหนของเลว ! กมาดกนกอนวาเลวเพยงใด เหนไดชดเลยวา multipop ใชเวลาแปรตาม min( k, n ) โดยท n คอจานวนขอมลใน stack หรอจะพดวาใชเวลากรณเลวสดเปน �(n)

คราวนเรามาดชดของการดาเนนการ push, pop และ multipop จานวน n การดาเนนการ เหนไดวาขนาดของ stack กจะมไดอยางมาก n (เพราะมอยางมาก n push) multipop ในชดนยอมใชเวลามากสดเปน �(n) ชดของการดาเนนการนจะเลวสด กตองประกอบไปดวยของทเลวสดๆ นนคอเมอม multipop เปนจานวนมากๆ ถามจานวน multipop เปน O(n) เวลารวมกเปน �(n2)

วเคราะหแบบนกไดขอบเขตบนทถก แตจะหลวม คอไมตาจรง เพราะความรสกบอกเราวา เราจะทาแต multipop อยางเดยวคงไมได เพราะถาไมม push ขอมลเลยแลวจะไปเอาทไหนมา pop พอ multipop แบบเลวใหหมด stack ไปแลว กตองรอ push เขามามากๆ กอน แลวคอย multipop จะไป multipop แบบเลวๆ ตดๆ กนยอมทาไมได

ในเมอเวลาแปรตามจานวนขอมลทถก push และถก pop โดยทขอมลตวใดทถก push เขาใน stack มสทธถก pop ไดอยางมากแคหนเดยว ซงจะเปนการ pop ทกระทาจากการดาเนนการ pop หรอจาก multipop กตาม ดงนนถาเรามชดการดาเนนการ push, pop และ multipop จานวน n

Page 88: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

72 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

ครง กยอมสามารถ push ขอมลไดอยางมาก n ตว กแสดงวาสามารถ pop (จาก pop หรอ multipop) ไดอยางมากเทากบทได push ดงนนเวลาของชดการดาเนนการใดๆ ใชเวลาเปน �(n)เมอถวเฉลยตอหนงดาเนนการกเทากบ �(n)/n = �(1)

สรปไดวาเขยน multipop ชยๆ (ดชาๆ) แบบขางบนนกไมกระทบกระเทอนอะไรตอเวลาการทางานโดยรวม

วธการวเคราะหกรณถวเฉลยวธวเคราะหกรณถวเฉลยทาไดสามรปแบบ พอสรปแนวคดไดดงน

1. วธรวมกลม (aggregate method) วธนเปนวธทตรงไปตรงมาทสด กคอเราหา T(m) ซงคอเวลารวมของลาดบการดาเนนการทเลวสด ซงมจานวน m การดาเนนการ เวลาถวเฉลยตอหนงการดาเนนการกคอ T(m)/m วธนฟงดงาย แตการหา T(m) ทแทนเวลาของลาดบการดาเนนการทเลวสดนนบางทกยง อกทงวธนไมแยกแยะเวลาถวเฉลยของการดาเนนการแตละแบบ เนองจาก T(m) นนไดมาจากการรวมเวลาของทกๆ การดาเนนการในลาดบ จงไดเวลาถวเฉลยของแตละการดาเนนการเทากนหมด

2. วธทางบญช (accounting method) วธนอาศยการเดา (อยางมเหตผล) ของเวลาถวเฉลยของแตละการดาเนนการกอน แลวคอยแสดงใหดวาคาตอบทเดานนไมผด การกาหนดเวลาถวเฉลยนนลอเลยนการทาบญชทมเรองของการเครดตและเดบต เราเปรยบใหเวลาถวเฉลยทใชไปตอหนงการดาเนนการนน เสมอนเปนเงนถวเฉลยจานวนหนงทแทนตนทนถวเฉลยในการดาเนนการนนใหเสรจ แตแนนอนวาเนองจากเปนตนทนถวเฉลย ในทางปฏบตจรงอาจใชไมถงตามทกาหนดกได หรออาจตองใชเกนกวาทกาหนดกได กเลยเกดแนวคดของฝากเงนสวนทเหลอเขาในบญช เมอตนทนการทางานจรงนอยกวาตนทนถวเฉลย และถอนเงนในบญชมาใช เมอตนทนการทางานจรงมากกวาตนทนถวเฉลย ดงนนการวเคราะหดวยวธทางบญชนน กคอการกาหนดตนทนถวเฉลยของแตละการดาเนนการ การดาเนนการแตละแบบนนฝากหรอถอนเงนสวนเกนหรอสวนขาดได แตทสาคญกคอเงนในบญชตางๆ ตองหามตดลบ ถาเราสามารถแสดงใหเหนไดวาเงนในทกๆ บญชไมเคยตดลบเลย ไมวาจะเปนลาดบการดาเนนการใดๆ กตาม แสดงวาตนทนถวเฉลยทเรา

Page 89: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 73

กาหนดไวตอนตนนนเปนขอบเขตบนของตนทนจรง ภาระทสาคญในการวเคราะหดวยวธนกคอการกาหนดตนทนถวเฉลยทตาๆ ทไมเคยทาใหเงนบญชตดลบ

3. วธพลงงานศกย (potential method) วธนจะคลายกบวธทางบญช แตจะเทยบเคยงกบพลงงานศกยของระบบแทน วธนเราไมไดเดาตนทนถวเฉลย สงทเราตองกาหนดขน (เดา) กคอฟงกชนซงคานวณคาพลงงานศกย � ของโครงสรางขอมลจากลกษณะของโครงสรางขอมลขณะนนๆ เชนเปนฟงกชนของจานวนโหนด จานวนใบ จานวนบตทเปน 1 หรออนๆ กแลวแต แตโดยทวไปพลงงานในระบบ มกแสดงใหเหนวาระบบมพลงงานเกบอยใหใชไดแทนตนทนจรงในอนาคตได (เทยบไดกบเงนทฝากไวในบญช) กาหนดให

�(Di) คอฟงกชนพลงงานศกยของโครงสรางขอมล Di หลงการดาเนนการครงท ici คอตนทนจรงของการดาเนนการครงท ici คอตนทนถวเฉลยของการดาเนนการครงท i เมอใช � ซงหาไดจาก

ci = ci + �(Di) – �(Di–1)

หมายความวาสวนตางของตนทนถวเฉลยและตนทนจรง จะเปนคาทไปเพมหรอลดพลงงานของระบบ ถาใชจรงนอยกวาทคาด กเอาสวนทเหลอไปเพมพลงงานสะสม ถาใชจรงมากกวาทคาด กเอาสวนทขาดมาจากพลงงานทสะสมไวมากอนหนาน ในกรณทเรามการดาเนนการเปนจานวน m ครงกจะได

� �

)()(

)()(ˆ

01

11

1

DDc

DDcc

n

m

ii

m

iiii

m

ii

������

��

����

��

เนองจากผลรวมของตนทนถวเฉลยขณะใดๆ ตองมคาไมตากวาผลรวมของตนทนจรง (นนคอ �ci � �ci ตลอด) ดงนน �(Dn) ตองไมนอยกวา �(D0) เสมอสาหรบทกๆ mหมายความวาพลงงานศกยขณะใดๆ ตองไมนอยกวาพลงงานตอนเรมตน โดยทวไปเราจะออกแบบ � ซงม �(D0) = 0 ดงนน �(Di) � 0 เสมอสาหรบทกๆ i

ขอแตกตางของวธพลงงานศกยกบวธบญชกคอ วธบญชนนเราตองกาหนดตนทนถวเฉลยของทกๆ การดาเนนการ แลวแสดงใหเหนบญชไมเคยตดลบ แตวธพลงงานศกย เรากาหนดฟงกชนคานวณพลงงานศกยของทงโครงสรางขอมล (ซงตอนกาหนดนกตองแสดงใหดเลยวาฟงกชนนไมเคยใหคานอยกวาตอนเรมตน) จากนนใชความรเกยวกบตน

Page 90: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

74 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

ทนจรงของแตละการดาเนนการ ประกอบกบการเปลยนแปลงพลงงานศกย มาคานวณตนทนถวเฉลยของแตละการดาเนนการ

ทกลาวมาเปนเพยงแนวคดของการคานวณเวลา (หรอใชคาวาตนทน) ถวเฉลยของการดาเนนการตางๆ การวเคราะหกรณถวเฉลยออกจะดยงยาก กเพราะตองยงเกยวกบหลายๆ การดาเนนการ อกทงมกใชวเคราะหโครงสรางขอมลประเภทแปลกๆ ยงๆ หรอประเภทดงาย แตมองไมออกวาทาไมถงด วธตางๆ ทนาเสนอมานเราอาศยการเปรยบภาระการทางานดวยเงนหรอพลงงานศกย ทงนเพอชวยใหเขาใจการวเคราะหทยงยากใหงายขน (อยาลมวาเงนหรอพลงงานเหลานไมมสวนรวมใดๆ ในการเขยนโปรแกรมเพอสรางโครงสรางขอมลเหลาน มนเปนเพยงขอมลจนตภาพทเราสรางขนเพอชวยในการวเคราะห) ในหวขอยอยตอไปนจะขอยกตวอยางเลกๆ พรอมแสดงวธการวเคราะหดวยวธทงสาม เราจะไดพบการวธวเคราะหทยงขนเมอไดกลาวถงเรองของโครงสรางขอมลขนสงในบทถดไป

Stack แบบม multipop (ตอ)เราไดวเคราะหมากอนนแลว (ดวยวธรวมกลม) ไดผลวาการดาเนนการตางๆ อนไดแก push pop และ multipop ใชเวลาเปน O(1) คราวนจะใชวธทางบญช และวธพลงงานศกยเพอวเคราะหกรณถวเฉลยกน

วธทางบญชกอนอนขอกาหนดกอนวาตนทนจรงในการ push หนงครง หรอ pop หนงครงนนใชเงน 1 บาท อนนใชไดเพราะ push และ pop ใชเวลาคงตว เราจะกาหนดตนทนถวเฉลยเปนเงน 2 บาทในการ push หนงครง และกาหนดใหไมตองใชเงนเลย (ถวเฉลยแลว) ในการ pop และ multipop (อยาลมวานเปนตนทนถวเฉลย multipop จรงๆ อาจตองใชเงนและกใชไมคงตวดวย ขนกบจานวนท pop ออกดวย) หมายความวาอะไรในการกาหนดเชนน เหตผลและแรงจงใจในการกาหนดเชนนกคอ ถาในการ push หนงครงเรานาเงน 2 บาท (ทกาหนดใหเปนตนทนถวเฉลย) นนไปใช push จรงๆ (ดวยตนทนจรง) 1 บาท อก 1 บาทนนฝากไวในบญชใหม ทเพงเปดใหกบขอมลใหมทเพง push เขาไป ดงนนทกๆ ขอมลใน MStack จะมบญช(เกบเงน 1 บาท) กากบ

Page 91: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 75

อย พอถงตอนจะ pop ขอมล (ซงอาจถกเรยกจาก multipop กได) เรากไมตองใชเงนใดๆ เพมอก (ตนทนถวเฉลยเปน 0) เพราะวาเราเพยงแตถอนเงน 1 บาทจากบญชของขอมลนนมาใชเปนตนทนจรงในการ pop ขอมลออก (แลวกปดบญชนนเลย !) สรปไดวาดวยเงน 1 บาททจายไวลวงหนาตอน push กากบขอมลไว พอตอน pop กไมตองเสยเพม แตละบญชไมตดลบแนๆ เพราะตอนเปดกมเงนในบญช 1 บาท พอตอนบญชเปนศนยกถกปดเรยบรอย ตนทนถวเฉลยทกาหนดใหเปน 2, 0, และ 0 สาหรบ push, pop, และ multipop ตามลาดบนนจงใชได ดงนนเวลาการทางานถวเฉลยของทงสามจงเปน O(1)

บางคนอาจมคาถามวาแลวทาไมไมกาหนดใหตนทนถวเฉลยของ push ใหเปน 3 และตวอนๆ เปนคาคงตวอนๆ กคงทาได (การกาหนดใหเปน 2 หรอ 3 หรอ 10,000 หรอคาคงตวอนนน กแสดงวาเรามความหวงไวในใจวาการดาเนนการนใชเวลาคงตว) กคงไมแปลกทเงนในบญชจะมมากขนๆ เรอยๆ (แตหามตดลบ) คงจะเปนเรองตลกถาเราจะกาหนดใหตนทนถวเฉลยของ push และ pop ใหมากกวาคาคงตว (เชนใหเทากบจานวนขอมลใน stack คอเทากบ n) กเพราะวาเรารอยแลวโดยแทบไมตองวเคราะหกรณถวเฉลยเลยวา push และ pop เปน O(1) แลวเราจะไปตงตนทนถวเฉลยใหสงกวาทเปนจรงไปทาไม แตสาหรบ multipop นนเราวเคราะหกรณเลวสดแลวเปน O(n) เราจงกาหนดใหตนทนถวเฉลยนอยกวาน (สาหรบททามากคอเปนคาคงตว) เพราะเรามความรสกวาเวลาของ multipop ไมนาเลวตลอดตดๆ กน แลวแสดงใหเหนจรงวา ดวยตนทนถวเฉลยทกาหนดไวนน ไมเกดกรณบญชตดลบ กแสดงวาใชได

วธพลงงานศกยจากความรทวาการ push และ pop นนใชเวลาคงตว ขอสมมตวาใหใชพลงงาน 1 หนวย กาหนดให � (Di) = ni โดยท ni แทนจานวนขอมลใน MStack หลงการดาเนนการครงท i ถากาหนดใหตอนเรมตน MStack ไมมขอมลกแสดงวา �(D0) = 0 และเนองจากจานวนขอมลไมเคยตดลบ กแสดงวา �(Di) � 0 สาหรบทกๆ คาของ i สรปวาฟงกชนพลงงานศกยทกาหนดขนนนามาใชวเคราะหกรณถวเฉลยได

คราวนมาดวาหลงจากกาหนด � แลว แตละการดาเนนการมตนทนถวเฉลยเทาใด

push : push ใชตนทนจรงเทากบ 1 หนวย หลง push แลวจานวนขอมลใน MStack ยอมเพมขน 1 นนคอ ci = 1 และ �(Di) – �(Di–1) = 1 จากสตรการคานวณตนทนถวเฉลย ci = ci + �(Di) – �(Di–1) จะไดวา ci = 1 + 1 = 2

Page 92: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

76 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

pop : pop ใชตนทนจรงเทากบ 1 หนวย หลง pop แลวจานวนขอมลใน MStack ยอมลดลง 1 นนคอ ci = 1 และ �(Di) – �(Di–1) = –1 จากสตรการคานวณตนทนถวเฉลย ci =

ci + �(Di) – �(Di–1) จะไดวา ci = 1 – 1 = 0

multipop : ถา multipop มการ pop ขอมล k ตว กตองใชตนทนจรงเทากบ k หนวย และหลง multipop k ตวแลวจานวนขอมลใน MStack ยอมลดลง k นนคอ ci = k และ �(Di) – �(Di–1) = –k จากสตรการคานวณตนทนถวเฉลย ci = ci + �(Di) – �(Di–1) จะไดวา ci = k – k = 0

เหนไดวาทงสามการดาเนนการขางบนนมตนทนถวเฉลยเปน O(1) ทงสน เหมอนกบผลทวเคราะหดวยสองวธแรก

ตวนบฐานสองกาหนดให A คอตวนบเลขฐานสองขนาด k บต A[0] ถง A[k–1] โดยท A[0] คอบตทมนยสาคญนอยสด การดาเนนการนบเลขฐานเขยนเปนอลกอรทมไดดงน (ตวนบนมหลกการทางานเทยบเคยงไดกบ asynchronous counter หรอทเรยกวา carry–ripple counter ทนกเรยนคงเคยเรยนกนมาในวชาการออกแบบวงจรดจตอล)

01: Inc( A[0..k–1] )02: {03: i = 004: while ( i<k AND A[i] == 1 ) {05: A[i] = 006: ++i;07: }08: if ( i < k ) then A[i] = 109: }

เรมตน A เปนศนยทกๆ บต เวลาในการเรยก Inc แตละครงกขนกบวาจะวนอยในวงวนแบบ while กรอบ จะขอกาหนดจานวนการเปลยนบตใน A แทนภาระทเกดขนจรง (ซงสะทอนถงเวลาการทางาน) เชนการเปลยนจาก 0000 ไปเปน 0001 เสยภาระ 1 หนวย การเปลยนจาก 0111 เปน 1000 เสยภาระ 4 หนวย เปนตน ใหสงเกตวาภาระในการ Inc จะเทากบจานวนบตทเปน 1 ทตดกนจากดานขวามาทางซายเรอยๆ จนเจอบตทเปน 0 ตวแรก (จานวนบต 1 เหลานจะถกเปลยนเปน 0) บวกอกหนง (ซงกคอบต 0 บตแรกจากขวามอมาทางซาย ทจะถกเปลยนเปน 1)

Page 93: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 77

จะยกเวนกกรณเดยวคอกรณทเปลยนจากตวนบทเปน 1 หมดใหเปน 0 หมด เหนชดเลยวาภาระเลวสดกคอกรณน ซงใชเวลาเปน �(k)

กรณเลวสดบอกวา Inc เสยเวลาเปน �(k) ดงนนถาเรยก Inc m ครงกจะเสยเวลา O(mk) ทตองใชโอใหญในทนกเพราะวาเรารวา การเรยก Inc หลายๆ ครงนน นานๆ จะเปนกรณเลวสดสกครง mk จงเปนขอบเขตบนแน แตจะเปนขอบเขตลางดวยหรอเปลานน ชกไมแนใจ

เราจะมาวเคราะหกนวาเวลารวมเมอเรยก Inc m ครงจะเปนเทาใดกนแน ซงจะทาใหเราทราบวาถวเฉลยตอครงแลวเปนเทาใด

วธรวมกลมวธนอาศยการลยรวมคดภาระทงหมดเมอทางานไป m ครง จากนนกหารดวย m ไดเปนกรณถวเฉลย จากตวอยางการดาเนนการ Inc มตวนบ A เรมท 0 ดการเปลยนแปลงบตตางๆ ในรปท 5–2 จะพบวา A[0] เปลยนทกครงทเรยก A[1] เปลยนครงเวนครง A[2] เปลยนทกๆ 4 ครง สรปงายๆ กคอ A[i] เปลยนคาทกๆ 2i ครง

หรอพดอกนยหนง ถามการเรยก Inc m ครง A[0] เปลยน m ครง A[1] เปลยน m/2 ครง A[2] เปลยน m/22 ครง … A[i] เปลยน m/2i ครง ดงนนภาระสะสมเมอเรยก Inc m ครงยอมเทากบ

� � )(22

1

2

1

2 0

1

0

1

0mmmmm

ii

k

ii

k

ii

������

��

���� ���

สรปไดวาเวลาการ Inc ถวเฉลยแลวเทากบ �(m)m = O(1)

A[3] A[2] A[1] A[0] ภาระจรง ภาระจรงสะสม 2m0 0 0 00 0 0 1 1 1 20 0 1 0 2 3 40 0 1 1 1 4 60 1 0 0 3 7 80 1 0 1 1 8 100 1 1 0 2 10 120 1 1 1 1 11 141 0 0 0 4 15 161 0 0 1 1 16 181 0 1 0 2 18 201 0 1 1 1 19 221 1 0 0 3 22 241 1 0 1 1 23 261 1 1 0 2 25 281 1 1 1 1 26 30

รปท 5–2 ภาระในการเปลยนบตของการนบเลขฐานสอง

Page 94: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

78 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

วธทางบญชวธนกตองกาหนดตนทนถวเฉลย แลวคอยแสดงใหดวาใชได (คอบญชไมเคยตดลบ) กอนอนกาหนดใหภาระในการเปลยนคาของบต (จาก 1 เปน 0 หรอจาก 0 เปน 1) ใชเงน 1 บาท คราวนจะขอกาหนดใหตนทนถวเฉลยของ Inc เปน 2 นนคอเรยก Inc 1 ครงตองเสยเงน 2 บาท บาท (คอมความรสกวาตนทนถวเฉลยนาเปนคาคงตว) แลวจะแสดงใหดวาเสยเทานแหละ เพยงพอตอภาระในการนบเลขฐานสองไดจรงๆ (โดยไมตองยมเงนใครอก คอบญชไมตดลบ)

ใหสงเกตวาการเรยก Inc 1 ครงนนอาจมหลายบตทเปลยนจาก 1 เปน 0 แตจะมอยางมากเพยงบตเดยวทเปลยนจาก 0 เปน 1 (ลองดกรณ 100111 เปลยนเปน 101000 เปนตวอยาง) ดงนนทกาหนดใหเสยเงน 2 บาทตอ Inc หนงครงนนกเพราะวา จะใช 1 บาทในการเปลยนจากบต 0 เปนบต 1 และเหลออก 1 บาทฝากไวทบญชของบตทเพงถกเปลยนเปน 1 นเพอเปนตนทนในการเปลยนบตนกลบเปน 0 ในอนาคตเมอถงเวลาทตองเปลยน (เราจะมบญชประจาทกๆ บตๆ ละบญช) สวนบตอนๆ ทตองเปลยนจาก 1 เปน 0 นนใหใชเงนในบญชประจาบตนนเปนคาใชจายในการเปลยน (บตใดทเปน 1 แสดงวาบตจะตองเคยถกเปลยนจาก 0 และมการฝากเงนให 1 บาทในบญชอยแลว เพราะตวนบเราเรมทศนย) รปท 5–3 แสดงการเปลยนเงนในบญชประจาแตละบต (เขยนเปนเลขชกาลง)

A[3] A[2] A[1] A[0] ตนทนจรง ตนทนถวเฉลย ฝากเงน ถอนเงน00 00 00 00

00 00 00 11 1 2 1 000 00 11 00 2 2 1 100 00 11 11 1 2 1 000 11 00 00 3 2 1 200 11 00 11 1 2 1 000 11 11 00 2 2 1 100 11 11 11 1 2 1 011 00 00 00 4 2 1 311 00 00 11 1 2 1 011 00 11 00 2 2 1 111 00 11 11 1 2 1 011 11 00 00 3 2 1 211 11 00 11 1 2 1 011 11 11 00 2 2 1 111 11 11 11 1 2 1 0

รปท 5–3 การเปลยนเงนในบญชของแตละบต (เลขทเขยนเปนเลขชกาลง)

Page 95: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 79

ดวยการกาหนดตนทนถวเฉลยเปน 2 บาทนพบวาเงนในบญชของแตละบตไมเคยตดลบ และเพยงพอในการนบเลขฐานสองตามทกาหนดไวแสดงวามตนทนถวเฉลยเปน O(1)

วธพลงงานศกยในเมอเรมตน A เปนศนยทกบต คลายกบเปนภาวะสงบนาจะมพลงงานศกยเปน 0 เมอนบไปๆ บตตางๆ มการเปลยนแปลง พลงงานศกยนาจะเพมบางลดบางแตเมอใด A เปน 0 หมด พลงงานศกยกนากลบมาเปน 0 เหมอนตอนแรก แลวอะไรในตวนบ A นจะเปนตวกาหนดพลงงานศกยของตวนบ เมอใดทมการเปลยนแปลงบตมากๆ ตอการ Inc หนงครง กนาจะแสดงวามการใชพลงงานศกยในตวนบมาเปนตวเปลยนบตมาก (การใชพลงงานในระบบมาทางานเปนการระบวาตนทนถวเฉลยนาจะด เพราะเราพยายามไมใชพลงงานจากแหลงภายนอก แตพยายามจะใชพลงงานทไดสะสมมา) พดใหชดๆ กคอเปลยนบต 1 เปน 0 มากๆ เพราะบตทเปลยนจาก 0 เปน 1 อยางมากมเพยงบตเดยวตอการ Inc หนงครง ดงนนพลงงานศกยกควรถกกาหนดโดยจานวนบตทเปน 1 ในตวนบ

กาหนดให �(Ai) = bi โดยท bi แทนจานวนบตทเปน 1 หลงจาก Inc ครงท i เนองจากตอนเรมตน A เปนศนยทกบต แสดงวา �(A0) = 0 และ�(Ai) = bi ไมเคยตดลบเพราะไมมกรณจานวนบตตดลบ ดงนนฟงกชนพลงงานศกยนนามาใชวเคราะหกรณถวเฉลยได

กาหนดใหการ Inc ครงท i มตนทนจรงเปน ci นนคอมบตทเปลยนแปลงคาเปนจานวน ci บต เนองจากมอยางมากเพยงหนงบตทเปลยนจาก 0 เปน 1 ตอการ Inc หนงครง หรอจะกลาวไดวามอยางนอย ci –1 บตทเปลยนบตจาก 1 เปน 0 ดงนน bi � bi–1 – (ci –1) + 1

จากสตรการคานวณตนทนถวเฉลย ci = ci + �(Di) – �(Di–1) จะไดวา ci � ci + (bi–1 – (ci –1) + 1) – bi

= 2 = O(1)

Stack ขนาดไมจากดวธสราง stack วธหนงกคอการใชแถวลาดบ หรอทเราเรยกกนวาอาเรย (array) โดยผใชตองกาหนดขนาดกอนสรางวาจะเกบขอมลเปนจานวนมากสดกตวในแถวลาดบ เหนไดชดวามขอ

Page 96: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

80 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

เสยตรงทมขนาดจากด ยงมวธสราง stack อกแบบหนงทใชแถวลาดบเชนกน แตคราวนถา stack เตม เรากเพยงแตจองแถวลาดบใหมทใหญกวา แลวกทาสาเนาขอมลไปยงทเกบใหม เพยงแคน stack ทสรางกสามารถเกบขอมลได โดยไมตองกาหนดขนาด

วธทอธบายมานนงายด แตคาดวาคงจะทางานชา เพราะตองมาทาสาเนาขอมลจากแถวลาดบเกาไปแถวลาดบใหมเมอมการขยาย stack ซงตองใชเวลาแปรตามจานวนขอมลเปน �(n) แตเรามความรสกวานาจะเปนเหตการณทเกดขนไมบอย ถาคดแบบถวเฉลยกนาจะไมสะเทอนอะไร

กอนอนขอตงคาถามวา เมอไรจะขยาย stack ? และเมอตองขยายจะขยายเปนขนาดเทาไร ? สามญสานกบอกวากนาจะขยายเมอมปญหา นนคอเมอ stack มนเตมแลว แลวกคงขยายใหมขนาดใหญกวาเดม คงไมดแนถาจะขยายใหใหญขนอกหนงชอง เพราะจะเกดสภาพเตมตลอดเมอมการเพมอยเรอยๆ ทาใหตองขยายตลอด กลายเปนวาเพมขอมล n ตว ขยายทกครง ทาสาเนาชดขอมลทกๆ ครง เสยเวลารวมทงสนเปน �(n2) หรอเราจะขยายขนาดไปสกรอยเทาของของเดม ซงคงไมคอยด เพราะสนเปลองเนอท โดยทวไปเราตองการให load factor ซงคอสดสวนของจานวนขอมลตอเนอททจองไวควรมขนาดไมนอยกวา 0.5 ดงนนเมอเตม กควรขยายขนาดตารางเปนสองเทา ไดเปนอลกอรทมสาหรบการ push ขางลางน

01: push( S, x )02: {03: if ( S.size == 0 ) {04: allocate S.array with 1 slot05: S.size = 1; S.num = 006: }07: if ( S.size == S.num ) {08: allocate newArray with 2�S.size slots09: copy all items from S.array to newArray10: S.array = newArray11: S.size = 2�S.size12: }13: S.array[ S.num ] = x14: ++(S.num)15: }

บรรทดท 3–6 ใชสาหรบกรณเรมตนท stack ไมมขอมลเลย ( S.size คอขนาดของ stack ) บรรทดท 7–12 ทางานเมอ stack เตม ( S.num คอจานวนขอมล ) สวนบรรทดท 13 กคอการเพมขอมลในแถวลาดบใชเวลา �(1) ดงนนกรณเลวสดของ push กคอเมอ stack เตม มการทาสาเนาขอมลใชเวลาทงสนเปน �(n)

Page 97: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 81

วธรวมกลมถาวเคราะหกรณถวเฉลยโดยใชวธรวมกลม จะพบวามการขยาย stack เมอจานวนขอมลเปน 1, 2, 4, …, 2k ตอนจะ push เนองจากเราขยาย stack ทละเทาตว ดงนนเวลาโดยรวมสาหรบการpush เปนจานวน n ครงเปน

� �nnn

n

k

kn

i3221

lg

01���

���

���

��

��

����

ผลบวกตวแรกคอภาระในการเพมขอมลในแถวลาดบทตองทาแนๆ เพม n ครง กตองทา n หน สวนผลบวกตวขวาคอภาระทเกดการขยาย stack ตอนทมขอมลเปน 1, 2, 4, 8, … ใชเวลาเปน 1, 2, 4, 8, … ตามลาดบ มคาเทากบ � � 12 1lg

�n ซงนอยกวา 2n ดงนน push n ครงใชตนทนรวมแลวนอยกวา 3n ถวเฉลยแลวจงนอยกวา 3 เปน O(1)

วธทางบญชถาใชวธทางบญช กขอยกคาตอบเลยวาเพมหนงครงใชตนทนถวเฉลย 3 บาท ทอยากจะอธบายกคอวาทาไมตอง 3 บาทดวย เราจะมบญชตามขอมลตางๆ โดยเมอขอมลเตมตาราง ทกๆ บญชตามขอมลตางๆ จะมเงนฝากอยางนอยหนงบาท เมอจองแถวลาดบใหมเสรจ (ในบรรทดท 8) แลวกาลงตองการทาสาเนาขอมล (ในบรรทดท 9) การทาสาเนาขอมลตรงนกจะใชเงนตามบญชของขอมลตางๆ นเองมาเปนตนทนในการทาสาเนา ขอมลละบาท แลวเงนเหลานมาจากไหน กคอทกๆ ครงท push ตองใชเงน 3 บาท หนงบาทแรกใชในการเพมขอมลในแถวลาดบ บาททสองเกบไวทขอมลใหมทเพงถกเพมเขามา และบาททสามฝากไวกบขอมลเกาใน stack ทไมมเงนในบญชเลย (จะไดใชตอนทาสาเนาขอมลหลงขยายในอนาคต) สมมตวาหลงขยายแถวลาดบและทาสาเนาเสรจมขอมล m ตว จะเหนไดวากวาจะเตมครงตอไป กตอง push อก m ตว จงประกนไดวาบญชของขอมลทกๆ ตวตอนท stack เตมครงตอไปตองมเงนฝากอยางนอยหนงบาทแนๆ บญชทงหลายจงไมเคยตดลบ แสดงวา 3 บาททกาหนดมานนใชได

วธพลงงานศกยถาใชวธพลงงานศกย เราอยากให stack มพลงงานสะสมไวเพอการขยายตว ดงนนการ push จะเพมพลงงาน เมอ push ไปเรอยๆ พลงงานกเพมขนเรอยๆ เปนเชนนจน stack เตม เมอตอง push อก เพมไมได เกดการจองแถวลาดบใหมและทาสาเนาขอมล ชวงนจะใชพลงงานทเกบไวมา

Page 98: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

82 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

เปนตนทนในการทาสาเนา เมอทาสาเนาเสรจพลงงานทสะสมไวกถกใชหมด แลวมาเรมสะสมหลง push กนใหม ประเดนทตองการใหใชพลงงานจนหมดนน กเพราะนนแสดงวาทสะสมมานน สะสมมาพอดๆ ไมเกน (แตพลงงานไมพอไมได) ทไมเกนนนยอมแสดงวาตนทนถวเฉลยทจะคานวณไดนนจะไดเปนตนทนถวเฉลยทตาสดจรงๆ เอาละทอธบายมาทงหมดนเพอบอกวาพลงงานของระบบจะเปนศนยเมอตอนไมมขอมล (ตอนเรมตน) และเมอหลงจองแถวลาดบขนาดใหญขนแลวทาสาเนาเสรจ ซงสองสภาพนเกดขนเมอ จานวนขอมลเปนครงหนงของขนาดของแถวลาดบ จงกาหนดให

�(Vi) = 2Vi.num – Vi.size

เหนไดวาระบบมพลงงานเพมขนเมอมขอมลเพมขนในสวนทเกนครงของขนาด stack ฟงกชนพลงงานศกยนใชคานวณตนทนถวเฉลยได เพราะเมอตอนเรมตนมพลงงานเปนศนย และสตรนไมเคยใหคาตดลบ เพอความกระทดรดจะขอเขยนใหสนๆ เปน �i = 2ni – si

มสองกรณทตองพจารณาคอตอนทไมมการขยาย กบตอนทมการขยาย เนองจากทงสองกรณใชตนทนจรงไมเทากน ตอนทไมมการขยายนนใชตนทนจรงเทากบ 1 ดงนน

ci = ci + �i – �i–1

= 1 + (2ni – si) – (2ni–1 – si–1)= 1 + (2(ni–1+1) – si–1) – (2ni–1 – si–1)= 3

เนองจากไมมการขยายดงนน si = si–1 และหลงการ push ni = ni–1 + 1

สาหรบกรณทมการขยายนนตนทนจรงเทากบปรมาณการทาสาเนา บวกกบการเพมขอมลตวใหม รวมเปน ni–1

+1 และเนองจากมการขยายดงนน si = 2si–1 และ ni–1 = si–1 จะไดวาci = ci + �i – �i–1

= ni–1 + 1 + (2ni – si) – (2ni–1 – si–1)= ni–1 + 1 + (2(ni–1+1) – 2si–1) – (2ni–1 – si–1)= ni–1 + 1 + (2(ni–1+1) – 2ni–1) – (2ni–1 – ni–1)= 3

สรปวาตนทนถวเฉลยในการ push เปน 3 = O(1)

Page 99: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 83

Binary search แบบ dynamicวธการคนแบบทวภาคนนกระทากบขอมลในแถวลาดบทเรยงจากนอยไปมาก โดยมเวลาการทางานทงกรณเลวสด และกรณเฉลยเปน O( log n ) ตามทไดวเคราะหใหดในบททแลว สงทเปนปญหาของการคนแบบทวภาคกคอการทตองเกบขอมลในแถวลาดบ ซงใชเวลาเปน O(n) ในการเพมหรอลบขอมลในแถวลาดบ มวธจดเกบขอมลอกแบบหนงทยงคงทาใหเราคนแบบทวภาคไดในเวลาเกอบเทาเดม แตสามารถเพมขอมลไดเรวขน รายละเอยดการจดเกบและการดาเนนการตางๆ มดงน

สมมตวาเราตองการเกบขอมลเปนจานวน n ตว โดยเราสามารถเขยนคาของ n ในฐานสองเปน( nk–1 …n1 n0 )2 โดยท ni = 0 หรอ 1 , k = 1+ �lg n� และ nn

ki

ii ��

10

2 เราเตรยมแถวลาดบ A0, A1, …,Ak–1 โดยท Ai มขนาด 2i ชอง Ai ตางๆ เหลาน ถาไมเกบขอมลจนเตม กไมมขอมลเลย ทงน Ai จะเตมหรอวางกขนกบวา ni = 1 หรอ 0 ตามลาดบ ขอมลทเกบใน Ai ตองเรยงลาดบจากนอยไปมาก แตไมมขอจากดใดๆ เกยวกบการเรยงของขอมลทอยคนละแถวลาดบกน รปท 5–4 (ก) แสดงตวอยางการเกบขอมล 6 ตว เนองจาก (110)2

คอจานวนฐานสองทมคา 6 ดงนนเราตองจอง 3 แถวลาดบ โดยท A2 และ A1 มขอมลเตมแถวลาดบทงสอง สวน A0 วาง

การคนขอมล ทาไดโดยการคนแบบทวภาคในแตละแถวลาดบ ใชเวลาทงสน

)log()())2(lg())2(lg( 221

0

1

0

1

0nkin

k

i

k

i

ik

i

ii ����

��

��

������ ���

การเพมขอมล ทาไดดงน01: insert( A, x )02: {03: B0 = x; i = 0;

04: while ( i < k and Ai is full ) {

05: built Bi+1 by merging Ai and Bi06: clear Ai07: ++i08: }09: if ( i >= k ) allocate Ai10: Ai � Bi11: }

กาหนดให Bi คอแถวลาดบทมขนาด 2i หลกการทางานอาศยการนาขอมลใหมมาใสใน B0 ถา A0 วางกเพยงแตยาย B0 ไปแทน A0 กจบ แตถาไมวางกสราง B1 ซงไดจากการผสาน B0 และ A0

Page 100: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

84 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

เขาดวยกน (ในบรรทด 5) ทแลวกเตรยมจะไปแทน A1 ถาวาง แตถาไมวางกสราง B2 ซงไดจากการผสาน B1 และ A1 เขาดวยกน แลวกเตรยมจะไปแทน A2 ถาวาง กกระทาเชนนไปเรอยจนกวาจะเจอ Ai ทวาง หรอวาอาจเปนไปไดวาเตมหมดตงแต A0 ยน Ak–1 กไมเปนไรถาเปนกรณน กเพยงแตจอง Ak ใหมกเทานน (บรรทดท 9) แลวกจะไดทวางเพอใส Bi

ลองดตวอยางการเพมขอมล (ดรปท 5–4) จากเดมเรามขอมลอย 6 ตวในรป (ก) ถาเราเพม 4 กจะงายและรวดเรวมากเพราะ A0 วางพอด ไดผลดงรป (ข) คราวนเราอยากเพม 7 กยงหนอยเพราะ A0 ไมวาง กเลยสราง B1 (ดรป (ค)) มาจากการผสาน 7 กบ 4 ได (4,7) แต A1 กไมวางอก กสราง B2 มาจากการผสาน (4,7) กบ (6,8) ได (4,6,7,8) แต A2 ไมวางกเลยสราง B3 มาจากการผสาน (4,6,7,8) กบ (2,5,9,14) ได (2,4,5,6,7,8,9,14) แต A3 ไมเคยจองมากอน กจองแลวยาย B3

ไปเกบใน A3 ไดดงรป (ง)

6 8

2 5 9 14

A0

A1

A2

4

6 8

2 5 9 14

A0

A1

A2

B0

B1

B2

2 4 5 6 7 8 9 14

A0

A1

A2

A3

(ก)

(ค)

(ข)

(ง)

7

4 7

4 6 7 8

2 4 5 6 7 8 9 14B3

รปท 5–4 ตวอยางการเพมขอมล

แนนอนวากรณเลวสดกคอกรณทหมนในวงวนแบบ while เปนจานวนมากสด ซงกคอกรณททกๆ แถวลาดบของ A เตมหมด ตองหมนเปนจานวน k รอบ การสรางแถวลาดบและผสานแถวลาดบในบรรทดท 5 นนใชเวลา �( 2i+1 ) ดงนนกรณเลวสดบรรทดท 4 ถง 8 ใชเวลาทงสน

Page 101: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:52 : [email protected] บทท 5 การวเคราะหกรณถวเฉลย 85

� � )(222)2(1

0

11

0

1 nkk

i

ik

i

i �������

��

��� ��

บวกกบกรณตองจอง Ak (บรรทดท 9) และยายขอมล (บรรทดท 10) ซงใช �( n ) เชนกน ดงนนสรปไดวากรณเลวสดใชเวลา �( n )

แตเรารสกวา กรณเลวสดนจะเกดกเฉพาะเมอทกๆ แถวลาดบใน A เตมหมด ซงนานๆ จะเกดซะท ถาคดกรณถวเฉลยนาจะดกวาน เนองจากบรรทดท 5 และ 10 ในอลกอรทม insert เปนคาสงมาตรเวลา ซงเปนภาระเกยวกบการยายขอมล (ไมตองคดตอนจองกได เพราะถาจองเทาใดกตองยายขอมลเทานน) เราจะมาวเคราะหกรณถวเฉลย ซงพจารณาจากกรณเลวสดของการเพมขอมลเปนจานวน n ครง (กาหนดใหตอนเรมตนไมมขอมลเลย)

คดงายๆ แบบน (ดวยวธรวมกลม) เมอมการเพมขอมลจนครบ n ครงแลว ขอมลทอยใน A0 ตองเคยผาน B0 แลวมา A0 (คอยาย 2 ครง) ขอมลทอยใน A1 กคงตองเคยผาน B0 , A0 , B1 แลวมา A1

(คอยาย 4 ครง) ขอมลทอยใน A2 กคงตองเคยผาน B0 , A0 , B1 , A1 , B2 แลวมา A2 (คอยาย 6ครง) สรปไดวาขอมลทอยใน Ai ตองเคยถกยายไปมาเปนจานวน 2(i+1) ครง เนองจากมขอมลอย 2i ตวใน Ai ถา ni = 1 ดงนนจานวนภาระทงหมดเมอไดเพมไป n ตวจะเทากบ

��

��

��

��

��

��� ����

1

0

11

0

11

0

1

022)1(22)1(22

k

i

ik

i

ik

i

ik

i

ii iiin

โอใหญตวซายไดผลลพธเปน O( n log n ) (จากผลบวกในลกษณะเดยวกนในตวอยางท 4–25)และโอใหญตวขวาสดไดผลเปน O(n) เวลารวมในการเพมขอมล n ตวเปน O(n log n) ดงนนเวลาถวเฉลยตอการเพมหนงครงเปน O( log n )

แบบฝกหด1. ถาเราเพมการดาเนนการ Dec ในตวนบฐานสอง ซงทาหนาทลดคาของตวนบลงหนง จงแสดงใหเหนจรงวาการดาเนนารจานวน n ครงอาจมตนทนมากไดถง �(nk) โดยท k คอจานวนบตของตวนบ

Page 102: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

86 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:52 : [email protected]

2. กาหนดให stack ทใชในระบบสามารถรบขอมลไดไมเกน k สมมตวาเราทาสาเนา stack ของระบบไวทกครงทมการดาเนนการบน stack นผานไปทกๆ k ครง จงแสดงใหเหนจรงวาตนทนรวมเปน O(n) เมอเกดการดาเนนการของ stack เปนจานวน n ครง

3. จงแสดงวธการสราง queue ดวย stack สองตว โดยทตนทนถวเฉลยของการดาเนนการ enqueue และ dequeue เปน O(1)

4. กาหนดใหเกดการดาเนนการบนโครงสรางขอมลหนงเปนจานวน n ครง การดาเนนการครงท i มตนทนจรงเปน i ถา i = 2k สาหรบ k = 0, 1, 2, ... มฉะนนจะมตนทนเปน 1 จงหาตนทนถวเฉลยตอหนงการดาเนนการดวยการใชวธรวมกลม วธทางบญช และวธพลงงานศกย

5. จงหาตนทนรวมของการดาเนนการบน stack แบบม multipop จานวน n ครง โดยทตอนเรมตนมขอมลอยใน stack s0 ตว และตอนสดทายมขอมลอย sn ตว

6. สมมตใหตวนบฐานสองเรมนบทตวเลข B (แทนทจะเปน 0 ตามทไดนาเสนอมา) ซงมจานวนบตทเปนหนงอย b บต จงแสดงใหเหนจรงวาการเรยก Inc ไป n ครงจะมตนทนเปน O(n) ถา n = �(b)

7. ถาเราตองการเพมการดาเนนการ Reset ใหกบตวนบฐานสอง ซงเปนการตงคา 0 ทกบตในกบตวนบ อยาทราบวาจะตองออกแบบตวนบฐานสองอยางไร เพอทจะทาใหลาดบของการดาเนนการทประกอบดวย Inc และ Reset เปนจานวน n ครงใชตนทน O(n) กาหนดใหตอนเรมตนตวนบนมคาเปนศนย

8. ถาเราจะเพมคณสมบตใหกบ stack ขนาดไมจากด เพอใหมความสามารถในการหดขนาดของแถวลาดบดวยเมอขอมลใน stack มจานวนนอยเกนไป ทาใหใชเนอทไมคอยคม (หมายความวา push มโอกาสขยาย ในขณะท pop กมโอกาสหดตว) จะทาอยางไร เพอใหยงคงมตนทนถวเฉลยตอหนงการดาเนนการเปน O(1)

9. จงอธบายแนวคดในการลบขอมลอกจากตารางทรองรบ binary search แบบ dynamic

10. สมมตวาเราออกแบบฟงกชนพลงงานศกย � ซงม �(Di) � �( D0) ตลอดทกๆ i > 0 โดยท �(D0) � 0 จงแสดงใหเหนจรงวามฟงกชนพลงงานศกย �’ ทม �’(D0) = 0 �’(Di) � 0 สาหรบทกๆ i > 0 และใหตนทนถวเฉลยเหมอนกบกรณใช � เปนตววเคราะห

Page 103: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] 87

บทท 6

ประสทธภาพการทางานของอลกอรทมหนงๆ นนผกพนกบลกษณะของการจดเกบขอมลทใชระหวางการทางานอยางแนนแฟน การเลอกโครงสรางขอมลทเหมาะสมจะสงผลใหการทางานเปนไปอยางมประสทธภาพ หลายๆ อลกอรทมทมหลกการทางานคลายๆ กนแตมวธการจดเกบขอมลภายในตางกน สงผลใหไดประสทธภาพทตางกน ตวอยางทเหนไดชดคอการเรยงลาดบแบบเลอก (selection sort) และการเรยงลาดบขอมลแบบฮป (heap sort) สองอลกอรทมนอาศยหลกการทางานทเหมอนตรงทวา ในแตละรอบของการเรยงลาดบนนจะคนขอมลตวมากสด เพอนาไปสลบทเกบกบขอมลตวหลงสดในชดขอมลทกาลงพจารณา สงทสองอลกอรทมนตางกนกคอ selection sort นนมองการเกบขอมลเปนรายการจงใชวธการคนขอมลตวมากสดแบบลาดบ ใชเวลาในแตละรอบเปน �(n) ในขณะท heap sort นนจดเกบขอมลแบบฮปซงสามารถหาและสลบขอมลตวมากสดไดใน O(log n) ประสทธภาพโดยรวมของการเรยงลาดบของทงสองจงแตกตางกนเปน �(n2) กบ O( n log n ) ซงเปนผลโดยตรงจากการใชโครงสรางขอมลทตางกน

ตองขอเนนวาการจะเลอกใชโครงสรางขอมลประเภทใดนน กคงตองขนกบวาเราตองการบรการแบบใดจากขอมลทจดเกบ ถาเรากาลงแกปญหาทเกยวกบกราฟ เชนหาเสนทางสนสดของกราฟ G เราจะคงตองหาวธแทน G ในหนวยความจาเพอทจะสอบถามคณสมบตของจดหรอเสนเชอมตางๆ ใน G อนนจะเหนวามนตรงไปตรงมา ถาอลกอรทมทเกยวกบกราฟ กตองมทเกบสาหรบกราฟ อลกอรทมทเกยวกบการประมวลผลรปทรงเรขาคณตกตองมทเกบรปทรงเรขาคณตทจะถกประมวลผล เปนตน

แตประเดนทพบบอยมากกคอการบรการจดเกบขอมลเสรมอนๆ ทตองใชระหวางการทางานของอลกอรทม ซงมลกษณะแบบ dynamic set คอเปนทเกบขอมลทสมาชกภายในมการเปลยน

โครงสรางขอมล (แบบงาย)

Page 104: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

88 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

แปลงไปเรอยๆ คอมการเพม ลบ หรอเปลยนคาสมาชกได และแนนอนวาเมอมการเกบกตองมการคน อาจเปนคนขอมลตามคย หรอคนขอมลทมคยนอยสด หรอคนขอมลทมคยมากสด หรออาจคนตวถดไป สารพดความตองการ ขนกบกระบวนการแกไขปญหานนๆ โดยทวไปเราควรพจารณาการใชงานขอมลเหลานทเราตองการกอน โดยการแจกแจงการดาเนนการตางๆ ทจะเกดขนกบขอมล เราเรยกชดของการดาเนนการทจะใชเหลานวา abstrat data type (เรยกยอๆ วา ADT) มอยหลายๆ ADT ทเปนทคนเคยกนในวงการเชน stack, queue (สองตวนใครไมรกรบถอนวชานได), Dictionary กเปน ADT เพอการเพม ลบ และคนขอมลโดยใชคย หรอ Priority queue เปน ADT เพอการเพม ลบขอมลทมคยนอยสด และคนขอมลทมคยนอยสด เปนตน เราอาจจะพบปญหาทตองใช ADT ทมแคการเพมและคนขอมลเทานน (ไมมลบ) กเปนได ดงนนการนยาม ADT ทเราตองการในกระบวนการแกไขปญหาทกาลงออกแบบเปนเรองสาคญ โดยเรานยาม ADT ทตองการใหเสรจเสยกอน แลวคอยมาคดในรายละเอยดวา ADT ทตองการนนควรสรางจรงๆ ดวยโครงสรางขอมลแบบใด จงจะมประสทธภาพทสด

ในบทนเราจะมาสรปอยางยอๆ ในเรองของโครงสรางขอมลทไดเคยเรยนมาในวชาโครงสรางขอมลเบองตน อนไดแกรายการ ตนไมคนแบบทวภาค ตารางแฮช ฮป และกราฟ แตละแบบกสนองความตองการในการจดการกบขอมลแตกตางๆ กน จะขอทบทวนเพยงเลกนอย โดยจะเสรมการวเคราะหประสทธภาพการดา เนนการสาหรบกรณทไมไดแสดงใหดตอนเรยนวชาโครงสรางขอมล

รายการรายการ (list) เปนโครงสรางขอมลทรองรบการดาเนนการทวๆไปคอการเพม ลบ และคนขอมล สงทเดนของรายการกคอขอมลทจดเกบนนมการระบตาแหนง หมายความวาแตละขอมลทเกบนนมความสมพนธในเรองทวาตวใดอยกอนหรอหลงตวใด ดงนนจะรองรบการดาเนนการทเกยวกบตาแหนงของขอมล เชนตาแหนงแรกสด ตาแหนงทายสด ตาแหนงถดไป ตาแหนงกอนหนา เหลานเปนตน เมอผใชตองการเพมหรอลบขอมล กตองระบตาแหนงของขอมลทจะดาเนนการดวย

Page 105: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 89

วธสรางรายการนนกระทาไดงายสองวธคอ การใชแถวลาดบเกบขอมล โดยใชเลขดชนของแถวลาดบแทนตาแหนงของขอมลในรายการ (ดรปท 6–1) หมายความวาขอมลตางๆ ในรายการถกเกบตดกนไปในแถวลาดบเรมตงแตชองแรกไปเรอยๆ ดวยวธนการเขาถงขอมลโดยระบตาแหนงจะสามารถทาไดในเวลา �(1) เนองจากการเขาถงขอมลในแถวลาดบโดยการระบเลขดชนนนกระทาไดในเวลาคงตว แตวาการเพมและลบขอมลนนใชเวลาเปน O(n) เนองจากอาจมการยายขอมลเพอแทรกขอมลตวใหม หรอยายขอมลเพอปดตาแหนงของขอมลตวทถกลบ ในขณะทการคนขอมลนน ถาใชแบบคนตามลาดบกจะใชเวลาเปน O(n) แตถาเราจดใหขอมลทเกบในแถวลาดบนนเรยงลาดบตามคาของขอมลกสามารถคนแบบทวภาคไดในเวลา O(log n)

count 1 2 3 4 5 6 7 8 9 105 25 31 42 9 84

รปท 6–1 การสรางรายการ <25, 31, 42, 9, 84> ดวยแถวลาดบ

เพอขจดปญหาทตองยายขอมลเนองจากการเพมหรอลบขอมล (เพราะวาความตองการทจะใหขอมลตดกนในแถวลาดบ) เราสามารถเกบขอมลแตละตวแยกจากกน แลวเกบทอยของขอมลตวถดไป (หรอตวกอนหนาดวยกได) เพอสรางความสมพนธเชงอนดบของขอมลในรายการไว วธการเกบแบบนเรยกวารายการโยง (linked list) ดวยวธน รปท 6–2 แสดงรายการโยงของรายการ <25, 31, 42, 9, 84> โดยชองทมเสนลกศรแทนการจาทอยของกอนขอมลถดไปในรายการ ในกรณเปนขอมลตวสดทายกจะเกบคาพเศษเพอระบวาไมมตวถดไป

25 31 42 9 84

รปท 6–2 การสรางรายการ <25, 31, 42, 9, 84> ดวยรายการโยง

เนองจากขอมลไมจาเปนตองเกบตดกนในหนวยความจา ดงนนการแทรกขอมลใหมระหวางขอมลตวเกาสองตวกกระทาไดโดยเพยงแตเปลยนตวโยงอนดบขอมลในรายการเทานน ซงใชเวลาเปน �(1) การลบขอมลกเชนเดยวกนใชเวลาเปน �(1) แตเราไมสามารถเขาถงขอมลไดรวดเรวโดยการระบตาแหนง (หรอเลขอนดบ)ของขอมลในรายการ (เชนอยากไดขอมลตวท 3 เปนตน) วธเดยวททาไดกคอตองเรมทหวรายการแลวคอยๆ กระเถบไปทละตวจนถงตวทตองการ ซงใชเวลาเปน O(n) และการคนขอมลกคงตองทาแบบลาดบเทานนซงใชเวลาเปน O(n) ไมสามารถคนแบบทวภาคไดรวดเรวดวยเหตทไมสามารถเขาถงขอมลใดไดรวดเรวนนเอง

Page 106: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

90 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

สรปไดวาสาหรบการเกบขอมลแบบรายการนน ไมวาจะใชวธใดสรางกตาม โดยทวไป 1 จะมบางการดาเนนการทใชเวลาเปน O(n)

ตนไมคนแบบทวภาคตนไมคน (search tree) เปนโครงสรางขอมลอกประเภทหนงทรองรบการดาเนนการทวไป จาพวกการเพม ลบ และคนขอมล เนองจากการจดเกบขอมลในตนไมคนนนอาศยอนดบของขอมลทไดจากการเปรยบเทยบวานอยกวาหรอมากกวา มาเปนตวกาหนดโครงสรางการจดเกบ ดงนนจงรองรบการดาเนนการทมเรองของอนดบของขอมลเกยวของดวย เชนการหาตวมากสด การหาตวนอยสด การหาตวทมคาใกลสดกบขอมลทตองการ เปนตน

ตนไมคนทใชกนมากคอตนไมคนแบบทวภาค (binary search tree) เปนตนไมแบบทวภาคทแตละโหนดมสองลก โดยมกฎในการเกบคอขอมลทกๆ ตวในตนไมยอยทางซายของโหนด x ตองมคานอยกวาขอมลท x และขอมลทกๆ ตวในตนไมยอยทางขวาของโหนด x ตองมคามากกวาขอมลท x รปท 6–3 แสดงตวอยางตนไมคนแบบทวภาค ใบของตนไมซงแสดงดวยสเหลยมทบแทนจดสนสดคอไมมขอมลเกบอย วธสรางกคลายรายการโยงคอใชวธจาทอยของโหนด

25

15 51

2 20

18

73

รปท 6–3 ตนไมคนแบบทวภาค

การคนขอมลกระทาโดยการวธไลเปรยบเทยบเรมจากราก อาศยผลของการเปรยบเทยบในกรณไมเทา เปนตวตดสนใจวาจะเลยวไปคนตอในตนไมยอยซาย หรอขวา ถาการคนสนสดทใบ กแสดงวาไมพบขอมลทตองการคน ดงนนประสทธภาพการคนจงเปน O(h) โดยท h คอความสง 1 ทตองขอใชคาวาโดยทวไป กเพราะวามรายการพเศษบางประเภททออกแบบเฉพาะงาน ซงใหประสทธภาพทดกวาได อาทเชน stack หรอ queue

Page 107: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 91

ของตนไม การเพมและลบขอมลกมประสทธภาพเปน O(h) เชนกน (จะไมขอลงในรายละเอยดของวธการเพมและลบ)

ปญหาทนาสนใจกคอความสงของตนไมเปนเทาไร ความสงของตนไมคนแบบทวภาคนมชวงทเปนไปไดกวางมากคอเตยทสดเทากบ 1 + �lg n� (กรณของตนไมไดดล) และสงสดเปน n(เชนกรณททกๆ โหนดเรยงยาวทางขวาไปเรอยๆ จากนอยสดไปมากสด) ดงนนถามขอมลหนงลานตว ความสงของตนไมจะอยในชวง 20 ถงหนงลาน ซงกวางมาก แลวการเพม ลบและคนขอมลจะมประสทธภาพเปนเชนไร

วธหนงทพอจะชวยใหเหนภาพของตนไมในกรณเฉลยได กคอการวเคราะหจากตนไมคนแบบทวภาคทสรางขนจากการเพมขอมลทสมขน แลววเคราะหหาความลกเฉลยของโหนดภายใน และความลกเฉลยของโหนดภายนอก (ซงคอใบ) จะขอเรมดวยการหาคา DI(n) ซงคอความลกเฉลยของโหนดภายในของตนไมคนแบบทวภาคทมขอมล n ตว กาหนดให I(n) คอผลรวมของความยาวของวถจากรากถงทกๆ โหนดภายใน เรยกคานวาความยาวของวถภายใน (internal path length) จะไดวา

DI (n) = I(n)n

LR

รปท 6–4 ตนไมคนแบบทวภาค

พจารณารปท 6–4 ถาตนไมทงตนม n โหนด และตน L ม k โหนด ตน R กจะม n–k–1 โหนด ถาพจารณาเฉพาะตน L (ไมคดวาเปนลกของใคร) L ยอมมความยาวของวถภายในเปน I(k) และในทานองเดยวกน R ยอมมความยาวของวถภายในเปน I(n–k–1) แตเมอพจารณา L ตอนทเปนตนไมยอยทางซาย ทกๆ โหนดใน L ยอมมความลกเพมอกหนงระดบ และทานองเดยวกบตน R ทเมอเปนตนไมยอยทางขวา ทกๆ โหนดกจะลกลงอกหนงระดบเชนกน เขยนเปนความสมพนธเวยนเกดของ I(n)ไดดงน

I(n) = (I(k) + k )+ (I(n–k–1) + n–k–1)= I(k)+ I(n–k–1) + n–1

Page 108: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

92 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

เนองจากตน L มสทธทจะมจานวนโหนดภายในไดตงแต 0 ถง n–1 โดยทแตละแบบมโอกาสเทาๆ กน ทงนเพราะวาตนทางซายจะมกตว กขนกบคาของรากวาเปนอนดบทเทาไรในขอมล nตว เนองจากขอมลทเพมเขามานนเปนคาสม โอกาสทรากจะเปนอนดบใดนนจงถอไดวาเทาๆ กน ดงนนคาเฉลยของความยาวของวถภายในยอมเทากบ

� �

� �

)1()(2

)1()1()(1

1)1()(1)(

1

0

1

0

1

0

���

������

������

nkIn

nknIkIn

nknIkIn

nI

n

k

n

k

n

k

สามารถหาผลเฉลยของ I(n) ไดดงน

)1()(2)(1

0��� �

nnkInnIn

kคณ n ตลอด

)2)(1()(2)()1(2

0����� �

nnkInInn

kเปลยน n เปน n–1

nI(n) = (n+1)I(n–1) + 2(n–1)

< (n+1)I(n–1) + 2n

นาสองความสมพนธขางตนมาลบกนตด –1 ตวขวาสดทง (จะทาใหงายตอการหาผลเฉลย)

I(n)n+1 <

I(n-1)n +

2(n+1)

= I(1)

2 +2��

��1

3 +14 +…+

1n+1

หาร n(n+1) ตลอด จากนนคลความสมพนธเวยนเกด โดยท I(1) = 0 ผลบวกทปรากฎในวงเลบคลายจานวนฮารมอนก Hn+1

I(n) < 2(n+1)Hn+1

= O( n log n )

จากความร Hn = O(log n)

ดงนนจาก DI(n) = I(n)n = O(nlog n)

n = O( log n )

เราสามารถหาความลกเฉลยของใบ (DE(n)) ของตนไมคนแบบทวภาคไดจากความยาวของวถภายนอก ( E(n) : external path length) ซงคอผลรวมของความยาวของวถจากรากถงทกๆ ใบในตนไม โดย DE(n) =

E(n)n+1 (ทตองหารดวย n+1 กเพราะวาตนไมทมโหนดภายใน n โหนดจะม

n+1 ใบ) เราสามารถหา E(n) ไดจากสมการ E(n) = I(n) + 2n (สามารถพสจนไดงายๆ ดวยอปนยเชงคณตศาสตร ซงจะไมขอกลาวรายละเอยดในทน ผสนใจหาอานไดจากตารา

Page 109: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 93

คณตศาสตรภนทนะในบททเกยวกบตนไม) เมอ I(n) = O(n log n) จะไดวา E(n) = O(n log n) ดวย ดงนน DE(n) =

E(n)n+1 = O(nlog n)

n+1 = O( log n )

สรปไดวาความลกเฉลยของทงโหนดภายในและโหนดภายนอกเปน O( log n ) การคนขอมลทใชเวลาแปรตาม DI(n) กรณคนพบ และแปรตาม DE(n) กรณคนไมพบ รวมถงการเพมและการลบทใชเวลาแปรตาม DE(n) จงใชเวลาในกรณเฉลยเปน O( log n ) ทงสน

อนงตองขอเนนวารปลกษณะของตนไมทไดวเคราะหมาน มาจากการเพมขอมลอยางเดยว ในกรณทมการลบขอมลผสมดวยอาจไดผลตางจากทนาเสนอ

ความจรงแลวขอความทเรากลาววาประสทธภาพโดยเฉลยเปน O( log n ) นนตความลาบาก อกทงสมมตฐานทเราตงไววาขอมลทเพมมคาสม หรอวาลกษณะของขอมลในรปแบบตางๆ มโอกาสเกดขนเทาๆ กนนน กเหนจะไมคอยตรงกบความจรงทเกดขนในทางปฏบต เพราะถาเราเจอขอมลทไดตนไมทสง (เชนขอมลทเพมเขามาเรยงจากนอยไปมาก) เรากจะไดประสทธภาพทไมดตลอดไป วธแกปญหานมหลายแนวทางดงน

� เพมกฎในการจดเกบใหไดโครงสรางทประกนวาความสงเปน O( log n ) แนนอน เชนตนไม AVL หรอตนไม Red–Black ซงจะไดวาการเพม ลบ และคนขอมลนนใชเวลา O( log n ) ในกรณเลวสด

� ใชแนวคดโครงสรางขอมลแบบปรบตวเอง (self–adjusting structure) เชนตนไม splay ทลกษณะของตนไมจะเปลยนแปลงแมกระทงเมอเราค นข อมลในตนไม กระบวนการปรบโครงสรางนจะประกนวาตนทนถวเฉลยของการเพม ลบ และคนเปน O(log n)

� ใชแนวคดการจดโครงสรางตนไมเชงสม เชนตนไม treap ซงมการเพมขอมลเสรมสาหรบการจดอนดบแบบฮปตามโหนดตางๆ ในตนไมคนแบบทวภาค โดยอาศยขอมลเสรมนเปนตวกาหนดรปรางของตนไม ซงสามารถพสจนไดวาหากขอมลเสรมนเปนจานวนสมจะไดตนไมทมความสงเปน O(log n)

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

Page 110: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

94 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

ตารางแฮชจะวาไปแลวตนไมคนแบบทวภาคนน เปนลกษณะโครงสรางขอมลทรองรบความตองการสารพดรปแบบทมประสทธภาพด ไมวาจะเปนการเพม ลบ คน คนตวนอยสด ตวมากสด ตวถดไป หรอแมกระทงไลเรยงขอมลจากนอยไปมาก กกระทาไดอยางมประสทธภาพ แตถาเราตองการแคการเพม ลบ และคน โดยไมมการดาเนนการทเกยวของกบอนดบของขอมลเลย เราสามารถใชโครงสรางขอมลทเรยกวาตารางแฮช (hash table) ซงมประสทธภาพทเหนอกวา

ตารางแฮชอาศยการเกบขอมลในตาราง แลวใชการคานวณเลขทอยของขอมล แทนการจาเลขทอยของขอมลทสมพนธกน วธการคานวณนเรยกวาฟงกชนแฮช (hash function) ซงรบคยของขอมล มาคานวณอะไรบางอยางในเวลาคงตว เพอใหไดตาแหนงในตาราง ฟงกชนแฮชจะสดยอดมากถาขอมลแตละตวมเลขทอยในตารางของมนเองไมซากบขอมลอน แตในทางปฏบตจะหาสภาพทเปนอดมคตแบบนไดลาบาก ทงนเพราะเราไมรกอนลวงหนาวาขอมลทจะจดเกบมคาอะไรบาง ดงนนจงเปนเรองธรรมดา ทฟงกชนแฮชจะคานวณไดตาแหนงเดยวกนสาหรบขอมลทตางกน สภาพเชนนเรยกวาเกดการชน (collision) เมอยอมรบวาคงจะเกดการชนแน กตองหามาตรการรองรบ วธแรกคอพยายามลดจานวนการชนใหนอยๆ หนอย และวธทสองคอออกแบบวธหาทเกบใหกบขอมลใหมทไปชนกบขอมลเดมในตาราง

ฟงกชนแฮชทดตองเปนฟงกชนทคานวณไดรวดเรวและลดจานวนการชน ฟงกชนแฮช h(k) ควรมคณสมบตทแตละคยทเปนไปไดมโอกาสเทาๆ กนทจะไปอยในชองใดๆ ในตาราง (เรยกคณสมบตเชนนวา simple uniform hashing) ถา P(k) คอความนาจะเปนทคย k จะถกเลอกมาจากเซตของคยทเปนไปไดทงหมด และ sj คอเซตของคยทงหมดทเมอแฮชแลวจะไปตกทชอง jของตารางทมขนาด m ชอง นนคอ sj = { k | h(k) = j } ฟงกชนแฮช h(k) จะเปน simple uniform hashing เมอ

mkP

jsk

1)( ���

สาหรบ j = 0, 1, ..., m–1

โดยทวไปจะออกแบบฟงกชนแฮชใหไดตามคณสมบตขางบนนเหนจะอยาก เนองจากเรามกไมรคา P(k) อยางไรกตามมรปแบบของฟงกชนแฮชทใชกนไดดในทางปฏบต ดงน

h(k) = ((ak + b) mod p ) mod m

Page 111: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 95

k เปนจานวนเตมในชวง [0, U–1] m เปนขนาดของตาราง p เปนจานวนเฉพาะทมคาในชวง [U, 2U ) a และ b เปนคาคงตวโดยท 0 < a < p และ 0 � b < p

ฟงกชนแฮชขางบนนจะเปนเชนไรกขนกบคาของ a และ b เราเรยกชดของฟงกชนแฮชทมรปแบบเชนนสาหรบทกๆ a และ b วาเปนการแฮชเชงจกรภพ (universal hashing) ซงสามารถพสจนใหเหนไดวาคาคาดหวงของจานวนการชนของขอมลมคานอยกวาหนง (จะขอพสจนใหเหนจรงในภายหลง เมอเรานาเสนอเรองอลกอรทมเชงสมในบทหลงๆ )

แลวคาของ a และ b จะเปนเชนไร ? กงายๆ ใชวธสมขนมา (สมแลวกใชคานนตลอดการทางาน) ดวยเทคนคแบบนทาใหนกทดสอบโปรแกรมทตองการใสขอมลขาเขาทแกลงการเกบขอมลในตารางแฮชใหทางานชาสดๆ (คอสรางชดขอมลทแฮชแลวชนตลอด) นนกระทาไมได เพราะคา a และ b ทใชเปลยนทกครงทโปรแกรมเรมทางาน (แตพอตงคาแลวกเปนคาคงตวตลอดการทางานของโปรแกรม)

นอกจากการเลอกใชฟงกชนแฮชทดแลว เรากตองเตรยมมาตรการการแกปญหาการชนดวย (เนองจากฟงกชนแฮชทดนนเพยงลดจานวนการชนลงเทานน จะใหลดจนเปนศนยเหนจะลาบาก) วธการหาทเกบใหมใหกบขอมลใหมทชนกบขอมลเดมกมอยสองวธคอ separate chaining และ open addressing

Separate chaining อาศยการจดเกบขอมลทชนกนใหอยในรายการขอมลเดยวกน (โดยทวไปใชรายการโยง) โดยแตละชองของตารางแฮชกเพยงแตเกบหวของรายการโยงของขอมลทมคาแฮชเดยวกน (ดรปท 6–5 ประกอบ) จะเหนไดวาถาฟงกชนแฮชทใชนนด เรากคาดหวงวารายการโยงของแตละชองในตารางแฮชคงมความยาวพอกน

70 15

21

67

13 88

รปท 6–5 ตารางแฮชแบบ separate chaining โดยท h(k) = k mod 5

Page 112: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

96 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

กาหนดให n คอจานวนขอมลในตาราง m คอขนาดของตาราง และ � คอสดสวนของจานวนขอมลตอขนาดของตาราง ( n/m ) หรอทเรยกวา load factor ถาฟงกชนแฮชเปนแบบ simple uniform hashing จะไดวาความยาวของรายการโยงโดยเฉลยจะเทากบ � กระบวนการคนขอมลกจะประกอบดวยการแฮช และการคนในรายการของชองในตารางทแฮชมา เวลาการคานวนฟงกชนแฮชเปน �(1) ดงนนถาคนแลวไมพบขอมล กตองใชเวลาเปน �(1+�) เพราะตองคนทงรายการจงสรปไดวาไมพบ แตถาคนพบขอมลโดยเฉลยกจะคนไปประมาณครงหนงของรายการ ดงนนเวลาการคนแลวพบเปน �(1+�/2) = �(1+�) สาหรบการเพมนนในกรณทเกบเปนรายการโยง กควรเพมทหวรายการเพราะเรวจะไดเวลาเปน �(1) สาหรบการลบกคอการคนกอนแลวลบซงใชเวลาเทากบการคน

จะเหนไดวาเวลาการทางานของการเพม ลบ และคนนนขนกบ � ทงสน ดงนนหากเราออกแบบใหตารางแฮชนม �ไมเกนคาคงตว (ซงอาจอนญาตใหตารางยดหดตวไดเพอคมคาของ �) กจะไดวาเวลาการทางานของการเพม ลบ และคนเปน �(1) (กรณถวเฉลย) ซงเปนคณสมบตทไมเคยเกดขนกบโครงสรางขอมลแบบรายการหรอตนไม

Open Addressing วธนเกบขอมลทกๆ ตวไวทตารางแฮช เมอเกดการชน จะตองหา (เรยกวาการ probe) ชองใหมในตารางเพอเกบขอมลใหม ถาชองท probe ไมวาง กตอง probe ตอไปจนกวาจะเจอชองวาง การหาชองใหมทวางนมไดหลายวธ ดงน

� linear probing วธนอาศยสตร hi(k) = ( h(k) + i ) mod m ทคานวณหาหมายเลขชองเมอเกดการชนครงท i หรอจะอธบายงายๆ กคอเมอชนกไล probe ชองถดไปเรอยๆ แบบลาดบจนกวาจะพบชองวาง

� quadratic probing วธนอาศยสตร hi(k) = ( h(k) + i2 ) mod m เนองจาก linear probling นนเกดการเกาะกลมกนของขอมล ประสทธภาพการทางานยงวนจะยงคลายการคนแบบลาดบ จงใชวธการหาชองวางแบบ "กระโดดๆ" โดยการบวกดวย i2 จากตาแหนงเรมตน กจะเปนการลดการเกาะกลมกนของขอมลไปไดด

� double hashing วธนอาศยสตร hi(k) = ( h(k) + i�g(k) ) mod m วธทงสองทกลาวมานนการกระโดดไปหาตาแหนงใหมๆ นนระยะกาวกระโดดไมขนกบคาของคยเลย จงมพฤตกรรมการกระโดดเหมอนกนหมด ดงนนสาหรบคยทมคาแฮชเหมอนกนจะมลาดบการ probe ในตารางเหมอนกน ทาใหเกดการเกาะกลมแบบทเรยกวา secondary clustering ดง

Page 113: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 97

นน double hashing จงอาศยอกฟงกชนแฮชหนงคอ g(k) ซงใหคามากกวาศนย ทมไวเพอคานวนระยะกระโดด ทาใหคยสองคยทมคาแฮชเหมอนกนมระยะกระโดดตางกน (ดวยความนาจะเปนทสง)

จะขอวเคราะหประสทธภาพการทางานของ open addressing แบบ uniform hashing ซงคอกรณททกๆ ลาดบการ probe นนเปนไปไดเหมอนๆ กนทกๆ กรณ (ถาม m ชองกมลาดบทเปนไปได m! กรณ) หรอพดงายๆ วา ชองตอไปทจะ probe มสทธทจะเปนชองใดๆ กไดทยงไมถก probe ลกษณะของ uniform hashing น ถงแมจะสรางไมไดจรงในทางปฏบต แต double hashing กมพฤตกรรมใกลเคยงมาก (และเหตผลใหญทแสดงวธวเคราะห uniform hashing ใหด กเพราะมนเขาใจงายกวาแบบอนๆ มาก อยางนอยกตองการแสดงใหเหนวา แบบทวาดสดแลว จะมประสทธภาพเทาใด)

เราเรมดวยการพจารณากรณทคนไมพบขอมล ซงมการ probe ไปเรอยๆ เจอแตชองไมวางและกไมใชขอมลทตองการ จนกระทงเจอการ probe ครงสดทายเปนชองวาง เลยสรปไดวาคนไมพบขอมลทตองการ กาหนดให pi คอ ความนาจะเปนทการ probe เปนจานวน i ครงแรก เจอแตชองไมวาง ดงนนคาคาดหวงของจานวนการ probe เทากบ

��

01

iiip

ขอกาหนดให qi คอความนาจะเปนทตอง probe อยางนอย i ชองทไมวาง จะไดวาq1 = p1 + p2 + p3 + …q2 = p2 + p3 + p4 + …

ดงนน ���

10 ii

ii qip สมมตวามขอมล n ตวเกบในตาราง m ชอง ความนาจะเปนทการ

probe ครงแรกเจอชองไมวางยอมเทากบ n/m ซงกคอ q1 และความนาจะเปนททงการ probe ครงแรกและครงสองเจอแตชองไมวางยอมเทากบ (n/m)((n–1)/(m–1)) ซงกคอ q2 ดงนน

qi = �� ��n

m ��

��n-1

m-1 …��

��n-i-1

m-i-1 � ����n

mi

หรอเขยนสนๆ วา qi � �i ดงนน คาคาดหวงของจานวน probe กรณคนไมพบคอ

���

�������� ���

11...111 2

10 ii

ii qip

Page 114: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

98 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

ถาเราคมให � เปนคาคงตว กยอมไดวากรณคนขอมลไมพบเปน O(1) และเนองจากการเพมกคอการ probe จนเจอชองไมวางแลวจงใสขอมล ซงกมจานวน probe เทากบการคนไมพบ ดงนนการเพมขอมลกมคาคาดหวงของจานวน probe เปน 1/(1–�) เชนกน

สาหรบคนแลวพบขอมลนนจะยงนดหนอย ถาคน k แลวพบ k กแสดงวาการคนน probe ตามลาดบเดยวกบตอนทเพม k ลงในตาราง ถา k เปนขอมลตวท i+1 ทถกเพม แสดงวาตอนทจะเพม k นน load factor เปน i/m ดงนนคาคาดหวงของจานวน probe ตอนเพม k คอ 1/(1–i/m) ซงกคอคาคาดหวงของจานวน probe ในการคน k ดงนนคาคาดหวงของการคนแลวพบขอมลใดๆ กเพยงแตหาคาเฉลยของขอมลทง n ตว (ถอวาโอกาสทจะหาขอมลตวใดๆ มพอๆ กน) ซงเทากบ

� �nmmn

i

n

iHH

imnm

min �

��

���

11/1

11 1

0

1

0

โดยท Hi คอจานวนฮารโมนกตวท i จากความรใน discrete math. ทวา ln i � Hi � 1+ln i ดงนน

1 � (Hm – Hm–n) �

1 � ( 1 + ln m – ln(m–n) )

= 1 � ln

mm-n +

1 �

= 1 � ln

11-� +

1 �

เปนคาคาดหวงของจานวน probe สาหรบกรณพบขอมล ดงนนถา � = 0.9 แสดงวากรณเฉลยแลวเมอคนพบขอมลจะ probe ประมาณ 3.7 ชอง และเมอคนไมพบขอมลจะ probe ประมาณ 10 ชอง

ฮปฮป (heap) เปนโครงสรางขอมลทรองรบการทางานของ priority queue ไดเปนอยางดเยยม การดาเนนการหลกๆ ของ priority queue นนกประกอบไปดวย การเพม การหาคยนอยสด การลบคยนอยสด การลดคาของคย และการรวมฮป priority queue เปนลกษณะการจดการขอมลทใชระหวางการแกไขปญหามากมาย อาทเชนอลกอรทมแบบตระกลาม การคนผลเฉลยแบบ

Page 115: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 99

ขยายและจากดเขต และแบบศกษาสานกอนๆ อกมายมายทเราจะไดกลาวถงในชวงหลงๆ ของวชาน

ฮปแบบงายทนกเรยนไดศกษากนมาแลวกคอ binary heap (ดตวอยางในรปท 6–6 ประกอบ) ซงจดเกบขอมลในตนไมแบบทวภาคไดดล โดยมกฎการจดเกบวาคยทโหนดพอตองมคานอยกวาคยของลกๆ เสมอ ดวยกฎแคนกประกนไดวารากตองมคาคยทนอยสด จงหาคยนอยสดไดในเวลา �(1) เนองจากเราสามารถสรางตนไมแบบทวภาคไดดลนดวยแถวลาดบแถวเดยว โดยอาศยสตรคานวณตาแหนงลกซาย ลกขวา และพอของโหนด i ไดงายๆ (ซงคอ 2i, 2i+1, �i/2�ตามลาดบโดยทรากอยทดชนท 1 ของแถวลาดบ) ทาใหการเกบ binary heap กนทนอยมาก ประสทธภาพรวดเรว เพราะการเพมและลบคยนอยสดนนใชเวลาแปรตามความสงของตนไมไดดล ซงคอ O(log n)

2

10 6

11 23 213 8

19 200

รปท 6–6 ตวอยาง binary heap

จะมกแตการรวมฮปเทานนทใชเวลา O(n) ซงอาศยการนาฮปสองฮปมาตอกน (หมายความวานาแถวลาดบทแทนฮปทงสองมาตอกน) จากนนทาการปรบฮป (บางทเรยกวา percolate down บางทเรยกวา heapify ) จากระดบลางๆ ไลขนไปจนถงราก การปรบฮปแตละครงกนเวลาแปรตามความสงของตนไมในกรณเลวสด กาหนดใหตนไมม n โหนด ยอมมความสง k = �lg n� เพราะวาเปนตนไมแบบทวภาคไดดล ใหสงเกตวาตนไมนจะมตนไมยอยทสง h อยจานวนทงสน n/2h โดยท h = 0, 1, …, k การปรบฮปของตนไมยอยทสง h ใชเวลา O(h) ดงนนการรวมฮปจงมปรบฮปยอยๆ ทงหลายซงใชเวลา

)()2(22

)(2 000

nOnOhnOhnOhOn

hh

k

hh

k

hh

����

��

���

����

��

��

��

���

����

���

��

����

�����

���

Page 116: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

100 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

กราฟการแทนกราฟ G = (V, E) ในหนวยความจาโดยทวไปทาไดสองวธคอการใชเมทรกซประชด (adjacency matrix) และรายการประชด (adjacency list) กาหนดใหจดตางๆของกราฟมหมายเลข 1, 2, 3, …, �V� กากบ วธแทนแบบเมทรกซประชดนนอาศยเมทรกซ A ขนาด �V���V�โดย aij คอสมาชกแถวแนวนอนท i และแถวแนวตงท j เมอมเสนเชอมตอจากจด i ไปยงจด j จะไดวา aij = 1 มฉะนน aij = 0 สาหรบกรณของกราฟไมระบทศทาง (directed graph) กเพยงแตกาหนดให aij = aji และถากราฟถวงนาหนก (weighted graph) ซงเสนเชอมแตละเสนมจานวนทแทนนาหนกกากบ กเพยงแตให aij แทนนาหนกของเสนเชอมจาก iไป j และให aij มคาพเศษเชน 0 หรอ (ทงนขนกบปญหา) เมอไมมเสนเชอม (i, j) รปท 6–7 แสดงตวอยางของการแทนกราฟโดยใชเมทรกซประชด

สาหรบการแทนกราฟ G = (V, E) ดวยรายการประชดนน ประกอบดวยรายการแรกเปนรายการของจดตางๆ ใน V (แสดงดวยแถวลาดบแถวตงในรปท 6–7) แตละจด i ในรายการแรกนจะเกบรายการโยงของจดอนๆ ทตอกบ i (สาหรบกรณกราฟไมมทศทาง) หรอทจด i มเสนเชอมพงไปหา (สาหรบกรณกราฟทมทศทาง) ในกรณของกราฟถวงนาหนก กสามารถเกบนาหนกกากบเสนเชอมไวตามโหนดตางๆในรายการได ดงตวอยางในรปท 6–7

การแทนกราฟ G = (V, E ) ดวยเมทรกซประชดนนจะใชเนอทเปน �(�V�2 ) ทเปนขนาดของเมทรกซ ในขณะทเมอแทนดวยรายการประชด จะใชเนอทเปน �(�V�+�E�) ซงโดยทวไปจะพบวาเราแทนกราฟดวยรายการประชด เนองจากใชเนอทนอยกวา 2 โดยเฉพาะกรณเมอกราฟมจานวนเสนเชอมนอย คอเปนกราฟแบบโลงๆ (sparse) แตอยางไรกตามการจะแทนกราฟดวยวธใดนนคงพจารณาถงการเขาถงลกษณะของกราฟดวย ซงจะพบวาถาหากตองทดสอบวาจดหนงตอกบอกจดหนงหรอไม อยบอยๆ จะเหนไดชดเลยวาเมทรกซประชดเหนอชนกวารายการประชดมากเนองจากเพยงแตดจาก aij กไดคาตอบ ในขณะทการใชรายการประชดตองใชเวลาเปน (�V� ) แตถาเราอยากรวามจดใดบางทตอกบจดหนง แบบนรายการประชดชนะขาด เพราะเปนโครงสรางทเกบคาตอบของคาถามแบบนอยแลว ไมเหมอนเมทรกซประชดทเราตองวงไลเทยบเปนจานวน �(�V� ) เสมอกวาจะไดคาตอบ

2 ตองเนนวาเมอพจารณาแบบเชงเสนกากบ หรออกนยหนงเมอกราฟมขนาดใหญ

Page 117: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 101

1

2 3

4 5

1 2 3 4 51 0 1 1 1 02 1 0 1 0 13 1 1 0 0 04 1 0 0 0 15 0 1 0 1 0

1

2

3

4

5

2 3 4

1 3 5

1 2

1 5

2 4

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

1

2 3

4 5

1 2 3 4 51 0 1 0 1 02 0 0 1 0 03 1 0 0 0 04 0 0 0 0 05 0 1 0 1 0

1

2

3

4

5

2 4

3

1

2 4

(ข) กราฟระบทศทาง

1

2 3

4 5

1 2 3 4 51 0 1 0 8 02 0 0 9 0 03 2 0 0 0 04 0 0 0 0 05 0 3 0 3 0

1

2

3

4

5

2,1 4,8

3,9

1,2

2,3 4,3

91

3

38

2

(ค) กราฟถวงนาหนกรปท 6–7 การแทนกราฟดวยเมทรกซประชด และรายการประชด

แบบฝกหด1. จงออกแบบโครงสรางขอมลแบบ multiset ซงเกบกลมขอมลทซากนได เพอใหสามารถเพมหรอลบขอมลไดในเวลาคงตว (การลบตองระบตาแหนง)

2. จงออกแบบอลกอรทมเพอตรวจสอบวารายการโยงทใหมานนมวงวนอยภายในหรอไม ตวอยางของรายการโยงทมวงวนแสดงดงรปขางลางน

21 1 2 21 88 88 31 88 21

Page 118: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

102 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

3. จงพสจนความสมพนธ E(n) = I(n) + 2n (หนาท 92)โดยท E(n) คอความยาวของวถภายนอก I(n) คอความยาวของวถภายใน และ n คอจานวนโหนดภายใน

4. จงออกแบบวธการรวมตนไมคนแบบทวภาคสองตนเขาดวยกนกลายเปนตนเดยว โดยใชเวลาเปน O(h) โดยท h คอความสงของตนไมตนทสงกวาของตนไมทงสอง

5. จงออกแบบเพอหาขอมลตางๆ ทเกบในตนไมคนแบบทวภาคซงมคาอยในชวง [k1, k2] ทกาหนดให โดยใชเวลา O(K + log n) โดยท n คอจานวนขอมลในตนไม และ K คอจานวนขอมลในชวงทหาได

6. จงแสดงใหเหนจรงวาคาคาดหวงของเวลาในการคนขอมล (เมอคนพบ) ในตารางแฮชแบบ separate chaining นนเทากนไมวาเราจะใชวธเพมขอมลเขาทางหวรายการ หรอทายรายการ

7. ถาเราออกแบบใหขอมลในรายการของ separate chaining นนเรยงลาดบจากนนไปมาก อยากทราบวาจะมผลกระทบอยางไรเชงเวลาการทางานของการเพม ลบ คนแลวพบ และคนแลวไมพบ

8. จงยกตวอยางเหตการณซงเมอใช quadratic probing แลวไมสามารถ probe พบชองวางในตาราง ถงแมจะมชองวางในตารางอยกตาม

9. จงพสจนวาหากกาหนดใหตารางแฮชมขนาดเปนจานวนเฉพาะ การใช quadratic probing จะสามารถ probe พบชองวางในตารางแฮชแนๆ ถา load factor มคา > ½

10. การ Insert และ ExtractMin ของฮปแบบทวนามซงเกบขอมล n ตวนนใชเวลา O( log n ) จงออกแบบฟงกชนพลงงานศกย � เพอแสดงใหเหนวาตนทนถวเฉลยของ Insert คอ O( log n ) ในขณะทของ ExtractMin คอ O(1)

11. จงออกแบบโครงสรางขอมลเพอรองรบการดาเนนการ Insert ในเวลา O(log n) และการดาเนนการ ExtractMin และ ExtractMax ในเวลา O(1)

12. การรวมฮปแบบทวภาคทไดนาเสนอมานนทาไดโดยการนาแถวลาดบทแทนฮปทงสองมาตอกน ไดเปนแถวลาดบใหม (ใหชวา H) จากนนอาศยการคอยๆ ปรบฮป (heapify) ตนไมยอยเลกๆ ดานลาง ไลจากขวามาซาย จากลางขนบน (ซงคอการ heapify H[n/2] ไลกลบมาจนถง H[1] ) ซงใชเวลา O(n) จงใหเหตผลวาการรวมฮปของวธขางลางนทางานไดจรงหรอไม ถาได จะใชเวลาเทาใด

Page 119: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 4:58 : [email protected] บทท 6 โครงสรางขอมล (แบบงาย) 103

ก) heapify เรมจาก H[1] ไปจนถง H[n/2]ข) ผลกขอมลขนดวยวธ bubble up เรมตงแต H[n] ไลกลบมาจนถง H[2]

13. นอกจากการใชเมทรกซประชด และรายการประชดเพอแทนกราฟแลว เรายงสามารถแทนกราฟไมระบทศทาง G=(V, E) ดวยเมทรกซอบตการณ (incidence matrix) B ซงมขนาด |V| � |E| โดยท bij มคาเปน 1 ถามจด vi ตอกบเสนเชอม ej มฉะนนกมคาเปน 0 จงบรรยายการแทนกราฟระบทศทาง และกราฟถวงนาหนก ดวยเมทรกซอบตการณ พรอมทงยกตวอยางประกอบดวย

14. กาหนดให G = (V, E) คอกราฟไมระบทศทาง จงออกแบบวธการสรางกราฟ G �

= (V, E �

) ซงคอสวนเตมเตมของกราฟ G โดยท E

� = { (i, j) | (i, j) � E } ในแตละกรณทแทนกราฟ

ดวยเมทรกซประชด รายการประชด และเมทรกซอบตการณ (อธบายในแบบฝกหดขอท 13)

15. ถาเราแทนกราฟระบทศทาง G = (V, E) ดวยเมรกซประชด จงออกแบบอลกอรทมทสามารถหาจดของกราฟทเปนจดรบ (sink) ไดในเวลา O( |V| ) จดรบในกราฟคอจดซงดกรออก (out-degree) เปน 0 ในขณะทดกรเขา (in-degree) เปน |V|-1

Page 120: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

104 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 4:58 : [email protected]

Page 121: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] 105

บทท 7

ในบทนเราจะนาเสนอเรองของโครงสรางขอมลกนตอ แตคราวนเปนโครงสรางขอมลแบบยงหนอย (แตไมยาก) คอจะยงในเชงของการวเคราะห เนองจากเปนโครงสรางขอมลทดผวเผนแลวไมนาจะใชไดด แตพอวเคราะหกรณถวเฉลยจะพบวามประสทธภาพดทดเทยม หรอในหลายกรณดกวาแบบทไดนาเสนอมาในบททแลว โดยจะนาเสนอโครงสรางขอมลตนไม splay ฮปทวนาม ฮปทวนามแบบขเกยจ ฮปฟโบนกช และเซตไมมสวนรวม การนาเสนอในบทนจะไมเขยนรหสเทยมของการดาเนนการตางๆ ใหด (ถาไมจาเปน) แตจะใชวธการบรรยายกระบวนการทางานแทน ซงจะบรรยายแนวคดหลกๆ โดยถอวานกเรยนควรมความสามารถเพยงพอทจะเปลยนแนวคดทบรรยายไปเปนโปรแกรมได (หรอจะดจากหนงสอตามทองตลาด หรอในหองสมดกได)

ตนไม splayเราไดรกนมาแลววาประสทธภาพของการดาเนนการโดยทวไป ของตนไมคนแบบทวภาคนน แปรตามความสงของตนไม ในกรณดสดกไดตนไมไดดลความสงเปน �(log n) ในกรณเลวสดกจะสงเปน �(n) แตถาเปนตนไมทสรางมาจากการเพมขอมลทมคากระจาย (เสมอนสม) กจะไดตนไมทมความสงเปน �( log n ) ซงกเปนขาวดตรงทวาเปนตนไมทเตยมาก แตอยางไรกตามหากเราพบกบลกษณะทไมด กจะไมดตลอดการทางาน ซงเปนไปไดวาถามการดาเนนการเปนจานวน m ครงกบตนไมคนแบบทวภาคทสงกจะใชเวลาเปน �( mn ) ในกรณเลวสด

โครงสรางขอมล (แบบยง)

Page 122: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

106 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

เราแกปญหานไดสองวธ (ความจรงมอกวธหนงซงจะยงไมขอบอกตอนน แตจะขอยกไปอธบายในบทหลงๆ) วธแรกอาศยการเพมกฎเกณฑในการจดเกบขอมล เพอบบโครงสรางของตนไมไมใหสงนก ตนไม AVL และ ตนไม Red–Black เปนตวอยางของตนไมคนทสามารถควบคมความสงของตนไมใหเปน �(log n) ตลอดเวลา ผลทไดตามมากคอประสทธภาพของการดาเนนการโดยสวนใหญเปน �(log n) ในกรณเลวสด ดงนนการดาเนนการเปนจานวน mครงกบตนไมแบบนกจะใชเวลาเปน �( m log n ) ในกรณเลวสด (นกเรยนคงไดศกษารายละเอยดของตนไมประเภทนมาแลวในวชาโครงสรางขอมล จะไมขอลงในรายละเอยด)

อกวธหนงในการประกนประสทธภาพการทางานบนตนไมคน กคอการอนญาตใหตนไมปรบเปลยนโครงสราง ตามลกษณะของรปแบบการเขาถงโหนดตางๆ ในตนไม เรยกวาเปนแบบโครงสรางปรบตนเอง (self–adjusting structure) ซงเปนกลวธทใชในตนไม splay ทจะอธบายในหวขอน ตนไม splay ไมไดประกนเรองความสงของตนไม (หมายความวาการดาเนนการตางๆ มโอกาสใชเวลาเปน �(n) ในกรณเลวสด) สงทตนไม splay ประกนกคอวาการดาเนนการใดๆ กบขอมลในตนไมนเปนจานวน m ครงจะใชเวลาเปน O( m log n ) ดงนนเมอคดแบบถวเฉลยแลวจะได O(log n) ตอหนงการดาเนนการ

การ splayตนไม splay อาศยขนตอนการยายตาแหนงของโหนดทสนใจใหสงขนโดยการหมน เชนเดยวกบตนไม AVL การหมนโหนดนนมสามรปแบบดงน zig, zig–zig และ zig–zag (ดรปท 7–1)

แบบ zig วธนใชกบโหนดทไมมป นนคอโหนดทเปนลกของรากเทานน เมอไป zig ทโหนด x โหนด x กจะเปนรากของตนไมหลง zig (วธนคลายกบ single rotation ของตนไม AVL)

แบบ zig–zig วธนใชกบโหนด x ทมพอ (โหนด p) และมป (โหนด g) ดวย โดยท x ตองเปนลกของ p ในทศทางเดยวกบท p เปนลกของ g หลงการ zig–zig ท x จะได x สงขนสองระดบและ g หลนลกลงไปสองระดบ

แบบ zig–zag คลายกบ zig–zig ตางกนตรงททศทางของความเปนพอลกของ x กบ p และของ p กบ g จะตองเปนคนละทศกน หลงการ zig–zag ท x จะได x สงขนสองระดบและ g หลนลกลงไปหนงระดบ (วธนคลายกบ double rotation ของตนไม AVL)

Page 123: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 107

x

p

A

C

B

xp

B

A

C

zig ท x

zig-zig ท xp

g

x

BA

C

D

p

g

x

DC

B

A

zig-zag ท xp

g

D

p gx

BA

x

CB

A DC

รปท 7–1 การหมนแบบ zig, zig–zig และ zig–zag ของตนไม splay (ในแตละกรณจะมกรณสมมาตรทไมไดแสดงใหเหน อยากเหนกใหมองสองกระจกเอาเอง)

แลวจะหมนเมอใด ? สงทแปลกอยางหนงของตนไม splay กคอเมอใดทเขาถงโหนดๆ หนง เชนตองการคนโหนด x ในตนไม หลงจากทพบ x แลวจะหมนโหนด x ใหสงขนเรอยๆ จนกลายเปนรากแลวจงจะหยดหมน เราเรยกการลยหมนจนเปนรากนวาการ splay 1 รปท 7–2แสดงตวอยางการตนไมหลงการคนพบ 6 ในตนไม จะ splay ท 6 เกดการหมนแบบ zig–zig สองครง และ zig อกครง ทาให 6 เปนรากของตนไม

1 การหมนโหนด x จนกลายเปนรากใหมของตนไมนนเรยกวาเปนการ splay ทโหนด x หรอจะพดวาตนไมถก splay ทโหนด x คาวา splay นไมใชคาวา spray ทเราใชกนบอยๆ เชนฉดสเปรย คาวา splay แปลวา แผกาง ซงจะเหนไดจากการ splay ตนไมนนเหมอนการกางๆ หบๆ กงของตนไมทเรยงเปนแนวๆ

Page 124: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

108 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

3

5

4 15

11

8

7

6

3 5

4 15

11

8

7

6

3 5

4 15

11

8

7

6

3

5

4

15

11

8

7

6

รปท 7–2 ตวอยางการปรบตนไมเมอไปคน 6

การคนการคนขอมลกเหมอนการคนตนไมคนแบบทวภาคตามปกต แตจะปดทายดวยการ splay โหนดทคนพบ ในกรณทคนไมพบ กมการปรบเหมอนกนโดย splay โหนดสดทายทผาน

การเพมการเพมขอมลกเชนเดยวกน กระทาเหมอนกบททากบตนไมคนแบบทวภาค เมอเพมเสรจกจะsplay โหนดใหมทเพงเพม รปท 7–3 แสดงตนไม splay ทสรางจากการเพมขอมล 1, 2, 3, และ 4 สงเกตวาหลงเพมกมการ splay เปนเชนนทกๆ ครง หลายคนเหนผลทไดจากการสรางกอาจรสกวาไมเหนมอะไรดเลย กยงคงไดตนไมเอยงขาง ประเดนทตองการชใหเหนคอวา สาหรบตนไม splay แลวตนไมทสงมาก จะแยกเฉพาะเมอเราไปสนใจใบทอยตาๆ แตเมอใดทใบเหลานถกแตะ ตนไมกจะปรบตว ขอมลใดทอยลกแตไมมใครสนใจ กไมเปนไรปลอยใหเขาอยลกๆ อยางนนไป แตพอมใครสนใจขอมลทลก (ทาใหเกดกรณเลว) กจะยายมาอยทราก กลายเปนด ไมเลวอกแลว (แตกอาจมโหนดอนทเลวลง) จากผลทไดในรปท 7–3 ใหนกเรยนลองไปแตะใบ 1 ด ตนไมกจะปรบจน 1 เปนรากใหม และไดรปรางใหม ใหลองทาด

1 1

2

2

1

2

1 3 2

1

32

1

34

2

1

34

รปท 7–3 ตนไม splay ทสรางจากการเพม 1,2,3, และ 4

Page 125: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 109

การลบสาหรบการลบนนยงนดหนอย จะมการ splay อยสองครง เมอตองการลบ x กตองหา x ใหพบกอน เมอพบแลวให splay โหนด x เมอ x เปนรากแลวกลบ x ทงไดตนไมยอยสองตนสมมตใหเปน TL และ TR ไปหาตวมากสดของ TL จากนน splay โหนดทมคามากสดของ TL มาเปนราก แลวเอา TR ไปเปนลกทางขวาของรากใหมของ TL รปท 7–4 แสดงตวอยางการลบ 11 เราเรมการคน 11 พอพบก splay 11 เมอเปนรากแลวกลบทง ไปคนตวมากสดทตนไมยอยซาย ได คา 8 ก splay 8 แลวกนาตนไมยอยขวา ซงคอ 15 มาตอเปนลกขวาของ 8

5

15

11

8

7

6

5

6

8

7

15

11

5

6

8

7

15 8

7

6

5

15 8

7

6

5

15

splay ท 11 splay ท 8ลบ 11 ตอ 15 กบ 8รปท 7–4 ตวอยางการลบ 11 ออกจากตนไม splay

อานๆ มากคงยงเชอวาตนไม splay จะมดทใด เพราะถาเราตองการสรางกรณเลวสด เรากยงสามารถแกลง โดยการคนขอมลทเปนใบทลกสดไดเรอยๆ เสมอ ถงแมวาตนไมจะปรบและใบทลกสดจะเปลยนกตาม อยากจะลองสาธตใหดเพอใหเกดความรสกกอนวเคราะหจรงวา ตนไม splay นนเราแกลงมนไมคอยไดนาน มนกจะเขารปทรงไดสวยด สมมตวาเราเรมสรางตนไม splay ดวยการเพมขอมลทเรยงลาดบจาก 1 ถง 9 จะไดตนไม ในรปท 7–5 ซายสด จากนนคน 1 เกดการsplay ท 1 ตามดวยคน 3 เกดการ splay ท 3 ตามดวยการคน 9 เกดการ splay ท 9 ไดตนไมดงรปทางขวาสด ใหสงเกตการเปลยนแปลงของรปรางตนไม จากเดมแยมาก ถาเราแกลงไปแตะโหนดลางสด ขณะทตนไมสง กจะไดตนไมทเตยลงอยางฉบพลน แตพอตนไมเตยมากๆ แลวเกดการ splay แนนอนวาตนไมจะสงขน แตสงขนไมมาก ไดมการศกษาการเปลยนแปลงความลกของโหนดตางๆ พบวาโหนดสวนใหญทอยตามวถจากรากไปยงโหนดทถก splay จะมความลกลดลงประมาณครงหนง ในขณะทมบางโหนดในตนไมทลกมากขนอยางมากสองระดบ

Page 126: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

110 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

9

8

7

6

5

4

3

2

1

1

8

96

74

52

3

13

64

58

7 92

9

31 8

2 6

4 7

5

รปท 7–5 ตวอยางการเปลยนแปลงรปรางของตนไม splay หลงการ splay

การวเคราะหกรณถวเฉลยคราวนเราจะมาวเคราะหกรณถวเฉลยกนอยางจรงจง โดยจะแสดงใหเหนวา ลาดบการดาเนนการใดๆ จานวน m ครงของตนไม splay จะใชเวลารวมทงสนเปน O( m log n ) กาหนดใหw(x) คอจานวนโหนดของตนไมยอยทม x เปนราก (รวม x ดวย) และ r(x) = lg w(x) ฟงกชนพลงงานศกยทเราจะใชเพอแสดงใหเวลาถวเฉลยเปน O(log n) ไดคอผลรวมของ r(x) สาหรบทกๆ โหนด x ในตนไม

��

��

TxxrT )()(

กาหนดให ri(x) และ wi(x) คอ คาของ r(x) และ w(x) ตามลาดบหลงการหมนครงท i ระหวางการ splay โหนด x เราจะมาคานวณกนกอนวา ตนทนถวเฉลยของการหมนแบบ zig, zig–zig , และ zig–zag เปนเทาไร กาหนดให p คอโหนดพอของ x และ g คอโหนดพอของ p (ถาม) และ i คอเลขครงทหมนระหวางการ splay

แบบ zig : แบบนเปนการหมนแบบ single rotation ใชตนทนจรงเทากบ 1 หนวย การหมนนจะทาให r(x) และ r(p) ของตนไมเทานนทเปลยนแปลง ดงนน ��i(T) = ( ri(x) – ri–1(x) ) + ( ri(p) – ri–1(p) ) ดงนนตนทนถวเฉลยของการหมนแบบ zig เปน

ci = ci + ��i

= 1 + ( ri(x) – ri–1(x) ) + ( ri(p) – ri–1(p) )< 1 + ( ri(x) – ri–1(x) )< 1 + 3( ri(x) – ri–1(x) )

Page 127: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 111

บรรทดท 2 เปนบรรทดท 3 ไดมาจากการท ri(p) < ri–1(p) เพราะตนไมยอยทม p เปนรากมขนาดเลกลงหลงหมน และบรรทดท 3 เปลยนเปนบรรทดท 4 ไดกเพราะวา ri(v) > ri–1(v)

แบบ zig–zig : แบบนเปนการหมนแบบ double rotation ใชตนทนจรงเทากบ 2 หนวย การหมนนจะทาให r(x), r(p), และ r(g) ของตนไมเทานนทเปลยนแปลง ดงนน ดงนนตนทนถวเฉลยของการหมนแบบ zig–zig เปน

ci = ci + ��i

= 2 + ( ri(x) – ri–1(x) ) + ( ri(p) – ri–1(p) + ( ri(g) – ri–1(g) )= 2 + ri(g) + ri(p) – ri–1(p) – ri–1(x)< 2 + ri(g) + ri(x) – 2ri–1(x)< 3( ri(x) – ri–1(x) )

บรรทดท 2 เปลยนเปนบรรทดท 3 เพราะวา ri(x) = ri–1(g) บรรทดท3 เปลยนเปนบรรทดท 4 เพราะวา ri–1(p) > ri–1(x) และ ri(x) > ri(p) (ขอใหดรปท 7–1ประกอบ) สวนบรรทดท 4 เปลยนเปน 5 นนยงหนอย จากรปท 7–1 กรณ zig–zig จะได wi(g) + wi–1(x) < wi(x) ดงนน 2 lg wi(g) + lg wi–1(x) < 2lg wi(x) – 2 แสดงวา ri(g) + ri–1(x) < 2ri(x) –2 บวกอสมการนดวย 2 + ri(x) – 3ri–1(x) ตลอด ได 2 + ri(g) + ri(x) – 2ri–1(x) < 3ri(x) –3ri–1(x) เปนทมาของบรรทดสดทาย

แบบ zig–zag : แบบนเปนการหมนแบบ double rotation ใชตนทนจรงเทากบ 2 หนวย การหมนนจะทาให r(x), r(p), และ r(g) ของตนไมเทานนทเปลยนแปลง ดงนน ดงนนตนทนถวเฉลยของการหมนแบบ zig–zag เปน

ci = ci + ��i

= 2 + ( ri(x) – ri–1(x) ) + ( ri(p) – ri–1(p) + ( ri(g) – ri–1(g) )= 2 + ri(g) + ri(p) – 2ri–1(x)< 2( ri(x) – ri–1(x) )

< 3( ri(x) – ri–1(x) )

(ขอใหนกเรยนลองแจกแจงทมาของผลขางนเอง ใชวธคลายกบแบบ zig–zig)

2 ถา a+b < c จากอสมการของคาเฉลยเลขคณตและเรขาคณต ab � (a+b)/2 จะไดวา ab < c/2 ยกกาลงสองจะได ab < c2/4 หาคา lg จะได lg a + lg b < 2lg c – 2

Page 128: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

112 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

สรปไดวาตนทนถวเฉลยของการหมนแบบ zig มคาไมเกน 3( ri(x) – ri–1(x) ) + 1 สวนของแบบ zig–zig และ zig–zag นนมคาไมเกน 3( ri(x) – ri–1(x) ) ถาการ splay หนงครงประกอบดวยการหมน k ครง ซงมการหมนแบบ zig ไดอยางมากแคหนงครงคอครงสดทาย (ครงท k ) ดงนนตนทนถวเฉลยของการ splay หนงครงใดๆ เทากบ

c < 3( r1(x) – r0(x) ) + 3( r2(x) – r1(x) ) + … + 3( rk–1(x) – rk–2(x) ) + 3( rk(x) – rk–1(x) ) + 1= 3( rk(x) – r0(x) ) + 1= 3 ( lg n – r0(x) ) + 1= O( log n )

บรรทดท 2 เปลยนเปน 3 เพราะวา การหมนครงท k เปนการหมนได x เปนรากของตนไม เนองจากตนไมทงม n โหนด จากนยามของ r(x) = lg w(x) จะไดวา rk(x) = lg w(ราก) = lg n

เนองจากการคน และการเพมในตนไม splay มการ splay หนงครง สวนการลบมการ splay สองครง ดงนนเวลาถวเฉลยของการดาเนนการทงสามจงเทากบเวลาถวเฉลยของการ splay ซงเทากบ O(log n) แสดงวาการดาเนนการ เปนจานวน m ครงยอมเสยเวลาเปน O( m log n )

ฮปทวนามเราไดเคยศกษาฮปทวภาค (binary heap) กนมาแลว พบวาเปนโครงสรางขอมลทรองรบ Priority queue ADT ทดตวหนง เพราะประหยดเนอท อกทงใชเวลาการทางานของการดาเนนการหลกๆ เปน O(log n) จะมกแตการรวมฮปทใชเวลาเปน O(n) คราวนเราจะมาศกษาฮปอกประเภทหนงชอวาฮปทวนาม (binomial heap) ซงมประสทธภาพการรวมฮปเปน O( log n ) โดยการดาเนนการอนๆ โดยสวนใหญจะอาศยการรวมฮปเปนหลกมประสทธภาพเปน O( log n) ดวย และทนาสนใจกคอการเพมขอมลจะใชเวลาถวเฉลยเปน O(1)

ตนไมทวนามกอนจะรจกฮปทวนาม ตองทาความเขาใจกบตนไมทวนาม (binomial tree) กนกอน ขอใหดตวอยางตนไมแบบนกนเลยในรปท 7–6 แตละตนมชอกากบ B0 , B1 , … ขนกบลกษณะของตนไม

Page 129: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 113

B0 B1 B2 B3 B4

รปท 7–6 ตวอยางตนไมทวนามรปรางตางๆ

หลงจากสงเกตตนไมเหลานแลว พอจะสรปคณสมบตไดดงน� ตนไม Bk สง k� ตนไม Bk ม 2k โหนด� รากของตนไม Bk ม k ลก� ระดบท j ในตนไม Bk ม ��

����

jk โหนด (เปนทมาของชอตนไมทวนาม )

เราเรยก Bk วาเปนตนไมทวนามทมดกร (degree) เปน k เราสามารถสราง Bk ไดโดยการนารากของ Bk–1 ตนหนงมาเปนลกของรากของ Bk–1 อกตนหนง ดวยวธการสรางแบบนเราสามารถพสจนคณสมบต 4 ขอขางตนไดงายๆ (ขอละใหนกเรยนคดเอง)

คราวนกพรอมทจะนยามฮปทวนามแลว ฮปทวนามเปนโครงสรางขอมลทประกอบดวยรายการของตนไมทวนาม ทมคณสมบตสองขอดงน

� คยของโหนดพอในตนไมตองมคาไมมากกวาคยของลกๆ� ไมมตนไมขนาดเทากนในรายการ (คอมตนไม Bk สาหรบคา k ใดๆ ไดอยางมากตนเดยวในรายการ)

คณสมบตขอแรกกคลายกบฮปทวภาค เรยกวาขอมลถกจดอนดบแบบฮป (heap–ordered) ทาใหรากของตนไมเกบคยทนอยสดของตนไมตนนน สวนคณสมบตขอสองนนประกนวาฮปทวนามทมขอมล n ตว ประกอบดวยตนไมทวนามไมเกน 1 + �lg n� ตน ทาไมจงเปนเชนนน ขอใหดรปท 7–7 ซงแสดงฮปทวนามทมขอมล 11 ตว ประกอบดวยตนไม B0, B1 และ B3 (มขอมลรวมทงหมดเปน 20 + 21 + 23 = 11 ) เนองจากเราไมอนญาตใหม Bk ไดเกน 1 ตน สาหรบคา kใดๆ เปรยบเสมอนกบการเขยน 11 ฐานสบดวย 1011 ฐานสอง ซงตองใชสบต จากความรทวา

Page 130: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

114 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

การแทนจานวนเตม n โดยท n > 0 ดวยเลขฐานสองนน ตองใช 1 + �lg n� บต 3 ดงนนถาเรา

เขยนจานวนฐานสองทแทน n ไดเปน (bk bk–1 …b1 b0)2 โดยท bi = 0 หรอ 1 และ ��

k

i

iibn

02

k = �lg n� จะไดวาฮปทวนามทมขอมล n ตวตองประกอบดวยตนไมทวนาม Bi เมอ bi = 1 สาหรบ i = 0, 1, … , k (และจะไมมตนไมทวนาม Bi เมอ bi= 0) ดงนนจงมจานวนตนไมทวนามไดมากสด 1 + �lg n� ตน

6 9

21

71

1

3

14

8

10 5

2

รปท 7–7 ตวอยางฮปทวนามทมขอมล 11 ตว

การหาคยทนอยสด (FindMin)จากคณสมบตทงสองขอขางตน สรปไดวาหากตองการหาคยทนอยสดในฮป กเพยงแตพจารณาเฉพาะรากของตนไมทวนามทงหลายของฮป เนองจากมตนไมทวนามมากสด 1 + �lg n� ตนดงนนการหาคยทนอยสดใชเวลาเปน O( log n ) แตถาเราเพมตวชรากตวนอยสดไวตลอด (ซงเพมภาระนดหนอยใหการดาเนนการอนๆ เลกนอยในการปรบเปลยนตวชรากนอยสดน) กจะทาใหการหาคยทนอยสด ใชเวลา �(1) เพราะวาไมตองเสยเวลาหาเลย ดทตวชรากนอยสดกไดคาตอบทนท

การเชอมตนไมทวนามขออธบายสนๆ ถงการดาเนนการพนฐานหนง ทเรยกวาการเชอมตนไม เราเชอมตนไมทวนามสองตนทมขนาดเทากนใหเปนตนทใหญขน โดยนารากของตนทมคาของคยมากกวาไปเชอมตอเปนลกใหมของรากของตนทมคาของคยนอยกวา รปท 7–8 แสดงตวอยางการเชอมตนไมทวนาม การเชอมตนไมกระทาไดโดยการเปลยนความสมพนธของพอ–ลกของรากทงสองซงใชเวลาคงตวเปน �(1)

3 ให 2k–1 � n < 2k ดงนน k–1 � lg n < k บวก 1 ตลอดได k � 1+lg n < 1+k สรปไดวา k = �1 + lg n� = 1

+ �lg n�

Page 131: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 115

71

1

3

14

8

10 5

2

34

6

13

13

9

17 51

11

71

1

3

14

8

10 5

2

34

6

13

13

9

17 51

11

Link

รปท 7–8 ตวอยางการเชอมตนไมทวนาม

การแทนฮปทวนามในหนวยความจาหลายคนอาจสงสยมาหลายนาทแลววา แลวรายละเอยดการแทนฮปทวนามเปนอยางไร จากลกษณะของตนไมทวนามนนแตละโหนดนนมจานวนลกไมเทากน โดยโหนดทมจานวนลกมากสดจะมไดไมเกน lg n ลก (ลองพสจนด) แตดวยความทจานวนลกแปรตามจานวนขอมล ดงนนเราไมควรสรางโหนดแบบใชแถวลาดบเกบตาแหนงลกๆ เพราะมขอจากดของขนาดของแถวลาดบ (จองนอยไปอาจไมพอ จองมากไปกเปลอง)

6 9

21

1

3

5

2

21

02

13

05

19

021

06

ดกร

ขอมล

พอ

ลกซายสด

นองถดไป

รปท 7–9 ตวอยางการแทนฮปทวนามในหนวยความจา

วธการสรางวธหนงทสวยมากสาหรบฮปทวนามกคอ ใชวธการแทนแบบพคนโต–นองคนถดไป (left–child right–sibling) นนคอมตวชสองตวประจาแตละโหนด (ดรปท 7–9) ตวหนงชโหนดลกซายสด อกตวชโหนดนองถดไป (พดไดวาลกๆ นนเกบเปนรายการโยง) เนองจากฮปทวนามเปนรายการของตนไมทวนาม กนารากของตนไมทวนามทงหลายมาตอกนเปนพๆ นองๆ ซะเลย (โดยจะจดใหเรยงลาดบตามดกรของตนไม ดวยเหตผลทจะไดอธบายตอไป)

Page 132: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

116 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

นอกจากนเรายงมตวชโหนดพอประจาแตละโหนด อกทงตองเกบจานวนลกของโหนดประจาโหนดอกดวย ขอมลพวกนมความจาเปนกบการดาเนนการทจะกลาวตอไป (ถงตรงนนาจะสบายใจไดวาทาไมการเชอมตนไมทอธบายในหวขอทแลวถงใชเวลา �(1) ได)

การผสานฮป (Merge)กอนจะไปอธบายการดาเนนการอนๆ จะขอนาเสนอวธการรวมฮปสองฮปใหเปนฮปเดยว เรยกวาการผสาน (merge) ฮป เพราะวาการดาเนนการอนๆ นนอาศยการผสานฮปเปนหลก ทเราใชคาวาผสานกเพราะวาฮปทวนามทประกอบดวยรายการของตนไมทวนามนน จะเปนรายการทเรยงลาดบตามดกรของตนไม ดงนนถาเปนฮปทมขอมล 11 ตว กจะเกบเปนรายการ <B0, B1, B3> การเกบเรยงลาดบเชนนจะทาใหการผสานฮปกระทาไดอยางมประสทธภาพ การผสานฮปสองฮปมหลกการทางานคลายๆ กบการบวกเลขฐานสอง 2 จานวนดวยวธการบวกแบบทด (carry–ripple adder) ททากนทวไป ขอยกตวอยางใหเหนกอนอธบายกรณทวไป สมมตวาเราตองการผสานฮป H1 กบ H2 ซงมขอมลจานวน 13 และ 5 ตวตามลาดบเขาดวยกน หลงจากผสานเสรจยอมไดเปนฮปใหม H ทมขอมล 18 ตว เลข 13, 5 และ 18 เขยนดวยฐานสองคอ (1101)2 , (0101)2 และ (10010)2 ตามลาดบ ดงนนฮป H1, H2 และ H ยอมประกอบดวยตนไมทวนาม (B3 , B2 , B0) , (B2 , B0) และ (B4 , B1) ตามลาดบ การผสาน H1 กบ H2 มลกษณะคลายการบวกเลข (1101)2 กบ (0101)2

ดงตารางท 7–1

การบวกเลขฐานสองแบบทดนน เรมบวกจากหลกนยสาคญนอยสดทางขวา แลวไลมาทางซายจนหมด โดยผลการบวกของหลกปจจบนอาจมตวทดไปบวกในหลกทางซายถดไปได การผสานฮปกดาเนนไปในทานองเดยวกน โดยผสานตนไมในรายการของทงสองฮปเรมตงแตตนทมขนาดเลกสดไปเรอยๆ จนถงตนทมขนาดใหญสด เมอใดทพบตนทมขนาดเทากนในทงสองฮป กจะเชอมตนไมทงสองไดตนไมทวนามทใหญขน ซงอาจถกเชอมกบตนไมขนาดเดยวกนในรายการของฮป หรอถกผลกไปเปนตนไมของฮปผลลพธ คลายกบเปนตวทดททดไปบวกในหลกถดไป รปท 7–10 แสดงตวอยางการผสานฮป

เนองจาก H1 และ H2 มจานวนตนไมทวนามอยางมากสด 1 + �lg n1� และ 1 + �lg n2� ตนตามลาดบ และการผสานฮปพจารณาตนไมทกๆ ตนในฮปไลจากตนเลกสด ไปถงตนใหญสด ตนละหนงครง แตละตนอาจถกเชอมกนกบตนทมขนาดเดยวกน หรอถกนาไปเปนตนไมของฮป

Page 133: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 117

ผลลพธ ซงใชเวลาคงตวตอตน ดงนนการผสานฮป H1 และ H2 ซงมขอมลจานวน n1 และ n2 ตวตามลาดบเขาดวยกน โดยท n = n1+ n2 ยอมใชเวลาไมเกน

(1+ �lg n1� ) + (1+ �lg n2� ) = 2 + �lg n1� + �lg n2� < 2 + 2 �lg n� = O( log n )

ตารางท 7–1 ตวอยางการบวกเลขฐานสองและการผสานฮป 1 1 1 0 1 0 1 0 1 – – – 0

B0 ของ H1 เชอมกบ B0 ของ H2 ได B1

1 1 1 0 1 0 1 0 1 – – 1 0

เนองจาก H1 และ H2 ไมมตนแบบ B1 จงได B1 จากการเชอมในขนตอนทแลวเปนตนไมในฮปผลลพธ H

1 1 1 0 1 0 1 0 1 – 0 1 0

B2 ของ H1 เชอมกบ B2 ของ H2 ได B3

1 1 1 1 0 1 0 1 0 1 0 0 1 0

นา B3 ทไดจากการเชอมในขนตอนทแลว มาเชอมกบ B3 ของ H1 ได B4

1 1 1 1 0 1 0 1 0 11 0 0 1 0

เนองจากฮปทงสองไมมตนไมทใหญกวา B3 อกแลว B4 ทไดจากการเชอมในขนตอนทแลวจงเปนตนไมในฮปผลลพธ H

6

71

1

4

14

8

10 5

2

9

2219

21

16 3

2512

19

6

16

9

2219

21

3

2512

19 71

1

4

14

8

10 5

2

H1 H2

H

รปท 7–10 ตวอยางการผสานฮป

Page 134: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

118 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

การเพม (Insert)การเพมขอมลหนงตวเขาไปในฮป H ทาไดงายๆ โดยการสรางฮปใหมทมขอมลตวใหมตวเดยว (ใชเวลาคงตว) จากนนนาฮปนผสานกบ H กจะไดฮปใหมทมขอมลใหมนนเพมใน H ดงนนการเพมใชเวลา O( log n ) ตามเวลาในการผสาน

ทวาการเพมใชเวลา O(log n) ตามเวลาในการผสานขอมลนน ถาเปนกรณเลวสดกเปน �(log n) ซงเปนกรณทฮปประกอบดวยตนไมทวนาม B0, B1, B2, …, Bk พอเพมขอมลอกตว กจะเกดการเชอมตนไม ไปเรอยๆ จนสดทายไดตนไมทวนาม Bk+1 แสดงวากรณเลวสดเกดขนเมอฮปมขอมล 1, 3, 7, 15, 31, 63, 127, … (ในรปแบบ 2m–1 ตว) เหนไดวานานๆ เกดครง และทวาการผสานฮปเปรยบไดกบการบวกเลขฐานสอง ดงนนการเพมขอมลในฮปจงเปรยบไดกบการเพมคาของเลขฐานสองไปอกหนง เราไดแสดงใหดมาแลววาการเพมคาของตวนบฐานสองไปอกหนงนนใชเวลากรณถวเฉลยเปน O(1) ดงนนสรปไดวาการเพมขอมลในฮปใชเวลากรณถวเฉลยเปน O(1) เชนกน

การลบคยทนอยสด (ExtractMin)กอนจะลบคยทนอยสดออกจากฮป H ได กตองหาคยทนอยสดกอน ซงจะตองอยรากใดรากหนงของตนไมในฮป จากนนกลบรากนนทง นาลกๆ ของรากทเพงถกลบนนมาสรางเปนฮปใหม (ทาไดงายๆ โดยการกลบลาดบรายการของลก ซงแตเดมเรมทลกซายสดคนโตไลไปจนถงลกคนเลกสด มาเปนรายการของตนไมเรยงตามลาดบจากตนเลกสดไปหาตนใหญสด ขอเนนวาเราเพยงแตกลบลาดบรายการ จะไดตามตองการ) จากนนนาฮป H ทถกตดตนไมทรากมคยทนอยสดมาผสานเขากบฮปใหมทสรางขนจากการกลบลาดบรายการของลกๆ ของรากทมคยทนอยสด กจะไดเปนฮปใหม รปท 7–11 แสดงตวอยางการลบคยทนอยสดออกจากฮป

การหาคยทนอยสดใชเวลา O( log n ) การกลบลาดบรายการของลกๆ ของคยทนอยสดใชเวลา O( log n ) เนองจากโหนดใดๆ ในฮปมจานวนลกไดอยางมาก lg n การผสานใชเวลา O( log n ) ดงนนการลบคยนอยสดใชเวลา O( log n )

การลดคาของคย (DecreaseKey)การลดคาของคยกทาแบบเดยวกบฮปทวภาค คอเมอลดคาของคยทโหนดทตองการแลว ขอมลในฮปอาจผดอนดบแบบฮป (คอพอมคาของคยมากกวาของลกซงผด) กแกไขความผดนไดโดย

Page 135: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 119

การ “bubble up” ขอมลขนไป โดยการสลบขอมลระหวางโหนดพอกบลกทผดอนดบนขนไปเรอยๆ จนกวาจะไมผด หรอจนกวาจะถงรากของตนไม เนองจากตนไมทวนามทม n โหนดจะสง lg n ดงนนการลดคาของคยในฮปทม n ขอมลใชเวลา O( log n )

6

16

9

2219

21

3

2512

19 71

1

4

14

8

10 5

2

กอนลบ 1 ออก

6

16

71

14

8

10

4

5

2

9

2219

21

3

2512

19

2

6

16

71

14

8

10

4

5

9

2219

21

3

2512

19

หลงลบ 1 ออก

H1 H2

รปท 7–11 ตวอยางการลบคยทนอยสดออกจากฮป

การสรางฮป (BuildHeap)การสรางฮปกระทาไดงายๆ โดยเรมสรางฮปวาง จากนนคอยๆ เพมขอมลจนหมด เนองจากการเพมหนงครงใชเวลากรณถวเฉลย O(1) ดงนนการสรางฮปทมขนาด n จงใชเวลา O(n)

ฮปทวนามแบบขเกยจกลวธการออกแบบโครงสรางวธหนงทใชกนมากกคอ การผลกภาระการทางานระหวางการดาเนนการตางๆ เชนตอนจะเพมทาไดงายๆ แตพอจะลบกยงยากหนอย การทาเชนนตองระวง

Page 136: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

120 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

ไมผลกภาระมากเกนไป คอตองพยายามใหเวลาการทางานกรณถวเฉลยของการดาเนนการทรบภาระหนกหนอย ยงคงอยในสภาพทยอมรบได

เราสามารถนากลวธนมาใชกบฮปทวนามได โดยการผสานฮปทาไดงายๆ เพยงนารายการของตนไมทวนามของฮปทงสองมาตอกนเทานนกเสรจ ทาอยางนแลวผสานฮปทงเรวทงงาย ซงแนนอนวาการเพมขอมลกทงเรวทงงายเชนกน นอกจากนกไมตองบงคบใหรายการของตนไมทวนามเรยงลาดบตามขนาดดวย เพราะวาเราผสานแบบตอดอๆ แตเหนไดชดวาการนารายการของตนไมสองรายการมาตอกน ทาใหอาจมตนไมทวนาม Bk สาหรบคา k หนงๆ อยในผลลพธไดมากกวาหนงตน ซงผดกฎของฮปทวนาม จงจะขอผลกภาระการ "สะสาง" นไปใหตอนทตองการลบคยทนอยสด เพอเชอมตนไมทมขนาดเทากนเขาดวยกนจนกวาจะไมม Bk ทม k ซากนในฮป ดวยกลวธนพบวาเวลากรณถวเฉลยของการลบคยทนอยสดยงคงเปน O( log n ) เราเรยกฮปแบบนวาฮปทวนามแบบขเกยจ (lazy binomial heap)

การแทนฮปทวนามแบบขเกยจในหนวยความจาดวยความขเกยจในการรกษากฎใหคงอยตลอดเวลา ดงนนจงมโอกาสทฮปขนาด n จะมตนไมทวนามจานวน �(n) ตน (เชนกรณทเราเพมขอมลจานวน n ตว เรมจากฮปวาง จะไดรายการของตนไมขนาดหนงโหนดจานวน n ตน) ดงนนการหาคยนอยสดจะมาใชการวงไลเปรยบเทยบรากของตนไมในรายการไมไดแนๆ เพราะตองใชเวลาเปน �(n) ในกรณเลวสด จงจาตองใชการจาตาแหนงของรากทมคยนอยสดไวตลอดเวลา (จะไดคนคาตอบไดในเวลา �(1)) แสดงวาตองเพมภาระเลกนอยในการปรบตวจาตาแหนงคยทนอยสด ในทกๆ การดาเนนการดวย

การลบโหนดออกจากรายการ (เมอตองการลบคยทนอยสดออก) และการตอรายการสองรายการ (เมอตองการผสานฮป) ตองทาไดรวดเรวในเวลาคงตว จงตองใหรายการของรากของตนไมทวนามทงหลาย (ซงมโครงสรางเดยวกบรายการของลกๆ ของโหนด) เปนรายการโยงค (doubly linked list) เพอใหการลบโหนดใดๆ ของรายการทาไดทนท และตองเปนรายการโยงแบบวงกลมดวย (circular list) เพราะจะทาใหการตอรายการสองรายการทาไดงาย (เนองจากแบบขเกยจน เราไมสนใจอนดบของตนไมวาตองเรยงจากขนาดเลกไปใหญเหมอนของฮปทวนาม) สรปวารายกายของราก และรายการของลกๆ ตองเปนรายการโยงแบบควงกลม รปท 7–12 แสดงโครงสรางของโหนดและตวอยางการแทนฮปทวนามแบบขเกยจในหนวยความจา

Page 137: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 121

6 9

21

1

3

5

2

19

22

4 61

min

06

04

19

21

13

02

021

05

119

022

061

ดกร

ขอมล

พอ

ลกซายสด

พนองถดไป

พนองถดไป

รปท 7–12 ตวอยางการแทนฮปทวนามแบบขเกยจในหนวยความจา

การลบคยทนอยสดการลบคยทนอยสด ประกอบดวยขนตอนดงน1. หาคยทนอยสด2. ลบรากทเกบคยทนอยสดนนออก3. นารายการของลกๆ ของรากทเพงลบออก ตอเขากบรายการของตนไมของฮป4. รวบรวมตนไมตางๆ ในรายการโดยการเชอมตนไมทมดกรเทากนเขาดวยกน จนกวาจะไดรายการทไมมตนไมดกรเทากน

5. หารากทคยมคานอยสด เพอจาตาแหนงรากนไว

สามขนตอนแรกนนงายใชเวลาคงตวหมด จะยงยากหนอยกขนตอนท 4 (ขนตอนสดทายกไมยากใชเวลา O(log n) เพราะเมอผานขนตอนท 4 แลวจะเหลอตนไมจานวน O(log n) ตน) ขนตอนท 4 นอาศยแถวลาดบ A[0.. �lg n� ] ชวย ณ ขณะใดๆ A[i] จะเกบรากของตนไมทวนามในรายการทเปน Bi ทเคยพบ เรมตนเราใหทกๆ ชองของ A เปน null จากนนกเรมไลในรายการของตนไมทวนามไปทละตนๆ เชอมตนปจจบนกบตนไมดกรเดยวกนทพบกอนหนาน (ซงจาไวใน A) กระทาเชนนไปเรอยจนพจารณาครบทกๆ ตน จะไดรายการของตนไมทวนามททกๆ ตนมดกรไมเทากน ไดรหสเทยมของการรวบรวม (consolidate) ตนไมในรายการดงแสดงขางลางน

Page 138: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

122 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

01: Consolidate( Heap H )02: {03: allocate A[0..lg n]04: for (i=0 to lg n ) A[i] = null05: for each node w in the root list of H {06: x = w07: d = x.degree08: while A[d] � null {09: y = A[d]10: x = Binomial_Link( x, y )11: A[d] = null12: d = d + 113: }14: A[d] = x15: }16: for (i=0 to lg n)17: if A[i] � null18: add A[i] to the root list of H19: }

6 9

21

1

3

5

2

19

22

4 61

min

6 9

21

3

5

2 19

22

4 61

6 9

21

3

5

2 19

22

4 61

22

6 9

21

3

5

2

19

4 61 6 9

21

3

5

2

19

22

4

61

6 9

21

3

5

2

19

22

4

61

9

21

2

61

6

43

519

22

9

21

2

61

6

43

519

22

6 9

21

3

5

2 19

22

4 61

0 1 2 3A

(ก) (ข) (ค)

(ง) (จ) (ฉ)

(ช) (ซ) (ฌ)

รปท 7–13 ตวอยางการลบคยทนอยสดของฮปทวนามแบบขเกยจ

รปท 7–13 แสดงตวอยางการลบคยทนอยสด (ก) คอฮปกอนลบ พบวา 1 คอคยทนอยสดกลบทงไป จากนนนารายการของลกๆ ของ 1 มาตอกบรายการของรากได (ข) แลวเรมขนตอนท 3 โดยการจองแถวลาดบ A[0..3] ทรวา 4 ชองกเพราะตอนนมขอมลอย 11 ตว ( 1 + �lg 11� = 4)

Page 139: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 123

แลวเรมไลพจารณาทละตนไมในรายการ โดยเรมทราก 3 (เพราะวาเราเพงตอราก 3 กบ 2 เขาในรายการใหญ กนาจะจาตาแหนงของ 3 ไวไดงายๆ ) ราก 3 มดกรเปน 1 กเกบไวท A[1] (ค) ตอไป ราก 2 มดกร 0 กเกบไวท A[0] (ง) พอมาถงราก 19 มดกร 1 แต A[1] มอย กเชอมตนทเคยพบกบตนทเพงพบไดตนใหมมดกร 2 เกบใน A[2] (จ) ทานองเดยวกนพบ 61 ดกร 0 กเชอมกบราก 2 ทผานมาไดตนใหมดกร 1 เกบใน A[1] (ฉ) วนมาพบ 6 เกบไวท A[0] (ช) ถงตรงนจะยงหนอย พบ 4 ดกร 0 กเชอมกบ 6 ไดตนใหมดกร 1 กเชอมกบราก 2 ไดตนใหมดกร 2 กเชอมกบราก 3 ไดตนใหมดกร 3 จงพบวาไมมตนเกาทผานมาเปนดกร 3 กเกบใส A[3] (ซ) และสดทาย ราก 9 ดกร 1 กเกบใส A[1] (ฌ) เปนอนจบการสะสางความขเกยจทเคยกอไวในอดต ขนตอนสดทายกเพยงแตวงไลใน A เพอนาตนไมทงหลายเกบคนเปนรายการของตนไมทวนามของฮปหลงการลบ จบขนตอนท 3 แลวทาขนตอนท 4 ซงคอการวงหาตวทมคยทนอยสดเพอจาตาแหนงไว

แลวการลบคยทนอยสดนใชเวลาเทาไร ? กรณเลวสดกคอกรณทมจานวนตนไมเปน �(n) ทตองรวบรวม จงตองใชเวลา �(n) เรารสกไดวาเมอในอดตเคยขเกยจไวมากตอนเพมและผสานขอมล พอตอนลบคยทนอยสด กตองทางานมากหนอย ถานาความสบายทไดเคยรบมาถวเฉลยกบภาระทตองทาตอนรวบรวมตนไม กนาจะไมเลวอยางทเหนในกรณเลวสด

เราจะใชวธพลงงานศกยแสดงใหดวาเวลาถวเฉลยสาหรบการลบคยทนอยสดนนเปน O( log n ) กาหนดใหฟงกชนพลงงานศกยคอจานวนตนไมในรายการ (ฟงกชนนใชไดเพราะตอนเรมฮปไมมขอมล จานวนตนไมเปนศนย และจานวนตนไมไมเคยตดลบ) กาหนดให Ti คอจานวนตนไมหลงการดาเนนการท i ดงนน �i = Ti ถารากทมคยทนอยสดนนมดกรเปน k กแสดงวาม kลก ดงนนเมอลบรากนออก แลวนาลกๆ มาตอกบรายการเดมจะไดจานวนตนไมเปน Ti–1 –1 + kตนทนจรงประกอบดวยภาระในบรรทดท 3, 4 และ 16 ถง 18 (ของอลกอรทม Consolidate)ทตองพจารณาทกชองใน A (จานวน 1+�lg n� ชอง) และภาระในการพจารณาตนไมทกตนในรายการ ดงนนตนทนจรง ci = �lg n� + Ti–1 + k และเมอรวบรวมเสรจจะได Ti � 1 + �lg n� เกดการเปลยนพลงงานศกยเทากบ Ti – Ti–1 � 1 + �lg n� – Ti–1 ดงนนตนทนถวเฉลยคานวณไดดงน

ci = ci + ��i

� �lg n� + Ti–1 + k + 1 + �lg n� – Ti–1

= 2 �lg n� + k + 1

Page 140: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

124 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

เนองจากตนไมตางๆ ในรายการเปนตนไมทวนาม ดงนนทกๆ โหนดมลกเปนจานวน O(log n) ดงนน k = O(log n) สรปไดวาตนทนถวเฉลยเปน O(log n)

ฮปฟโบนกชจากฮปทวนามแบบขเกยจทไดกลาวมานน การผสาน การเพม และการหาคยทนอยทสดใชเวลา O(1) ในขณะทการลบคยทนอยสดนนใชเวลากรณถวเฉลยเปน O( log n ) และการลดคาของคยนนยงเปน O( log n ) เหมอนฮปทวนาม (เนองจากใชการ bubble up คยเพอจดอนดบขอมลแบบฮปใหถกตองจงใชเวลาแปรตามความสงของตนไม) คราวนเราจะมาเพมการทางานบางอยางในฮปทวนามแบบขเกยจ เพอทาใหเวลาในการลดคาคยกรณถวเฉลยเปน O(1) โดยใชกลวธเดมกคอการผลกภาระการทางาน โดยการลดคาคยทาแบบอนทเรวกวาแบบ bubble up แตจะไปเพมภาระทการลบคยทนอยสดอก โดยการเพมภาระนยงคงทาใหเวลาการทางานกรณถวเฉลยเปน O(log n) อย เราเรยกฮปแบบใหมนวาฮปฟโบนกช (Fibonacci Heap)

จากฮปทวนามทมระเบยบมาก คอเปนรายการของตนไมทวนามทมดกรไมเหมอนกนเลย มาเปนฮปทวนามแบบขเกยจ ซงรายการของตนไมทวนามอาจมตนไมทมดกรเหมอนกนได สาหรบฮปฟโบนกชนนเปนรายการของตนไม ซงไมจาเปนตองเปนตนไมทวนาม และกเปนไมจาเปนวาตนไมทกตนตองมดกรไมเหมอนกน ฮปฟโบนกชจะเหมอนกบฮปทวนามแบบขเกยจทกประการถายงไมเคยลดคาคยเลย แตพอมการลดคาของคยทโหนดใด ตนไมทโหนดนนอยกจะเปลยนรปซงอาจไมใชตนไมทวนามอกตอไป อยางไรกตามคณสมบตขอหนงของตนไมทวนามทยงคงรกษาไวกคอโหนดตางๆ มจานวนลก (หรอเรยกวา degree หรอ rank ของโหนด) เปน O(log n) ดวยคณสมบตขอนทาใหเราสามารถรกษาเวลาถวเฉลยของการลบคยทนอยสดใหเปน O(log n) ได

การลดคาของคย (DecreaseKey)วธการลดคาคยทจะอธบายตอไปน จะมเวลาถวเฉลยเปน O(1) และรกษาคณสมบตของการททกๆ โหนดในฮปมจานวนลกเปน O(log n) การลดคาคยอาศยวธงายๆ คอเมอลดคาคยของโหนดนนแลว กจะตดตนไมยอยทโหนดนนเปนรากอยออกทงยวง แลวกไปตอเปนสวนหนง

Page 141: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 125

ของรายการตนไมของฮป รปท 7–14 แสดงตวอยางการลดคาคย ในทนเราตองการลดคาของโหนดทชโดย x คาคยเดม 3 ใหเหลอ 1 กทางายๆ โดยการเปลยน 3 เปน 1 แลวตดตนไมยอยทม 1 เปนรากออก แลวยกมาผสานกบรายการของตนไมของฮป ซงกเพยงแตตอเฉยๆ (ในตวอยางนกตองเปลยนตวจาตาแหนงคยทนอยสดดวย เพราะตวมาใหมนอยกวาตวนอยสดตวเกา)

10 14

28

9

21

2

61

6

43

519

22

min

10 14

28

9

21

2

61

6

4

1

519

22

minx

DecreaseKey( H, x, 1 )

รปท 7–14 ตวอยางการลดคาคย

เหนชดๆ เลยวาวธตดดอๆ แบบนใชเวลาคงตว แตการตดแบบนจะไมสามารถรบประกนคณสมบตทเราตองการรกษา นนคอจานวนลกๆ ของโหนดในฮปตองเปน O(log n) เพราะเปนไปไดวาจากการตดทานองนเราอาจเหลอแตตนไมทรากมจานวนลกเปน O(n) (ลองยกตวอยางด) ดงนนตองตดอยางระมดระวงสกหนอย

วธตดทคงคณสมบตทตองการคอ "การตดซอนตด (cascading cut) ถาเสยลกครงทสอง" วธนจะมการจาวาโหนดใดเคยถกตดมาแลวหนงลกบาง ถาโหนดแบบนมลกถกตดอก (เปนลกคนทสองทถกตด) กจะตดโหนดนดวย พอโหนดใดถกยกขนไปอยเปนหนงในรายการของรากกจะลมเรองทลกเคยถกตด เพยงเทานจะรกษาคณสมบตเรองจานวนลกของโหนดตองเปน O(log n) ได และใชเวลาถวเฉลยสาหรบการลดคาเปน O(1) ดวย กอนลงรายละเอยดการวเคราะห เรามาดตวอยางในรปท 7–15 เรมทรป (ก) ตองการลดคาของคย 17 เปน 7 กตองเปลยนเปน 7 แลวตดตนไมยอยนไปผสานฮปไดดงรป (ข) ใหสงเกตวาเราแสดงโหนดทถกตดไปแลวหนงลก (ในทนคอ 13) ดวยสดา เรยกโหนดนวาถก marked ไว ถงตอนนขอลดคาของคย 16 เปน 11 กเชนกนเปลยน 16 เปน 11 ตดแลวผสานฮปไดดงรป (ค) เนองจากลกของ 12 โดนตดกจะ mark 12 ไว ถงตอนสาคญ เราตองการลดคาของคย 15 เปน 10 กเปลยนเปน 10 จากนนตดแลวผสานฮปตามขนตอนการตดแบบปกต ไดในรป (ง) แตเนองจาก 15 เปนลกของ 13 ซงถก marked ไว แสดงวาคราวนเสยลกครงทสอง จงตองตดซอนตด 13 แลวนาไปผสานฮป ไดดงรป (จ) เทานยงไมพอเนองจาก 13 เปนลกของ 12 ซงกถก marked ไวเชนกน กตองตดซอนตด 12 แลวนาไปผสานฮปตออก ไดดงรป (ฉ) การตดซอนตดกยตลง (ใหสงเกตวาความจรงเราควร mark โหนดทเกบ

Page 142: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

126 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

คย 2 ในรป (ฉ) เนองจาก 12 ถกตดออก แตเราไมจาเปนตอง mark เพราะโหนดทเกบ 2 นเปนรากของตนไมอยแลว)

มสองประเดนทตองวเคราะห คอตองวเคราะหวาการลดคาของคยดวยวธตดซอนตดนใชเวลาถวเฉลยเปนคาคงตว และตองวเคราะหดวยวาวธการตดซอนตดนประกนไดวาโหนดใดๆ ในฮปมจานวนลกเปน O( log n )

2

61

6

43

519

22

min

12

16

60

1413

1517

33

2

61

6

43

519

22

min

12

16

60

1413

15

7

33

2

61

6

43

519

22

min

11

60

1413

15

7

3312

2

61

6

43

519

22

min

60

1413

1110 7

3312

2

61

6

43

519

22

min

60

14

1110 7

33

12 132

61

6

43

519

22

min

60

14

1110 7

3312

13

(ก) (ข)

(ค) (ง)

(ฉ)(จ)

รปท 7–15 ตวอยางการลดคาคยทมการตดซอนตด

จะขอใชวธพลงงานศกยในการวเคราะหตนทนถวเฉลยของการลดคาของคย กาหนดใหฟงกชนพลงงานศกย �i = Ti + 2mi โดยท Ti คอจานวนตนไมในรายการของตนไมของฮป และ mi คอจานวนโหนดในฮปทถก marked กาหนดใหการลดคาของคยเกดการตดซอนตดเปนจานวน qครง (ไมรวมการตดครงแรกเนองจากมาการลดคา) สรปความจรงตางๆ ไดดงน

� ตนทนจรงแปรตามจานวนการตดเทากบ 1 + q� การตดครงแรกสรางตนไมใหมอกหนงตน เปนการเพมพลงงานศกยขน 1

Page 143: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 127

� การตดซอนตดหนงครงเพมตนไมหนงตนในรายการแตลดจานวนโหนดทถก marked ลงหนงดวย เปนการลดพลงงานศกยลง 1

� กรณทเพมพลงงานมากสดคอเมอการตดซอนตดครงสดทายไปทาใหเกดการ mark โหนดใหม (นนคอตดซอนตดไปเรอยๆ จนเปนการตดลกของโหนดทไมเคยถกตดลก และโหนดนนไมใชราก) จะเพมพลงงานศกยอก 2

สรปไดวา �� = 1 –q + 2 = 3 – q ดงนนตนทนถวเฉลยของการลดคาของคยci = ci + ��i

= 1 + q + 3 – q= 4

สรปไดวาใชเวลาถวเฉลยในการลดคาของคยเปน �(1)

การลบคยทนอยสด (ExtractMin)การลบคยทนอยสดใชวธการเดยวกบฮปทวนามแบบขเกยจ คอมการรวบรวม (consolidate) ตนไมโดยเชอมตนไมทมดกรเดยวกน จนไดรายการของตนไมทดกรไมเทากนเลย มขอสงเกตดงตอไปน

� กอนและหลงลบคยทนอยสดนไมมการ mark โหนดใดๆ เพมเตม จะมพเศษหนอยกเฉพาะกรณทโหนดทเกบคยทนอยสดนม mark ดงนน mi � mi–1

� กาหนดให D(n) คอดกรใหญสดของโหนดในฟโบนกชฮปทม n โหนด ดงนนโหนดทมคยทนอยสดยอมมจานวนลกไมเกน D(n)

� จานวนตนไมกอนลบเทากบ Ti–1 เมอลบรากทมคยทนอยสดออก กนาลกๆ ของรากนนมาตอรายการซงมอยางมาก D(n) ดงนนมจานวนตนไมไมเกน Ti–1 – 1 + D(n)

ตนทตองรวบรวม

� ตนทนจรงของการรวบรวมตนไมเทากบจานวนตนไมกอนรวบรวม (มไมเกน Ti–1 –1 + D(n) ตน) บวกกบภาระการสรางและพจารณาทกๆ ชองของแถวลาดบ A ซงมขนาด 1 + D(n) ดงนน ci � Ti–1 + 2D(n)

� หลงจากทรวบรวมตนไมเสรจแลว จะไดตนไมทกๆ ตนมดกรตางกน ตงแต 0 ถง D(n) ดงนน จงมจานวนตนไมไมเกน 1+D(n) ตน นนคอ Ti � 1+D(n)

Page 144: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

128 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

� ใชฟงกชนพลงงานศกย �i= Ti + 2mi จะไดตนทนถวเฉลยของการลบคยทนอยสดci = ci + ��i

� Ti–1 + 2D(n) + (Ti + 2mi) – (Ti–1 + 2mi–1)� Ti–1 + 2D(n) + (1+D(n) + 2mi–1) – (Ti–1 + 2mi–1)= 3D(n) + 1= O( D(n) )

จะไดแสดงใหเหนจรงวา D(n) = O(log n) ดงตอไปน

กาหนดใหโหนด x มดกรเปน k นนคอม k ลก ให yi คอลกคนท i ของ x โดยท y1 คอลกคนโต (หมายความวา y1 ถกนามาเชอมกบ x กอนลกคนอนๆ ) และ yk คอลกคนสดทอง (หมายความวาเปนลกซงเพงถกเชอมกบ x ลาสด) แนนอนวาตอนท yi ถกเชอมกบ x นน x ตองม i–1 ลก กแสดงวา ขณะท yi ถกเชอมกบ x นน yi กมดกรเปน i–1 เชนกน (ตนไมสองตนถกเชอมเมอมดกรเทากน) หลงจากเชอมแลว yi อาจสญเสยลกไดหนงลก (เนองจากการตดลก) จะเสยเกนหนงลกไมไดเพราะถาเสยลกทสอง yi ตองโดยตดซอนตด สรปไดวาปจจบน yi ซงเปนลกท iของ x มดกรอยางนอย i–2 ทงนจะยกเวนกเฉพาะลกคนโตสดเทานน ทตองมดกรอยางนอย 0

กาหนดให Sk คอจานวนโหนดนอยสดของตนไมทรากมดกร k ในฮปฟโบนกช (S0 = 1, S1 = 2, S2 = 3 ลองคดดกนเอง) รากทมดกร k กหมายความวา k ลก จากดกรของลกๆ ทงหลายทสรปไดในยอหนาทแลว แสดงวา

��

����

k

iik SSS

2201

เลข 1 ตวแรกคอรากของตนไม สวนพจนอนคอจานวนโหนดของตนไมยอยทงหลายทเปนลกกอนจะหาผลเฉลยของความสมพนธเวยนเกดขางบนน ขอแสดงความสมพนธเวยนเกดของจานวนฟโบนกชทคนเคยกนใหดอกท

Fk+2 = Fk+1 + Fk

= Fk + Fk–1 + Fk

= Fk–1 + Fk–2 + Fk–1 + Fk

= F1 + F0 + F1 +…+ Fk–2 + Fk–1 + Fk

= ��

k

iiF

01

คราวนจะแสดงใหเหนวา Sk � Fk+2 โดยใชอปนยเชงคณตศาสตร

Page 145: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 129

ขนตอนฐานหลก : S0 = 1 = F2 และ S1 = 2 = F3

ขนตอนอปนย :

2

0

2

22

220

1

2

2

1

��

��

��

���

k

k

ii

k

ii

k

ii

k

iik

F

F

F

S

SSS

ดงนน Sk � Fk+2 จากรปแบบปดของ Fk = 15 ��

��

�k - �k โดยท � = (1+ 5 )/2 ไดวา n � Sk � k

หรออกนยหนง k � �log� n� สรปไดวา D(n) ซงคอดกรใหญสดของโหนดในฟโบนกชฮปทม nโหนดมขนาดเปน O(log n)

ถงตรงนขอเปรยบเทยบประสทธภาพของการดาเนนการตางๆ ของฮปทง 4 ชนดทไดศกษากนมาดงตารางท 7–2ตารางท 7–2 เวลาการทางานของการดาเนนงานตางๆ ของฮป (ดอกจนเปนเวลาถวเฉลย)

BinaryHeap

BinomialHeap

Lazy BinomialHeap

FibonacciHeap

FindMin �(1) �(1) �(1) �(1)Insert O(log n) �(1) * �(1) �(1)ExtractMin O(log n) O(log n) O(log n) * O(log n) *DecreaseKey O(log n) O(log n) O(log n) �(1) *Merge O(n) O(log n) �(1) �(1)

เซตไมมสวนรวมลกษณะความตองการในการจดเ กบขอมลแบบหนง ซงใชมากสาหรบปญหาทมการทดสอบความสมมลกนของขอมล เชน "เปนโหนดทตอกนหรอไม" "เปนโหนดในตนไมเดยวกนหรอ

Page 146: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

130 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

ไม" "เปนตวแปรทใชทเกบในหนวยความจาทเดยวกนหรอไม" เปนตน เราสามารถเปลยนคาถามเหลานมาเปนการทดสอบวา "เปนสมาชกในเซตเดยวกนหรอไม" ขอมลทถกทดสอบความสมมลเหลานสามารถนามาจดเกบไดในโครงสรางขอมลทเรยกวาเซตไมมสวนรวม (disjoint set) โดยทขอมลเปนจานวนเตมในชวง 1 ถง n ถกแบงเปนเซตหลายๆ เซต การดาเนนการกบเซตไมมสวนรวมนม 3 แบบคอ

� MakeSet(x) คอการสรางเซตใหมทม x เปนสมาชกเพยงตวเดยว� Union(s , t) คอการยเนยนเซต s กบเซต t� Find(x) คอการหาหมายเลขของเซตท x เปนสมาชกอย

วธการสรางเซตไมมสวนรวมทจะอธบายกนในหวขอน คอการแทนเซตหนงเซตดวยตนไมหนงตน สมาชกตางๆ ทอยในเซตเดยวกน กคอโหนดตางๆ ของตนไมตนเดยวกน ดงนนเซตทงหลายทไมมตวรวมจงเปนปาไม รปท 7–16 แสดงตวอยางปาไมทมตนไม 3 ตนแทนเซต 3 เซตคอ {1, 3, 5, 4, 9, 10} , {6}, และ {7, 2, 8, 11}

4

3 9 10

5

1

6 8

7 2

11

รปท 7–16 ตวอยางปาไมทแทนเซตไมมสวนรวม

เราใชหมายเลขสมาชกทรากของตนไมเปนตวแทนหมายเลขเซต ดงนนการถามวา x อยในเซตอะไร (Find(x)) สงทไดเปนคาตอบกคอหมายเลขสมาชกทรากของตนไมท x อย จากตวอยางในรปท 7–16 เซตทงสามมหมายเลขเซตคอ 4, 6, และ 8 ตามลาดบ

การ MakeSet(x) คอการสรางตนไมใหมมแตรากซงเกบ x ใชเวลา �(1)

การ Union( s , t ) คอการนารากของตนไมทแทนเซต s (หรอ t) ไปตอเปนลกของรากของตนไมทแทนอกเซต t (หรอ s) ใชเวลา �(1)

การ Find(x) เรมทโหนดทเกบ x แลววงขนไปยงโหนดพอเรอยๆ จนกวาจะพบราก ใชเวลาแปรตามความยาวของวถจาก x ถงรากของตนไม

Page 147: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 131

ใหสงเกตวาเรามความตองการทจะพงเขาหาโหนดใดๆ ในตนไม และมความตองการทจะวงไปหาโหนดพอ (แตไมตองการลงมาทโหนดลก เหมอนกบตนไมทเคยพบมา) ดงนนสามารถสรางปาไมนไดดวยแถวลาดบ P มขนาดเทากบจานวนขอมล โดยทหนงชองแทนหนงโหนด P[x] เกบหมายเลขชองของ P ทแทนโหนดพอของ x ถา P[x] = x กแสดงวา x เปนราก รปท 7–17แสดงตวอยางการสรางปาไมในรปท 7–16 ดวยแถวลาดบ

1 2 3 4 5 6 7 8 9 10 11

P 5 8 4 4 3 6 8 8 4 4 2

รปท 7–17 แถวลาดบแทนปาไมในรปท 7–16

การยเนยนดวยความสงเรามสองทางเลอกในการตอตนไมเมอตองการ Union( s , t ) คอนาตนไมท s เปนรากไปตอเปนลกของ t (นนคอให P[s] = t ) หรอนาตนไมท t เปนรากไปตอเปนลกของ s (นนคอให P[t] = s ) ระหวางการทางานถาเราโชครายเลอกตอผดแบบ กมโอกาสทจะไดตนไมทสงเปน �(n) ได แตถาเราเลอกตออยางระมดระวงกจะสามารถรกษาไมใหตนไมแตละตนสงมากนกได วธหนงทชวยเราเลอกแลวไดผลดกคอการยเนยนดวยความสง (union–by–height) ซงคอการนาตนไมซงเตยกวาไปตอเปนลกของรากของตนไมทสงกวา (ถาสงเทากนกเลอกตอสกแบบ) union–by–height ประกนไดวาตนไมสงเปน O(log n) พสจนไดดงน

ให h(s) แทนความสงของตนไมยอยทม s เปนราก และ w(s) แทนจานวนโหนดของตนไมยอยทม s เปนราก (รวม s ดวย) พบวา w(s) � 2h(s) (จะพสจนใหด) เมอหาคา lg ทงสองขางจะสรปไดวา h(s) � lg w(s) ถา n เปนจานวนโหนดของตนไมแสดงวา h(s) � lg n = O(log n)

คราวนจะพสจนวา w(s) � 2h(s) โดยใชอปนยเชงคณตศาสตร กรณฐานหลก ตนไมเรมตนมหนงโหนด สง 0 นนคอ 1 � 20 ซงใชได มาดขนตอนอปนย สมมต Union( s, t ) ทาให t ถกตอเปนลกของ s ขอเขยน h' กบ w' แทน h และ w หลงการตอตนไม จะไดวา w'(s) = w(s) + w(t)

ถา h(s) > h(t) ความสงของ s จะไมเปลยน ( h'(s) = h(s) )w'(s) = w(s) + w(t)

� 2h(s) + 2h(t)

� 2h(s)

= 2h'(s)

Page 148: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

132 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

ถา h(s) = h(t) จะไดวา h'(s) = h(s) + 1w'(s) = w(s) + w(t)

� 2h(s) + 2h(t)

= 2h(s) + 2h(s)

= 2h'(s)+1

= 2h'(s)

สรปไดวา w(s) � 2h(s)

ในเมอความสงของตนไมเปน O(log n) ดวยการ union–by–height ยอมแสดงวา Find(x) ซงใชเวลาในกรณเลวสดแปรตามความสงของตนไม จงใชเวลา O(log n)

รปท 7–18 แสดงตวอยางตนไมทไดเมอใช union–by–height จากลาดบการยเนยนดงน (เรมจากการม 8 เซตๆ ละหนงตว) Union(1,2), Union(3,4), Union(5,6), Union(7,8), Union(2,4), Union(6,8), Union(4,8) แสดงใหเหนกรณตนไมสงเทากบ lg n ซงเปนกรณสงสดเทาทเปนได

8

4 6 7

1

2 3 5

รปท 7–18 ตวอยางตนไมสงสดเมอใช Union–by–weight

ถาจะใช union–by–height กตองมการเกบความสงของตนไมไวดวย วธงายๆ กคอจองอกแถวลาดบ R ดงตวอยางในรปท 7–19

1 2 3 4 5 6 7 8 9 10 11

P 5 8 4 4 3 6 8 8 4 4 2

1 2 3 4 5 6 7 8 9 10 11

R 3 0 2

รปท 7–19 แถวลาดบแทนปาไมในรปท 7–16 ทรองรบการ union–by–height

การยเนยนดวยขนาดแทนทจะใชความสงของตนไมเปนตวตดสนวธการตอตนไมในการยเนยน เราสามารถใชขนาดของตนไมกได (union-by-size) โดยจะนารากของตนทเลกกวาไปตอเปนลกของรากของตนท

Page 149: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 133

ใหญกวา เพยงเทานกสามารถพสจนไดอกเชนกนวา ความสงของตนไมไมเคยเกน lg n สงผลให Find(x) ใชเวลาเปน O(log n) (ขอละวธพสจนใหนกเรยนทาเอง)

การอดวถUnion–by–height หรอ union–by–size ประกนวาความสงของตนไมเปน O(log n) ในทางปฏบตนนสาหรบขอมลโดยทวไปแลวถอไดวาประสทธภาพการทางานนนดทเดยว นนคอการดาเนนการกบเซตจานวน m ครงใชเวลาเปน (m log n) แตถาเราตองการใหมประสทธภาพทดกวานอก กสามารถทาไดโดยการเพมกลวธการอดวถ (path compression) ท Find ซงทาใหตนไมเตยลงไปอก

การ Find(x) นนเราตองเรมทโหนดทเกบ x แลววงขนไปยงโหนดพอเชนนเรอยๆ จนกวาจะพบรากของตนไม สงท path compression ทากคอการยายทกๆ โหนดตามวถของการ Find(x) ใหไปเปนลกของรากของตนไม รปท 7–20 แสดงตวอยางการทา path compression

ab

cd

e e

dcba

Find( a )

รปท 7–20 Path compression ทเกดขนเมอมการ Find(a )

เหนไดชดเลยวา การ Find ทาใหตนไมเตยลง สงผลใหการ Find ครงหลงๆ เรวขน อกทง path compression กไมไดเพมภาระ (เชงเสนกากบ) แตอยางใดกบ Find

การยเนยนดวยลาดบชนเราสามารถใช path compression รวมกบ union–by–height หรอ union–by–size ได ซงใหผลทดมากๆ (ดจนเสมอนวาการ Find นนใชเวลาคงตว ซงจะแสดงใหดตอไป) แตถาคดดดๆ จะพบวาเมอทา path compression เสรจทงขนาดและความสงของตนไมอาจมการเปลยนแปลง สาหรบขนาดของตนไมนนเราปรบไดงายเมอทา path compression แตวาความสงนนจะปรบยงยาก วธแกไขปญหาการปรบความสงเมอตองการใช union–by–height กคอ ไมตองปรบ !!! นนคอถงแมตนไมจะเตยลงกไมตองไปปรบความสงทเกบไวใชเปรยบเทยบตอนยเนยน กลายเปน

Page 150: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

134 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

วาเราเกบความสงของตนไมทสงสดเทาทผานมา (จงขอเปลยนชอเรยกวา rank) เรยกกลวธนวา การยเนยนดวยลาดบชน (union–by–rank) โดยท rank(x) เปนขอบเขตบนของความสงของตนไมทม x เปนราก เดยวเราจะแสดงใหเหนวาประสทธภาพการทางานเมอใช union–by–rank บวกกบ path compression กดเหมอนๆ กน

รหสเทยมของ MakeSet, Union และ Findขอสรปขนตอนการทางานของ MakeSet, Union (ทใช union–by–rank) และ Find (ทม path compression) ดวยรหสเทยมขางลางน

01: MakeSet( x )02: {03: P[x] = x04: R[x] = 005: }

01: Union( s, t )02: {03: if (R[s] > R[t])04: P[t] = s05: else {06: P[s] = t07: if (R[s] == R[t]) ++R[t]08: }09: }

01: Find( x )02: {03: if (P[x] � x)04: P[x] = Find( P[x] )05: return P[x]06: }

การวเคราะหในหวขอนเราจะแสดงใหเหนวาการใชกลวธทง union–by–rank และ path compression จะสงผลใหการดาเนนการกบเซตไมมสวนรวมทมขอมล n ตว เปนจานวน m ครง (m > n) ใชเวลาเปน O(m lg*n )

เราเรยก lg*n วา iterative logarithm function ซงนยามไดดงน

lg*n = min{i �0 | lg(i)n � 1} โดยท lg(i)n = lg(lg(lg(…(n)…)))

i ครง

Page 151: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 135

ตวอยางเชน 52lg*,42lg*,32lg*,22lg*,12lg*222222 2222����� เปนตน ฟงกชน

lg* นโตชามากๆ เหนไดเลยวาในทางปฏบต จานวนขอมลทเราจะตองจดเกบในเซตไมมสวนรวมตางๆ คงไมเกนขนาดของหนวยความจา สมมตใหเทากบ 240 (= 210 giga = 1 tera) จะไดวา lg*240 = 5 สรปไดวาการดาเนนการตางๆ ของเซตไมมสวนรวมทใชทง union–by–rank และ path compression ใชเวลาถวเฉลยเกอบคงตวทเดยว

การวเคราะหออกจะยดยาวสกหนอย ขอใหตดตามดๆ เราอาศยการแบงโหนดตางๆ ออกเปนกลมๆ ตาม rank ของโหนด อาศยฟงกชน G(r) เพอคานวณหมายเลขกลมของโหนดทม rank เปน r และมอกฟงกชน F(g) ทระบ rank ทใหญสดในกลม g ดงนนกลม g ประกอบดวยโหนดทม rank ในชวงตงแต F(g–1)+1 ถง F(g)

ตารางท 7–3 แสดงตวอยางการจดกลมโหนดตาม rank สองวธ ถากาหนดให F(g) = g2 กแสดงวา G(r) = � r � แตถากาหนดให F(g) = 2F(g–1) สาหรบ g > 0, F(0) = 0 จะได G(r) = 1+ lg*r (เราจะจดกลมอยางไรกได กใหผลของการวเคราะหเปนขอบเขตบนของคาตอบทงสน แตเดยวชวงทายของการวเคราะหจะพบการจดกลมทไดขอบเขตบนทตา)

ตารางท 7–3 การจดกลมโหนดตาม rank

rank ของโหนดทอยในกลมกลมท(g) เมอ F(g) = g2 เมอ F(g) = 2F(g–1), F(0) = 00 0 01 1 12 2 ถง 4 23 5 ถง 9 3 ถง 44 10 ถง 16 5 ถง 165 17 ถง 25 17 ถง 655366 26 ถง 36 65537 ถง 265536

การวเคราะหจะอาศยขอสงเกตดงตอไปน

ขอสงเกตท 1 เมอใดทโหนด x มพอทอยคนละกลมกบ x โหนด x กจะมพอทอยคนละกลมไปตลอดกาล (ถงแมจะเปลยนพอใหม) ขอสงเกตนสรปไดมาจากการท rank ของโหนด x ใดๆ ตอนเรมตนเปนศนย จากนนจะเพมขนทละหนงหลง union ตราบ

Page 152: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

136 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

เทาท x ไดเปนรากใหม (คอยงไมมพอ) แตเมอใดท x มพอเปนครงแรก (เพราะการ union) rank(x) จะคงตวหลงจากนนตลอดไป (เพราะ rank ของ x เปลยนไดเมอ x เปนราก และถก union อยางเดยว) และเนองจากวธ union–by–rank (ซงหลงการ union จะไดโหนด rank สงเปนพอของโหนด rank ตา) กบวธ path compression (ซงไมเปลยน rank) บอกเราวา rank(x) < rank(y) เมอ y เปนพอของ x ดงนนถา x เปลยนพอ (เพราะ path compression) กยอมไดพอใหมทม rank สงกวาเกา และถาพอปจจบนอยคนละกลม พอในอนาคต (ซงตองม rank สงกวา) กตองอยคนละกลมอกเชนกน

ขอสงเกตท 2 โหนดทม rank เปน r ตองมไมเกน �n/2r� โหนด ถาให T(r) คอเซตของตนไมยอยตางๆ ทรากม rank เปน r แตละตนใน T(r) ตองมไมนอยกวา 2r โหนด (นนคอ w(x) � 2rank(x) สามารถพสจนไดในทานองเดยวกบ w(x) � 2h(x) เพราะวา h(x) � rank(x)) ลกๆ หลานๆ ของรากของตนไมเหลาน กตองม rank นอยกวา r(จากความจรงของขอสงเกตทแลว) และตนไมแตละตนใน T(r) กไมมโหนดซากน (จากคณสมบตของตนไมทวไป) ถาปาๆ หนงม n โหนด กยอมมโหนดทม rank เปน r เปนจานวนไมเกน �n/2r� โหนด

สงทเราสนใจกคอการทางานของ Find (สาหรบ Union และ MakeSet เหนไดชดเจนวาใชตนทนเปน �(1)) ภาระการทางานของ Find ยอมแปรตามความยาวของวถจากโหนดทหาไปยงราก การนบภาระตรงนจะยงยากเพราะความยาวของวถจะหดสนลงจากการทา path compression กอนอนขอแบงโหนดในปาไมออกเปนสองประเภทดงน

1. โหนดทม rank มากสดในกลม กบโหนดทเปนลกของราก2. โหนดอนๆ ทไมใชโหนดประเภทท 1

จะขอใชวธการรวมกลมในการวเคราะหกรณถวเฉลย โดยนบตนทนการทางานดวยการเทยบเคยงกบการเกบคาธรรมเนยมผานโหนด (ในการ Find) ซงคดการผานโหนดๆ ละ 1 บาท เมอมการดาเนนการไปเปนจานวน m ครง คาธรรมเนยมผานโหนดทงหมดทเรยกเกบไดกจะเปนตวแทนเวลารวมในการดาเนนการ m ครงนน

เรามาเรมพจารณาคาธรรมเนยมผานโหนดประเภทท 1 (M1(n)) กนกอน เนองจากมอยางมาก 1+ G(rmax) กลม (โดยท rmax คอ rank ทใหญทสดในปา) ดงนนการ Find หนงครงตองผานโหนด

Page 153: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 137

ประเภทท 1 ซงประกอบดวยโหนดทม rank มากสดในแตละกลม (กลมละตว) บวกกบโหนดทเปนลกของราก จงเสยคาธรรมเนยมรวมทงสนอยางมาก G(rmax) + 2 บาท สรปวาการดาเนนการ m ครงเสยคาธรรมเนยมผานโหนดประเภทท 1

M1(n) � m( G(rmax) + 2 )

วธหาคาธรรมเนยมผานโหนดประเภทท 2 (M2(n)) จะยงหนอย กอนอนขอคานวณจานวนโหนดในกลมกอน ซงหาไดจากผลบวกของจานวนโหนดทม rank ทอยในกลมนน เนองจากกลม g ประกอบดวย rank ตงแต F(g–1)+1 ถง F(g) ดงนนจานวนโหนดของกลม g มคาไมเกน

)1(0

1)1(

)(

1)1( 22

1

22 �

��

���

�� �� gFr

rgF

gF

gFrr

nnn

ใหสงเกตวาเมอ Find ผานโหนดใด path compression จะทาใหโหนดนน (ในกรณทไมเปนลกของราก) เปลยนพอใหมทม rank สงกวา rank ของพอเกา ถาคดแบบเปลยนชาๆ กใหไดพอใหมท rank สงขน 1 ดงนนถาโหนด x เปนโหนดท rank ตาสดในกลม g กรณชาสดกวา x จะไดพอใหมทอยนอกกลม g ตองเปลยนพอ F(g) – F(g–1) – 1 ครง ดงนนคาธรรมเนยมผานโหนดประเภทท 2 กคอการรวมเงนทไดของทกๆ กลม แตละกลมคดจากจานวนโหนดในกลมคณดวยจานวนเงนทแตละโหนดในกลมจะได กวาทมนจะมพอนอกกลม (แลวกลายเปนโหนดประเภทท 1) ดงน

� �

����

)(

1)1(

)(

1)1(

)(

1)1(2

max

max

max

2

)(

2)(

21)1()()(

rG

ggF

rG

ggF

rG

ggF

gFn

ngF

ngFgFnM

สรปวาเมอมการดาเนนการไป m ครง เสยคาธรรมเนยมผานโหนดรวมทงสน

��

����

)(

1)1(max21

max

2

)()2)(()()(rG

ggFgFnrGmnMnM

ซงมคาขนกบวธการจดกลมโหนดตาม rank นนคอขนกบฟงกชน G(r) และ F(g) ดจากพจนในผลบวก F(g) / 2F(g–1) กเหนไดวาถากาหนดให F(g) = 2F(g–1) จะจดการผลบวกตรงนไดงายมากๆ

Page 154: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

138 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

จาก F(g) = 2F(g–1) จะได G(r) = 1 + lg*r (ซงเปนวธการจดกลมตาม rank ทปรากฏในสดมภขวาของตารางท 7–3) เนองจาก rmax = �lg n� (เพราะวา w(x) � 2rank(x) และ n � w(x) ดงนน n � 2rank(x) นนคอ rank(x) � �lg n� ) ดงนน G(rmax) = 1 + (lg*(lg n)) = lg*n จะไดคาธรรมเนยมผานโหนดรวมเปนเงนทงสน (เมอ m � n)

m(lg*n + 2) + nlg*n = O( (m+n) lg*n ) = O( m lg*n )

วาไปแลว M1(n) = O(m lg*n) กเปนตนทนทตองใชทกครงทมการ Find ซงแปรตาม m เสมอนกบวาตอครงเสย O( lg*n ) ในขณะท M2(n) = O(n lg*n) เปนตนทนในการ Find ครงแรกๆ ซงพอนานๆ ไปกใชนอยลงๆ เพราะ path compression หรอจะมองในแงมมบญชกได โดยเปรยบเสมอนวาตนทนถวเฉลย Union ใช 1 บาท (เพราะเปนแคการตอตนไม) Find ใช 2+lg*n บาทสาหรบคาธรรมเนยมผานโหนดประเภทท 1 และMakeSet ใช 1+lg*n บาท โดยทบาทแรกใชเปนตนทนจรงตอนสรางเซตทมสมาชกตวเดยวครงแรก และอก lg*n มไวจายคาธรรมเนยมผานโหนดประเภททสองในอนาคต

แบบฝกหด1. จงแสดงใหเหนวาถาเราคนขอมลในตนไม splay เรยงลาดบตามขอมลคานอยไปยงคามาก จะทาใหตนไมนปรบตวเองจนมลกษณะยาวเปนลกโซเอยงทางซายอยางเดยว (นนคอเปนตนไมทแตละโหนดมแตลกซาย ยกเวนโหนดลางสด) และตนทนรวมในการคนนจะเปน O(n)

2. จงอธบายทมาของแตละบรรทดในการวเคราะหตนทนถวเฉลยการหมนระหวางการ splay แบบ zig–zag ทไดนาเสนอในหนาท 111

3. นกเรยนคนหนงแนะนาวาเพอลดเวลาการทางานในทางปฏบต เราควร splay กบการดาเนนการแบบครงเวนครง อยากทราบวาดวยวธนตนทนถวเฉลยยงเหมอนเดมหรอไม

4. ถากาหนดใหพลงงานศกยของฮปทวนามมคาเทากบจานวนตนไมบวกกบ rank ของตนไมทใหญสดของฮป จงแสดงใหเหนจรงวาการผสานฮปทวนามสองฮปเขาดวยกนใชเวลาถวเฉลยเปน O(1)

Page 155: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:09 : [email protected] บทท 7 โครงสรางขอมล (แบบยง) 139

5. กาหนดใหเรามฮปทวนามขนาด n = 2k – 1 โหนด จากนนเกดการ Insert ตามดวย ExtractMin ทาสลบกนไปเชนนเปนจานวน m คก) จงอธบายวาทาไม Insert ตามดวย ExtractMin ททาเปนจานวน m คนน ใชเวลาการทางานของแตละ operation เปน O(log n)

ข) ในเมอขอ ก) เปนจรง แสดงวา m operations เสยเวลา O(m log n) นนคอตนทนถวเฉลยของแตละการดาเนนการตองเปน O(log n) แลวทาไมถงไมขดกบความรทวาตนทนถวเฉลยของ Insert เปน O(1)

6. ในเรองของฮปทวนามนน เราจดเกบรายการของตนไมทวนามเรยงจากรากทมดกรนอยไปหามาก แตเราจดเกบรายการของลกของรากของตนไมในทางกลบกน ดงนนการ ExtractMin จงตองมการกลบลาดบรายการของลกของรากทมคยตวนอยสด กอนทจะนาไปผสานฮป ถาเราจดเกบรายการของลกนใหเรยงลาดบตามดกรของโหนดจากนอยไปหามาก กไมตองเสยเวลากลบลาดบ จงอธบายวาทาไมไมทาเชนนน มขอดขอเสยอยางไร หรอวาไมมขอแตกตาง

7. โหนดในฮปฟโบนกชจะมความลกทสดไดเทาใด อธบายดวยวาจะทาใหเกดกรณเชนนไดอยางไร ยกตวอยางประกอบดวย

8. มนกเรยนคนหนงแนะนาวาเรานาจะเพมการ Consolidate ใหทาหลงการ Merge ฮปฟโบนกชดวย จะไดลดภาระของ DecreaseKey ลง จงวจารณคาแนะนาดงกลาว

9. จงวเคราะหตนทนถวเฉลยของแตละการดาเนนการในฮปฟโบนกช โดยใชวธทางบญช

10. ในเรองของฮปฟโบนกช ถาเราเปลยนแนวคดการตดซอนตด (cascading cut) จากเดมทเกดขนเมอโหนดสญเสยลกทสอง ไปเปนเมอโหนดสญเสยลกท k อยากทราบวา k มคาอะไรไดบางทประกนไดวาดกรของโหนดตางๆ เปน O(log n) (ฮปฟโบนกชนน k = 2)

11. จงออกแบบการสรางเซตไมมสวนรวมตางๆ ดวยรายการโยง (linked list) อธบายการดาเนนการตางๆ และวเคราะหเวลาการทางานดวย

12. กาหนดให A คอลาดบของคาสง MakeSet, Union และ Find ทงหมดจานวน m คาสง ทคาสง Union ทงหมดเกดขนกอนคาสง Find จงแสดงใหเหนจรงวาเวลาทงหมดของ Aเปน O(m) เมอเราใช union by rank และ path compression และถาเราใช path compression อยางเดยว (union ดวยวธใดกไดทใชเวลาคงตว) จะยงคงมเวลารวมเปน O(m)

Page 156: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

140 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:09 : [email protected]

13. จงพสจนถาเราใช union-by-size เพยงอยางเดยว (ไมม path compression) ตนไมตางๆ ในปาของเซตไมมสวนรวมตางๆ จะสงไดไมเกน O(log n)

14. เราใชแถวลาดบ P และ R ในการสรางเซตไมมสวนรวมตางๆ (ตามทแสดงไวในรปท 7–19หนาท 132) จงเสนอวธทใชเพยงแถวลาดบเดยวในการแทน และเขยนรหสเทยมของ MakeSet, Union และ Find สาหรบวธการแทนใหมนดวย

15. ถาเราตองการเพมการดาเนนการ Remove(x) เพอลบสมาชก x ออกจากเซตท x อยเดม เพอ MakeSet(x) ใหใหม จงออกแบบการทางานของ Remove(x) เพอใหตนทนรวมของการดาเนนการของ Union Find และ Remove จานวน m ครงเปน O( m lg* n)

Page 157: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] 141

บทท 8

จะขอเรมนาเสนอกลวธการออกแบบอลกอรทมทเรยกวาการแบงแยกและเอาชนะ (divide and conquer) เปนกลวธแรก การแบงแยกและเอาชนะนนเปนกลวธในการจดการกบปญหาทใชกนมานานในหลายๆ วงการ ซงกสามารถนามาใชไดดทเดยวกบการออกแบบอลกอรทม เพอแกไขปญหาเชงคานวณ แนวคดของกลวธนกคอแทนทเราจะไปหาคาตอบของปญหาใหญปญหาหนงทเดยวเลย กอาจจะไมสะดวกนก สเราแบงปญหาใหญนนออกเปนปญหายอยๆ หลายๆปญหาทมขนาดเลกกวา หาคาตอบของแตละปญหายอย แลวนาคาตอบยอยๆ ทไดนมารวมกนเพอกลายเปนคาตอบของปญหาใหญ อาจจะซบซอนนอยกวา และใชเวลาโดยรวมทดกวากได อลกอรทมแบบแบงแยกและเอาชนะมโครงของการทางานแสดงไดดวยรหสเทยมดงน

01: SolveDQ( P )02: {03: if ( P is trivial ) return Solve(P)04: divide P into P1 , P2 , …, Pk05: for (i=1 to k)06: Si = SolveDQ( Pi )07: S = combine( S1 , S2 , …, Sk )08: return S09: }

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

ขอใหสงเกตวาเราสามารถเขยนโปรแกรมททางานแบบการแบงแยกและเอาชนะ ไดอยางเปนธรรมชาตมากๆ เมอเขยนแบบเวยนเกด (recursive) เพราะขนตอนการแกปญหายอยนนกจะ

การแบงแยกและเอาชนะ

Page 158: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

142 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

เรยกใชกระบวนวธเดม เมอถงกรณทปญหามขนาดเลกพอกไมจาเปนตองแบงตอ (ดงทเขยนในบรรทดท 3 ของรหสเทยมขางตน)

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

t(n) = at(n/b) + f(n)

ซงเปนการแบงปญหาใหญเปนปญหายอยจานวน a ปญหา แตละปญหายอยมขนาดเลกลง bเทา และภาระการแบงปญหา และรวมคาตอบยอยนน (ทไมเกยวกบการเรยกเวยนเกด) ใชเวลาเปน f(n) ซงโดยทวไปสามารถใช master's method หาผลเฉลยไดอยางฉบพลน

นอกจากนถาเราตองการพสจนวาอลกอรทมทออกแบบนนทางานไดถกตองจรง กสามารถพสจนไดดวยอปนยเชงคณตศาสตร จงเหนไดวากลวธการแกไขปญหาแบบแบงแยกและเอาชนะน เขยนโปรแกรม วเคราะห และพสจนความถกตองไดไมยาก

ในบทนจะขอนาเสนอปญหา และอลกอรทมแบบแบงแยกและเอาชนะทแกไชปญหานนๆ พรอมทงการวเคราะหเวลาการทางานของอลกอรทม ปญหาเหลานไดแก การคน (search) การเรยงลาดบ (sorting) การเลอก (selection) การยกกาลงมอดลาร, การคณเมทรกซ การหาคจดใกลกนทสดบนระนาบ 2 มต และปญหาดารายอดนยม

การคนแบบทวภาคการคนขอมลในแถวลาดบทเรยงลาดบแลวนน กระทาไดรวดเรวมาก โดยคนแบบทวภาค (binary search) ซงอาศยความสามารถในการขจดขอมลในแถวลาดบทไมใชขอมลทตองการออกจากการพจารณาไดทละครง หลงจากมการพจารณาขอมลตวทอยตาแหนงตรงกลางของชวงทกาลงคน binary search สามารถลดขนาดของปญหาทตองหาคาตอบจากเดมไปครงหนง สมมตวาเราตองการคนวาขอมลในเลขดชนใดของแถวลาดบ A ตงแตเลขดชนท left ถง right ทมคาเทากบ x กเพยงแตเปรยบเทยบกบตวตรงกลางของชวง ถาเทากบ x กคอพบ x แลว ถานอยกวา x กแสดงวา x ควรอยทางครงขวาของชวง กไปคนตอในชวง left+1 ถง right ถามากกวา x กแสดงวา x ควรอยทางครงซายของชวง กไปคนตอในชวง left ถง right–1 เนองจาก

Page 159: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 143

จานวนขอมลทตองพจารณาลดลงทละครง ดงนนเราสรปไดวาไมพบขอมลทมคาเทากบ x กเมอไมมขอมลเหลอใหเปรยบเทยบ เขยนเปนรหสเทยมไดดงน

01: BinarySearch( A[left..rght], x )02: {03: if ( left > rght ) return –1;04: m = (left + rght) / 2;05: if ( x == A[m] ) return m;06: if ( x < A[m] )07: return BinarySearch( A[left..m–1],x);08: else09: return BinarySearch( A[m+1..rght],x);10: }

กาหนดใหแถวลาดบ A มขอมล n ตว ในกรณเลวสด binary search ใชเวลาการทางานเปนt(n) = t(n/2) + �(1) = �(log n)

เราสามารถใชหลกการคนแบบทวภาคนไปประยกตกบการแกไขป ญหาเชงตวเลขได เชนการหาราก สมมตวาเราตองการคาของ x ซงเปนรากทสองของ n ( x = n ) กเพยงแตคนคา x ในชวงตงแต 0 ถง n ททาให n–� � x2 � n+� โดยท � เปนคาความคลาดเคลอน ตวอยางเชนอยากทราบคาของ 40 โดยท � = 0.1 หาไดดงตารางท 8–1 ได x = 6.31836 ใหสงเกตการเปลยนชวงการคนวาครงตอไปจะเปนครงซายหรอครงขวาของชวงนนกขนกบวา x2 มคามากกวาหรอนอยกวา n วธนในศาสตรการวเคราะหเชงตวเลข (numerical analysis) นนเรยกวาการแบงครง (bisection) แนนอนวามวธการหารากทสองทเรวกวานแน แตนเปนเพยงการแสดงใหเหนถงการประยกตการคนทวภาคกบปญหาทเราแทบไมไดใชความรทางทฤษฎเชงตวเลขใดๆ เลย

ตารางท 8–1 การหาคา 40 ดวยการคนแบบทวภาค (ท � = 0.1)

ชวงทคนa b

x = (a+b)/2 x2–n

0 40 20 3600 20 10 600 10 5 –155 10 7.5 16.255 7.5 6.25 –0.9375

6.25 7.5 6.875 7.2656256.25 6.875 6.5625 3.0664066.25 6.5625 6.40625 1.0400396.25 6.40625 6.328125 0.0451666.25 6.328125 6.289063 –0.44769

6.289063 6.328125 6.308594 –0.201646.308594 6.328125 6.31836 –0.07833

Page 160: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

144 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

การเรยงลาดบแบบผสานการเรยงลาดบแบบผสาน (merge sort) นนใชกลวธการแบงแยกและเอาชนะทตรงไปตรงมาทสด (ดรปท 8–1) เราแบงครงแถวลาดบของขอมลทจะนามาเรยงลาดบออกเปนสองสวน คอสวนครงซายและครงขวา (จานวนขอมลพอๆ กน) จากนนไปเรยงลาดบชดขอมลครงซาย (ดวย merge sort) ไปเรยงลาดบชดขอมลครงขวา (ดวย merge sort) เมอทงสองครงเรยงลาดบเสรจ จงนารายการของขอมลทเรยงลาดบแลวทงสองชดมาผสาน (merge) กน ไดขอมลทเรยงลาดบทงชด เหนไดชดเลยวาการแบงปญหากระทาไดงายโดยการแบงครงขอมลเปนสองชด การแกปญหายอยกเพยงแตเรยกใช merge sort สวนการรวมคาตอบยอยกคอการผสานรายการทเรยงลาดบทงสองรายการ (ซงใชเวลาในการผสานรายการเปน �(n)) เราสามารถบรรยายเวลาการทางานของ merge sort ไดดวยความสมพนธเวยนเกด

t(n) = 2t(n/2) + �(n)ดวย master's method จะได t(n) = �( n log n )

Merge

MergesortMergesort

�(n)

2t(n/2)

t(n) = 2t(n/2) + �(n)

รปท 8–1 การเรยงลาดบแบบผสาน

Page 161: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 145

การเรยงลาดบแบบเรวการเรยงลาดบแบบเรว (quick sort) เปนตวอยางการทางานแบบแบงแยกและเอาชนะทคอนขางซบซอน เนองจากโดยปกตเรามกเหนการแบงปญหาในกลวธนเปนแบบแบงครง หรอไมกแบงเปนหลายชด ทมขนาดพอๆ กน แตสาหรบ quick sort นปญหายอยมขนาดไมแนนอน จงทาใหการวเคราะหจะยงยากสกนดหนง

quick sort แบงขอมลออกเปนสองชด ชดซายกบชดขวา (ดรปท 8–2) โดยแบงใหขอมลทกๆ ตวในชดซายมคาไมมากกวาขอมลในชดขวา จากนนนาขอมลทงสองชดไปเรยงลาดบ (ดวย quick sort) เมอทงชดซายและชดขวาเรยงลาดบแลว จะไดขอมลทงชดเรยงลาดบทนท ไมตองทาอะไรเลย ทงนเพราะจากการแบงทไดขอมลทกๆ ตวในชดซายมคาไมมากกวาขอมลในชดขวานนเอง

Partition

QuickSort QuickSort

รปท 8–2 การเรยงลาดบแบบเรว

สงทตองทาความเขาใจสาหรบ quick sort กคอขนตอนการแบงสวน (partitioning) การแบงสวนอาศยการนาขอมลตวหนงในรายการเรยกวาตวหลก (pivot) มาเปนเกณฑในการแบงสวน โดยจะแบงใหขอมลชดซายมคาไมมากกวาตวหลก และขอมลในชดขวามคาไมนอยกวาตวหลก (กจะไดวาขอมลชดซายทกตวมคาไมมากกวาขอมลในชดขวา) ดงนนผลของการแบงสวนจงขนกบการเลอกขอมลในรายการทมาเปนตวหลก อกสกครเราคอยมาสนใจวาจะเลอกตวหลกอยางไร ตอนนจะขออธบายขนตอนการแบงสวนเมอรตวหลกแลวดวยรหสเทยมดงน

Page 162: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

146 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

01: Partition( A, p, r )02: {03: c = A[p]04: i = p–1; j = r+105: while ( i < j ) {06: while ( A[––j] < c ) { }07: while ( A[++i] > c ) { }08: if (i < j) swap(A[i], A[j])09: }10: return j11: }

ฟงกชน Partition แบงขอมลในแถวลาดบ A ตงแตชองท p ถงชองท r โดยใช A[p] เปนตวหลกในการแบงสวนเกบไวในตวแปร c (บรรทดท 3) โดยจะคนผลเปนหมายเลขชองสดทายของชดซายหลงการแบงสวน เรามตวแปร i และ j ทคอยชตาแหนงของขอมลทางซายและทางขวาทกาลงพจารณาวาควรอยในชดซายหรอชดขวา โดยคาของ i และ j ตอนเรมตนนนใหชเลยขอบซายและขวาของ A ไปหนงตาแหนง จากนนเขาสวงวนแบบ while เพอกวาดหาและสลบขอมล โดยสภาพของลกษณะขอมลใน A ภายในวงวนแบบ while ทบรรทด 5 แสดงในรปท 8–3 การกวาดหาประกอบดวยวงวนยอยแบบ while อกสองวง จดประสงคของสองวงวนภายในนกคอ j กวาดหาขอมลทไมนอยกวาตวหลกจากขวามาซาย (บรรทดท 6) ในขณะท iกวาดหาขอมลทไมมากกวาตวหลกจากซายมาขวา (บรรทดท 7) เมอพบขอมลดงกลาว (บรรทดท 8) กสลบขอมลทงสอง ซง i และ j ชอย (บรรทดท 8) แลวกลบเขาสการกวาดหาและสลบตอไปจนกวาตวแปร i และ j จะชตาแหนงเดยวกนหรอสวนกน

Ai jp r

� c � c

รปท 8–3 ลกษณะของขอมลใน A ระหวางการแบง

รปท 8–4 แสดงลกษณะการกวาดหาและสลบขอมล (ขอใหดจากซายไปขวาและบนลงลาง) ทางดานซายเปนสภาพทไดทบรรทด 6 ในขณะททางดานขวาเปนสภาพทบรรทด 8 กอนสลบ

i j

4 2 5 9 4 3 7 0 8 6

i j

0 2 5 9 4 3 7 4 8 6i j

0 2 5 9 4 3 7 4 8 6

i j

0 2 3 9 4 5 7 4 8 6i j

0 2 3 9 4 5 7 4 8 6

i j

0 2 3 4 9 5 7 4 8 6ij

0 2 3 4 9 5 7 4 8 6

i j

4 2 5 9 4 3 7 0 8 6

รปท 8–4 การกวาดหาและสลบขอมลในการแบงสวน

Page 163: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 147

ใหสงเกตจากตวอยางทแสดงในรปท 8–4 หลงจากทแบงเสรจแลว j จะชตาแหนงสดทายของขอมลชดซาย และขอมลทเทากบตวหลกอาจจะอยทชดซายหรอชดขวากได เนองจากผลการแบงสวนนนจะไดขอมลทกตวในชดซายมคาไมมากกวาขอมลในชดขวา (จะเทากไดแตกมเพยงกรณเดยวคอเทากบตวหลก)

คราวนเรากมาดรหสเทยมของ quick sort กนครบๆ เลยขางลางน เมอตองการเรยงลาดบขอมลทงแถวลาดบ กเรยกใช QuickSort( A, 1, n )

01: QuickSort( A, p, r )02: {03: if ( p < r ) {04: j = Partition( A, p, r )05: QuickSort( A, p, j )06: QuickSort( A, j+1, r )07: }08: }

กถงเวลาทตองมาวเคราะหเวลาการทางาน ตองขอวเคราะหเวลาการทางานของ partitionกอน พจารณาการเปลยนแปลงของคา (j–i) ภายในวงวนแบบ while (วงนอก) พบวามคาเรมทเทากบ n+1 (กาหนดใหขอมลในแถวลาดบทจะมาแบงม n ตว) (j–i) มคาลดลงทละหนง (ไมวาจะมาจาก ––j ทบรรทด 6 หรอ ++i ทบรรทด 7) จนในทสดหลดจากวงวนเมอ (j–i)� 0 ดงนนการ Partiton ใชเวลา �(n)

กาหนดให t(n) คอเวลาการทางานของ quick sort เพอเรยงลาดบขอมล n ตว จะไดวาt(n) = t(k) + t(n–k) + �(n)

กรณเลวสด เกดขนเมอ k = 1 (หรอ = n–1) (และจะตองเปนแบบนในทกๆ ระดบของการเรยกเวยนเกด) จะได tworst(n) = t(1) + tworst(n–1) + �(n) ใชวธคลความสมพนธเวยนเกดจะได tworst(n) = �(n2)

กรณดสด เกดขนเมอ k = n/2 (และจะตองเปนแบบนในทกๆ ระดบของการเรยกเวยนเกด) จะได tbest(n) = 2 tbest(n/2) + �(n) ใช master's method จะได tbest(n) = �(n log n)

กรณเฉลย จากสองกรณขางตนเหนไดวา เวลาการทางานนนขนกบผลของการแบงสวนวาจะได k มคาเทาไร สาหรบกรณเฉลยนน เราถอวาผลของการแบงสวนทมหลายๆ แบบนน แตละแบบมโอกาสเกดขนเทาๆ กน (และเปนเชนนในทกๆ ระดบของการเรยกเวยนเกด) เมอขอมลไมมตวซากน Partition จะแบงไดชดซายมจานวนขอมล k ตว กเมอ A[p] เปนขอมลอนดบท k+1 สาหรบ 1 � k � n–1

Page 164: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

148 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

สาหรบกรณท A[p] เปนขอมลทนอยสด จะได k=1 (ขอใหนกเรยนลองทาด) สรปวาเมอมขอมล n ตว Partition นนแบงขอมลได n แบบคอ k = 1, 1, 2, 3, 4, 5 ,…, n–1 ดงนนเวลาการทางานของ QuickSortโดยเฉลยจะเทากบ

)()(2

)())1()1((1)(1)(1

)()()()1()1(1)(

1

1

1

1

1

1

1

1

nktn

nnttn

kntn

ktn

nkntktnttn

nt

n

k

n

k

n

k

n

k

���

��������

����

��

������

��

บรรทดท 2 ไดมาจากการคณ 1/n เขาในวงเลบ ใหสงเกตกรณพเศษ 1n(t(1)+t(n–1)) ถา t(n) หลงวเคราะหแลวพบวาเลวเทากบกรณเลวสด คอเปน �(n2) กรณพเศษน 1n(t(1)+t(n–1)) = 1n�(n2) = �(n) ดงนนจงสามารถตดกรณพเศษนออกไปได เพราะยงไงกมพจน �(n) อยแลวทางขวาสด จงเปนทมาของบรรทดท 3 สวนผลบวกตวทสองนนความจรงกเหมอนกบตวแรก เพยงแตเขยนคนละแบบ จงรวมกนไดเปนบรรทดท 3

เราสามารถหาผลเฉลยของความสมพนธเวยนเกดน ไดดงน

cnktn

ntn

k�� �

1

1)(2)( เขยนใหมโดยการแทน �(n) ดวย cn

21

1)(2)( cnktnnt

n

k�� �

คณ n ตลอด

22

1)1()(2)()1( ���� �

ncktntnn

k

เปลยน n เปน n–1

nt(n) = (n+1)t(n–1) + c'n นาสองความสมพนธขางตนมาลบกนt(n)n+1 =

t(n–1)n +

c'(n+1)

= t(1)2 +c'�

���1

3 +14 +…+

1n+1

หาร n(n+1) ตลอด จากนนคลความสมพนธเวยนเกด ผลบวกทปรากฎในวงเลบคลายจานวนฮารมอนก Hn+1

t(n) < c'(n+1)Hn+1 = O(n log n) จากความร Hn = O(log n)

Page 165: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 149

กรณเฉลยของ quicksort ทไดวเคราะหมานบอกเราวา เมอนาขอมลขาเขาทเปนไปไดมาเฉลยๆ กนแลวโดยทโอกาสทแตละแบบจะเกดขนเหมอนกน quicksort จะทางานในเวลาคาดหวงเปน O(n log n) ปญหามนอยตรงทวาถาเรายงโชครายเจอขอมลขาเขาททาใหเกดกรณเลวสด quicksort กทางานไมตางอะไรกบ bubble sort หรอ insertion sort ทงนเพราะวาขนตอนการแบงสวนขอมลทไดนาเสนอมานน เลอกตวหลกทเปนรปแบบแนนอน (อยาลมวา Partitionเลอก A[p] ซงเปนตวซายสดในแถวลาดบเปนตวหลก) จงมบางลกษณะของขอมลขาเขาททาใหเกดกรณเลวสดได

วธหนงในการแกปญหานกคอหลกเลยงการเลอกตวหลกทเปนรปแบบตายตว โดยเลอกตวหลกแบบสมจากชดขอมลเพอทาการแบงสวน (เรยกขนตอนนวา RandomizedPartition) ทาใหไดอลกอรทมการเรยงลาดบ RandomizedQuickSort แสดงไดดวยรหสเทยมดงน

01: RandomizedQuickSort( A, p, r )02: {03: if ( p < r ) {04: j = RandomizedPartition( A, p, r )05: RandomizedQuickSort( A, p, j )06: RandomizedQuickSort( A, j+1, r )07: }08: }09:10: RandomizedPartition( A, p, r )11: {12: i = Random( p, r )13: Swap( A[i], A[p] )14: Partition( A, p, r )15: }

การแบงสวนเชงสมขางบนนอาศยฟงกชน Partition ทอธบายกอนหนาน เพยงแตสมเลอกตาแหนงของขอมลในชวงมาหนงตาแหนง (บรรทดท 12) แลวสลบกบตวซายสดในชด (บรรทดท 13) แลวคอยไปแบงสวนตามปกตดวย Partition

ดงนนผลของการแบงสวนกจะไดชดซายซงมขนาดแบบสมเชนกน หมายความวาไมวาลกษณะขอมลขาเขาจะเปนเชนใด RandomizedQuickSort ใชเวลาเปน O(n log n) ดวยความนาจะเปนทสงมาก แนนอนวาเราจะยงมโอกาสทจะโชคราย ททกๆ ครงทสมเลอกตวหลก แลวโชครายไปสมเอาตวทเกดกรณเลวสด ถามขอมล n ตว กมโอกาส 3/n ทจะพบตวหลกเลวสดตอนสมเลอกครงแรก (ทเปน 3 เพราะ Partition ทไดนาเสนอมานน ถาตวหลกคอตวนอยสด และนอยสดอนดบสองจะแบงไดชดซายมหนงตว ถาตวหลกคอตวมากสดจะไดชดขวาหนงตว สามกรณนเลวสดๆ) การแบงครงทสองกมโอกาส 3/(n–1) ครงทสามกมโอกาส 3/(n–2) เปน

Page 166: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

150 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

เชนนไปเรอยๆ จนครงสดทายมโอกาส 2/2 ดงนนกรณเลวสดของ RandomizedPartitionจะเกดขนดวยความนาจะเปน

3n �

3n–1 �

3n–2 �…�

33 �

22 <

3n–1

n!

ถา n = 40 จะไดวา 339/40! < 5�10–30 !!! และปกตเราคงไมใช quick sort สาหรบเรยงลาดบขอมล 40 ตวหรอก (มนนอยไปไมสมศกดศร !) ถาเปนกรณ n = 1000 แลวแทบไมตองกลวเลยวาจะโชครายเลย

ปญหาการเลอกปญหาการเลอก (selection) คอการเลอกขอมลตวทเลกทสดเปนอนดบท m ในแถวลาดบ A[1..n] วธงายๆ กคอนาแถวลาดบไปเรยงใหเรยบรอยจากนอยไปมาก จากนนกเลอกหยบตวนอยทสดอนดบท m ไดตามสะดวก (ซงกคอ A[m] นนเอง) เหนชดวาวธนใชเวลาตามเวลาการเรยงลาดบ ซงดสดกคอ O( n log n )

วธการเรยงลาดบนนรสกวา จะทางานมากไป เพราะเราแคตองการตวทเลกทสดอนดบ m แตสงทเราไดคอนอยทสดอนดบ 1 อนดบ 2 ,… .จนถงมากสด มาลองใชฮปกนดกวา โดยนาขอมลทงหมดมาสรางฮป (แบบทรองรบการหาคานอยไดรวดเรวทเรยกวา min–heap) จากนนกเพยงแต ExtractMin เปนจานวน m ครง ครงท m กยอมไดตวนอยสดอนดบท m ไมวาจะใชฮปใดทไดศกษามา การสรางฮปขนาด n กตองใช O(n) ExtractMin เปนจานวน m ครง ก O(m log n) ดงนนเสยเวลารวมเปน O(n + mlog n) เนองจาก m = O(n) ดงนนวธนในเชงเสนกากบกเหมอนกบการเรยงลาดบนนเอง

ในหวขอนเราจะนาเสนออกวธหนงในการหาขอมลตวนอยสดอนดบท m ในแถวลาดบ เรยกวา QuickSelect ซงมหลกการทางานคลายๆ กบ quick sort (ดรปท 8–5) QuickSelectแบงขอมลออกเปนสองชด ชดซายและชดขวาโดยใชอลกอรทม RandomizedPartition(เราคงไมใช Partition เฉยๆ เพราะกเหนมาแลวใน quick sort วาไมคอยด) จากนนตรวจสอบวาถาชดซายมขอมล k ตว ซงมคามากกวาหรอเทากบ m กแสดงวาขอมลทตองการตองอยทางชดซาย จงดาเนนการ QuickSelect ตวนอยสดอนดบท m ตอในชดซาย (รปท 8–5 (ก))

Page 167: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 151

ถาชดซายมจานวนขอมล k < m กยอมแสดงวาขอมลตวทตองการตองอยทชดขวา จงไป QuickSelect ตอเพอหาขอมลตวนอยสดอนดบท m–k ตอในชดขวา (รปท 8–5 (ข))

Partition

QuickSelect

m

m

k ตว

Partitionk ตว

QuickSelect

m-k

m

(ก) เมอ m � k (ข) เมอ m > kรปท 8–5 การทางานของ QuickSelect

อลกอรทม QuickSelect เขยนไดเปนรหสเทยมดงน01: QuickSelect( A, p, r, m )02: {03: if ( p == r ) return A[p]04: j = RandomizedPartition( A, p, r )05: k = j–p+106: if ( m � k )07: return QuickSelect( A, m, p, j )08: else09: return QuickSelect( A, m–k, j+1, r )10: }

กาหนดให t(n) คอเวลาการทางานของ QuickSelect กบขอมล n ตว จะไดวา

t(n) � t( max( k, n–k ) ) + �(n)

t( max( k, n–k) ) กคอเวลาการทางานของบรรทดท 6 ถง 9 ซงกคอการเรยกใช QuickSelectอกครง เนองจากเปนคาสง if กเลยเลอกตวมากกวา (ไดเปนขอบเขตบน)

กรณเลวสดเกดขนไดเมอทกๆ ครงทมการแบงสวน จะแบงไดชดใดชดหนงมขนาดเปน 1 ตลอด จะไดเวลาการทางานเปน t(n) = t(n–1) + �(n) = �(n2) ซงแยมากๆ (แยกวาวธเรยงลาดบ

Page 168: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

152 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

แลวหยบเสยอก) แตอยางไรกตามคงไมลมวาดวย RandomizedPartition โอกาสทจะเกดเหตการณเลวรายมากๆ แบบน มนอยมากๆๆๆๆ (ตามทไดแสดงใหดกอนหนาน)

สาหรบคาคาดหวงของเวลาการทางาน QuickSelect นนสามารถวเคราะหไดดงน

� �

� �

)()(2

)()(21)1(1

)()),(max())1,1(max(1)(

1

2/

1

2/

1

1

nktn

nktn

ntn

nknktntn

nt

n

nk

n

nk

n

k

���

�����

���

��

����

��

��

บรรทดแรกมาจากผลของการแบงสวนโดย RandomizedPartition มได n กรณ โดยมกรณทชดซายม 1 ตวเกดขนได 2 กรณ จงเขยนแยกเปนกรณพเศษดวย t(max(1,n–1)) บรรทดท 2 ไดโดยการคณ 1/n เขาในวงเลบ สงเกตไดวา max(k, n–k) = n–k เมอ 1 � k < �n/2� และ max(k, n–k) = k เมอ �n/2� � k � n–1 ดงนนผลบวกในบรรทดท 1 กคอ

t(n–1) + t(n–2) + … + t(n– �n/2�–1) + t(�n/2�) + t(�n/2�+1)+…+ t(n–2) + t(n–1)

ซงมคาไมเกน 2 (t(�n/2�) + t(�n/2�+1)+…+ t(n–2) + t(n–1) ) ไดเปนผลบวกในบรรทดท 2 จากนนเราตดพจน t(n–1)/n ทงได เพราะผลของพจนนกรณเลวสดกถกกลนดวย �(n) อยด

จะขอแกความสมพนธเวยนเกดนดวยวธเดาและพสจน โดยคาดวา t(n) � cn สาหรบคาคงตว cคาหนงททาใหกรณฐานหลกใชได จากนนพสจนโดยใชอปนยเชงคณตศาสตรไดดงน

� �

)(2)(1

2/nck

nnt

n

nk��� �

� �

)(212/

1

1

1nkk

nc

n

k

n

k��

���

���

� ��

= 2cn ��

��1

2 (n–1)n – 12 (�n/2�–1) �n/2� + �(n)

� 2cn ��

��1

2 (n–1)n – 12 ��

��n

2 –1 n2 + �(n)

= c��

��3n–2

4 + �(n)

ถาแทนพจน �(n) ดวย dn จะได c�� ��3n–2

4 + dn � cn กเมอ c � 4d

(1+2/n) แสดงวามคา c ททาให t(n) � cn = O(n)

Page 169: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 153

มธยฐานของมธยฐานของหาอยางไรกตามเราสามารถเปลยนวธการเลอกตวหลก (ทแตเดมใชการเลอกแบบสม) ทประกนไดวาจะไดเวลาการทางานของ QuickSelect แมในกรณเลวสดเปน O(n) วธการเลอกตวหลกทวานมชอวามธยฐานของมธยฐานของหา (median–of–median–of–five – mm5) มขนตอนดงน

1. แบงชดขอมล (อยางไรกได) ออกเปน �n/5� ชดๆ ละ 5 ตว (อาจมไดหนงชดทมไมถง 5 ตว)

2. หาขอมลทเปนมธยฐานของแตละชด จะได median ทงสนเปน �n/5� ตว

3. หามธยฐานของขอมลทไดในขนตอนทแลว เรยกขอมลตวนวา mm5 ซงนาไปใชเปนตวหลกในการแบงสวน

มาดตวอยาง สมมตชดขอมล (จานวน 23 ตว) ทเราจะหา mm5 คอ

1, 11, 2, 33, 4, 23, 12, 34, 16, 71, 30, 15, 18, 20, 39, 25, 29, 19, 9, 8, 4, 7, 99

เรมดวยการแบงขอมลทงหมดเปนชดยอยๆ ชดละ 5 ตว ดงน

(1, 11, 2, 33, 4), (23, 12, 34, 16, 71), (30, 15, 18, 20, 39), (25, 29, 19, 9, 8), (4, 7, 99)

หามธยฐานของแตละชดยอย ได (4, 23, 20, 19, 7) แลวหามธยฐานอกทได 19 เปน mm5

ถาจะขอเขยนขอมล 5 ตวในแตละชดวางเรยงเปนสดมภ (ดรปท 8–6) โดยเขยนเรยงจากคานอยลงมามาก ดงนนมธยฐานของแตละชดกตองอยแถวทสาม และจดเรยงแตละสดมภใหมธยฐานของแตละสดมภเรยงจากนอยไปมาก ดงนน mm5 กคอมธยฐานของขอมลในแถวทสาม (ซงคอ 19 นนเอง)

1 8 15 12

2 4 9 18 16

4 7 19 20 23

11 99 25 30 34

33 29 39 71

รปท 8–6 การแสดงความสมพนธของ mm5 กบขอมลทเหลอ

ดวยการเขยนแผนภาพในลกษณะน เราจะแสดงใหเหนจรงวา ถาใช mm5 เปนตวหลกในการแบงสวนจะประกนไดวามขอมลอยางนอย 30% ทมคานอยกวา mm5 และมอยางนอย 30% เชน

Page 170: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

154 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

กนทมคามากกวา mm5 นนหมายความวา สดสวนของจานวนขอมลของชดเลกกบจานวนขอมลของชดใหญทไดจาก Partition เปน 30:70 ในกรณเลวสด (ดสดกคอ 50:50)

ถามขอมล n ตวทแตกตางกนหมด เราเขยนแผนภาพในทานองเดยวกบรปท 8–6 ไดดงแสดงในรปท 8–7

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

. . .

� mm5

รปท 8–7 การแสดงกลมขอมลทไมมากกวา mm5 และกลมทไมนอยกวา mm5

จากรปสงเกตไดวากลมขอมลทระบายดวยสเทาทางดานซายบนมคานอยกวาหรอเทากบ mm5 กลมเทานมทงสน ��n/5� /2� สดมภ ขอตดสดมภตรงกลางทง (จะไดมนใจวาขอมลในกลมหลงการตดนนนอยกวา mm5 แนๆ ) และขอตดสดมภในกลมทอาจเปนสดมภทมไมครบ 5 ตวออกดวยอกหนงสดมภ (ถงแมจะไมมสดมภแบบน กจะขอตดออกสกอกหนงสดมภอยดแหละ) จะไดสบายใจวาทกสดมภทพจารณาในกลมนนมขอมล 3 ตวตอสดมภในกลม ดงนนจะเหลอขอมลในกลมทมนใจแนๆ วามคานอยกวา mm5 อยางนอยก 3(��n/5� /2� – 2) ตว ซงมคามากกวา 3n/10 – 6 (เพราะเปนการตดเพดานทง) ถงตรงนสรปไดวา มขอมลอยางนอยก 3n/10 – 6 (หรอประมาณ 30%) ทมคานอยกวา mm5

สาหรบจานวนขอมลทมคามากกวา mm5 กหาไดในทานองเดยวกน (กลมขวาลางในรปท 8–6) สรปไดเชนกนวา มขอมลอยางนอยก 3n/10 – 6 (หรอประมาณ 30%) ทมคามากกวา mm5

ถงตรงนเราทราบแลววาการใช mm5 ในการแบงสวนจะแบงขอมลเปนสองชด ชดหนงตองมขนาดอยางนอย 3n/10 – 6 และอกชดหนงกมขนาดอยางมาก 7n/10 + 6 กรณเลวสดจะเกดขนเมอ Partition ทกๆ ครง ไดชดใหญเปน 7n/10 + 6 และตองไป QuickSelect ตอทชดใหญในลกษณะนทกๆ ครงไป เวลาการทางานของ QuickSelect ทใช mm5 จะบรรยายดวยความสมพนธเวยนเกดดงน

t(n) � t( 7n/10 + 6 ) + (เวลาในการหา mm5) + (เวลาในการแบงสวน)

Page 171: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 155

เวลาในการแบงสวนกคอ �(n) สวนเวลาในการหา mm5 นนวเคราะหไดจาก 3 ขนตอนของการหา mm5 ดงน

1. การแบงขอมลออกเปน �n/5� ชดๆ ละ 5 ตว ใชเวลา �(n)

2. หาขอมลทเปนมธยฐานของแตละชด (หนงชดใชเวลา �(1) เพราะมขอมลอยางมาก 5 ตวตอชด) เนองจากมทงสน �n/5� ชด จงใชเวลา �(n)

3. หามธยฐานของขอมลทไดในขนตอนทแลว ถาเราใชวธเรยงลาดบแลวหยบตวตรงกลาง กคงไมดแนเพราะเสยเวลา �(�n/5� log �n/5�) = �(n log n) ตองหามธยฐานของขอมล �n/5� ตวนดวยวธอน ขาวดคอเรากใช QuickSelect เพอหาตวนอยสดอนดบตรงกลางนนเอง ซงตองใชเวลา t( �n/5� )

สรปวาเวลาการทางานของ QuickSelect คอ

t(n) � t( 7n/10 + 6 ) + (�(n) + �(n) + t( �n/5� ) )+ �(n)= t( 7n/10 + 6 ) + t( �n/5� ) + �(n)� t( 7n/10 + 6) + t( n/5 + 1) + �(n)� t( 7.6n/10 ) + t( 2.1n/10) + �(n) เมอ n � 100= �(n)

เมอ n � 100 จะไดวา 7n/10 + 6 � 7.1n/10 และ n/5 + 1 � 2.1n/10 จงเปนทมาของบรรทดท 4 สวนบรรทดท 5 นนมาจากผลทไดเคยแสดงในบทท 4 วา t(n) = t(an) + t(bn) + �(n) = �(n) เมอ (a+b) < 1 ในทน a = 0.76 b = 0.21 จงสรปไดวา QuickSelect เมอใช mm5 เปนตวหลกในการแบงสวนใชเวลาเปน �(n)

บางคนอาจบอกวาเปนเชงเสนนกเมอ n � 100 แลวกรณท n < 100 เลาจะใชเวลาเทาไร แนนอนวาถา n < 100 กแสดงวาขนาดของปญหาถกจากดไวดวยคาคงตว กยอมแสดงวาใชเวลาเปนคาคงตวดวย และบางคนอาจถามวา QuickSelect ใชไดดเมอ n � 100 หรอ ? ตรงนตองขอใหเขาใจดวยวาททามานเปนการวเคราะหเชงเสนกากบ ทได 100 นเปนความตงใจของผวเคราะหเพราะเหนวาสวยด เราจะพยายามทาใหเกณฑตากวานเชน 85 กได (ลองคดด) แตนนไมใชประเดน ประเดนมนอยทวาเมอขนาดของขอมลเกน n0 ไปแลวพฤตกรรมของเวลาการทางานของอลกอรทมแมในกรณเลวสดเปนเชงเสน

Page 172: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

156 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

การยกกาลงมอดลารถาเราอยากจะหาคาของ 2370 mod 371 เพอใชทฤษฎบทเลกของแฟรมาต (Fermat's Little Theorem) 1 ในการทดสอบวา 371 เปนจานวนประกอบหรอไม นนคอเมอ 2370 mod 371 1 จะสรปไดทนทวา 371 เปนจานวนประกอบ 2 แลวเราจะคานวณคาของ 2370 mod 371 อยางไร ?

วธดอๆ และทอๆ กคอลยคณแลว mod คณแลว mod ไปเรอยๆ โดยใชความรวา

ถา ak–1 c (mod m) แลว ak ac (mod m)

นนคอ ak mod m = a�(ak–1 mod m) mod m วธนมการคณแลว mod เปนจานวน �(k) ครง หรอในแงของ size(k) ซงคอขนาดของ k วดดวยจานวนบตทตองใชแทนคา k แลว วธนมการลยคณแลว mod เปนจานวน �(2size(k) ) ครงซงยอมรบกนไมได

แตถาเราใชความรวา

ถา ak � c (mod m) แลว a2k � c2 (mod m)

จะไดวา ak mod m = (ak/2 mod m)2 mod m เมอ k เปนเลขค และ ak mod m = a(a�k/2� mod m)2

mod m เมอ a เปนเลขค ซงใชแนวคดของการแบงแยกและเอาชนะ จากตวอยางอยากทราบคาของ 2370 mod 371 กทาดวยขนตอนดงน

2370 mod 371 = (2185 mod 371)2 mod 371 = (151)2 mod 371 = 170

2185 mod 371 = 2� (292 mod 371)2 mod 371 = 2� (46)2 mod 371 = 151

292 mod 371 = (246 mod 371)2 mod 371 = (135)2 mod 371 = 46

246 mod 371 = (223 mod 371)2 mod 371 = (298)2 mod 371 = 135

223 mod 371 = 2� (211 mod 371)2 mod 371 = 2� (193)2 mod 371 = 298

211 mod 371 = 2� (25 mod 371)2 mod 371 = 2� (32)2 mod 371 = 193

25 mod 371 = 32

เขยนเปนอลกอรทมไดดงน

1 ถา n เปนจานวนเฉพาะแลว an–1 � 1 (mod n) สาหรบทกๆ a > 0 ทเฉพาะสมพทธกบ n2 แตถาเทากบ 1 กอาจเปนจานวนประกอบไดเหมอนกน

Page 173: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 157

01: ModularExpo( a, k, m )02: {03: if ( k == 0 ) return 104: c = ModularExpo( a, k/2, m )05: x = (c*c) mod m06: if ( k is odd ) x = (a*x) mod m07: return x08: }

ให g(k) คอจานวนครงในการคณแลว mod เพอหาคาของ ak mod m จะไดวา g(k) � g(k/2) + 2 = O( log k ) = O( log 2size(k) ) = O( size(k) )

ใหสงเกตวาทวเคราะหมาทงหมดนนเปนจานวนครงของการคณแลว mod ถา a, k, และ m มขนาด O( b ) บต การคณและการ mod ใชเวลาเปน O(b2) (ใชวธการคณและ mod แบบงายๆ) ดงนนวธการหาคา ak mod m ดวยการลยคณแลว mod แบบแรก กบการแบงแยกและเอาชนะนนจะใชเวลาเปน O(2bb2) กบ O(b3) ตามลาดบ

การคณเมทรกซกาหนดให A และ B เปนเมทรกซขนาด n�n เราสามารถหาผลลพธของ C = AB ไดโดยการคานวณหา cij ไดดงน

��

n

kkjikij bac

1

คานวณ cij แตละตวใชเวลา �(n) ตองคานวณทงสน n2 ตว ดงนนการคณเมทรกซขนาด n�nสองตวดวยวธงายๆ นใชเวลา �(n3)

คราวนมาลองใชวธการแบงแยกและเอาชนะ โดยการแบงเมทรกซ A ขนาด n�n เปนเมทรกซขนาด (n/2)�(n/2) จานวน 4 เมทรกซ (A11 , A12 , A21 , และ A22) ดงรปท 8–8

A11 A12

A21 A22

A

รปท 8–8 การแบงเมทรกซขนาด n�n ออกเปน 4 เมทรกซยอย

Page 174: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

158 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

และแบงเมทรกซ B และ C ในทานองเดยวกน เราสามารถหาเมทรกซยอยของ C ไดจากเมทรกซยอยของ A และ B ไดดงน

C11 = A11B11 + A12B21

C12 = A11B12 + A12B22

C21 = A21B11 + A22B21

C22 = A21B12 + A22B22

เราไดเปลยนการคณเมทรกซขนาด n�n หนงครง ไปเปนการคณเมตกซขนาด (n/2)�(n/2) 8 ครง และการบวกเมทรกซ (n/2)�(n/2) อก 4 ครง กาหนดให t(n) คอเวลาในการคณเมทรกซขนาด n�n ของวธการแบงแยกและเอาชนะ จะไดวา

t(n) = 8t(n/2) + �(n2)

(พจน �(n2) มาจากภาระการบวกเมตกซขนาด (n/2)�(n/2) สครง) ใช master’s method จะไดวา t(n) = �(n3) ซงไมตางอะไรกบการคณแบบธรรมดาทนาเสนอในตอนแรก

แตในป ค.ศ. 1968 Strassen ไดพบวธการหาเมทรกซยอยของ C ไดจากเมทรกซยอยของ A และ B ในอกรปแบบหนง (ทดยงๆ) ดงน

M1 = ( A12 – A22 ) ( B21 + B22 )M2 = ( A11 + A22 ) ( B11 + B22 )M3 = ( A11 – A21 ) ( B11 + B12 )M4 = ( A11 + A12 ) B22M5 = A11 ( B12 – B22 )M6 = A22 ( B21 – B11 )M7 = ( A21 + A22 ) B11

C11 = M1 + M2 – M4 + M6C12 = M4 + M5C21 = M8 + M7C22 = M2 – M3 + M5 – M7

วธนเปลยนการคณเมทรกซขนาด n�n หนงครง ไปเปนการคณเมตกซขนาด (n/2)�(n/2) 7 ครง และการบวก (ลบ) เมตกซขนาด (n/2)�(n/2) อก 18 ครง บรรยายเวลาการทางานไดดงน

t(n) = 7t(n/2) + �(n2)

ดวย master’s method ได t(n) = )( 7log2n� = O( n2.81 ) ซงถอไดเปนครงแรกทสามารถคณเมทรกซขนาด n�n ซงใชเวลาเชงเสนกากบดกวา �(n3) ตอมากมการพฒนาวธคณเมทรกซอกหลากหลายรปแบบทใหผลเชงเสนกากบดขนเรอยมา (ป ค.ศ. 1978 หาได O( n2.796 ), 1979 หาได O( n2.521813 ), 1980 หาได O( n2.521801 ) และ 1986 หาได O( n2.376 ) ) อยางไรกตามวธดงกลาวใชไมคอยไดในทางปฏบต (เพราะความยงยากซบซอน และกบคาคงทมขนาดใหญทคณอย ซงสญ

Page 175: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 159

กรณเชงเสนกากบไมไดแสดงใหเหน รวมถงจานวนการบวกทไมนบกนอยางละเอยด) จงเปนเพยงเรองนาสนใจในทางทฤษฎเทานน

คจดใกลกนทสดกาหนดใหมจดจานวน n จดบนระนาบสองมต สงทอยากทราบกคอวาคจดใดอยใกลกนทสด ใหจด i อยทพกด (xi , yi) ดงนน dij ซงคอระยะระหวางจด i และ j หาไดดงน

dij = (xi – xj)2+(yi – yj)2

ถาใชวธลยเปรยบเทยบทกคจด กคงไดคาตอบไมยากนก มอย n จด กตองม n(n–1)/2 ค คานวณระยะของคจดหนงคใชเวลาคงตว ตองคานวณทกค กใชเวลาเปน �(n2)

ถาเราคดจะแกปญหานดวยกลวธการแบงแยกและเอาชนะ กอาจทาตามขนตอนตอไปน

1. แบงจดออกเปนสองฝง (ฝงซายและฝงซาย) ขนาดพอๆ กน2. ไปหาคจดใกลกนทสดในฝงซาย3. ไปหาคจดใกลกนทสดในฝงขวา4. ไปหาคจดใกลกนทสดทขามฝง (หมายความวาจดหนงอยฝงซายอกจดอยฝงขวา)5. เปรยบเทยบสามคทได จากขนตอนท 2 3 และ 4 กจะไดคจดใกลกนทสดในระนาบ

ขนตอนท 1 งายใชเวลา O(n) ขนตอนท 2 และ 3 กอาศยการแกปญหาดวยวธเดยวกนทนาเสนออยนแบบเวยนเกด ขนตอนท 5 งายทสดใชเวลาคงตว ทจะตองใชความคดกอยทขนตอนท 4

ถา t(n) คอเวลาในการหาคจดใกลกนทสดของจด n จดบนระนาบดวยวธขางตน จะไดวา

t(n) = 2t(n/2) + O(n) + (เวลาของขนตอนท 4)

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

� ถาเวลาของขนตอนท 4 เปน O(n2) เหนจะไมดแน เพราะได t(n) = 2t(n/2) + O(n2) ซง master’s method บอกเราวาจะได t(n) = O(n2) ซงกไมตางอะไรกบลยทกคจด

Page 176: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

160 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

� ถาเวลาของขนตอนท 4 เปน O(n log n) กดขน เพราะได t(n) = 2t(n/2) + O(n log n) = O(n log2 n) ซงกนบวาดมาก

� ถาเวลาของขนตอนท 4 เปน O(n) กถอไดวาดสดๆ เพราะได t(n) = 2t(n/2) + O(n) = O(n log n)

คราวนกมาลองคดวธหาคจดขามฝงกน เราคงใชวธลยทกคจดทขามฝงไมไดแนๆ เพราะมฝงละ n/2 จด กม (n/2)(n/2–1)/2 = �(n2) ค กไดเวลารวมเปน �(n2) ซงเราไมอยากได

dL

dR

d d

รปท 8–9 การพจารณาคจดฝงขามเฉพาะจดในแถบสเทา ( d = min(dL , dR) )

สมมตให dL คอระยะระหวางคจดทใกลสดทพบแลวฝงซาย dR คอระยะระหวางคจดทใกลสดทพบแลวฝงขวา และ d = min( dL , dR ) ถาคดใหละเอยดนด จะพบวามหลายจดมากมายทเราไมควรพจารณาเลยเชนจดทหางจากเสนแบงฝงเปนระยะเกน d เพราะจดเหลานยอมหางจากจดของอกฝงเกน d แน ดงนนจงควรพจารณาเฉพาะจดทอยในบรเวณทหางจากเสนแบงฝงไมเกน d (แสดงเปนตวอยางดวยแถบสเทาในรปท 8–9)

หากเรามสมมตฐานวาจดจานวน n จดนกระจายเปนอยางดบนระนาบ จะไดวามอย O( n ) จดทอยในแถบเทาน (ลองคดดซวาทาไม ?) ดงนนมอย O( n ( n –1)/2) = O(n) คทตองพจารณาในแถบเทาน สรปไดวาการหาคจดใกลสดใชเวลา t(n) = 2t(n/2) + O(n) = O(n log n) ในกรณทจดกระจายเปนอยางดบนระนาบ

อยางไรกตามถาจดไมกระจายดงทคด กมโอกาสทจดเปนจานวน O(n) จะเกาะเปนแนวตามแถบเทาทงหมดได ดงตวอยางในรปท 8–10 ซงถาเปนเชนนเวลาการทางานกจะเปน O(n2) อยด

Page 177: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 161

dL

dR

d d

รปท 8–10 ตวอยางกรณทม O(n) จดอยในแถบเทา

ถาสงเกตตอจะพบวาเรากไมจาเปนตองตรวจสอบทกๆ คจดในแถบเทากได จดใดทหางกนตามแนวดงเกน d กไมตองไปสนใจ ซงสามารถตรวจสอบสภาพเชนนได โดยการเรยงลาดบรายการของจดในแถบเทาตามแนวดงจากบนลงลาง จากนนวงไลตามจดตางๆ เรมจากดานบนลงมา ถงจดใด กวดระยะจากจดนนถงจดถดไป (ในรายการ) ทไมตาเกนกวา d สงทนาสนใจกคอวาเราสามารถประกนไดวาจานวนจดอนๆ ทตาไมเกนกวา d นนมอยางมากเพยง 7 จดเทานน (ซงจะพสจนในยอหนาถดไป) ดงนนตอหนงจดทวงจากบนลงลาง ใชเวลาคงตวในการวดระยะกบจดอน (เพราะมไมเกน 7 จด) ในแถบเทามไดไมเกน n จด ดงนนใชเวลาหาคจดใกลกนทสดขามฝงเปน O(n) สรปไดวาใชเวลาในการหาคจดใกลสดบนระนาบคอ t(n) = 2t(n/2) + O(n) = O(n log n)

แลวทาไมถงมนใจนกวา ตอหนงจดทวงจากบนลงลางในแถบเทานน มอยไมเกน 7 จดทอยตากวาแตตาไมเกน d จะขอพจารณาจดๆ หนงในแถบเทา สมมตวาคอจด p1 ทอยฝงซาย (ดรปท 8–11 (ก)) เมอเรากาลงพจารณาจด p1 เรากสนใจเฉพาะจดทอยภายในพนทของแถบเทาจากจด p1 ลงไปเปนระยะ d (แสดงดวยสเหลยมทมพนท 2d�d ในรป โดย p1 อยทขอบบนของสเหลยม) ใหสงเกตวาหากเราวาดวงกลมวงหนงซงมจดศนยกลางอยท p1 และมรศม d จะตองไมพบจดใดในฝงซายทอยภายในวงกลม (อยบนเสนรอบวงได) ทงนเพราะ d คอระยะใกลสดของคจดทพบแลวทอยทางฝงซายหรอฝงขวาทงค จะเหนไดวาวงกลมนกนพนทตองหามไมใหมจดอนในสเหลยมครงซายไปมาก ถาจะใหกนพนทนอยสด กเหนจะตองให p1 อยทมมบนซายของสเหลยม (รปท 8–11 (ข)) เราสามารถวางจดอนๆ ในสเหลยมครงซายไดอกอยางมาก 3 จดทมระยะหางไมตากวา d ได ดงรป แสดงวามไดเพยงอยางมาก 4 จดในสเหลยม d�d ครงซาย

Page 178: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

162 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

dd

dp1

d

dd

d

p1 p2

p3p4

(ก) (ข)รปท 8–11 การพสจนวามเพยง 8 จดเทานนในพนท 2d � d ของแถบเทา

และในทานองเดยวกน กมไดอยางมาก 4 จดในสเหลยม d�d ครงขวา สรปไดวามไดอยางมาก 8 จดภายในสเหลยม 2d�d (มโอกาสทมจด p2 และ p3 ในรปท 8–11 (ข) จะทบกบอกสองจดในตาแหนงเดยวกนทฝงขวา เพราะตอนแบงจดตางๆ ออกเปนสองฝงนน p2 และ p3 ถกแบงไปอยฝงซาย และอกสองจดถกแบงไปอยฝงขวา) ดงนน p1 ซงเปน 1 ใน 8 ทเปนไปได กตองถกพจารณาเพอวดระยะกบอกอยางมาก 7 จดทเหลอ

ทเขยนๆ มานกเพลนไปหนอย และบางคนอาจจบผดวา แตอยาลมวากอนทวงไลจากบนลงลางไดนน กตองเรยงลาดบขอมลกอน ดงนนกตองเสยเวลาเปน O(n log n) ในการเรยงลาดบ ซงมากกวาการพจารณาคจดใกลสดขามฝงเสยอก ดงนนกยอมไดเวลาการทางานทงหมดเปน t(n) = 2t(n/2) + O(n log n) = O( n log2 n)

ทวเคราะหมากถกตอง ถาเราเลนเรยงลาดบทกครงในทกๆ ระดบของการเรยกเวยนเกด แตในความเปนจรงแลว เราเรยงลาดบไวกอนลวงหนาตงแตตอนแรกเลยกได แลวในชวงการตรวจสอบวาจดใดอยในแถบเทา กเพยงแตไลดงจากรายการทเรยงลาดบตามแนวดงเทานน ซงเสยเวลาเพยง O(n) เวลาการทางานทงหมดจงประกอบดวยการเรยงลาดบจดตางๆ ตามแนวนอน และตามแนวดง (การเรยงลาดบทงสองนทาครงเดยวตอนเรมตน ใชเวลา O(n log n) ) และเรมการแบงแยกและเอาชนะเพอหาคจดใกลกนทสด (ใชเวลา t(n) = 2t(n/2) + O(n) = O(n log n) ) ดงนนรวมเวลาทงสนเปน O(n log n)

Page 179: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 163

ดารายอดนยมในงานสงคมแหงหนง จะขอเรยกคนทใครๆ ในงานกรจก แตวาเจาตวไมรจกคนอนเลยวาเปน "ดารายอดนยม" (ขอเรยกสนๆ วาดารากแลวกน) ของงานนน ปญหามอยวาถาในงานนมคน nคน แลวเราอยากรวาใครคอดาราของงานน จะตองเทยวเดนถามคนในงานวา "รจกคนนนไหม" อยางไรจงจะไดคาตอบเรวๆ วาใครคอดารา (หรอวาไมมดาราในงาน)

ลองวธลยถามเอาเลย ม n คน กถามทกๆ เลยวารจกคนท 1 ไหม ถาทกคนตอบวารจก กแสดงวาคนท 1 เปนดารา ถาไมใช กลยถามทกคนอกวารจกคนท 2 ไหม ถาทกคนรจก กแสดงวาคนนแหละ ถาไมใช กตงคาถามในทานองสาหรบคนถดไป เชนนไปเรอยๆ จนกวาจะพบดารา หรอจนกวาจะถามจนหมดทกกรณ แลวสรปวางานนไมดารา เหนไดวาเปนวธทเหนอยนาด ม n คน กตองถาม n(n–1) ครง

ทาอยางไรจงลดจานวนคาถามลงได มาลองใชอลกอรทมแบงแยกและเอาชนะด ดงน

เราแบงคนในงานออกเปนสองกลมขนาดพอๆ กน เรยกวากลม A กบกลม B สมมตให sA และ sB คอดาราของกลม A และ B ตามลาดบ (ถาม) เราจะสรปไดวา sA เปนดาราของงาน กเมอ sA

ไมรจกใครใน B แตทกคนใน B รจก sA ซงอาศยการถามเปนจานวน O(n) กรผล ในกรณทไมม sA หรอมแตสรปวาไมใชดาราของงาน กไปหา sB ในทานองเดยวกนถาม sB แลวเราจะสรปไดวา sB เปนดาราของงาน กเมอ sB ไมรจกใครใน A แตทกคนใน A รจก sB เนองจากมการหาดาราในกลมเลกอยางมาก 2 ครง และการถามหลงไดดาราของกลมยอยใชเวลา O(n) ดงนน อลกอรทมนใชเวลาเปน

t(n) � 2t(n/2) + O(n)

จาก master's method ได t(n) = O(n log n) ดกวาแบบลย

เราพอใจเพยงแคนไหม ความจรงแลวเรวสดๆ กตองถามเปน �(n) เพราะวาดาราคอคนททกๆ คนรจก กแสดงวาอยางนอยกตองถามทกคน เราจะมาพยายามหาวธทถามแค �(n) จากแนวคดการแบงแยกและเอาชนะททามาขางตน เราแบงเปนสองกลม หลงจากรดาราของกลม A กตองมาตรวจสอบกบกลม B เนองจากมคนจานวน �(n) ในกลม B กตองใชเวลา �(n) ในการตรวจสอบ และเรากอาจตองทาในทานองเดยวกนอกครงกบดาราของกลม B ถาเราลดขนาดของกลมB เหลอแคหนงคน กลม A กม n–1 คน ดงนนพอได sA การตรวจสอบกบ B กใชเวลาคงตว

Page 180: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

164 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

และไมตองไปหา sB ใหเสยเวลาเพราะ B มแคคนเดยว แตทจะแยกคอตอนตรวจสอบ sB กบ A กตองใชเวลา �(n) เชนกนได เวลารวมทงหมดเปน t(n) = t(n–1) + O(n) = O(n2) แยเทาแบบลย

แตถามาคดสกนด เราสามารถแบงกลมแบบ 1 กบ n–1 ในลกษณะทกลาวมา โดยประกนวาคนทอยใน B ซงมเพยงคนเดยวคนนตองไมใชดาราแนๆ ได โดยอาศยการเลอกคนสองคน (ใครกได) แลวถาม สมมตวาเปน i กบ j ถาถามแลวพบวา i รจก j กจบ i ไปไวเปนคนเดยวใน B เลย เพราะ i ไปรจกคนอนจงไมใชดาราแนๆ แตถาถามแลว i ไมรจก j กสรปไดวามบางคนไมรจก j ดงนน j ไมใชดารา กจบ j ไปไวใน B คราวนเรากมนใจวาไมตองตรวจสอบ sB กบกลม A อก ใชเวลาทงสน t(n) = t(n–1) + �(1) = �(n) สรปไดเปนอลกอรทมดงน (ใหแถวลาดบ P[1..n] เกบคนทมางาน)

01: Celebrity( P[b..t] )02: {03: if ( b == t ) return P[b]04: if ( P[b] knows P[j] ) {05: sa = Celebrity( P[b+1..t] )06: c = P[b]07: } else {08: sa = Celebrity( P[b..t–1] )09: c = P[t]10: }11: if ( sa > 0 AND c knows sa

AND sa doesn't know c )12: return sa13: else14: return 015: }

ตวอยางนชใหเหนวาบางทการแบงแยกและเอาชนะกไมจาเปนตองแบงเปนครงๆ เสมอไป หากเราสามารถแบงครง แลวยงลดจานวนการแกปญหายอยๆ ลงไดกเปนเรองดมาก (เชน binary search ทแบงครง แลวยงขจดออกครง) การแบงปญหาเพอใหไดปญหายอยทมสดสวนทแนนอน (เชน 50%–50%, 30%–70% เปนตน) นนเปนเรองด (เพราะจะทาใหมโอกาสไดพจน log n แทนทจะเปน n ในคาตอบของเวลาการทางาน) แตถาแบงเปนสดสวนไมไดคอแบงแลวเปนกลมหนงทมจานวนคงตว (อยางเชนททาขางบนน) เวลาการทางานจะเปนภาระการแบงและรวมคาตอบคณดวย n ซงเราตองระวงมาก โดยตองพยายามลดใหภาระการแบงและการรวมคาตอบนนตาทสดเทาทจะทาได (อลกอรทมขางบนนตาเปนคาคงตว) จงจะไดผลด

Page 181: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 165

แบบฝกหด1. จงแสดงใหเหนวาเราสามารถหามธยฐานของขอมล 5 ตวดวยการเปรยบเทยบขอมลเพยง 6 ครง

2. Randomized_Quicksort จะใชเวลาเทาใด ถาขอมลทกตวในแถวลาดบมคาเทากนหมด

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

01: StoogeSort( A[i..j] )02: {03: if A[i] > A[j] then exchange A[i]�A[j]04: if i+1 � j then return05: k �(j–i+1)/3�06: StoogeSort( A[i..j–k] ) /* first two–third */07: StoogeSort( A[i+k..j] ) /* last two–third */08: StoogeSort( A[i..j–k] ) /* first two–third again */09: }

4. จงวเคราะหเวลาการทางานทงกรณเลวสด และกรณเฉลยของ merge sort ถาเราเลอกจดแบงแถวลาดบแบบสม (จากทเคยเลอกแบบแบงตรงกลาง)

5. จงวเคราะหเวลาการทางานของ QuickSelect เมอเราเลอกตวหลกในการแบงสวนดงน

ก) median–of–median–threeข) median–of–median–sevenค) median–of–median–nine

6. กาหนดให X[1..n] และ Y[1..n] เปนแถวลาดบซงเกบจานวนทเรยงลาดบจากนอยไปมาก

ก) จงออกแบบอลกอรทมทใชเวลาเปน O( log n ) เพอหามธยฐานของขอมลทง 2n ตวจากแถวลาดบ X และ Y

ข) จงออกแบบอลกอรทมทใชเวลาเปน O( log(max(m, n)) ) เพอหาขอมลตวทนอยทสดอนดบท k ของขอมลทง 2n ตวจากแถวลาดบ X และ Y

7. กาหนดให A คอแถวลาดบทมขอมลแตกตางกนทงหมด n ตว จงออกแบบอลกอรทมซงใชเวลา O(n) ในการหาขอมลใน A จานวน k ตว k � n ทมคาใกลเคยงกบมธยฐานของขอมลเหลาน

Page 182: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

166 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

8. ถากาหนดใหระยะขจดระหวางจด i และ j ระนาบคอ dij = |xi – xj| + |yi – yj| เรยกระยะขจดแบบนวาแบบ L1 หรอบางทเรยกวาแบบแมนฮตตน (Manhattan distance) จะตองปรบปรงอลกอรทมการหาคจดใกลกนทสด หรอไม อยางไร

9. ถากาหนดใหระยะขจดระหวางจด i และ j ระนาบคอ dij = max( |xi – xj|, |yi – yj| ) เรยกระยะขจดแบบนวาแบบ L

� จะตองปรบปรงอลกอรทมการหาคจดใกลกนทสด หรอไม

อยางไร

10. กาหนดให x1, x2, ..., xm เปนลาดบของจานวนเตม (มคาตางกนหมด) ซงมขอมลทตาแหนง kมคานอยทสด ( k เปนคาทเราไมร) โดยท xk < xk+1 < ... < xm < x1 < ... < xk–1 จงออกแบบอลกอรทมทหาคา k ไดในเวลา o( m )

11. จงออกแบบอลกอรทมแบบการแบงแยกและเอาชนะเพอหา majority ของขอมลในแถวลาดบ โดยใชเวลา O(n)

12. กาหนดให A[1..n] เปนอาเรยของตวเลขตางๆกน n ตว เราเรยกคลาดบ (i, j) วาเปนคกลบลาดบ (inversion) ของ A ถา i < j และ A[i] > A[j] จงออกแบบอลกอรทมทใชเวลาการทางานเปน O(n log n) เพอหาจานวคกลบลาดบทงหมดของ A ( ตวอยางเชน < 2, 3, 5, 4, 1> มทงหมด 3 inversions )

13. Multiset คอเซตทมตวซากนได ฐานนยม (mode) ของ multiset คอสมาชกใน multiset ทปรากฏเปนจานวนมากสด (ขอเนนตรงนวาฐานนยมไมใช majority แต majority เปน ฐานนยม) กาหนดให n คอขนาดของ multiset

ก) จงออกแบบอลกอรทมทหาฐานนยมไดในเวลา O(n log n) (ในกรณท multiset ทไดรบมฐานนยมมากกวาหนงตวกหามาตวเดยวพอ)

ข) ถาเรารมากอนวาฐานนยมของ multiset ทจะหานมปรากฎใน multiset เกน 20% ของขนาดของ multiset แนๆ จงออกแบบอลกอรทมทหาคาของฐานนยมในเงอนไขขางตนภายในเวลา O(n)

14. กาหนดให A[1..n] เปนแถวลาดบทเกบขอมลเปนจานวนเตมทเรยงลาดบจากนอยไปมากแลวถกหมนไปทางขวา k ตาแหนง ตวอยางเชน (35, 42, 5, 15, 27, 29) เปนแถวลาดบของ

Page 183: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 25/10/00 23:20 : [email protected] บทท 8 การแบงแยกและเอาชนะ 167

ขอมลทเรยงลาดบทถกหมนไป 2 ตาแหนง ในขณะท (27, 29, 35, 42, 5, 15) เปนแถวลาดบทเรยงลาดบทถกหมนไป 4 ตาแหนงก) ถาเราทราบคา k จงเขยนอลกอรทมทหาคาทมากทสดใน A ในเวลา O(1)ข) ถาเราไมทราบคา k จงเขยนอลกอรทมทหาคาทมากทสดใน A ในเวลา O(lg n)

15. กาหนดให S คอรายการของจานวนจรงจานวน n ตว และ k เปนตวเลขจานวนจรง จงออกแบบอลกอรทมทใชเวลา O(n log n) เพอหาวามตวเลข 2 ตวใดใน A ทมผลรวมเทากบ k

16. กาหนดให S1 และ S2 เปนรายการของจานวนเตม (แตละรายการมจานวนเตม n ตว) และจานวนเตมอกหนงตวคอ k จงออกแบบอลกอรทมทใชเวลา O(n log n) ในการหาจานวนเตมสองตว ตวหนงเลอกมาจาก S1 อกตวเลอกมาจาก S2 ทผลรวมมคาเทากบ k

17. กาหนดให A[1..n] คอแถวลาดบซงเกบจานวนเตม (แตกตางกนหมด) ทเรยงลาดบแลวจากนอยไปมาก จงออกแบบอลกอรทมซงหาตาแหนงของชองใน A ท A[i] = i (ถาม) ในเวลา O(log n)

18. กาหนดให A[1..n] คอแถวลาดบของขอมลทแตกตางกน n ตว และใหลาดบยอยเพมขน(increasing subsequence) ของ A คอรายการของขอมล A[i1], A[i1], ..., A[ik] โดยท 1� i1< i2

<…< ik � n และ A[i1] � A[i1] � ... � A[ik] จงออกแบบอลกอรทมซงหาความยาวของลาดบยอยเพมขนยาวทสดของ A ซงใชเวลาเปน O(n2) เชน ลาดบยอยเพมขนทยาวสดของ ( 2, 5, 1, 0, 7, 3, 4, 6, 99, 10, 8 ) คอ (2, 3, 4, 6, 99) ซงยาว 5 (มลาดบยอยทเพมขนอนอกทยาว 5)

19. กาหนดให A[1..n] คอแถวลาดบของจานวนจรงจานวน n ตว (เปนเลขลบกได) นยามใหลาดบยอยทตดกน (consecutive subsequence) ของ A คอรายการของขอมล A[i], A[i+1], ..., A[i+k] จงออกแบบอลกอรทมแบบแบงแยกและเอาชนะเพอหาคาของ ลาดบยอยทตดกนทมผลรวมมากสด ในเวลา O(n log n) ตวอยางเชนลาดบยอยทตดกนทมผลรวมมากสดของ (31, –41, 59, 26, –53, 58, 97, –93, –23, 84) คอ (59, 26, –53, 58, 97) ซงมผลรวมเทากบ 187

20. กาหนดให X คอสตรง และ Xk คอสตรงซงไดจากการแทนตวอกษรใน X แตละตว ดวยตวอกษรตวนนเปนจานวน k ครง เรยก Xk วาเปน “สตรงตดอาง” ของ X ตวอยางเชน “CCHHAAII” เปนสตรงตดอางของ “CHAI” ดวย k=2 กาหนดให X และ Y เปนสตรงความยาว m และ n ตามลาดบ โดยท m � n เราเรยก Xk วาเปนลาดบยอยของ Y กเมอม 1�

Page 184: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

168 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 25/10/00 23:20 : [email protected]

i1< i2<…< im � n ททาใหสาหรบ j = 1, 2, ..., m จะไดวา Xk[j] = Y[ij] จงออกแบบอลกอรทมซงใชเวลา O(n log (n/m)) เพอหาคา k ทมากสดททาให Xk เปนลาดบยอยของ Y

Page 185: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] 169

บทท 9

กาหนดการพลวต (dynamic programming) เปนกลวธการแกไขปญหาทมลกษณะคลายกบการแบงแยกและเอาชนะ จะตางกนกเรองของกรรมวธในการไดมาซงคาตอบ สาหรบปญหาในบางลกษณะ อลกอรทมแบบแบงแยกและเอาชนะจะใชเวลาเปนเลขชกาลง (exponential) แตพอใชกาหนดพลวตกลบทาใหใชเวลาเหลอแคแบบพหนาม (polynomial) อยางไรกตามกาหนดพลวตเปนวธทเขาใจยากหนอย (นกเรยนหลายคนบนอยางนน) แตพอเขยนเปนโปรแกรมแลวโดยทวไปใชวงวนแบบงาย ไมตองเขยนแบบเวยนเกดอะไรเลย

โดยทวไปเราใชกาหนดการพลวตเพอแกไขปญหาทเรยกกนวา ปญหาการหาคาเหมาะทสด(optimization problems) จงจะขอเรมดวยการอธบายถงลกษณะของปญหาประเภทน จากนนจะนาเสนอลกษณะเฉพาะของปญหาการหาคาเหมาะทสด ทจะใชกาหนดการพลวตหาผลเฉลยเหมาะทสดได และไดอยางมประสทธภาพ จากนนจงคอยนาเสนอตวอยางของปญหาและวธหาคาตอบดวยกาหนดการพลวต

ปญหาการหาคาเหมาะทสดปญหาการหาคาเหมาะทสดทนกเรยนคงคนเคยกนมาแลว มอาทเชน การหาตนไมแบบทอดขามเลกสด (minimum sapnning tree) การหาวถสนสดในกราฟ (shortest path) ปญหาการเดนทางของพนกงานขาย (traveling salesperson problem) เปนตน ผลลพธทตองการจากปญหาเหลานมกมตวประเมนคณภาพวาตองดสด นอยสด หรอมากสดเปนตน ซงเราเรยกรวมวาเปนคาทเหมาะทสด (optimal) โดยคณภาพของผลเฉลยนนวดจากคาของฟงกชนจดประสงค

กาหนดการพลวต

Page 186: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

170 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

(objective function) นอกจากนสงทกาหนดไวในปญหาการหาคาเหมาะทสดกคอเซตของเงอนไขบงคบ (constraints) ตางๆ เราเรยกผลเฉลยใดทอยภายใตเงอนไขบงคบทกาหนดวาเปนผลเฉลยทเปนไปได (feasible solution) และเรยกผลเฉลยทเปนไปไดตวทไดคาของฟงกชนจดประสงคเหมาะทสดวาผลเฉลยเหมาะทสด (optimal solution)

จะขอนาเสนอตวอยางของปญหาการหาคาเหมาะทสดอกสกจานวนหนง (แตยงไมบอกวธหาผลเฉลยเหมาะทสด)

ตวอยางท 9-1 0/1 Knapsack : สมมตวาคณเปนผโชคดของหางสรรพสนคาแหงหนง ซงทางหางฯ เปดโอกาสในคณหยบสนคาชนใดๆ กชนกไดใสรถเขนทจของไดไมเกน W กโล (ถาเกนกจะไมไดอะไรเลย) คณจะเลอกหยบสนคาอะไรด เพอใหไดมลคารวมสงสด (ไมมขอจากดเรองเวลา สนคาทกชนในหางฯ ตดราคาไวเรยบรอย แถมยงมตาชงใหคณอกดวย)

สนคาในหางฯ นม n ชน แตละชนมหมายเลขกากบ (1, 2, …, n) ให wi คอนาหนกของสนคาชนท i และ vi คอราคาของสนคนชนท i ผลเฉลยของปญหานสามารถเขยนในรปของ n สงอนดบ (n–tuple) (x1, x2, …, xn) โดยท xi = 0 หมายความวาไมเลอกสนคาชนท i แตถา xi = 1 แสดงวาเลอก ดงนนผลเฉลยทเปนไปไดคอผลเฉลยท

Wwxn

iii ��

�1 และ xi = 0 หรอ 1

เปนเงอนไขบงคบ สวนผลเฉลยเหมาะทสดคอผลเฉลยทเปนไปได ซงใหคาของฟงกชนจดประสงค

��

n

iii xv

1ทมากสด

ตวอยางท 9-2 Linear Partition : สมชายมทดน n แปลงตดกนไปเปนแนวยาว (ฝนไปหรอเปลา) เขาคดไดวาถงเวลาแลวทตองแบงทดนเหลานใหลก k คน (k � n) มขอแมวา ทดนแตละแปลงหามแบงโฉนด และถาแบงใหลกคนใดมากกวาหนงแปลง ตองเปนแปลงทตดกนดวย และเพอไมใหหาวาเปนคนลาเอยง (ยงจรงๆ) จะตองแบงใหลกคนทไดทดนรวมเปนพนทมากสดนน มขนาดนอยสดเทาทจะนอยได (แตยงมากสดอย) (ปวดหว ! กลวเขาทะเลาะกน) จะแบงอยางไรด

Page 187: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 171

เชนม 9 แปลงตดกนซงมขนาดดงน (10, 20, 30, 40, 50, 60, 70, 80, 90) อยากแบงให 3 คน กแบงไดเปน (10, 20, 30, 40, 50), (60, 70), และ (80, 90) ซงเหมาะทสด เพราะคนทสามไดพนทรวมมากสดเปน 170 ซงนอยสดเทาทจะนอยได (อยาลมวาเราแบง (20, 30, 40, 50), (60, 80, 10), (70, 90) ไมได เพราะคนทสองไดทดนทไมตดกน)

ถาเขยนใหเปนทางการหนอย กาหนดให S คอลาดบของตวเลข (s1, s2, …, sn) และ จานวนเตม k � n si กคอขนาดของทดนแปลงท i และ k คอจานวนลก ผลเฉลยของการแบงสามารถเขยนไดในรปแบบ (x1, x2, …, xk , xk+1) เพอบอกวาลกคนท i ไดทดนแปลงท xi ถง xi+1 – 1 (โดยท xk+1 = n+1) ดงนนผลเฉลยทเปนไปไดตองเปนไปตามเงอนไขบงคบ

0 = x1 < x2 < …< xk � n

สวนผลเฉลยเหมาะทสดทตองการคอผลเฉลยทเปนไปไดซงมคาของฟงกชนจดประสงค

��

��

��

��

��

���

1

1max

i

i

x

xjj

kis ทนอยสด

ตวอยางท 9-3 Printing Neatly : ในสมยโบราณนานมาแลวทยงตองใชเครองพมพดดในการจดพมพเอกสารนน ตวอกษรแตละตวทพมพมความกวางเทากนหมด (ไมวาจะเปน เ ณ W ) ขณะทผพมพ พมพไปเรอยๆ ใกลไปทางขวาของกระดาษ ผพมพทชานาญจะรไดวาเมอไรควรกดแปนขนบรรทดใหม โดยทเมอพมพเสรจแลวจะไดเนอทวางทางขวาของกระดาษทดแลวสบายตา (สมยน word processor คดและทาใหหมด) กาหนดใหยอหนาหนงของเอกสารภาษาองกฤษทตองพมพนนประกอบดวยคาเปนจานวน n คา คาท i ม wi ตวอกษร เราอยากพมพยอหนานบนกระดาษทกาหนดใหพมพไดมากสด M ตวอกษรตอหนงบรรทด จะตองพมพอยางไรถงดสวย

ถาบรรทดหนงประกอบดวยคาท i ถง j บรรทดนนจะกนทไป j–i +��

jik kw (พจน j–i กคอ

ชองวางทตองคนระหวางคาในภาษาองกฤษ) ทวางทเหลอปลายบรรทดกคอM – ( j–i +�

jik kw )

กาหนดใหผลเฉลยอยในรปของ (x0, x1, x2, …, xm) โดยท xi แทนหมายเลขคาสดทายของบรรทดท i (กาหนดให x0 = 0) ดงนนบรรทดท i กยอมมทวางปลายบรรทดเปน

Page 188: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

172 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

���

���

����� �

��

i

i

x

xkkiii wxxMs

11

1

)1(

ผลเฉลยทเปนไปไดตองเปนไปตามเงอนไขบงคบ

1 � x1 < x2 < … < xm � n และ si � 0 สาหรบ i = 1, 2, …, m (m คอจานวนบรรทดทตองใช)

แลวเราจะนยามความสวยของการพมพไดอยางไร แนนอนวาความสวยทวานคงตองขนกบ si

(ยกเวนบรรทดสดทายของยอหนา (sm) เพราะถงแมมทวางเยอะกแลดไมนาเกลยด) เหนไดเลยวาถา si = 0 หมดสาหรบ i = 1, 2, …, m–1 หมายความวาไมมทวางปลายบรรทดเลย อนนสวยสดแนๆ แลวกรณอนละ กตองลองดวาเราจะแปลงความสวยมาเปนฟงกชนจดประสงคกนอยางไรด จงจะสะทอนวาถามคานอยแสดงวาสวยมาก (0 แสดงวาสวยสด) มคามากกสวยนอย ถาใหเปน � �

11

mi is กอาจจะไมคอยดเพราะถาบรรทดหนงวาง 10 อกบรรทดวาง 0 จะสวย

เหมอนบรรทดหนงวาง 5 อกบรรทดกวาง 5 (ซงแบบหลงนาจะสวยกวา) กแสดงวาเราไมชอบทวางเยอะ จะขอทาโทษบรรทดทมทวาง 10 ใหมากกวา 5 เทาของบรรทดทมทวาง 2 อนนทาไดเชนใหทาโทษเปนยกกาลงสองของทวาง ไดฟงกชนจดประสงคเปน � �

11

2mi is หรอแม

กระทงใหเปน � �

11

3mi is กจะสะใจมากขน โอเค ขอเปนยกกาลงสามกแลวกน (ไมมเหนผลใด

นอกจากความสะใจ แตถาจะทดลองเปรยบเทยบดกดเหมอนกน) ดงนนผลเฉลยเหมาะทสดกคอผลเฉลยทเปนไปไดทมคาฟงกชนจดประสงค

��

m

iis

1

3 ทนอยสด

ลกษณะเฉพาะของปญหาปญหาการหาคาเหมาะทสดทจะใชกาหนดการพลวตหาผลเฉลยเหมาะทสดได และไดอยางมประสทธภาพนน จะตองมลกษณะเฉพาะของปญหาดงตอไปน

� ผลเฉลยเหมาะทสดของปญหาใหญ ประกอบดวยผลเฉลยเหมาะทสดของปญหายอยๆ คณสมบตนเรยกวาโครงสรางยอยเหมาะทสด (optimal substructure) คณสมบตขอนประกนวาผลเฉลยทหาไดดวยกาหนดการพลวตจะเปนผลเฉลยเหมาะทสด

Page 189: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 173

� ปญหายอยๆ ทตองหาผลเฉลยนนมการซอนเหลอมกน (overlapping subproblems) และมจานวนปญหายอยๆ ทงหมดไมมาก คณสมบตขอนประกนวากาหนดพลวตจะหาผลเฉลยไดอยางมประสทธภาพ

โครงสรางยอยเหมาะทสดโครงสรางยอยเหมาะทสดเปนลกษณะเฉพาะของปญหาการหาคาเหมาะทสด ซงผลเฉลยเหมาะทสดประกอบดวยผลเฉลยเหมาะทสดของปญหายอยๆ ดวยลกษณะเฉพาะน ประกนวาเราสามารถใชกาหนดการพลวตเพอหาผลเฉลยเหมาะทสดได เราสามารถแสดงวาปญหาหนงมโครงสรางยอยเหมาะทสดไดโดยพสจนวา ผลเฉลยเหมาะทสดของปญหานประกอบดวยผลเฉลยเหมาะทสดของปญหายอยๆ ของปญหานน

หรอจะแสดงการมโครงสรางยอมเหมาะทสดของปญหา ดวยการเขยนความสมพนธเวยนเกดของคาของผลเฉลยเหมาะทสด ในรปของคาของผลเฉลยเหมาะทสดของปญหายอย สงทตองคดกอนเขยนความสมพนธเวยนเกดกคอ

� อะไรคอคาของผลเฉลยเหมาะทสด ตรงนกคอคาของฟงกชนจดประสงคของปญหา

� อะไรคอปญหายอย มพารามเตอรอะไรบางทตองใชเพอกาหนดขนาดของปญหาเชนถาเขยน M(n,k) แลว n คออะไร k คออะไร จาเปนตองมหรอไม ตองมตวอนอกหรอเปลา โดยทวไปคาเลกสดของพารามเตอร จะบงถงกรณของปญหาทมขนาดเลกสด ซงรคาตอบทนท (เปนกรณเรมตนของความสมพนธเวยนเกด)

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

ตวอยางท 9-4 Optimal Binary Search Tree : โดยทวไปเมอพดถงการเกบขอมลดวยตนไมคนแบบทวภาค (binary search tree) นน เรามกกลาววาตนไมคนแบบทวภาคทไดดล จะเปนตนไมททาใหการคนกระทาไดในเวลา O( log n ) เนองจากตนไมไดดลนนเตยสด คากลาวนเปนจรงกเมอความถในการคนแตละขอมลในตนไมนนมพอๆ กน แตถาความถของการอางองขอมลในตนไมไมเทากน รปแบบของตนไมในลกษณะอนทไมไดดลอาจดกวากได โดยวดไดจากตนทนการคน

Page 190: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

174 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

ซงคอคาคาดหวงของจานวนโหนดทตองนามาพจารณาระหวางการคน ตวอยางเชน ตารางท 9–1 แสดงความนาจะเปนในการอางองขอมลจานวนหนง

ตารางท 9–1 ตวอยางขอมลกบความนาจะเปนในการอางองขมล

ขอมล ความนาจะเปนพ 0.25ชนจง 0.22ทกเกอร 0.20ดบซ 0.18ลาลา 0.08ทงกวงก 0.05โพ 0.02

ชนจง

ดบซ

ทกเกอร

ทงกวงก

โพ

ลาลา

ทกเกอร

ชนจง

ดบซ

ทงกวงก ลาลา

โพ

(ก) (ข)รปท 9–1 การจดเกบขอมลชดเดยวกนในตนไมคนแบบทวภาคสองลกษณะ

ถาจดเกบในตนไมคนแบบทวภาคไดดลดงรปท 9–1 (ก) จะมตนทนการคนเปน

0.05�1 + (0.18+0.02)�2 + (0.22+0.20+0.25+0.08)�3 = 2.70

ในขณะทจดเกบในตนไมดงรปท 9–1 (ข) จะมตนทนการคนเปน

0.20�1 + (0.22+0.25)�2 + (0.18+0.05+0.08)�3 + 0.02�4 = 2.15

เหนไดวาแบบหลงดกวาแบบไดดล

ปญหาทเราสนใจในทนกคอ จะตองจดเกบขอมลในตนไมคนแบบทวภาคใหมรปรางอยางไร จงจะมตนทนการคนทนอยสด

Page 191: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 175

จากลกษณะการจดเกบขอมลในตนไมคนแบบทวภาค ตนไมยอยใดๆ ทม x เปนราก ขอมลทกตวทมคานอยกวา x ตองอยในตนไมยอยทางซายของ x และขอมลทกตวทมคามากกวา x ตองอยในตนไมยอยทางขวาของ x กาหนดให (x1 ,x2 , …, xn ) คอลาดบของขอมล n ตวทเกบในตนไมคนแบบทวภาค โดยท x1 < x2 <…< xn ดงนนถา xi และ xj คอขอมลทมคานอยสดและมากสดตามลาดบของตนไมยอยตนหนง ขอมลทงหมดในตนไมยอยนตองเปน (xi ,xi+1 , …, xj ) 1 �i � j � n

เราสามารถบรรยายขอมลทงหมดในตนไมดวยชวงของขอมล กาหนดให T(i, j) คอเซตของตนไมยอยตางๆ ทเกบขอมล (xi ,xi+1 , …, xj ) ขอมลทกตวใน (xi ,xi+1 , …, xj ) นมสทธเปนรากไดทงสน ถา xm เปนราก (i � m � j) เซตของตนไมยอยทางซายของ xm กตองเปน T(i, m–1) และเซตของตนไมยอยทางขวากตองเปน T(m+1, j)

xm

tL tR

รปท 9–2 ตนไมคนแบบทวภาค

กาหนดให tmin(i, j) คอตนไมใน T(i, j) ทมตนทนการคนทนอยสด ถา tmin(i, j) ม xm เปนราก (ดรปท 9–2) โดยท tL � T(i, m–1) และ tR � T(m+1, j) คอตนไมยอยทางซายและขวาของ tmin(i, j) ตามลาดบ ให pi คอความนาจะเปนในการอางอง xi ตนทนการคนของ tmin(i, j) ยอมเทากบ

pm + ตนทนการคนของ tL + ตนทนการคนของ tR

ซงจะมคานอยสดไดกตอเมอตนทนการคนของ tR และของ tL นอยสด (เพราะวาตนไมยอยทงสองไมมโหนดทรวมกนเลย) แสดงวา tL กคอ tmin(i, m–1) และ tR กคอ tmin(m+1, j) ดงนนตนไมคนแบบทวภาคทมตนทนการคนทนอยสด ยอมประกอบดวยตนไมยอยทางซายและขวาทมตนทนการคนทนอยสดทงสองตนดวย จงมโครงสรางยอยเหมาะทสด

ตวอยางท 9-5 Longest Increasing Subsequence (LIS) : กาหนดให S = (z1, s2, …, sn) เปนลาดบของจานวนเตมทแตกตางกน n ตว จงหาลาดบยอย ),...,,(

21 kiii sss ทยาวสด โดยท 1� i1< i2<…< ik � n

Page 192: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

176 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

และ kiii sss ��� ...

21 เชน ลาดบยอยเพมขนทยาวสดของ ( 2, 5, 1, 0, 7, 3, 4, 6, 99, 10, 8 )

คอ (2, 3, 4, 6, 99) ซงยาว 5 (มลาดบยอยทเพมขนอนอกทยาว 5)

กาหนดให LIS(j) = ),...,,(21 jii sss โดยท 1 � i1< i2<…< j คอลาดบยอยเพมขนทยาวสดทตอง

จบลงดวย sj ให L(j) คอความยาวของ LIS(j) เมอเรากาลงพจาณา sk อย กตองตงคาถามวา sk จะมสทธเพมความยาวของ LIS(j), j < k ในอดตทผานมาลาดบใดไดบาง (sk จะไปเพม LIS(j) ใหยาวขนอกหนงไดกตอเมอ sj < sk) และเนองจากเราสนใจลาดบยอยเพมขนทยาวสด ดงนนจงตองเลอกเฉพาะ LIS(j) ทยาวสดท sk มสทธจะตอทายได กาหนดให LT(sj, sk) มคาเทา 1 เมอ sj

< sk มฉะนนมคาเทากบ 0 ดงนน� � 1),()(max)(

1���

��kj

kjssLTjLkL

แสดงใหเหนถงโครงสรางยอยเหมาะทสด เพราะวา L(k) เลอกมาจากคามากทสดของ L(j) ตางๆ ซงตองมากทสดดวย

ตวอยางท 9-6 Shortest Path : ปญหาทางกราฟนเปนทรจกกนด คอเราตองการหาวถสนสดจากจดหนงไปยงอกจดหนงในกราฟ G (G เปนกราฟระบทศทาง และเสนเชอมมนาหนกกากบ)

กาหนดให Pij คอวถสนสดจาก i ถง j ให u และ v คอสองจดใดๆ บน Pij ท u อยกอน v ในลาดบของจดบน Pij เราสามารถแสดงวาปญหานมโครงสรางยอยเหมาะทสดได โดยแสดงใหเหนจรงวา วถยอยจาก u ถง v ของ Pij ตองเปนวถสนสดดวย (ดรปท 9–4)

i jv

u

รปท 9–4 วถจาก s ถง v บนวถสนสดจาก s ถง t ตองสนสดดวย

เราแบง Pij ออกเปนสามวถยอยคอ Piu Puv และ Pvj ซงคอวถจาก i ถง u จาก u ถง v และ จาก vถง j บน Pij ตามลาดบ ถามวถ P'uv อนจาก u ถง v ทสนกวาความยาวของ Puv เรากสามารถสราง

Page 193: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 177

วถใหมจาก i ถง j ซงประกอบดวย Piu P'uv และ Pvj ทสนกวาของ Pij ซงขดกบขอกาหนดทให Pij เปนวถสนสดจาก i ถง j แสดงวา Puv ตองเปนวถสนสดจาก u ถง v ปญหาวถสนสดจงมโครงสรางยอยเหมาะทสด

การซอนเหลอมของปญหายอยขอนาเสนอตวอยางเลกๆ เพอแสดงลกษณะของการซอนเหลอมของปญหายอย (overlapping subproblems) วาคออะไร ทกคนคงรจกความสมพนธเวยนเกดของจานวนฟโบนกชกนมาแลว

fn = fn–1 + fn–2 สาหรบ n � 2, f0 = 0, f1 = 1

ถาเราจะเขยนโปรแกรมเวยนเกดเพอหาคาของจานวนฟโบนกชตวท n ตามความสมพนธเวยนเกดขางบนน กจะได

01: Fib( n )02: {03: if n < 2 then return n04: fn1 = Fib( n–1 )05: fn2 = Fib( n–2 )06: fn = fn1 + fn207: return fn08: }

สมมตวาตองการหาคาของ f5 กเรยก Fib(5) ซงกอใหเกดลาดบการเรยก Fib แสดงไดดวยตนไมจาลองการเวยนเกดดงรปท 9–5 ลาดบการเรยก Fib กเปนลาดบการแวะผานตนไมแบบกอนลาดบ (pre–order traversal) ในตนไมน

Fib(3)

Fib(1)Fib(2)

Fib(1) Fib(0)

Fib(4)

Fib(3)

Fib(1)Fib(2)

Fib(1) Fib(0)

Fib(2)

Fib(1) Fib(0)

Fib(5)

รปท 9–5 ตนมแทนการเรยก recursion ของ Fib(5)

Page 194: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

178 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

การเรยก Fib ซาๆ เปนเรองปกตเพราะเราเขยนแบบโปรแกรมเวยนเกด แตสงทผดปกตกคอเรยก Fib(n) ทมคาของ n เหมอนกบทเคยเรยกซาแลวซาอก เชนเรยก Fib(3) ซา 2 ครง เรยก Fib(2) ซา 3 ครง เปนตน กาหนดให t(n) แทนเวลาการทางานของ Fib จะไดวา

t(n) = t(n–1) + t(n–2) + �(1)

เปนแบบเชงเสน ไมเอกพนธ ทสมประสทธมคาคงตว (Inhomongeneous linear recurrence with constant coefficient) ประกอบดวยผลเฉลยเฉพาะคอ �(1) และผลเฉลยเอกพนธคอ �(�n) โดยท � = 1+ 5

2 หามาจากรากลกษณะตวใหญของสมการ r2–r–1 = 0 สรปไดวา t(n) = �(�n) มเวลาการทางานทโตแบบเลขชกาลง เหนไดชดวาคงจะใช Fib(n) ทเขยนนเพอหา n ขนาดใหญ กคงจะรอคาตอบไมไหว

เหตการณเชนนเกดขนกเนองมาจากการซอนเหลอมของปญหายอย เมอมการแบงปญหาใหญเปนปญหายอยๆ แตในตวปญหายอยๆ นนเมอถกแบงตอจะประกอบดวยปญหายอยๆ ทเหมอนกน สงผลใหตองแกปญหายอยๆ ทซอนเหลอมกนนซาแลวซาอก

ใหสงเกตวาเหตการณเชนนไมไดเกดกบตวอยางของปญหาทนาเสนอในบททแลว ซงเราใชการแบงแยกและเอาชนะ เชนการเรยงลาดบผสานกแบงแถวลาดบเปนครงซายกบครงขวา ซงแตละครงไมมขอมลซอนเหลอมกนเลย เหมอนกบการหาคจดใกลสดทเราแบงเปนสองครงไมซอนเหลอมกน หรอปญหาการคณเมทรกซทตองแบงเมทรกซออกเปนสเมทรกซยอย แตละเมทรกซยอยกไมซอนเหลอมกน เปนตน

วธแกปญหาการซอนเหลอมกนของปญหายอยนนมสองแนวทางคอ

� ใชกลวธแบงแยกและเอาชนะตามปกต แตมการจาคาตอบของปญหายอยทเคยแกไขมาแลว เมอพบปญหาทรคาตอบแลวจากผลในอดต กคนคาตอบไดเลยไมตองหาใหม ลกษณะเชนนจะเปนการทางานแบบบนลงลาง (top–down) เนองจากถาเราตองการแกปญหาใหญใด กแบงเปนปญหาเลกทจาเปนตองหาคาตอบ เมอไดคาตอบของปญหาเลกตางๆ ทตองการกคอยรวมคาตอบเหลานนเปนคาตอบของปญหาใหญนน

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

Page 195: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 179

พบคาตอบของปญหาทตองการแกไข ลกษณะเชนนเปนการทางานแบบลางขนบน (bottom–up) วธนแหละทเรยกวากาหนดการพลวต

สองวธขางตนนแตกตางกนในแนวคดของการไดมาซงคาตอบของปญหา (จากบนลงลาง และจากลางขนบน) และขอใหสงเกตตรงทผมขดเสนใตไว กคอแบบแรกนนเราจะหาคาตอบของปญหาทเลกกวาทจาเปนเทานน ในขณะทแบบลางขนบนนนเราหาคาตอบของปญหาเลกๆ ทงหมด เพราะเราไมทราบกอนวาปญหาทใหญกวานนจะใชคาตอบของปญหาเลกตวใด (กเลยหามนใหหมดไปเลย)

มาดวาเราจะใชสองแนวคดนกบปญหาการหาจานวนฟโบนกชตวท n ไดอยางไร แบบแรกกจองตารางขนาดเทากบ n เพอจาคาของ fn ทเลกกวา เรมตนใส –1 ใหหมดเพอแสดงวายงไมรคาตอบของ fn ใดๆ เลย จากนนกเพมการตรวจสอบวารคาตอบหรอยง ตอนจะเรมหา ถารแลวกคนคาตอบเลย ถาไมรกหาไปตามปกตทเคยทามา เขยนเปนรหสเทยมไดดงน

01: FibMem( n )02: {03: allocate F[0..n–1]04: for (i=0 to n–1) F[i] = –105: return FibLookUp( n )06: }07:08: FibLookUp( n )09: {10: if n < 2 then return n11: if ( F[n] == –1 ) {12: fn1 = FibLookup( n–1 )13: fn2 = FibLookup( n–2 )14: F[n] = fn1 + fn215: }16: return F[n]17: }

วธนวเคราะหการทางานอาจดไมคอยชดเจนนกจากตวรหสเทยม แตจะเหนไดวาการหา fn = fn–1

+ fn–2 นนตอนหา fn–2 ตวหลงนนใชเวลาคงตว (เพราะเราหา fn–1 กอน ถารคาของ fn–1 กแสดงวาตองรคาของ fn–2 แลวแน) ดงนนเวลาการทางานเปน t(n) = t(n–1) + �(1) = �(n) บวกกบเวลาการจองและลางแถวลาดบ F ทไวจาคาตอบซงกเปน �(n) เชนกนรวมเวลาทงหมดเปน �(n)

ถาใชกาหนดการพลวตนนจะเหมอนกบ การเขยนจานวนฟโบนกชเรมตงแตตวท 0 ไปเรอยๆ ( 0, 1, 1, 2, 3, 5, 8, 13, 21, …) จนกวาจะพบตวทตองการ วธหาตวท k กเพยงนาสองตวกอนหนา (ทรคาแลวเนองจากเขยนไวแลว) มาบวกกน การเขยนกคอการจาคาตอบของปญหาทเลก

Page 196: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

180 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

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

01: FibDP( n )02: {03: fn2 = 0; fn1 = 104: for (k=2 to n) {05: fn = fn1 + fn206: fn2 = fn107: fn1 = fn08: }09: return fn10: }

เหนไดชดจากรหสเทยมวาเวลาการทางานแปรตามจานวนวงวนทหมนอยในวงวนแบบ for จงใชเวลาทงสนเปน �(n)

ทงสองวธใชเวลาเทากน วธหลงงายกวามาก เปนวงวนธรรมดา ไมมการเรยกแบบเวยนเกด ไมตองจองแถวลาดบใหยงยาก จงเรวกวาในทางปฏบต แตอยางไรกตามสองวธนเรวกวา Fib(n)ทเขยนใหดครงแรกมหาศาล (อยาลมวาแบบนนใชเวลาเปน �(�n) แตสองแบบหลงเปนเชงเสน แลวยงมแบบอนทเรวกวานไหม ? ลองคดด บอกใหกอนวาม !!)

ใหสงเกตวาจากลกษณะเฉพาะในประเดนโครงสรางยอยเหมาะทสดนน มกนาไปสการเขยนความสมพนธเวยนเกดของคาของผลเฉลยเหมาะทสด โดยการแบงปญหาใหญเปนปญหายอยในลกษณะลยแบงทกแบบ ซงการแบงทกแบบนเองนาไปสการซอนเหลอมของปญหายอยทตองหาคาตอบ จงเปนปญหาทเหมาะมากกบการใชกาหนดการพลวต เนองจากเราประกนวาจะไดผลเฉลยเหมาะทสด (จากโครงสรางยอยเหมาะทสดของปญหา) อกทงเปนการแกปญหาไมซาแลวซาเลา เพราะใชวธจาคาตอบ จงเหนอกวาแบบแบงแยกและเอาชนะแบบปกต (จากการซอนเหลอมของปญหายอย) สงทจะประกนไดวากาหนดการพลวตจะทางานอยางมประสทธภาพ กเมอปญหายอยทตองหาคาตอบเตรยมไวมจานวนไมมาก (หรอจะพดวาจานวนทวานเปนฟงกชนพหนามของขนาดของปญหา) โดยทวไปเราจาคาตอบในตาราง (ถาทาได) เพราะสามารถเขยนอางองคาตอบไดงาย อกทงเวลาเขยนโปรแกรมแลวจะเปนวงวนแบบ for ทมดชนของวงวนเปนตวกาหนดชองในตาราง

Page 197: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 181

ขนตอนการออกแบบดวยกาหนดการพลวตตามทไดอธบายมาแลววา โดยทวไปเราใชกาหนดการพลวตเพอแกไขปญหาการหาคาเหมาะทสดซงมโครงสรางยอยเหมาะทสด มการซอนเหลอมของปญหายอย และมจานวนปญหายอยทตองหาคาตอบไมมาก ดงนนเมอเราพบปญหาทคดวานาจะใชกาหนดการพลวตแลวไดผลนน มขนตอนการออกแบบดงน

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

� เขยนความสมพนธเวยนเกดของคาของผลเฉลยเหมาะทสดจากโครงสรางยอยเหมาะทสดทไดในขนตอนท 1

� หาวธจาคาตอบ (จะใชตารางกมต หรอตองใชโครงสรางขอมลแบบอน) เขยนอลกอรทมทใชคาตอบทจามา คานวณ และเตมคาตอบใหม โดยไลหาจากปญหาขนาดเลกๆ ไปสปญหาขนาดใหญทตองการ ตรงนใหระวงเรองกรณพเศษตอนอางองคาตอบเกาทจาไว เชนการอางองชองทออกนอกตาราง เปนตน อยาลมวาทเราหาไดในขนตอนนคอคาของผลเฉลยเหมาะทสด แตยงไมรผลเฉลยเหมาะทสด (เชนปญหา optimal binary search tree กรแคตนทนการคนทนอยสด แตยงไมรวาตนไมมลกษณะอยางไร)

� หาวธสรางผลเฉลยเหมาะทสด จากสงทไดคานวณกนมาในขนตอนท 3 โดยทวไปเราตองกลบไปเพมเตมขอมลบางอยางในอลกอรทมทเขยนไวในขนตอนท 3 เพอจาการตดสนใจ (นอกเหนอจากการจาคาตอบ) ระหวางการทางานในขนตอนท 3 เพอจะไดใชเปนขอมลในการสรางผลเฉลยเหมาะทสดได (เชนปญหา optimal binary search tree กคงตองจาดวยวา ทไดตนทนการคนทนอยสดนนเปนเพราะขอมลใดเปนรากของตนไมยอย เปนตน)

หวใจของกาหนดพลวตอยทขนตอนท 1 และ 2 สวนขนตอนท 3 และ 4 นนเปนเพยงการใชทกษะการเขยนโปรแกรมเทานน หวขอตอไปนจะนาเสนอตวอยางของปญหาทใชกาหนดการพลวตแกไขไดเปนอยางด (โดยใชตวเลข ��� และ� กากบขนตอนทกลาวไวขางตน)

Page 198: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

182 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

ตนไมคนแบบทวภาคเหมาะทสดขอทวนเลกนอยวามขอมล { x1, x2, …, xn } ซง x1 < x2 < … < xn โดยท pi คอความนาจะเปนในการคน xi สงทตองการคอวธการจดเกบขอมลเหลานในตนไมคนแบบทวภาคซงมตนทนการคนนอยทสด เราไดแสดงใหเหนมาแลวในตวอยางท 9-4 วา ปญหาตนไมคนแบบทวภาคเหมาะทสดนมโครงสรางยอยเหมาะทสด คราวนเราจะมาหาตนไมคนแบบทวภาคเหมาะทสดกนจรงๆ กาหนดให C(i, j) คอตนทนการคนของตนไมคนแบบทวภาคเหมาะทสดซงเกบขอมล xi, xi+1, …, xj

ถาเรารมากอนวาตนทเหมาะทสดซงเกบขอมล xi, xi+1, …, xj ม xm เปนราก ดงนนตนไมยอยทางซายและทางขวากตองเกบขอมล xi, xi+1, …, xm–1 และ xm+1, xm+2, …, xj ตามลาดบ และมตนทนการคนนอยสดเปน C(i, m–1) และ C(m+1, j) ตามลาดบดวย ตนทนการคนของทงตนจงเทากบ

��

��

������

�����

���

���

���

��

��

���

jkik

jkmk

mkikm

pjmCmiC

pjmCpmiCp

),1()1,(

),1()1,(11

แตถาเราไมรวาตนทเหมาะทสดมขอมลตวใดเปนราก กไมยาก เพยงแตลยทดลองให xi, xi+1, ..., xj เปนรากแลวเลอกตวทไดตนทนการคนนอยสด ไดความสมพนธเวยนเกดของ C(i, j) ดงน

� � ���

��

�����

jkik

jmipjmCmiCjiC ),1()1,(min),( สาหรบ i � j

ใหสงเกตวาขนาดของปญหาในทนสามารถตความไดจากคาของ j – i + 1 ไดเลย เพราะสะทอนถงจานวนขอมลทเกบในตนไม ความสมพนธเวยนเกดขางบนนแสดงใหเหนวามการซอนเหลอมของปญหา รปท 9–6 แสดงตวอยางบางสวนของตนไมแทนการหาคา C(3, 6) จะมการเรยก C(5, 6) ซา (และมทอนอก) การคานวณคา C(i, j) โดยอาศยโปรแกรมเวยนเกดทเขยนตามความสมพนธเวยนเกดขางบนนแบบตรงๆ เลยจะใชเวลาเปน

� � )1()11()11()1( ������������ ��

j

immjtimtijt

Page 199: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 183

(ใหสงเกตวาเราสามารถคานวณคาของ ��

jik kp สาหรบ 1 � i � j � n เกบไวในตารางกอน

ในเวลา �(n2) เพอจะทสามารถหยบใชไดในเวลาคงตว จงเปนทมาของพจน �(1) ทางขวาสดของความสมพนธเวยนเกดของ t ขางบนน)

C(3, 6)

C(3, 2) C(4, 6) C(3, 3) C(5, 6) C(3, 4) C(6, 6)

C(4, 3) C(5, 6) C(4, 4) C(6, 6)

C(3, 5) C(7, 6). . . . . . . . .

. . . . . . . . .

รปท 9–6 การซอนเหลอมของปญหาตนไมคนแบบทวภาคเหมาะทสด

ให i = 1, j = n จะได � � )1()()1()(1

������ ��

n

mmntmtnt ซงเทากบ �(3n) (อยากใหนกเรยน

ลงรายละเอยดการแก t(n) นกนเอง) ซงเปนเวลาการทางานทยอมรบไมได

ขาวดคอวาปญหายอยตางๆ มจานวนทงหมดแค �(n2) เทานน (เพราะตองการหาคา C(i, j)สาหรบ 1 � i � j � n) ดงนนสามารถใชกาหนดการพลวตหาคาของ C(1,n) โดยหาคาตอบของปญหาเลกๆ ไปยงคาตอบของปญหาใหญๆ ไดดงน

เรมดวยการหาคาตอบของปญหาทมขนาดเปน 1 ซงคอ C(1,1), C(2,2), …C(n,n) จากนนกหาคาตอบของปญหาทมขนาดเปน 2 ซงคอ C(1,2), C(2,3), …, C(n–1, n) หาและเตมคาตอบของปญหาทมขนาดใหญ ขนเรอยๆ จนในทสดไดคาตอบของ C(1,n) (รปท 9–7 แสดงลาดบในการเตมคาตอบในตาราง) การคานวณกอาศยความสมพนธเวยนเกดของ C(i, j) ทเขยนไวกอนหนาน เขยนเปนรหสเทยมไดดงน (จะมกรณจกจกทตองระวงกกรณท i > j ซงใหคาของ C(i, j) = 0 เราจะเขยนโปรแกรมไดสวยขนโดยไมตองไปกงวลกบกรณพเศษน ถาเราเตม C(i, i–1) สาหรบ i = 1, 2, …, n+1 ใหมคาเปนศนยกอนลวงหนา และใชตารางเสรมในการจาคาของ

��

jik kp สาหรบทกๆ i � j )

Page 200: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

184 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

j

i

C(1,n)

รปท 9–7 ลาดบการเตมคาตอบในตาราง01: OptimalBST_DP( p[1..n] )02: {03: for (i=1 to n) PP[i,i] = p[i]04: for (i=1 to n–1)05: for (j=i+1 to n)06: PP[i,j] = PP[i,j–1] + p[j]07:08: for (i=1 to n) C[i,i–1] = 009: for (k=1 to n) {10: for (i=1 to n–k+1) {11: j = i+k–112: C[i,j] = �13: for (m = i to j) {14: newCost = C[i,m–1]+C[m+1,j] + PP[i,j]15: if ( newCost < C[i,j] ) C[i,j] = newCost16: }17: }18: }19: return C[1,n]20: }

OptimalBST_DP รบขอมลขาเขาคอรายการของความนาจะเปน (p[1],p[2],…,p[n]) ของขอมล n ตว (x1, x2, …, xn ) โดยท x1< x2< …<xn (เราไมตองสงรายการของขอมลมาให สงความนาจะเปนมากพอ แตตองสงลาดบตามทกาหนด) เมอ OptimalBST_DP ทางานเสรจจะคนคาของ C(1, n) มาใหทราบถงตนทนของการคนนอยทสด (แตไมไดคนลกษณะของตนไมคนแบบทวภาคเหมาะทสดมาให เดยวคอยนาเสนอวาจะตองทาอยางไร)

บรรทดท 3 ถง 6 จดเตรยมตาราง PP โดยท PP[i,j] = ��

jik kp บรรทดท 8 เตรยมกรณการ

อาง C(i, i–1) ใหมคาเปน 0ใหหมด (ใหสงเกตวาเราตองจอง C[1..n, 0..n] เพอการน) บรรทดท 9 ถง 18 เปนการเตมตาราง C โดยวงวนนอกสด k เปนตวแปรบอกขนาดของปญหา วงวนในตวแปร i และ j คอ i และ j ตวเดยวกบทเขยนใน C(i, j) วงวนในสดหมนวนหาตวนอยสดตามทกาหนดใหความสมพนธเวยนเกด หลงจากหมนจนพบตวนอยสดแลวกตองบวกเขาไปอก PP[i,j] = �

jik kp ตามสตร

Page 201: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 185

แลวถาเราอยากรลกษณะของตนไมคนแบบทวภาคเหมาะทสดดวยละ จะทาอยางไร ใหสงเกตวาถาเรากาลงพจารณาหาคา C(i, j) สาหรบตนไมยอยทมขอมลตงแตตวท i ถง j C(i, j) หาไดจากการลองทกกรณทมรากเปน xi , xi+1 , …, xj ดวาแบบใดไดตนทนการคนทนอยสด ดงนนเรากตองจาไวดวยวาขอมลตวใดทเมอเปนรากแลวไดคาตนทนนอยสดน การจารากของตนไมยอยทกตน กทาใหสามารถสรางตนไมเหมาะทสดขนมาไดหลงจากหาคาของ C(1, n) ได เปนรหสเทยมในการสรางตนไมคนแบบทวภาคเหมาะทสดไดดงน

01: OptimalBST( x[1..n], p[1..n] )02: {03: r = OptimalBST_DP( p[1..n] )04: t = CreateTree( r[1..n, 1..n], x[1..n] )05: return t;06: }

01: OptimalBST_DP( p[1..n] )02: {03: for (i=1 to n) PP[i,i] = p[i]04: for (i=1 to n–1)05: for (j=i+1 to n)06: PP[i,j] = PP[i,j–1] + p[j]07:08: for (i=1 to n) C[i,i–1] = 009: for (k=1 to n) {10: for (i=1 to n–k+1) {11: j = i+k–112: C[i,j] = �13: for (m = i to j) {14: newCost = C[i,m–1]+C[m+1,j] + PP[i,j]15: if ( newCost < C[i,j] ) {16: C[i,j] = newCost17: r[i,j] = m18: }19: }20: }21: }22: return r23: }

01: CreateBST( r[1..n, 1..n], x[i, j] )02: {03: if ( i > j ) return null04: m = r[i,j]05: left = CreateBST( r[1..n, 1..n], x[i,m–1] );06: right = CreateBST( r[1..n, 1..n], x[m+1,j] );07: t = new BSTNode( x[m], left, right );08: return t;09: }

เราใชตาราง r ซงชองท r[i,j] จาขอมลทรากของตนไมยอยเหมาะทสดทเกบขอมล xi , xi+1 , …, xj ขนตอนการสรางตนไมคนแบบทวภาคเหมาะทสดประกอบดวยสองขนตอนยอย คอการ

Page 202: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

186 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

ใชกาหนดการพลวตคานวณตนทนการคนทนอยสด (เหมอนททามา) แตคราวนมการจารากของตนไมยอยเหมาะทสดดวย ตามดวยการสรางตวตนไมเหมาะทสดจรงๆ การจารากของตนไมยอยเหมาะทสดกเพยงแตแทรกคาสง r[i,j] = m (บรรทดท 17 ของ OptimalBST_DP) ระหวางการคานวณหาคานอยสด และเนองจากคราวนเราตองการสรางตนไม กเลยคนตาราง rกลบไปแทน สวนขนตอนการสรางตนไมนน (CreateBST) กจะเปนโปรแกรมเวยนเกดรบตาราง r พรอมทงแถวลาดบของขอมลชวงทตองการสรางตนไมยอย (เวลาเรยกครงแรกใน OptimalBST กตองสง x[1..n] เพราะตองการสรางทงตน) บรรทดท 3 จดการกบกรณเลกสด คอไมมขอมลเลย กคนตนไมวางกลบไป แตถามขอมล กหยบรากจาก r[i,j] ทเคยจาไวใน OptimalBST_DP ซงเปนรากของตนไมยอยเหมาะทสดของขอมลในชวง xi , xi+1 , …, xj

มาสราง โดยการเรยกโปรแกรมเวยนเกดไปสรางตนไมยอยเหมาะทสดทางซาย (บรรทดท 5) ไปสรางตนไมยอยเหมาะทสดทางขวา (บรรทดท 6) จากนนนาตนไมยอยทงสองมาตอเปนลกของรากไดตนไมใหมเหมาะทสด (บรรทดท 7)

OptimalBST_DP มบรรทดท 15 เปนคาสงมาตรเวลา ถกใชงานเปนจานวนเทากบ

� �

� �

� �3

233

1

2

1

1

)1(

11

)1(

1

)1(

)(32

6)12)(1(

2)1)(1(

)1(

)1(

)()1(

n

nnn

nnnnnn

knk

knk

k

n

k

n

k

n

k

kn

i

n

k

kn

i

ki

im

��

��

��

����

��

���

��

��

��

���

���

���

� �� � �

��

��

��

��

CreateBST มบรรทดท 7 เปนคาสงมาตรเวลา ดใหดคาสงนกคอการตอกงของตนไมนนเอง เนองจากมขอมล n ตวแสดงวามโหนดภายใน n โหนดบวกกบ null ซงเปนโหนดภายนอกอก n+1 โหนด จากคณสมบตของตนไม ม 2n+1 โหนด กตองม (2n+1) – 1 = 2n กง จงเสยเวลาเปน �(n)

สรปวาการสรางตนไมคนแบบทวภาคเหมาะทสดใชเวลาเปน �(n3)

Page 203: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 187

PP

C

r

คราวนมาดตวอยางกนดกวา ขอใชตวอยางจากตารางท 9–1 (ทเคยเขยนใหดในตวอยางท 9-4ในหนาท 173) ถาเราเรยงขอมลตามคาของขอมลจะไดแถวลาดบ x และ p ดงน

1 2 3 4 5 6 7x ชนจง ดบซ ทกเกอร ทงกวงก พ โพ ลาลา

p 0.22 0.18 0.20 0.05 0.25 0.02 0.08

ตาราง PP, C และ r ทไดจาก OptimalBST_DP แสดงดงน1 2 3 4 5 6 7

1 0.22 0.40 0.60 0.65 0.90 0.92 1.002 0.18 0.38 0.43 0.68 0.70 0.783 0.20 0.25 0.50 0.52 0.604 0.05 0.30 0.32 0.405 0.25 0.27 0.356 0.02 0.107 0.08

0 1 2 3 4 5 6 71 0 0.22 0.58 1.02 1.17 1.83 1.89 2.152 0 0.18 0.56 0.66 1.21 1.27 1.533 0 0.20 0.30 0.80 0.84 1.024 0 0.05 0.35 0.39 0.575 0 0.25 0.29 0.476 0 0.02 0.127 0 0.08

1 2 3 4 5 6 71 1 1 2 2 3 3 32 2 3 3 3 3 33 3 3 5 5 54 4 5 5 55 5 5 56 6 77 7

CreateBST สรางตนไมคนบบทวภาคเหมาะทสดไดดงรปรปท 9–8

ทกเกอร

ชนจง

ดบซ

ทงกวงก ลาลา

โพ

รปท 9–8 ตนไมคนแบบทวภาคเหมาะทสด

Page 204: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

188 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

ลาดบยอยเพมขนทยาวสดกาหนดให S = (z1, s2, …, sn) เปนลาดบของจานวนเตมทแตกตางกน n ตว จงหาลาดบยอย

),...,,(21 kiii sss ทยาวสด โดยท 1� i1< i2<…< ik � n และ

kiii sss ��� ...21

ในตวอยางท 9-5เราไดแสดงใหเหนวาปญหานมโครงสรางยอยเหมาะทสด ซงสามารถเขยนความสมพนธเวยนเกดของความยาวของลาดบยอยเพมขนยาวสดทจบดวย sk ไดดงน

� � 1),()(max)(1

���

��kj

kjssLTjLkL

โดยท LT(sj , sk) มคาเทา 1 เมอ sj < sk มฉะนนมคาเทากบ 0 จะไดวาความยาวของลาดบยอยเพมขนทยาวสดกคอลาดบทม L(k) มากสด

จากความสมพนธเวยนเกดขางบนนพบวา มการซอนเหลอมของปญหายอย โดยดไดจากตวอยางตนไมจาลองการเวยนเกด L(5) ในรปท 9–9 (กรณเลวสด) แตถาคดดดๆ ปญหายอยทแตกตางกนทงหมดนนมเพยง n ปญหายอยเทานน คอ L(1), L(2), …, L(n) จงเหนไดวาปญหาลาดบยอยเพมขนทยาวสดนนมโครงสรางยอยเหมาะทสด มการซอนเหลอมของปญหายอย และมจานวนปญหายอยทงหมดไมมาก จงเหมาะอยางยงทจะใชกาหนดการพลวตเพอหาผลเฉลยเหมาะทสด

L(4)

L(1) L(2) L(3)

L(1) L(1) L(2)

L(1)

L(1) L(2) L(3)

L(1) L(1) L(2)

L(1)

L(5)

รปท 9–9 ตนไมแสดงการซอนเหลอมกนของปญหายอยสาหรบปญหา L(5) กรณเลวสด

เราสามารถหาคาของ L(1), L(2), …, L(n) ไดดวยกาหนดการพลวต โดยการจาคาของ L ในตารางจานวน n ชอง โดยเรมหาคาตอบของ L(1) ตามดวย L(2), … ไปเรอยจนถง L(n) โดยอาศยความสมพนธเวยนเกด � � 1),()(max)(

1���

��kj

kjssLTjLkL เมอหาครบทกชองแลว ตวมาก

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

Page 205: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 189

01: LIS_DP( s[1..n] )02: {03: for (k=1 to n) {04: L[k] = 005: for (j=1 to k–1)06: if ( s[j] < s[k] AND L[k] < L[j] ) L[k] = L[j]07: L[k] = L[k] + 108: }09: for (k=1 to n)10: m = max( m, L[k] )11: return m;12: }

แลวลาดบยอยเพมขนทยาวสดคออะไร ถาอยากรกตองจาคาของ j ระหวางการหามากสดในบรรทดท 6 ดวย แลวจาไวในอกตารางหนง จากนนสามารถสรางผลเฉลยเหมาะทสดไดจากคาทเกบในตารางน เขยนเปนรหสเทยมไดดงน

01: LIS_DP( s[1..n] )02: {03: for (k=1 to n) {04: L[k] = 005: prev[k] = 006: for (j=1 to k–1)07: if ( s[j] < s[k] AND L[k] < L[j] ) {08: L[k] = L[j]09: prev[k] = j10: }11: L[k] = L[k] + 112: }13: for (k=1 to n)14: m = max( m, L[k] )15: i = 016: while( m � 0 ) {17: tmp[++i] = s[m]18: m = prev[m]19: }20: return Reverse( tmp[1..i] )21: }

บรรทดท 3 ถง 14 คลายกบทไดเขยนมา ตางกนตรงทเราเพมบรรทดท 9 เพอจาตาแหนงทไดคามากสดไวในตาราง prev ตความไดวา prev[k] คอตาแหนงกอนหนาตวท k ในลาดบยอยเพมขนทยาวสดทไดพบมา ถา prev[k] มคาเปน 0 หมายความวาไมมตวกอนหนา บรรทดท 15 ถง 20 ทาหนาทวงถอยหลงในตาราง s เพอสรางลาดบยอยเพมขนทยาวสด (แบบกลบลาดบ) โดยวงถอยหลงตามคาในตาราง prev เรมทชอง m หยบ s[m] ไปตอทายแถวลาดบ tmp จากนนเปลยนคา m = prev[m] กระทาเชนนไปเรอยๆ จนกระทงพบตาแหนง m=0 เปนอนสนสดลาดบยอย นาขอมลใน tmp ไปกลบลาดบขอมลไดเปนลาดบยอยเพมขนทยาวสดทตองการ

บรรทดท 7 เปนคาสงมาตรเวลาของอลกอรทมขางบนน ดงนนใชเวลาการทางานเปน

Page 206: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

190 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

� �2

11

1

1)1()1( nk

n

k

n

k

k

i����� ���

��

มาดตวอยางการหาลาดบยอยเพมขนทยาวสดของ ( 2, 5 1, 0, 7, 3, 4, 6, 99, 10, 8 ) จะไดตาราง L และ prev ดงน (ไดลาดบยอยเพมขนทยาวสดเปน 2, 3, 4, 6, 99 )

1 2 3 4 5 6 7 8 9 10 11s 2 5 1 0 7 3 4 6 99 10 8

L 1 2 1 1 3 2 3 4 5 5 5

prev 0 1 0 0 2 1 6 7 8 8 8

วถสนสดแบบแหลงตนทางเดยวเราไดนาเสนอในตวอยางท 9-6 มาแลววาปญหาวถสนสดในกราฟนนมโครงสรางยอยเหมาะทสด นนคอวถยอยใดๆ บนวถสนสดยอมตองสนสดดวย จากความรตรงนเราจะมาเขยนความสมพนธเวยนเกดของความยาวของวถสนสดใหดกน

สมมตวาเราตองการหาวถสนสดจาก s ถง t ในกราฟ G กาหนดให du คอความยาวของวถสนสดในกราฟ G จากจด s ถง u (หมายความวาวถสนสดทตองการจาก s ถง t มความยาว dt ) ดวยโครงสรางยอยเหมาะทสดบอกเราวา

� �kukuadjk

u wdd ��

� )(min

(โดยท wku คอความยาวของเสนเชอม (k, u)) จากความสมพนธเวยนเกดขางบนน ขอใหนกเรยนลองคดสกครซวาจะเปลยนเปนรหสเทยมหรอโปรแกรมไดอยางไร

ปญหาของความสมพนธเวยนเกดขางบนนอยตรงทวา การดท du หรอ dk บอกเราไมไดเลยวาขนาดของปญหาเปนเทาไร เรารโดยนยวา k นาจะใกลจด s มากกวา u เพราะตองอาศยเสนเชอม (k, u) อกเสนจาก k ถง u แตสงทเขยนนนไมไดสะทอนถงขนาด จงเกดปญหาถาใชกาหนดการพลวตเปนเครอมอแกไข (อยางไรกตามความสมพนธเวยนเกดนกยงมประโยชนเมอเราใชกลวธแกไขปญหาแบบอนทจะกลาวในบทตอไป)

กาหนดให du(m) คอความยาวของวถสนสดจาก s ถง u ทใชเสนเชอมเปนจานวนไมเกน m เสน การกาหนดในลกษณะนจะเหนไดวา เมอ m=0 นนเราทราบคาตอบทนท นนคอถา u = s แลว

Page 207: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 191

du(0) = 0 มฉะนน du(0) = � และคาตอบทเราตองการกคอ du(v–1) เพราะวาวถระหวางคจดใดๆ ในกราฟซงม v จด ยอมใชเสนเชอมไมเกน v–1 เสน ดวยการกาหนดนยามของความยาวของวถสนสดในลกษณะน ทาใหเราเหนขนาดของปญหา และสามารถหาคาตอบของปญหาใหญไดจากคาตอบของปญหายอยดงความสมพนธเวยนเกดขางลางน

� �

� �kukvk

kukvk

uu

wmd

wmdmdmd

���

��

���

����

��

��

)1(min

)1(min),1(min)(

1

1

หมายความวาวถสนสดจาก s ถง u ทใชไมเกน m เสน อาจมาจากวถสนสดจาก s ถง u ทใชไมเกน m–1 หรอมาจากวถสนสดจาก s ถงจด k อนทตอกบ u ทใชไมเกน m–1 เสน บวกกบอกเสนคอเสน (k, u) (เรายบเปนบรรทดลางไดเพราะ wuu = 0)

เราสามารถเกบคาของ dij(m) ตางๆ ทงหมดไวในเวกเตอรขนาด 1�n ตงชอใหวา Lm[] กาหนดการพลวตบอกเราวาใหเรมหาจาก L0[], L1[], … จนถง Lm–1[] เนองจากการหาคาของ Lm[] นนอางองเฉพาะ Lm–1[] เทานน ดงนนเรามทเกบแคสองเวกเตอรกพอ แสดงไดดวยรหสเทยมขางลางน (โดยท L'[] แทน Lm[] และ L[] แทน Lm–1[] )

01: ShortestPath_DP( G=(V,E,w), s )02: {03: for (k=1 to v) L[k] = �04: L[s] = 005: for (m=1 to v–1) {06: for (u=1 to v) {07: L'[u] = L[u]08: for (k=1 to v)09: L'[u] = min( L'[u], L[k] + w(k,u) )10: }11: for (u=1 to v) L[u] = L'[u]12: }13: return L[1..n]14: }

ตวแปร m, u, และ k ทใชในรหสเทยมเปนชอเดยวกบทเขยนบรรยายความสมพนธเวยนเกดของ � �kuk

vku wmdmd ���

��

)1(min)(1

บรรทดท 8 ถง 9 นนเขยนตรงๆ จากตวความสมพนธ

เวยนเกด วงวนทบรรทดท 6 เปนการคานวณสาหรบทกๆ ตว (ทกๆ จด)ในเวกเตอร และวงวนนอกสดทบรรทด 5 เปนการคานวณสาหรบทกๆ ขนาดของ m บรรทดท 11 เปนการทาสาเนาเวกเตอร เพราะเราให L'[] แทน Lm[] และ L[] แทน Lm–1[] บรรทดสดทายคนผลลพธทงเวกเตอร ซงแทนความยาวของวถสนสดจาก s ถงทกๆ จดในกราฟ (จากขอกาหนดตอนแรกเรา

Page 208: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

192 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

ตองการแคความยาวของวถสนสดจาก s ถง t แตกาหนดการพลวตแถมความยาวของวถสนสดถงจดอนๆ ทกจดใหดวย เราเรยกปญหาแบบนวา single–source shortest paths)

ทไดทามานนเราทราบเฉพาะความยาวของวถสนสด แตถาอยากรวถดวย กตองคอยจาวาทได � �kuk

vku wmdmd ���

��

)1(min)(1

นนไดมาจากคา k ใด ทไดคานอยสด k ทไดคานอยสดวาไป

แลวกคอจดกอนจด u ในวถสนสด จะขอจองอกแถวลาดบ �[1..v] โดยท �[u] เกบจดกอนหนา u ในวถสนสดเรมจาก s ถง u โดยม �[s] = null เขยนไดเปนรหสเทยมดงน (เพมการจาจดกอนหนาทวานในบรรทดท 4 และ11)

01: ShortestPath_DP( G=(V,E,w), s )02: {03: for (k=1 to v) L[k] = �04: L[s] = 0, �[s] = null05: for (m=1 to v–1) {06: for (u=1 to v) {07: L'[u] = L[u]08: for (k=1 to v) {09: if ( L[k]+w(k,u) < L'[u] ) {00: L'[u] = L[k] + w(k,u)11: �[u] = k12: }13: }14: for (u=1 to v) L[u] = L'[u]15: }16: return �[1..v]17: }

อลกอรทมขางบนนทางานในเวลาเปน �(v3) เพราะมวงวนแบบ for ทวนตงแต 1 ถง v ซอนกนสามวง (วงนอกถงแค v–1 กไมมผลใดๆ เชงเสนกากบ) 1

1

52 3

54

6-2

8

79

7-3

-42

รปท 9–10 ตวอยางการหาวถสนสดจากจด 1 ถงทกๆ จด

1 คงตองหมายเหตตรงนไวหนอยวา การหาเดนสนสดนนมวธอนทมประสทธภาพมากกวานมาก ซงจะไดนาเสนอในบทถดไป

Page 209: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 193

มาดตวอยางการหาวถสนสดจากจด 1 ถงทกๆ จดในกราฟ G ในรปท 9–10 จะไดคาของเวกเตอรของ L0[], L1[], L2[], L3[] และ L4[] พรอมทงคาของแถวลาดบ � ตางๆ ดงน

1 2 3 4 5 1 2 3 4 5L0[ ] 0 � � � � �[ ] 0L1[ ] 0 6 � 7 � �[ ] 0 1 1L2[ ] 0 6 4 7 2 �[ ] 0 1 4 1 2L3[ ] 0 2 4 7 2 �[ ] 0 3 4 1 2L4[ ] 0 2 4 7 –2 �[ ] 0 3 4 1 2

วถสนสดแบบทกคหวขอทแลวเราไดนาเสนอการหาวถสนสดจากจดๆ หนงในกราฟไปยงจดอนๆ ดวยกาหนดการพลวต ไดอลกอรทมทใชเวลาเปน �(v3) โดยท v เปนจานวนจดในกราฟ รสกวาเปนอลกอรทมทใชเวลามากไปหนอย แตถาเราขยายความตองการของปญหาเปนการหาวถสนสดระหวางทกคจดในกราฟเลย จะพบวาการใชกาหนดการพลวตจะทางานคมหนอย เพราะปญหายอยทตองแกไขนน จะถกใชในการคาตอบของปญหาทใหญกวาไดมาก

จากเดมในหวขอทแลวทเราเคยนยามให du(m) คอความยาวของวถสนสดจาก s ถง u ทใชเสนเชอมเปนจานวนไมเกน m เสน คราวนขอกาหนดให dij(m) คอความยาวของวถสนสดจาก i ถง j ทใชเสนเชอมเปนจานวนไมเกน m เสน เมอ m=0 นนเราทราบคาตอบทนท นนคอ ถา i = jแลว dij(0) = 0 มฉะนน dij(0) = � และในทานองเดยวกบทนาเสนอในหวขอทแลว คาตอบทเราตองการกคอ dst(v–1) และสามารถหาคาตอบของปญหาใหญไดจากคาตอบของปญหายอยดงความสมพนธเวยนเกดขางลางน

� �

� �kjikvk

kjikvk

ijij

wmd

wmdmdmd

���

��

���

����

��

��

)1(min

)1(min),1(min)(

1

1

หมายความวาวถสนสดจาก i ถง j ทใชไมเกน m เสน อาจมาจากวถสนสดจาก i ถง j ทใชไมเกน m–1 หรอมาจากวถสนสดจาก i ถงจดทตอกบ j ทใชไมเกน m–1 เสน บวกกบอกเสนทตอจากจดนนถง j (เรายบเปนบรรทดลางไดจากการท djj(0) = 0)

เราสามารถเกบคาของ dij(m) ตางๆ ทงหมดไวในเมทรกซขนาด n�n ตงชอใหวา Dm กาหนดการ

พลวตบอกเราวาใหเรมหาจาก D1, D2, … จนถง Dv–1 กจะไดคาตอบ (เหตทเราเรมท D1 กเพราะ

Page 210: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

194 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

วา D1 แทจรงแลวกคอเมทรกซประชดทบรรยายเกราฟ G นนเอง) ซงสามารถเขยนรหสเทยมไดในทานองเดยวกบทแสดงในหวขอทแลว แตตองเพมอกวงวนหนง เพราะเราตองหาทกๆ คาในเมทรกซ (แทนทจะเปนเวกเตอรททาในหวขอทแลว ใชเวลาทงสนเปน �(v4) (จะไมเขยนรหสเทยมใหดหรอก เพราะคลายกบทไดนาเสนอในหวขอทแลวมาก ขอใหนกเรยนไปเตมตอกนด)

อลกอรทมการหาวถสนสดระหวางทกคจดทตองการนาเสนอจรงในหวขอน ใชเวลา �(v3) และใชกาหนดการพลวตเชนกน แตมนยามการกาหนดขนาดของปญหาทตางกน และ (แนนอน) มความสมพนธเวยนเกดของการหาความยาวของวถสนสดของปญหาใหญจากคาตอบของปญหายอยทตางกน อลกอรทมทจะกลาวตอไปนเรยกวาอลกอรทมของฟอยด–วอรแชล (Floyd–Warchall algorithm)

ทผานมาเรากาหนดขนาดของปญหาวถสนสดตามจานวนเสนชอมมากทสดทใชประกอบกนเปนวถ คราวนเรานยามขนาดของปญหาวถสนสดตามจานวนจดทไดพจารณาใหเปนจดระหวางทาง กาหนดให dij(k) คอ ความยาวของวถสนสดจากจด i ไปยง j เมอไดพจารณาใหจด 1, 2, …, k เปนจดระหวางทางแลว ดงนนคาตอบทตองการกคอ dij(v) คอเมอไดพจารณาใหทกๆ จดในกราฟมสทธเปนจดระหวางทางแลว ในกรณเลกสด (คอกรณทวถสนสดระหวางจดทไมยอมใหผานจดอนเลย) จะได dij(0) = wij เราสามารถเขยนความสมพนธเวยนเกดของ dij(k) ไดดงน

dij(k) = min( dij(k–1), dik(k–1)+dkj(k–1) )

ความเทหของความสมพนธเวยนเกดขางบนนมนอยตรงท เมอเราพจารณาขนาดของปญหาทใหญขน นนคอพจารณาใหจด k เปนจดผานจดใหมไดในวถสนสดจาก i ไป j นน เราสามารถหาคาตอบไดเวลาคงตวตอคจด เพราะมอยแคสองกรณเทานน คอกรณทจด k จดใหมนไมเปนจดผานของวถทตองการ ซงไดผลเหมอนตอนไมพจารณา k (คอ dij(k–1)) หรอกรณทจด k เปนจดผานของวถสนสด โครงสรางยอยเหมาะทสดของปญหาวถสนสดบอกวาวถจากจด i ถง kและจาก k ถง j กตองสนสดดวยมความยาวเปน dik(k–1)+dkj(k–1)

เราสามารถเกบคาของ dij(k) ตางๆ ทงหมดไวในเมทรกซขนาด n�n ตงชอใหวา Dk เนองจาก

การหาคาของ Dk นนอางองเฉพาะ Dk–1 เทานน ดงนนเรามทเกบแคสองเมทรกซ (โดยท D'[]

แทน Dk และ D[] แทน Dk–1 ) อลกอรทมของฟอยด–วอรแชลเขยนไดดวยรหสเทยมทใชเวลา

�(v3) ขางลางน (ขอแทนกราฟ G ดวยเมทรกซประชด W[1..v, 1..v] )

Page 211: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 195

01: AllPairsShortestPath_DP(W[1..v, 1..v] )02: {03: D[1..v, 1..v] = W[1..v, 1..v]04: for (k=1 to v–1) {05: for (i=1 to v) {06: for (j=1 to v)07: D'[i,j] = min( D[i,j], D[i,k]+D(k,j) )08: }09: D[1..v,1..v]] = D'[1..v,1..v]10: }11: return D[1..n]12: }

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

1

52 3

54

6-2

8

79

7-3

-42

รปท 9–11 ตวอยางการหาวถสนสดระหวางทกคจดในกราฟ

มาดตวอยางการหาความยาวของวถสนสดระหวางทกคจดในกราฟ G ในรปท 9–11 จะไดคาของเมทรกซของ D0, D1, D2, D3, D4 และ D5 ดงน

0 6 � 7 � 0 6 � 7 �

� 0 5 8 –4 � 0 5 8 –4� –2 0 � � � –2 0 � �

� � –3 0 9 � � –3 0 9D0 =

2 � 7 � 0

D1 =

2 8 7 9 0

0 6 11 7 2 0 6 11 7 2� 0 5 8 –4 � 0 5 8 –4� –2 0 6 –6 � –2 0 6 –6� � –3 0 9 � –5 –3 0 –9

D2 =

2 8 7 9 0

D3 =

2 5 7 9 0

0 2 4 7 –2 0 2 4 7 –2� 0 5 8 –4 –2 0 2 5 –4� –2 0 6 –6 –4 –2 0 3 –6� –5 –3 0 –9 –7 –5 –3 0 –9

D4 =

2 4 6 9 0

D5 =

2 4 6 9 0

Page 212: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

196 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

เนองจากกราฟในรปท 9–11 กคอกราฟเดยวกบทใชเปนตวอยางในหวขอทแลวในรปท 9–10ดงนนผลทไดในแถวแรกของเมทรกซ D5 ซงคอความยาวของวถสนสดจากจด 1 ถงจดอนๆ ในกราฟ กตองตรงกบเวกเตอรผลลพธทไดในหวขอทแลว

ลาดบยอยรวมยาวสดกอนจะเขาถงตวปญหาขอนยามอะไรบางอยางกอน กาหนดให X = (x1, x2, …, xm) และ Z = (z1, z2, …, zk) เปนลาดบของขอมลสองลาดบ เราเรยก Z วาเปนลาดบยอย (subsequence) ของ X กเมอมลาดบของจานวนเตม 1� i1< i2<…< ik � m ททาให ji zx

j� สาหรบ j = 1, 2, …, k

หรอจะพดงายๆ กคอวาลาดบยอยของ X กคอลาดบขอมลทเหมอน X แตม (หรอจะไมมกได) ขอมลบางตวใน X หายไป เชน X = (S, O, M, C, H, A, I ) ม (S, H, A, I), (O, M), (C, H, A) และอนๆ อกมากมายเปนลาดบยอย

เราเรยก Z วาเปนลาดบยอยรวม (common subsequence) ของ X และ Y กเมอ Z เปนลาดบยอยของทง X และ Y เชน (S, O, M, C, H, A, I) และ (C, H, U, A, N) มลาดบยอยคอ (C), (H), (A), (C, H), (C, A), (H, A) และ (C, H, A) เปนตน

ปญหาทเราจะมานาเสนอกนในหวขอนกคอปญหาลาดบยอมรวมยาวสด (longest common subsequence) ซงกคอการหาลาดบยอยรวมทยาวสดของสองลาดบทกาหนดให (เรยกสนๆ วา LCS) โดยสงทตองการหาคอ LCS ของ X = (x1, x2, …, xm) และ Y = (y1, y2, …, yn)

เราหา LCS ของ X และ Y ไดดวยวธลย (แตชามาก) โดยแจกแจงลาดบยอยของทง X และ Y และจบคลาดบยอยรวมตวทยาวสด X มลาดบยอยทงหมด 2m และ Y มลาดบยอยทงหมด 2n

เหนชดๆ วาใชเวลาเปนฟงกชนเลขชกาลง ซงยอมรบไมได

ขาวดกคอวา LCS เปนปญหาทมโครงสรางยอยเหมาะทสด กอนอนขอนยามให Xi คอลาดบยอย (x1, x2, …, xi) และให Z = (z1, z2, …, zk) เปน LCS ของ X และ Y (ขอเขยนวา LCS(X, Y)) โครงสรางยอยเหมาะทสดของ LCS แสดงไดดวยการแยกพจารณาเปนสองกรณดงน

1. ถา xm = yn จะไดวา zk = xm และ Zk–1 = LCS (Xm–1 , Yn–1 )

2. ถา xm � yn มสองกรณยอยตองพจารณาคอ

Page 213: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 197

� ถา zk � xm จะไดวา Z = LCS(Xm–1 , Y )

� ถา zk � ym จะไดวา Z = LCS(X , Yn–1 )

(เราสามารถใชขอขดแยงในการพสจนสองกรณขางนวาเปนจรง โดยจะไมขอแสดงใหดในทน) โครงสรางยอยเหมาะทสดขางบนนบอกเราวา ถาตวทายของ X และ Y เหมอนกน LCS(X, Y) กคอ LCS(Xm–1 , Yn–1) ตอทายดวย xm แตถาตวทายตางกน LCS(X, Y) กคอ LCS(Xm–1 , Y ) หรอ LCS(X , Yn–1 ) แลวแตวาตวไหนยาวกวา กาหนดให L(i, j) คอความยาวของ LCS( Xi , Yj ) เราสามารถเขยนความสมพนธเวยนเกดของ L(i, j) ไดดงน

� ���

��

���

����

��

ji

jiyxifjiLjiLyxifjiL

joriifjiL

)1,(),,1(max)1,1(1

000),(

คงจะเหนการซอนเหลอมของปญหายอย ตรงกรณสดทายของจากความสมพนธเวยนเกดน ในขณะทมจานวนปญหายอยทงหมดเพยง �(mn) เทานน เนองจาก 0 � i � m และ 0 � j � n แสดงวานาใชกาหนดพลวตหาคาตอบ

เราอาศยตารางสองมต L[0..m, 0..n] ในการจาคาตอบ L(i, j) ตางๆ การเตมตารางดวยกาหนดการพลวตนน ตองเตมคาตอบของปญหาเลกกอน แลวคอยขยายขนาดไปเรอยๆ L(i, j)หาไดจาก L(i–1, j–1), L(i, j–1) และ L(i–1, j) ดงนนลกษณะการเตมตารางจะเตมจากซายไปขวาและจากบนลงลางดงแสดงในรปท 9–12 เขยนเปนรหสเทยมไดดงน

L[i,j]

L[i-1,j]L[i-1,j-1]

L[i,j-1]

n สดมภ

m แถว

L(m,n)(ก) (ข)รปท 9–12 การอางองและลาดบการเตมคาตอบในตาราง

Page 214: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

198 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

01: LCS_DP( X[1..m], Y[1..n] )02: {03: for (i=1 to m) L[i,0] = 004: for (j=1 to n) L(0,j] = 005: for (i=1 to m)06: for (j=1 to n)07: if ( X[i] == Y[j] )08: L[i,j] = 1 + L[i–1,j–1]09: else10: L[i,j] = max( L[i,j–1], L[i–1, j])11: return L12: }

เพอใหกระชบ เราเรมดวยการเตมกรณ i = 0, และ j = 0 ใหเปนศนยทแถวบน และสดมภซายกอน (บรรทดท 3 และ 4) จากนนจะเรมเตมจากซายไปขวา จากบนลงลาง ดวยวงวนแบบ for สองวงซอนกน เพมเตมคาของ L[i,j] ตามความสมพนธเวยนเกดของ L(i, j)

หลงจากเตมเสรจจะไดความยาวของ LCS(X, Y) เกบไวใน L[m,n] แตยงไมทราบตว LCS ถาอยากรกตองจาไวดวยวา ทบรรทดท 10 นน ตอนทเราไดคา max มานนไดมาจากชองใด จะไดสามารถหาคา LCS ได ซงสามารถเพมเตมไดเปนรหสเทยมขางลางน

01: LCS_DP( X[1..m], Y[1..n] )02: {03: for (i=1 to m) L[i,0] = 004: for (j=1 to n) L(0,j] = 005: for (i=1 to m)06: for (j=1 to n)07: if ( X[i] == Y[j] ) {08: L[i,j] = 1 + L[i–1,j–1]09: prev[i,j] = "�"10: } else {11: L[i,j] = max( L[i,j–1], L[i–1,j] )12: prev[i] = ( L[i–1,j] > L[i,j–1] ) ? "�" : "�"13: }14:15: k = 0; i = m; j = n16: while( i > 0 AND j > 0 ) {17: if ( prev[i,j] == "�" ) tmp[++i] = x[i]18: if ( prev[i,j] == "�" ) { i = i–1; j = j–1 }19: if ( prev[i,j] == "�" ) j = j–120: if ( prev[i,j] == "�" ) i = i–121: }22: return Reverse( tmp[1..i] )23: }

เราเพมบรรทดท 9 และ 12 เพอจาทศทมาของ L[i,j]ตางๆ ไวในตาราง prev ซงมดวยกนสามกรณคอ �, � หรอ �วามาจาก L[i–1,j–1], L[i,j–1], หรอ L[i–1,j] ตามลาดบ สวนบรรทดท 15 ถง 22 เปนการวงตามทศทมาของ L[m,n] โดยดจากตาราง prev เมอใดท prev[i,j] มทศเปน � แสดงวา xi = yj นนหมายความวาพบตวรวมของทงสอง

Page 215: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 199

ลาดบ จงนาไปเกบไวในแถวลาดบ tmp (บรรทดท 17) เมอวงตามทศจนชนขอบตาราง กเปนอนสนสดการหาลาดบยอยรวมยาวสด ซงเกบแบบกลบลาดบในแถวลาดบ tmp แสดงวา LCS(X, Y ) กคอลาดบทไดจากการกลบลาดบขอมลใน tmp (บรรทดท 22)

เวลาการทางานถกาหนดโดยวงวน for สองวงซอนกน (บรรทดท 5 ถง 13) ใชเวลาเปน �(mn)

สาหรบประเดนทางดานเนอทนน เหนไดชดวาเราตองใชสองตาราง ใชเนอทเปน �(mn) ดวย อยากใหนกเรยนลองไปคดกนเองวา ความจรงแลว เราไมจาเปนตองใชตาราง prev กสามารถวงยอนหา LCS(X, Y) เหมอนกน และถาเราอยากรแคความยาวของ LCS(X, Y) เราสามารถหาคาไดโดยใชเนอทเพยง �(n) กพอ

มาดตวอยางกนดกวา กาหนดให X = (ส, ม, ช, า, ย, ส, บ, า, ย, ใ, จ) และ Y = ( ส, ม, ห, ม, า, ย,ป, ว, ด, ก, า, ย ) สามารถหา LCS( X, Y ) ไดตาราง L และ prev (เขยนรวมกน) ดงน

ส ม ช า ย ส บ า ย ใ จ0 0 0 0 0 0 0 0 0 0 0 0

ส 0 1 1 1 1 1 1 1 1 1 1 1ม 0 1 2 2 2 2 2 2 2 2 2 2ห 0 1 2 2 2 2 2 2 2 2 2 2ม 0 1 2 2 2 2 2 2 2 2 2 2า 0 1 2 2 3 3 3 3 3 3 3 3ย 0 1 2 2 3 4 4 4 4 4 4 4ป 0 1 2 2 3 4 4 4 4 4 4 4ว 0 1 2 2 3 4 4 4 4 4 4 4ด 0 1 2 2 3 4 4 4 4 4 4 4ก 0 1 2 2 3 4 4 4 4 4 4 4า 0 1 2 2 3 4 4 4 5 5 5 5ย 0 1 2 2 3 4 4 4 5 6 6 6

ลกศรสดาในตารางคอทศทางเดนจากชอง (m, n) จนชนขอบ เมอพบลกศรเฉยงทใด ตว xm (ซงเทากบ ym) ทตรงกบชองนนจะเปนสวนหนงของลาดบยอยรวมยาวสด จากตวอยางขางบนน เราได (ส, ม, า, ย, า, ย) เปนลาดบยอยรวมยาวสด

Page 216: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

200 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

การคณลกโซเมทรกซกาหนดใหมรายการของเมทรกซ (หรอเรยกวาลกโซเมทรกซ – matrix–chain) A1 , A2 , …, An

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

ถาเราตองการหาผลคณของเมทรกซ A1 ทมขนาด p0�p1 กบเมทรกซ A2 ทมขนาด p1�p2 จะพบวาเวลาในการคณเมทรกซนจะเปน �(p0p1p2) เนองจากมการคณสมาชก (แบบสเกลาร – scalar multiplication) ของเมทรกซทงสองเปนจานวน p0p1p2 ครง และมการบวกอกเปนจานวนหนง(ซงเปนจานวนนอยกวา p0p1p2 ) ดงนนเวลาในการคณเมทรกซ จงถกกาหนดโดยจานวนการคณแบบสเกลาร

สมมตวาเราจะหาผลคณของ A1A2A3 โดยท A1 A2 และ A3 นมขนาด 10�100 100�5 และ 5�50 ตามลาดบ มวธการจดลาดบการคณเมทรกซลกโซนได 2 แบบดงน

� ((A1 A2) A3) วธนเรมดวยการหาผลคณของ (A1 A2) กอน มการคณแบบสเกลารเปนจานวน 10 � 100 � 5 = 5000 ครง ไดเมทรกซขนาด 10�5 จากนนนาผลทไดนไปคณกบ A3 มการคณแบบสเกลารอกจานวน 10 � 5 � 50 = 2500 ครง รวมจานวนการคณแบบสเกลารทงหมดเทากบ 5000+2500 = 7500 ครง กวาจะไดผลลพธ

� (A1 (A2 A3)) วธนเรมดวยการหาผลคณของ (A2 A3) กอน มการคณแบบสเกลารเปนจานวน 100 � 5 � 50 = 25000 ครง ไดเมทรกซขนาด 100�50 จากนนนาผลทไดนไปคณกบ A1 มการคณแบบสเกลารอกจานวน 10 � 100 � 50 = 50000 ครง รวมจานวนการคณแบบสเกลารทงหมดเทากบ 25000+50000 = 75000 ครง กวาจะไดผลลพธ

เหนไดชดเลยวา ลาดบการคณแบบแรกเรวกวาแบบหลง 10 เทา !!! ดงนนปญหาการคณลกโซเมทรกซ กคอการหาวธการใสวงเลบเพอระบลาดบการคณ เพอใหไดวธซงมจานวนการคณแบบสเกลารนอยครงทสด

กอนอนขอกาหนดสญลกษณตางๆ ทจะใชในการนาเสนอดงน

Page 217: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 201

� A1 A2 … An คอลกโซเมทรกซของปญหา� Ai มขนาดเปน pi–1�pi

� Ai..j แทนผลลพธทไดจากการคณลกโซเมทรกซ Ai Ai+1 … Aj ดงนน� Ai..j ตองมขนาดเปน pi–1�pj

� การคณ (Ai..j) (Aj+1..k) ตองใชจานวนการคณแบบสเกลาร pi–1 pj pk ครง� m(i, j) คอจานวนการคณแบบสเกลารทนอยสดในการคณลกโซเมทรกซ Ai Ai+1 … Aj

เราจะเรมดวยการแสดงใหเหนวาปญหานมโครงสรางยอยเหมาะทสด การใสวงเลบกเหมอนการแบงลกโซออกเปนสองสวน ตวอยางเชน (A1A2…Ak)(Ak+1…An) แบงลกโซออกเปนสองสวนทไมเกยวกน การใสวงเลบ (A1A2…Ak)(Ak+1…An) จะเหมาะทสดได กตอเมอเราตองใสวงเลบใหกบ A1A2…Ak และ Ak+1…An ใหเหมาะทสดดวย ซงมจานวนการคณแบบสเกลารเปน

m(1,k) + m(k+1, n) + p0 pk pn

จะเหนไดวาผลรวมนจะนอยสดไดกเมอ m(1,k) และ m(k+1, n) ตองนอยสด ซงกเปนเชนนนเมอการใสวงเลบ A1A2…Ak และ Ak+1…An นนเหมาะทสด

ดงนนเราสามารถหาคาของ m(1, n) โดยการลองแบง (A1A2…An) ทกๆ รปแบบ นนคอแบงเปน (A1)( A2…An), (A1A2)( A3…An), (A1A2A3)( A4…An) , …, (A1…An–1)(An) แลวเลอกกรณทไดคาจานวนการคณแบบสเกลารทนอยสด เขยนเปนความสมพนธเวยนเกดไดดงน

� ���

��

����

��

���

jiifpppjkmkimjiif

jim jkijki

1),1(),(min0

),(

ความสมพนธเวยนเกดขางบนนแสดงใหเหนถงการซอนเหลอมของปญหายอย อกทงจานวนปญหายอยทงหมดทตองหาคาตอบกวาจะพบ m(1, n) (ซงคอคาตอบทตองการ) นนกมจานวนเพยง n(n–1)/2 = �(n2) เทานน จงสบายใจไดวากาหนดพลวตนนเหมาะทจะแกปญหานไดแน

ขนาดของปญหา m(i, j) ระบโดยคาของ j–i+1 ซงคอจานวนเมทรกซในลกโซ กาหนดการพลวตบอกใหเราหาคาตอบของปญหาขนาดเลกกอน แลวคอยขยายไปหาของปญหาทใหญขน โดยการจาคาตอบ ถาเราจองตาราง m[1..n,1..n] เพอจา m(i, j) จะพบวาลาดบการเตมคาตอบในตาราง m จะเปนดงรปท 9–13 (เรมท m[1,1]) แสดงอลกอรทมดวยรหสเทยมไดดงน

Page 218: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

202 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

j

i

m(1,n)

รปท 9–13 ลาดบการเตมคาตอบในตาราง01: MatrixChain_DP( p[0..n] )02: {03: for (i=1 to n) m[i,i] = 004: for (len=2 to n) {05: for (i=1 to n–len+1) {06: j = i+len–107: m[i,j] = �08: for (k=i to j–1) {09: q = m[i,k] + m[k+1,j] + p[i–1]*p[k]*p[j]10: if ( q < m[i,j] ) m[i,j] = q11: }12: }13: }14: return m[1,n]15: }

วงวน for นอกสดคอยกากบขนาดของปญหา เรมจากขนาด 2 ไปจนถง n วงวนถดเขาไปเปนตวกาหนดคาของ i และวงวนในสดนนวนหาคานอยสดตามความสมพนธเวยนเกดของ m(i, j)

รหสเทยมขางบนนใหเราแตจานวนการคณแบบสเกลารทนอยสดในการคณลกโซเมทรกซทกาหนดให ถาเราตองการทงหาวธการใสวงเลบเหมาะทสด และหาผลคณลกโซใหเลย กสามารถจะเขยนไดดวยรหสเทยมขางลางน

01: MatrixChain_DP( p[0..n] )02: {03: for (i=1 to n) m[i,i] = 004: for (len=2 to n) {05: for (i=1 to n–len+1) {06: j = i+len–107: m[i,j] = �08: for (k=i to j–1) {09: q = m[i,k] + m[k+1,j] + p[i–1]*p[k]*p[j]10: if ( q < m[i,j] ) {11: m[i,j] = q12: s[i,j] = k13: }14: }15: }16: }17: return MatrixChain_Mult( A[1..n], s[1..n,1..n] )18: }

Page 219: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 203

01: MatrixChain_Mult( A[i..j], s[1.n,1..n] )02: {03: if ( i == j ) return A[i]04: k = s[i,j]05: X = MatrixChain_Mult( A[ i, k ], s[1..n,1..n])06: Y = MatrixChain_Mult( A[ k+1, j ], s[1..n,1..n])07: return Matrix_Mult( X, Y )08: }

การใสวงเลบทเหมาะทสดของลกโซเมทรกซหาไดโดยจาคาของ k ททาใหไดคานอยสดของ m(i, j) (บรรทดท 12) เกบใสตาราง s เมอเตมตารางเสรจกหาผลคณไดเลย โดยอาศยMatrixChain_Mult ซงเปนโปรแกรมเวยนเกด ทรบ A[i..j] ซงเปนแถวลาดบของลกโซเมทรกซ Ai Ai+1 … Aj หาผลคณของลกโซเมทรกซ Ai Ai+1…Ak (บรรทดท 5) และผลคณของลกโซเมทรกซ Ak+1Ak+2…Aj (บรรทดท 6) โดยท k คอตาแหนงทเหมาะทสดทจาไวตอนเตมตาราง จากนนนาผลคณทงสองทไดมาคณกนไดเปนผลลพธ (บรรทดท 7)

มาดกนสกหนงตวอยาง ตองการหาวธการคณลกโซเมทรกซเหมาะทสดของ A1A2A3A4A5A6

โดยทเมทรกซทงหกมขนาดเปน 30�20, 20�10, 10�5, 5�5, 5�10 และ 10�40 เรยงตามลาดบ (ดงนนแถวลาดบ p[0..6] เกบขอมล (30,20,10,5,5,10,40) ) อลกอรทม MatrixChain_DPจะเตมตาราง m และ s ไดดงแสดงขางลางน

1 2 3 4 5 61 0 6000 4000 4250 5750 122502 0 0 1000 1250 2250 72503 0 0 0 250 750 4250m4 0 0 0 0 250 22505 0 0 0 0 0 20006 0 0 0 0 0 0

1 2 3 4 5 61 0 1 1 1 3 32 0 0 2 2 3 33 0 0 0 3 3 3s4 0 0 0 0 4 55 0 0 0 0 0 56 0 0 0 0 0 0

การใสวงเลบเหมาะทสดหาไดจากตาราง s เปนดงนs[1,6] = 3 ได (A1 A2 A3 )(A4 A5 A6)s[1,3] = 2 ได ((A1 )( A2 A3 ))(A4 A5 A6)s[4,6] = 5 ได ((A1 )( A2 A3 ))((A4 A5 )(A6))

Page 220: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

204 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

ลองตรวจทานจานวนการคณแบบสเกลารของ การใสวงเลบลกโซเมทรกซแบบนไดดงตารางขางลางน

การคณเมทรกซ จานวนการคแบบสเกลาร ขนาดของเมทรกซทได(A2 A3) 20�10�5 = 1000 20�5

((A1)( A2 A3 )) 30�20�5 = 3000 30�5(A4 A5 ) 5�5�10 = 250 5�10

((A4 A5 )(A6)) 5�10�40 = 2000 5�40((A1 )( A2 A3 ))((A4 A5 )(A6)) 30�5�40 = 6000 30�40

เทากบ 1000+3000+250+2000+6000 = 12250 ตรงกบ m[1,6] ทแสดงไวในตารางผลลพธ

แบบฝกหด1. จากความรเกยวกบความสมพนธเวยนเกดของสมประสทธทวนามวา C(n, k) = C(n–1, k) +

C(n–1, k–1) โดยท C(n,n) = 1 และ C(n,0) = 1 จงเขยนโปรแกรมเพอหคาของ C(n,k) ดวย

ก) โปรแกรมแบบเวยนเกดข) โปรแกรมแบบเวยนเกดทมการจาคาตอบค) กาหนดการพลวต

2. จงออกแบบอลกอรทมแบบกาหนดการพลวต (พรอมทงวเคราะหเวลาการทางานดวย) เพอแกปญหา 0/1 knapsack ทไดนาเสนอในตวอยางท 9-1 หนาท 170

3. จงออกแบบอลกอรทมแบบกาหนดการพลวตซงใชเวลาเปน O(kn2) เพอแกปญหา linear partition ทไดนาเสนอในตวอยางท 9-2 หนาท 170

4. จงออกแบบอลกอรทมแบบกาหนดการพลวตซงใชเวลาเปน O(n2) เพอแกปญหา printing neatly ทไดนาเสนอในตวอยางท 9-3 หนาท 171

5. เราไดนยามปญหา longest increasing subsequence ในตวอยางท 9-5 หนาท 175 พรอมทงไดนาเสนออลกอรทมซงใชเวลา O(n2) จงออกแบบอลกอรทมแบบกาหนดการพลวตทใชเวลา O(n log n) เพอแกปญหาน

Page 221: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 205

6. คณตองการลองแพในแมนาสายหนง ทมพอคาเปดบรการจดเชาและคนแพเปนจานวน nจด (1,2,..., n) ตลอดแมนาสายน คณสามารถเชาและคนแพทจดใดกได กาหนดให Ci,j คอคาเชาแพทเรมเชาทจด i และคนแพทจด j ใหสงเกตวาคาเชาแพจากจด i ไป j อาจแพงกวาคาเชารวมของการเชาเปนระยะทางชวงสนๆหลายๆชวงจาก i ไป j กเปนได ( เชน C2,6 อาจแพงกวา C2,4 + C4,5 + C5,6 ) จงออกแบบอลกอรทมททางานเปนเวลา O(n3) เพอหาคาเชารวมทนอยสดในการลองแพในแมนาสายนจากจด 1 ถง n (ใหสมมตวา 1. กระแสนาไหลตามทศทางจากจด i ไป j เมอ i < j 2. ลองแพสวนกระแสนาไมได และ 3. นอกจากคาเชาแลว พอคาไมคดคาใชจายใดๆ เพมเตมเมอมการเปลยนแพ )

7. กาหนดให A[1..n] คอแถวลาดบของจานวนจรงจานวน n ตว (เปนเลขลบกได) นยามใหลาดบยอยทตดกน (consecutive subsequence) ของ A คอรายการของขอมล A[i], A[i+1], ..., A[i+k] จงออกแบบอลกอรทมแบบกาหนดการพลวตเพอหาคาของลาดบยอยทตดกนทมผลรวมมากสดในเวลา O(n) ตวอยางเชนลาดบยอยทตดกนทมผลรวมมากสดของ (31, –41, 59, 26, –53, 58, 97, –93, –23, 84) คอ (59, 26, –53, 58, 97) ซงมผลรวมเทากบ 187

8. กาหนดใหมการใชเหรยญแบบ 1, 4, 13, 21 เซนตในประเทศหนง ปญหาการแลกเหรยญคอปญหาในการหาวธการการแลกเหรยญโดยใชจานวนเหรยญทนอยสด เพอใหไดมลคารวมเทากบจานวนเงนทกาหนดให (ใหสมมตวาเรามเหรยญแตละแบบจานวนมากๆ) จงเสนออลกอรทมแบบกาหนดการพลวตเพอแกปญหาน (พรอมทงวเคราะหเวลาการทางานดวย)

9. ในการคนขอมลโดยท วไปนนเราตองการขอมลทตรงกบทตองการจรงๆ ถาเปนสตรงกตองทกตวอกษร แตในทางปฏบตนนบางทเราชอบทจะทาแบบประมาณ นนเองยอมใหมขอผดพลาดเกดขนไดบาง ซงอาจเกดจากมตวอกษรตกหลนไป หรอเกนมา หรอตางกน หรอตวตดกนสลบทกน เปนตน ถาเรากาหนดตนทนของขอผดพลาดตางๆ ขนมา กสามารถใชเปนตววดความแตกตางของสตรงสองสตรงไดวาเหมอนหรอตางเพยงใด เราเรยกตนทนรวมของความแตกตางนวาระยะทางของการแกไข (edit distance) ของสตรงสองสตรง (นนคอมองวาจะเปลยนสตรงหนงไปเปนอกสตรงหนงตองใชตนทนเทาไร) สงทตองการหาคอระยะทางของารแกไขทนอยสด ทงนกเพราะวาการเปลยนแปลงนนอาจกระทาไดหลายรปแบบ ซงมตนทนตางกน จงออกแบบอลอรทมแบบกาหนดการพลวตซงใชเวลา O( nm ) ในการคานวณหาระยะทางการแกไขทนอยสดของสตรง X และ Y โดย

Page 222: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

206 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

กาหนดให cINS, cDEL, cCHNG เปนตนทนในการเพม, การลบ และการเปลยนตวอกษรในสตรง X (เพอจะไดเหมอน Y) ตามลาดบ

10. ในภาษาทสนบสนนการประมวลผลสตรง (string processing) โดยทวไปนน จะมคาสงพนฐานในการแบงแยกสตรงหนงออกเปนสองสตรงยอย ซงใชเวลาแปรตามความยาวของสตรง (เนองจากตองมการทาสาเนาสตรง) สมมตวาเราตองการแยกสตรงทกาหนดให ออกเปนหลายๆ สตรงยอย ลาดบในการแยกจะมผลตอเวลารวมในการแยกทงหมด ตวอยางเชน (ดรปขางลางน) การแยกสตรงทมยาว 20 ตวออกเปนสตรงยอยๆ ทตาแหนง 3, 8 และ 10 จะใชเวลาตางกน ถาเราแยกตามลาดบจากซายไปขวา (ใชเวลา 20+17+12=49) กบถาเราแยกตามลาดบจากขวาไปซาย (ใชเวลา 20+10+8 = 38) จงออกแบบอลกอรทมแบบกาหนดการพลวตสาหรบปญหาในแยกสตรงดงกลาวดวยวธดทสด โดยใชเวลาเปน O(n3) n คอความยาวของสตรง

THISISASTRINGOFCHARS THISISASTRINGOFCHARS

SISASTRINGOFCHARS THISISASTR

TRINGOFCHARS THISISAS

ซายไปขวา ขวาไปซาย

11. ในตลาดการซอขายเงนสกลตางๆในปจจบนน เราสามารถหากาไรไดจากความแตกตางของอตราการแลกเปลยนเงน ตวอยางเชน ณ ขณะใดขณะหนงถาอตราการแลกเปลยนเงนเปนดงน 1 US dollars แลกได 0.75 pounds 1 pound แลกได 2 Australian dollars 1 Australian dollar แลกได 0.70 US dollars เรากสามารถซอขายเงนดวยเงน 1 US dollar แลวไดกลบคนมาเปน 0.75 x 2 x 0.7 = 1.05 US dollars ได

กาหนดใหวามเงนสกลตางๆ n สกล c1, c2, c3, ..., cn และตารางขนาด n � n ซงระบอตราการแลกเปลยน (นนคอเงนสกล ci หนวยซอเงนสกล cj ได R[i, j] ) จงออกแบบอลกอรทม(พรอมทงวเคราะหเวลาการทางานดวย) แบบกาหนดการพลวตเพอหาคามากสดของ

R[1, i1] � R[i1, i2] � ... � R[ik–1, ik] � R[ik, 1]

12. Traveling salesperson problem : กาหนดให G คอกราฟถวงนาหนก เราตองการหาวงจรในกราฟนซงผานทกๆ จดในกราฟจดละหนงครงโดยความยาวรวมของเสนเชอมบนวงจร

Page 223: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:25 : [email protected] บทท 9 กาหนดการพลวต 207

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

13. Bitonic euclidean traveling–salesman problem : ปญหานคลายกบขอทแลว แตเราสนใจเฉพาะกรณเมอความยาวของเสนเชอมระหวางจดสองจดใดๆ คอระยะทางระหวางจดนนบนระนาบแบบยคลด (Euclidean plane) ซงหมายความวาความยาวของเสนเชอมตางๆ ทเชอมเมองสามเมองใดๆ ตองเปนไปตามอสมการของความยาวดานของสามเหลยม (triangle inequality) นนคอผลรวมของความยาวดานสองดานใดๆ ตองไมนอยกวาดานทสาม (ซงระยะทางของเมองตางๆ บนระนาบแบบยคลดมคณสมบตขอน) นอกจากนยงมเงอนไขเพมเตมวาวงจรตองเปนแบบ bitonic นนคอใหวงจรเรมทจดซายสดจากนนไปทางขวาเรอยๆ จนถงจดขวาสด แลวจงเรมเปลยนทศมาทางซายเรอยๆ จนถงจดเรมตนเดม รปซายขางลางนไมใชวงจรแบบ bitonic ในขณะทรปขวาเปนวงจรแบบ bitonic

จงออกแบบอลกอรทมทใชเวลา O(n2) ในการเดนทางของพนกงานแบบ bitonic บนระนาบแบบยคลค (สมมตใหทกๆ จดมพกดในแนวแกน x ไมเหมอนกนเลย)

Page 224: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

208 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:25 : [email protected]

Page 225: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] 209

บทท 10

ในบททแลว เราไดศกษากลวธกาหนดการพลวตเพอหาผลเฉลยเหมาะทสดของปญหาหนง ซงหาไดมาจากลาดบของการตดสนใจ โดยทการตดสนใจหนงๆ นนตงอยบนผลเฉลยตางๆ ทไดจากปญหาทมขนาดเลกกวา (นนคอตองหาผลเฉลยเหมาะทสดของปญหาขนาดเลกๆ มากอนเพอใชหาผลเฉลยเหมาะทสดของปญหาทใหญกวา) ในบทนเราจะมาศกษากลวธการแกไขปญหาอกแบบหนงซงใชกบปญหาการหาคาเหมาะทสด โดยทผลเฉลยของปญหาหาไดจากลาดบของการตดสนใจเชนเดยวกบกาหนดการพลวต แตวาเราตดสนใจโดยใชเกณฑทใหผลเหมาะทสดจากสภาพของปญหา ณ ขณะนน ไดเปนผลเฉลยบางสวน แลวคอยลดขนาดของปญหาลงเพอไปตดสนใจตอ เพอไดผลเฉลยบางสวนทมขนาดใหญขนดวยวธการเดยวกน กระทาเชนนไปเรอยๆ จนไดผลเฉลยทสมบรณ อลกอรทมซงทางานในลกษณะนเรยกวาอลกอรทมแบบตระกลาม (greedy algorithm)

ใหลองหวนกลบนกถงปญหาตนไมคนแบบทวภาคเหมาะทสด ซงไดนาเสนอมาในบททแลว กาหนดการพลวตนนหาผลเฉลยของตนไมเลกๆ กอน แลวคอยๆ โตขนๆ จนเปนตนไมทมขอมลครบตามตองการ ตนไมใหญทเหมาะทสดกไดมาจากการพจารณาตนไมตนเลกกวาทเหมาะทสดจานวนหนง แตถาเราใชอลกอรทมแบบตระกลาม จะมการพจารณาขอมลทงหมดแลวตดสนใจเลอกขอมลมาหนงตวใหเปนรากของตนไม โดยใชเกณฑการตดสนใจทเหมาะทสดอะไรบางอยาง เชนเลอกขอมลทมความถสงสดใหเปนรากของตนไม เปนตน จากนนจงไปหาตนไมเหมาะทสดตนเลกลง ทางซายและขวาของรากทเลอก โดยใชเกณฑการตดสนใจเดยวกนในการเลอกขอมลมาเปนรากจากชดขอมลทมขนาดเลกลง รปท 10–1 แสดงขนตอนการเตบโตของตนไมทสรางโดยใชเกณฑการเลอกขอมลทมความถสงสดในชดขอมลเปนราก เราใชชดขอมลเดยวกบในตวอยางทไดนาเสนอในบททแลว จากขอมลทงชดเราเลอก “พ” (รป (ก)) เปนราก

อลกอรทมแบบตระกลาม

Page 226: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

210 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

เพราะมความถสงสด จากนนไปสรางตนทางซายซงประกอบดวยขอมลทเหลอทมคานอยกวา“พ” ได “ชนจง” เปนรากของตนไมยอยทางซาย (รป (ข)) เพราะมความถสงสดในกลม เนองจากไมมขอมลทนอยกวา “ชนจง” กไปพจารณากลมขอมลของตนไมทางขวาของ “ชนจง” ได “ทกเกอร” ทมความถสงสดในกลมเปนราก (รป (ค)) กระทาในลกษณะเชนนสาหรบตนไมยอยอนๆ ทเหลอทงหมด กจะไดผลลพธสดทายเปนตนไมในรป (ช)

ขอมล ความถในการอางองพ 25%ชนจง 22%ทกเกอร 20%ดบซ 18%ลาลา 8%ทงกวงก 5%โพ 2%

ลาลาชนจง

ทกเกอร

ดบซ ทงกวงก

โพ

ชนจง

ชนจง

ทกเกอร

ชนจง

ทกเกอร

ดบซ

ชนจง

ทกเกอร

ดบซ ทงกวงก

ลาลาชนจง

ทกเกอร

ดบซ ทงกวงก

(ก) (ข) (ค) (ง)

(จ) (ฉ) (ช)รปท 10–1 การสรางตนไมคนแบบทวภาคแบบตระกลาม

ลกษณะการทางานทอาศยเกณฑอะไรบางอยาง เพอเลอกขยายผลเฉลยในลกษณะทเหมาะทสดเทาทจะทาไดตามสภาพของปญหาปจจบนนนเปนทมาของคาวา "ตระกลาม" คอจะเลอกตดสน

Page 227: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 211

ใจในทางทใหผลทดทสดในขณะปจจบนเปนพอ ไมตองไปเผออะไรในอนาคต พฤตกรรมตระกลามเชนนมขอดตรงทวาสามารถแกไขปญหาไดรวดเรว ขอเสยกคอมนไมแนเสมอไปทจะไดผลเฉลยเหมาะทสด (รปท 10–1 (ช) ไมใชตนไมคนแบบทวภาคเหมาะทสดทหาไดในบททแลว) แตกมอยหลายปญหาทเดยวทใชอลกอรทมแบบตระกลามเพอหาผลเฉลยเหมาะทสดได

ในบทนเราจะนาเสนอตวอยางของปญหาจานวนหนง พรอมทงอลกอรทมแบบตระกลามทแกไขปญหาเหลานน พรอมกบศกษาลกษณะเฉพาะสองประการของปญหา ซงสามารถใชอลกอรทมแบบตระกลามหาผลเฉลยเหมาะทสดของปญหาเหลานนได

ปญหา Knapsackกาหนดใหมของขายอย n ชนแตละชนมหมายเลขกบ 1, 2, ..., n ของชนท i มนาหนก wi และมมลคา vi ลกคาคนหนงไดรบเลอกใหหยบของชนใดกไดใสถงใบหนงซงรบนาหนกไดไมเกน W อยากทราบวาควรเลอกหยบชนใดบางถง ถงจะไดมลคารวมสงสด โดยเราสามารถเฉอนแบงของทขายออกเปนสดสวนไดตามตองการ โดยมลคาและนาหนกของของชนนนแปรตามสดสวนทแบงออกมา ปญหานมชอเรยกวา fractional knapsack problem

จะวาไปแลวเราเคยนาเสนอปญหาทคลายกบปญหานในบททแลว (แตไมไดบอกวธแกไข) เพยงแตวาคราวนเรายอมใหเฉอนของออกไดตามสดสวนทตองการ กาหนดให xi คอสดสวนของของชนท i ทหยบใสถง 0� xi � 1, i =1, 2, ..., n ถา xi = 0 แสดงวาไมไดเลอกของชนท i ถา xi = 1 แสดงวาเลอกของชนท i ทงชน ถา xi = 0.25 แสดงวาเลอกของชนท i โดยเฉอนมา ¼ ชน ดงนนเราตองหาคาของ (x1, x2, ..., xn) ทม

��

n

iii xv

1มากทสด

โดยท

Wwxn

iii ��

�1 และ 0�xi� 1

สงทตองคานงถงในการแกปญหาดวยอลกอรทมแบบตระกลามกคอวา ในแตละขนตอนของการตดสนใจนน เราจะนาอะไรมาเปนเกณฑ การทางานจะเปนในลกษณะของวงวนของการตด

Page 228: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

212 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

สนใจเพอเลอกและขยายผลเฉลยไปเรอยๆ จนไดผลเฉลยทสมบรณ สาหรบปญหานจะขอเสนอเกณฑ “ความตระกลาม” ในการเลอกดงน

1. เลอกของทมมลคาสงสด แบบนเหนชดวาตระกลามจรงๆ เพราะไมสนใจวาหนกแคไหน เอาแพงไวกอน

2. เลอกของทมนาหนกนอยสด แบบนมความตระกลามในเชงจานวนชน อยากไดจานวนชนมากๆ จงเลอกเบาๆ ไวกอน

3. เลอกของทมมลคาตอนาหนกสงสด แบบนคดรอบคอบหนอย เอาแพงๆ เบาๆ ไวกอน

เราจะหยบของตามเกณฑทใช โดยจะหยบทงชนเลยถาหยบได ในกรณทหยบทงชนไมได กจะเฉอนของชนนนใหพอดกบทถงนนจได เราจะรวาวธใดเปนวธทไดผลเฉลยเหมาะทสด กคงตองใชการพสจนใหเหนจรง แตกอนอนขอยกตวอยางมาทดลองทากนดกอนวาวธใดดทสด สมมตวามถงรบนาหนกได 100 มของอย 5 ชนมนาหนก มลคา และมลคาตอนาหนกแสดงขางลางน

1 2 3 4 5vi 20 30 66 40 60wi 10 20 30 40 50vi / wi 2.0 1.5 2.2 1.0 1.2

ถาใชแบบท 1 (เลอกของแพงกอน) กจะเลอกชนท 3 ตามดวยชนท 5 แลวกชนท 4 แตเฉอนมาไดแคครงชนกเตมถง ไดมลคารวมเปน 66+60+20 = 146

ถาใชแบบท 2 (เลอกของเบากอน) กจะเลอกชน 1 ตามดวยชน 2, 3, และ 4 บรรจไดพอดเตมถง ไดมลคารวมเปน 20+30+66+40 = 156

ถาใชแบบท 3 (เลอกของมลคาตอนาหนกทสงๆ กอน) กจะเลอกชนท 3 ตามดวยชนท 1 แลวกชนท 2 และจบดวยชนท 5 ซงเฉอนมาได 80% กเตมถง ไดมลคารวมเปน 66+20+30+48 = 164

จากตวอยางขางบนน เราไดแบบท 3 เปนวธทใหผลเฉลยทมมลคารวมสงทสด เราจะมาพสจนกนวาดวยการใชมลคาตอนาหนกเปนเกณฑในการเลอกของแบบตระกลาม จะไดผลเฉลยทใหมลคารวมสงสด

สงทจะตองพสจนมสองประเดนคอ

Page 229: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 213

1. ตองแสดงใหเหนวาของทเลอกมาแบบตระกลามนน เปนของชนหนงในผลเฉลยเหมาะทสด และทาใหปญหาทแกไขอยมขนาดเลกลงโดยมลกษณะของปญหาเหมอนเดม

2. ตองแสดงใหเหนวาเมอเราเลอกของทมมลคาสงสดของปญหายอยมา แลวรวมกบของทไดเลอกไปตอนแรก จะตองไดการเลอกทมมลคาสงสดของทงปญหาดวย

ขอพสจนประเดนแรกกอน กาหนดให XOPT = (x1, x2, ..., xn) โดยท 0�xi� 1 คอผลเฉลยเหมาะทสด และ m คอของชนทม vm/wm สงสด การเลอกแบบตระกลามยอมเลอกชน mไดหนก w = min( wm, W ) ถาเราหยบหรอเฉอนของออกจาก XOPT อยางไรกไดใหมนาหนกรวมเทากบ w (เราบรรยายสวนทหยบหรอเฉอนออกจาก XOPT ดงกลาวดวย Y = (y1, y2, …, yn) โดยท 0� yi� xi

และ wwyni ii ���1

) แลวเตมชนท m ซงมนาหนก w ลงไปแทน (ซงมมลคา w vm/wm ) จะไดวาผลตางของมลคาหลงการกระทาเชนนจะเปน

01

11

11

��

��

���

����

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

��

n

i i

i

m

mii

n

i i

iii

m

mn

iii

n

i i

iii

m

mn

iii

m

m

wv

wv

wy

wv

wywv

wy

wv

wywv

wvywv

w

(เพราะวา vm/wm นนไมนอยกวา vi/wi สาหรบทกๆ i ) ดงนนเมอนาชนท m ไปแทนจะไมทาใหมลคารวมลดลง สรปไดวามวธเลอกทดทสดซงเรมดวยการเลอกของทมมลคาตอนาหนกสงสดกอน และหลงจากทเราเลอกชนท m นแลว ปญหา knapsack เดมกถกลดขนาดเหลอการพจารณาของแค n–1 ชน (n ชนเดม แตตดชนท m ออก) และถงมความจลดลงเหลอ W–wm �

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

กาหนดให X = (x1, x2, ..., xn) โดยท 0�xi�1 คอผลเฉลยเหมาะทสดของปญหา knapsack P ซงมมลคารวมเปน �

ni ii vxV

1 ถาเราเฉอนของชนท j จากปญหา P ออกมาใหหนก w โดยท xj

> 0 และ 0 < w � xjwj (ทเฉอนออกมานมมลคา wvj/wj) ไดเปนปญหาใหม P* (ถอไดวาเลกกวา

Page 230: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

214 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

P) คอมของ n ชนเหมอนปญหาเดม ตางกนตรงทของชนท j มขนาดเลกลงคอมนาหนกเพยง wj–w (มลคากตองลดลงตามสดสวนดวย) และถงรบนาหนกได W–w เหนไดวาผลเฉลยเหมาะทสดของ P* ตองมมลคารวมเปน V* = V – wvj/wj เพราะถา P* มผลเฉลยซงมมลคารวมมากกวา V* เรากยอมหาผลเฉลยเหมาะทสดของ P ไดโดยนาของชน j ทเฉอนไวกอนหนานใสกลบเขาไปในถง แลวไดของมลคารวมมากกวา V เกดขอขดแยงกบขอกาหนดทบอกวา X เปนผลเฉลยเหมาะทสด แสดงวาปญหา knapsack มโครงสรางยอยเหมาะทสด �

ดงนนอลกอรทมแบบตระกลามทแกปญหา fractional knapsack จะเรมดวยการเรยงลาดบสงของตามมลคาตอนาหนกจากมากไปนอย จากนนกเขาวงวนเลอกแบบตระกลามจนกระทงถงจไดตามนาหนกทรบได เขยนเปนรหสเทยมไดดงน01: Greedy_FractionalKnapsack( obj[1..n], W )02: {03: sort obj[1..n] by obj[i].v/obj[i].w (nonincreasing)04: for(i=1 to n) obj[i].x = 005: i = 0; sumW = 006: while ( i <= N AND sumW < W ) {07: obj[i].x = min( 1, (W–sumW) / obj[i].w )08: sumW = sumW + min( obj[i].w, (W–sumW) )09: ++i;10: }11: return obj12: }

อลกอรทมนรบ obj ซงเปนแถวลาดบของสงของ n ชน ชนท i มนาหนกเปน obj[i].w และมลคา เปน obj[i].v ผลเฉลยทหาไดเกบไวใน obj[i].x บรรทดท 3 เปนการเรยงลาดบขอมลใชเวลา O(n log n) บรรทดท 4 ใชเวลา �(n) วงวนแบบ while ในบรรทดท 6 ถง 10 ใชเวลา O(n) สรปแลวใชเวลาทงสนแปรตามการเรยงลาดบขอมลเปน O(n log n)

ทผานมาเราไดแสดงใหเหนวาผลเฉลยเหมาะทสดของปญหา fractional knapsack หาไดโดยการเลอกแบบตระกลาม ซงเลอกของทมมลคาตอนาหนกสงสดใหมากทสดกอน แตสาหรบปญหา 0/1 knapsack ซงมขอจากดวาเราไมสามารถเฉอนของออกเปนสวนๆ ได (คอจะเลอกกเลอกทงชน มฉะนนกไมตองเลอก นนคอ xi = 0 หรอ 1) นน เราไมสามารถหาผลเฉลยเหมาะทสดไดดวยการเลอกแบบตระกลาม ถงแมวาเราจะพสจนไดวา 0/1 knapsack มโครงสรางยอยเหมาะทสด (ลองไปคดด) แตเราไมสามารถพสจนไดวาของทมมลคาตอนาหนกมากสดทงชนจะตองเปนหนงในผลเฉลยเหมาะทสด ขอใหนกเรยนลองทอสอบดวยตวเองไดจากตวอยางดงน กาหนดใหมของ 3 ชน w1 = 1 w2 = 2 w3 = 3 v1 = 6 v2 = 10 v3 = 12 และ W = 5

Page 231: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 215

ลกษณะเฉพาะของปญหาจากปญหา knapsack ทไดนาเสนอมานน จะสงเกตวาตวปญหานมลกษณะเฉพาะทเหมาะกบการใชอลกอรทมแบบตระกลามสองประการคอ ตองมลกษณะเฉพาะในการเลอกแบบตระกลาม (greedy–choice property) และตองมโครงสรางยอยเหมาะทสด (optimal substructure)

การเลอกแบบตระกลามนนเปนลกษณะเฉพาะซงบอกเราวา สงทไดจากการเลอกแบบตระกลามซงคอการเลอกเหมาะทสดตามสถาพทมใหพจารณาในปจจบน (locally optimal choice) นน ตองเปนสวนหนงของผลเฉลยเหมาะทสดของทงปญหา (globally optimal solution) ใหสงเกตวาในขณะทกาหนดการพลวตใชผลเฉลยเหมาะทสดของปญหายอย และฟงกชนจดประสงคของปญหาเปนตวตดสน อลกอรทมแบบตระกลามนนอาศยสภาพปจจบนของตวปญหา (หรอใชผลทไดจากการตดสนใจไวในอดต) เปนเกณฑในการตดสนใจ แตจะไมไดอาศยผลเฉลยเหมาะทสดอะไรเลยจากปญหายอยทจะตองแก (ซงคอการตดสนใจใดๆ ในอนาคต) และโดยทวไปกไมไดใชฟงกชนจดประสงคของปญหาดวย ดงนนจงมกไมเหนเดนชดวาจะไดผลเฉลยเหมาะทสดไดอยางไรดวยการเลอกแบบตระกลาม ตวอยางเชนปญหา fractional knapsack อาศยการเลอกของทมมลคาตอนาหนกสงสดซงเปนลกษณะสมบตของสงของตางๆ ทเราสกดมาไดจากขอมลในปจจบน (ของชนใดถกเลอกไวแลวกไมนามาพจารณา) ซงไมใชปจจยทแสดงในฟงกชนจดประสงคเลย ดงนนจงจาเปนอยางยงทตองพสจนวา เกณฑการเลอกแบบตระกลามทใชนนจะเปนสวนของผลเฉลยเหมาะทสด การพสจนนนโดยทวไปแสดงใหเหนวา ผลเฉลยเหมาะทสดของปญหานนตองมผลทไดจากการเลอกแบบตระกลาม หรอถาไมม กตองสามารถแปลงไปสผลเฉลยอนทเหมาะทสดเหมอนกนซงมผลทไดจากการเลอกแบบตระกลามดวย จากนนแสดงใหเหนวาหลงจากเลอกแลว จะไดปญหาในลกษณะเดมทมขนาดเลกลง

ผลทไดหลงการเลอกแบบตระกลามนนคอไดปญหาทมขนาดเลกลง การนาสงทไดเลอกแบบตระกลามไว รวมเขากบผลเฉลยเหมาะทสดของปญหายอยทจะตองหา แลวไดเปนผลเฉลยเหมาะทสดของทงปญหาไดนนกเมอตวปญหามโครงยอยเหมาะทสด ลกษณะเฉพาะนเปนสงจาเปนทตองมเชนเดยวกบการใชกาหนดการพลวตในการหาผลเฉลยเหมาะทสด นนคอผลเฉลยเหมาะทสดของปญหานนประกอบไปดวยผลเฉลยเหมาะทสดของปญหายอยๆ

Page 232: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

216 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

ปญหาการเลอกกจกรรมกาหนดให A = {a1, a2, ..., an} คอเซตของการประชมตางๆ ทมผทาเรองขอใชหองประชมหองหนง การประชมท ai มกาหนดการใชหองประชมตงแตเวลา si ถง fi โดยท si � fi เปนไปไดวาอาจมการขอใชหองประชมหองนในเวลาซอนเหลอมกนซงคงจดใหไมได ปญหาทรอใหแกไขกคอ จะอนมตใหการประชมใดบางทมสทธใชหองประชมหองน เพอใหไดจานวนการประชมมากทสด และไมมการประชมทใชเวลาซอนเหลอมกน เราเรยกปญหาทเราตองเลอกกจกรรมทมการใชทรพยากรรวมกนในลกษณะนวาปญหาการเลอกกจกรรม (activity–selection problem)

ตวอยางเชนมอย 6 กจกรรมทมกาหนดการใชทรพยากรเดยวกนดงรปท 10–2 ลองคดสกครกจะไดวา {จ, ง}, {จ, ฉ}, {ข, ง} และ {ข, ฉ} เปนเซตของกจกรรมทมขนาดใหญสดทเลอกได

ai ก ข ค ง จ ฉsi 0 3 3 5 1 5fi 6 5 8 9 4 7

0 5 10

ขค

งจ

ฉรปท 10–2 ตวอยางปญหาการเลอกกจกรรม

การทางานของอลกอรทมแบบตระกลามเพอหาผลเฉลยของปญหาน กคงตองมการเลอกกจกรรมในแตละรอบของการทางาน แลวเราจะเลอกกจกรรมใด ? ขอเสนอใหเลอกกจกรรมซงม เวลาสนสดของการใชทรพยากร ( fi ) นอยทสดทไมซอนเหลอมกบกจกรรมทไดเลอกไว

เราเรมดวยการเรยงลาดบกจกรรมตางๆ ตามเวลาสนสดของการใชทรพยากร (จากนอยไปมาก) จากนนเลอกกจกรรมแรกสด แลวเขาวงวนเพอเลอกกจกรรมถดไป ทไมซอนเหลอมกบกจกรรมลาสดทเพงเลอก จากตวอยางขางบนนหลงเรยงลาดบแลวจะไดดงรปท 10–3 เรมดวยการเลอกกจกรรม จ หลงนนพจารณากจกรรม ข พบวาซอนเหลอมกบ จ (จงไมเลอก ข) ตอไปพจารณากจกรรม ก กพบวาซอนเหลอมกบ จ อก (กไมเลอกอก) พอพจารณากจกรรม ฉ คราวนไมซอนเหลอมกบ จ กเลยเลอก ฉ กระทาเชนนตอไปพบวาเลอก ค และ ง ไมได จบการทางานไดผลเฉลยคอ S = {จ, ฉ} เขยนไดเปนรหสเทยมดงน

Page 233: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 217

01: Greedy_Activity_Select( a[1..n] )02: {03: sort a[1..n] by a[i].finish (nondecreasing)04: S = { a[1].name }05: j = 106: for (k = 2 to n) {07: if ( a[k].start >= a[j].finish ) {08: S = S � { a[k].name }09: j = k10: }11: }12: return S13: }

อลกอรทมนมภาระในการเรยงลาดบขอมล (บรรทดท 3) และมวงวนแบบ for หมนอย �(n) ครง โดยทแตละรอบใชเวลาคงตว จงใชเวลารวมเปน O(n log n) ตามภาระการเรยงลาดบขอมล

0 5 10

กข

คง

รปท 10–3 ตวอยางปญหาการเลอกกจกรรมทเรยงลาดบตามเวลาสนสดการใชทรพยากร

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

กาหนดให am คอกจกรรมทม fm นอยทสด เราจะแสดงใหเหนวามผลเฉลยเหมาะทสดทม am

รวมอยดวย ให S คอผลเฉลยเหมาะทสด ถา am� S กตรงตามทตองการ แตถา am� S สมมตวา ak คอกจกรรมแรกใน S (หมายความวา ak ม fk นอยทสดใน S) ดงนนเราสามารถสรางผลเฉลยใหม S* = (S – {ak}) � {am} ทมขนาดเทากบ S ซงม am เปนหนงในผลเฉลยเหมาะทสด เพราะวา fm� fk (จงไมซอนเหลอมกบกจกรรมอนทเหลอใน S) และเรายงสามารถลดขนาดของปญหาจากเดม A เปนปญหายอย A’ = {ai | ai� A และ ai ม si � fm } ซงเปนเซตของกจกรรมตางๆ ทมเวลาเรมตนของกจกรรม หลงเวลาสนสดการใชทรพยากรของ am อนแสดงใหเหนถงลกษณะเฉพาะของการเลอกแบบตระกลาม �

Page 234: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

218 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

เมอเราไดแสดงใหเหนวามลกษณะเฉพาะของการเลอกแบบตระกลามแลว คราวนกจะมาพสจนวาปญหานมโครงสรางยอยเหมาะทสด จากยอหนาทแลวหลงการเลอก am เราสามารถลดขนาดของปญหาเปน A’ ซงม S* เปนผลเฉลยเหมาะทสด (ทม am อยดวย) แนนอนวา S* – {am} กตองเปนผลเฉลยเหมาะทสดของปญหา A’ ทงนเพราะวาถาเราสามารถหาผลเฉลยอน S** ทมขนาดมากกวา S* – { am } ได จะสรปไดวา S** � {am} กตองเปนผลเฉลยของปญหา A ซงมขนาดมากกวา S* ซงขดแยงกบขอกาหนดทให S* เปนผลเฉลยเหมาะทสดของ A จงแสดงใหเหนถงการมโครงสรางยอยเหมาะทสดของปญหา �

วถสนสดแบบแหลงตนทางเดยวกาหนดให G = (V, E ) คอกราฟระบทศทาง โดยท V คอเซตของจด และ E คอเซตของเสนเชอม แตละเสนเชอมมความยาว (ทไมเปนจานวนลบ) กากบ ให v1 คอจดๆ หนงใน V เรยกวาจดเรม ปญหาวถสนสดแบบแหลงตนทางเดยว (single-source shortest path) กคอการหาวถสนสดจาก v1 ไปยงจดอนๆ ใน G

ในบททแลวเราไดนาเสนออลกอรทมทอาศยกาหนดการพลวต ในการหาวถสนสดจากจดๆ หนงในกราฟไปยงจดอนๆ ทกๆ จดในกราฟนน อลกอรทมนนใชเวลาเปน O(�V�3) ซงดออกจะชาไปหนอย ในหวขอนเราจะใชอลกอรทแบบตระกลามในการหาวถสนสด อลกอรทมทจะนาเสนอนมชอเรยกวาอลกอรทมของ Dijkstra

กาหนดให �(vi) คอความยาวของวถสนสดจาก v1 ถง vi สงทเราอยากไดกคอ �(vi) ของทกๆ จด อลกอรทมของ Dijkstra กาหนดใหจด vi ใดๆ เกบ d[vi] ซงคอขอบเขตบนของความยาวของวถสนสดจาก v1 ถง viไว นนคอ �(vi) � d[vi] โดยแบงเซต V ออกเปนสองเซตยอยคอ S และ C เซต S เกบจดซง d[vi] = �(vi) นนคอเรารวถสนสดจาก v1 ถงจดตางๆ ใน S แลว สวน C กคอเซตของจดอนๆ ทเหลอทเรายงไมรวถสนสดจาก v1 ถงจดเหลาน รแตขอบเขตบน �(vi) � d[vi]

ตอนเรมตนเรายงไมรอะไรเลย กให d[vi] = � สาหรบทกๆ จด ยกเวนกแต d[v1] = 0 เพราะ v1

เปนจดเรมของวถ S = � และ C = V จากนนกเขาสวงวนของการเลอกจดใน C แบบตระกลามเขามาเปนสมกชกใน S แลวปรบ d[vi] ของทกๆ vi ทตอกบจดทเพงถกเลอก (การปรบนจะมแนวโนมให d[vi] มคาลดลง นนคอปรบใหขอบเขตบนของความยาวลดลงเขาใกลความยาว

Page 235: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 219

ของวถสนสดจรง) ทาการเลอกจดในลกษณะเชนนวงวนละหนงจด จนในทสดได S = V จะได d[vi] = �(vi) สาหรบทกๆ จด

กาหนดให vg คอจดทถกเลอกแบบตระกลามเพอรวมเขาใน S เราใชเกณฑอะไรมาเลอก vg เราจะปรบ d[vi] ของจดทตอ vg ไดอยางไร และทาไมในทายทสดจะได d[vi] = �(vi) สาหรบทกๆ จด ขอตอบสองคาถามแรกกอน เราใชวธเลอกจด vg ซงเปนสมาชกของ C ทมคาของ d[vg] นอยทสด หลงจากเลอกแลวกปรบ d[vi] ของจดอนๆ ทตอกบ vg โดยใชวธทเรยกวา relaxation ซงเปนวธททดสอบดวาเราจะไดวถทสนกวาจาก v1 ถง vi หรอไมโดยใชวถสนสดจาก v1 ถง vg

(ทรมาแลว) ตามดวยเสนเชอม (vg , vi) ถาสนกวากเปลยน (เปลยนทง d[vi] และ [vi] ซงคอจดกอนหนา vi ของวถสนสดทกาลงหา) วธ relaxation แสดงดวยรหสเทยมสนๆ ดงน

01: Relax( G, vg, vi )02: {03: if ( d[vi] > d[vg] + w(vg,vi) ) {04: d[vi] = d[vg] + w(vg,vi)05: �[vi] = vg06: }07: }

ดงนนรหสเทยมของอลกอรทมของ Dijkstra เขยนไดดงน01: Dijkstra( G(V,E), v1 )02: {03: for (each vertex vi�V) d[vi] = �04: d[v1] = 005: S = �06: C = a priority queue of V using d[vi] as keys07: while ( C � � ) {08: vg = ExtractMin( C )09: S = S � {vg}10: for (each vertex vi � adjacent( vg ))11: Relax( G, vg, vi )12: }13: }

บรรทดท 3 และ 4 เปนการตงคาเรมตนของ d[vi] ทงหมด บรรทดท 6 สราง priority queue จากจดตางๆ ของกราฟโดยใช d[vi] เปนคย จากนนเขาสวงวนทดงตวทมคยนอยสดใน C ออกมา(บรรทดท 8) เพอรวมเปนสมาชกของ S (บรรทดท 9) แลวไป relax ทกๆ จดทตอกบจดทเพงถกรวมใน S (บรรทดท 10 และ 11) การทางานสนสดเมอทกๆ จดใน C ถกดงยายไปท S จนหมด

Page 236: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

220 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

สาหรบเวลาการทางานของอลกรทมน บรรทดท 3 เปนการตงคาเรมตนของ d[vi] ตางๆ ใชเวลาเปน �(�V�) ถาใชฮปแบบฟโบนกชในการสราง priority queue 1 การสรางฮปทบรรทดท 6 กใชเวลา �(�V�) วงวน while ทบรรทดท 7 หมนเปนจานวน �V� รอบ เนองจาก ExtractMinใชเวลา O( log�V�) ดงนนบรรทดท 8 ใชเวลารวมเปน O(�V�log�V�) การ Relax ทบรรทดท 11 แตละครงนนอาจมการลดคาของ d[v] ทาใหเกดการ DecreaseKey ของขอมลในฮปซงใชเวลาถวเฉลยเปน O(1) ถาเราแทนกราฟดวยรายการประชด การ Relax นกจะเกดขนรวมทงสน �E� ครง ดงนนการ DecreaseKey ทงหมดทเกดขนใชเวลารวมเปน O(�E�) สรปไดวา อลกอรทมของ Dijkstra นใชเวลาเปน O(�E�+�V�log�V�)

รปท 10–4 แสดงกราฟทเราจะใชเปนตวอยางแสดงการทางานของอลกอรทมของ Dijkstra โดยตองหาวถสนสดจากจด v1 ไปยงจดอนๆ ในกราฟ รปท 10–5 แสดงขนตอนการทางาน จานวนทแสดงในโหนดคอ d[vi] ของโหนดนน โหนดทเปนสทบคอโหนดซงอยใน S เสนเชอมทมหวลกศรทบแทนวถสนสดเทาทร เมอทกๆ โหนดอยใน S แลว เราจะไดวถสนสดจาก v1 ถงจดอนๆ แทนดวยตนไมทม v1 เปนราก และกงคอเสนเชอมหวทบตางๆ

12

1

41

5

7

4

4

8v1

v2 v3

v4 v5

v6

รปท 10–4 ตวอยางกราฟสาหรบปญหาการหาวถสนสดจากจด v1 ถงจดอนๆ

กมาถงเวลาตองแสดงใหเหนวาอลกอรทมของ Dijkstra นนใหวถสนสดทตองการจรงๆ เราตองพสจนวาการเลอกทนาเสนอมาน มลกษณะเฉพาะของการเลอกแบบตระกลาม นนคอทกครงทเลอกจด vg รวมเขาใน S นน d[vg] = �(vg) หลงเลอกแลวเราเหลอปญหาในลกษณะเดยวกนทมขนาดเลกลง และเนองจากปญหานโครงสรางยอยเหมาะทสด (ไดเคยแสดงใหดในบททแลว) แสดงวาการนาวถสนสดของปญหายอยมารวมกบการเลอกทไดทามา จะไดวถสนสดจรง

1 Dijkstra ใชแถวลาดบธรรมดาในการสราง priority queue ซงมเวลาการทางานเปน O( |V|2 ) (อยากใหนกเรยนลองคดเองดวาหามาไดอยางไร) แตในทนเราจะใช Fibonacci heap ในการวเคราะหแทน

Page 237: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 221

12

1

41

5

7

4

4

8 0

v1

v2 v3

v4 v5

v6

(1)

12

1

41

5

7

4

4

8 0

7

1

v1

v2 v3

v4 v5

v6

(2)

12

1

41

5

7

4

4

8 0

7

1

v1

v2 v3

v4 v5

v6

(3)

12

1

41

5

7

4

4

8 0

5

1

9

3

v1

v2 v3

v4 v5

v6

(4)

12

1

41

5

7

4

4

8 0

5

1

9

3

v1

v2 v3

v4 v5

v6

(5)

12

1

41

5

7

4

4

8 0

4

1

9

3

7v1

v2 v3

v4 v5

v6

(6)

12

1

41

5

7

4

4

8 0

4

1

9

3

7v1

v2 v3

v4 v5

v6

(7)

12

1

41

5

7

4

4

8 0

4

1

8

3

7v1

v2 v3

v4 v5

v6

(8)

12

1

41

5

7

4

4

8 0

4

1

8

3

7v1

v2 v3

v4 v5

v6

(9)

12

1

41

5

7

4

4

8 0

4

1

8

3

7v1

v2 v3

v4 v5

v6

(10)

12

1

41

5

7

4

4

8 0

4

1

8

3

7v1

v2 v3

v4 v5

v6

(11)

รปท 10–5 การหาวถสนสดจากจด v1 ถงจดอนๆ ดวยอลกอรทมของ Dijkstra

Page 238: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

222 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

กอนอนขอพสจนกอนวา ณ ขณะใดๆ d[vi] ของจด vi ใดๆ ซงอยนอก S คอความยาวของวถสนสดจาก v1 ถง vi ทผานเฉพาะจดใน S เทานน จะขอพสจนดวยอปนยเชงคณตศาสตร ในรอบแรกเปนจรงแนเพราะ S = {}, d[vi] ของทกๆ จดเปน � ยกเวน d[v1] = 0 สมมตใหเปนจรงในหลงรอบท k พอถงตนรอบท k+1 ถาจด vg ถกเลอกรวมใน S โดยทมคา d[vg] นอยสด จดตางๆ ทตอกบ vg จะถก relax หมายความวาหลงรอบท k+1 d[vi] ของจดตางๆ เหลานอาจเหมอนเดมคอกรณไมผาน vg หรอลดลงคอกรณผาน vg (ซงอยใน S แลว) ไดวถทสนกวาซงผานเฉพาะจดใน S �

คราวนจะพสจนวาขณะเลอก vg รวมเขาใน S นน d[vg] = �(vg) ถาวถสนสดจาก v1 ถง vg นผานเฉพาะจดใน S กแสดงวาสงทตองการพสจนนนเปนจรงจากผลของยอหนาทแลว แตถาวถสนสดจาก v1 ถง vg นผานจดนอก S (ใหเปนจด vq) ดวยกอนเขาหา vg (ดรปท 10–6 ประกอบ) วถนยอมมความยาวเปน

d[vq] + (ความยาวของวถสนสดจาก vq ถง vg )

เนองจากความยาวของเสนเชอมไมตดลบ และ d[vg] � d[vq] (เพราะการเลอกแบบตระกลามบอกใหเลอกจดทม d[vi] นอยสด) ซงจะเปนไปไดกมแตกรณท d[vg] = d[vq] และความยาวของวถสนสดจาก vq ถง vg เปนศนย ซงกมความยาวรวมเปน d[vg] เชนกน สรปวาการเลอก vg แบบตระกลามจะไดวถสนสดจาก v1 ถง vg มความยาวเปน d[vg] �

v1

vg

vq

S

v1

vg

vq

S

d[vg] นอยทสด เลอก vg รวมเขาใน Sรปท 10–6 การเลอก vg แบบตระกลามไดวถสนสดจาก v1 ถง vg

จะขอเนนกอนจบหวขอนวาอลกอรทมของ Dijkstra นนจะใชไดกเฉพาะเมอเสนเชอมตางๆในกราฟมความยาวไมตดลบ (ซงเปนเงอนไขหนงทใชในการพสจน) ขอใหนกเรยนลองยกตวอยางกรณกราฟทมความยาวของเสนเชอมตดลบ ซงไดผลเฉลยทผด

Page 239: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 223

ตนไมแบบทอดขามเลกสดตนไมแบบทอดขามเลกสด (minimum spanning tree) ของกราฟ G คอกราฟยอยของ G ซงตอทกๆ จดของ G ใหถงกนหมด โดยมผลรวมนาหนกของเสนเชอมนอยสด ในหวขอนเราจะนาเสนอสองอลกอรทมมชอวาอลกอรทมของพรม (Prim's algorithm) และอลอรทมของครสกล(Kruskal's algorithm) ทหาตนไมแบบทอดขามเลกสด อลกอรทมทงสองอาศยการเลอกเสนเชอมแบบตระกลาม โดยมวธการเลอกตางกน แตสามารถพสจนไดวาจะไดตนไมแบบทอดขามเลกสด (อนงจะขอใชคาวา "ความยาว" แทน "นาหนก" ของเสนเชอม เพราะฟงเปนธรรมชาตกวา)

อลกอรทมของครสกลอลกอรทมนอาศยการเลอกเสนเชอมทสนสดทละเสนทจะไมกอใหเกดวงจรใดๆ กบเสนเชอมทไดเลอกไปแลว (เราตองการตนไม กเลยตองไมมวงจร) เสนเชอมตางๆ ทเลอกไปแลวนนประกอบกนเปนปาไม การเลอกเสนเชอมใหมอาจเปนการสรางตนไมใหมทมกงเดยว หรอตอตนไมเกาใหมกงมากขน หรอเชอมตนไมยอยสองตนใหเปนตนเดยว แตในทสดแลวเมอเลอกเสนเชอมได �V�–1 เสน กจะเหลอตนไมเพยงตนเดยว 2

ประเดนทตองคดหนอยในอลกอรทมของครสกลกคอ วธตรวจสอบวาเสนเชอมทถกเลอกมาใหมน เมอรวมเขากบเสนเชอมทไดเลอกมาแลว จะกอใหเกดวงจรหรอไม เราสามารถใชโครงสรางขอมลเซตไมมสวนรวม (disjoint set) โดยใหเซตหนงเซตแทนตนไมยอยหนงตน โดยทขอมลในเซตกคอจดตางๆ ของกราฟ (เรมตน 1 เซตม 1 จด จงมจานวน �V� เซต) เราจะรวมเสนเชอม (u, v) เขาเปนสวนหนงของตนไมแบบทอดขามกเมอตนไมท u อยไมใชตนเดยวกบตนไมท v อย (FindSet(u) ตองไมเทากบ FindSet(v) ) ถารวมไดกยเนยนเซตทงสองเขาดวยกน (นนคอ Union(FindSet(u), FindSet(v) ) เขยนเปนรหสเทยมไดดงน

2 ตนไมทม n จดตองมเสนเชอม n-1 เสน

Page 240: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

224 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

01: MST_Kruskal( G=(V,E) )02: {03: T = �04: for (each vertex v�V) MakeSet( v )05: sort E by nondecreasing weight06: for (each edge (u,v)�E in order by nondecreasing w) {07: if ( FindSet( u ) � FindSet( v ) ) {08: T = T � {(u,v)}09: Union( FindSet(u), FindSet(v) )10: }11: }12: return T13: }

บรรทดท 4 เปนการสรางเซตๆ ละหนงจด จากนนเรยงลาดบเสนเชอมจากสนสดไปยาวสด (บรรทดท 5) วงวนทบรรทดท 6 ถง 11 หยบเสนเชอมตามลาดบจากสนสดไปยาวสด (ตรงนคอการเลอกแบบตระกลาม) ถาเสนเชอมทเลอกมานเชอมตนไมทไดเลอกไวคนละตน (นนคอการทดสอบวาจดปลายของเสนเชอมนอยคนละเซต ในบรรทดท 7) กจะรวมเสนเชอมน (บรรทดท 8) และยเนยนเซตทจดทงสองเปนสมาชกอยเขาดวยกน (บรรทดท 9) การทางานสนสดเมอพจารณาครบทกเสนไดตนไมแบบทอดขามเลกสดทตองการ

กถงเวลาทตองมาวเคราะหประสทธภาพการทางานเชงเวลาของอกลอรทมกน บรรทดท 4 ใชเวลา �(�V�) บรรทดท 5 ใชเวลา O(�E�log�E�) วงวนตงแตบรรทดท 6 ถง 11 หมนจานวน �E� รอบแตละรอบมอยางมาก 4 FindSet กบ 1 Union รวมเปนการดาเนนการของเซตไมมสวนรวมเปนจานวน �(�E�) ครงบนขอมลในเซตตางๆ ทงหมด |V| จด ดงนนใชเวลารวมเปน O(�E� log*�V�) พจารณาครบทกสวนแลวจะเหนไดวาภาระมากทสดไปตกอยบรรทดท 5 ซงคอการเรยงลาดบ ดงนนอลกอรทมของครสกลใชเวลารวมเปน O(�E�log�E�)

รปท 10–7 แสดงกราฟตวอยางทเราจะใชในการหาตนไมแบบทอดขามเลกสด การเลอกเสนเชอมแบบตระกลามตามอลกอรทมของครสกลแสดงไดดงน

a z

b c

f e

100

5060

110 4560

55

5040

รปท 10–7 กราฟตวอยางสาหรบปญหาตนไมแบบทอดขามเลกสด

Page 241: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 225

เลอกเสนเชอม {b, d} ยาว 40{a}, {b, z}, {c}, {e}, {f} a z

b c

f e

100

5060

110 4560

55

5040

เลอก {f, e} ยาว 45{a}, {b, z}, {c}, {f, e} a z

b c

f e

100

5060

110 4560

55

5040

เลอก {b, c} ยาว 50{a}, {b, c, z}, {f, e} a z

b c

f e

100

5060

110 4560

55

5040

เลอก {b, e} ยาว 50{a}, {b, c, z, f, e} a z

b c

f e

100

5060

110 4560

55

5040

เลอก {e,z}, {c,z}, {c,f} ไมได เพราะเกดวงจร ตองเลอก {a, b} ยาว 100{a, b, c, z, f, e}

a z

b c

f e

100

5060

110 4560

55

5040

เลอก {a, f} ไมไดเพราะเกดวงจร อลกอรทมหยดเพราะไมมเสนเชอมเหลอแลว

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

ประเดนทตองคานงถงในอลกอรทมของพรมกคอจะทาอยางไร จงสามารถเลอกเสนเชอมเสนสนสดทตอกบจดของเสนเชอมทไดเลอกไวแลว และไมเกดวงจร เราอาศยหลกการทางานทคลายๆ กบอลกอรทมของดจคสตรา กาหนดให T คอตนไมทประกอบดวยเสนเชอมตางๆ ทไดเลอกไวแลว C คอจดอนๆ ทอยนอก T แตละจด vi �C ม key[vi] ซงคอความยาวของเสนเชอม

Page 242: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

226 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

สนสดทตอระหวาง vi กบจดใน T (ถา key[vi] = � แสดงวาไมมเสนเชอมระหวาง vi กบจดใน T) และแตละจด vi ม �[vi] กากบเพอระบจดทเปนจดพอของ vi ใน T สาหรบกรณ vi�C �[vi]จะหมายถงจดใน T ทตอกบ vi ดวยเสนเชอมทสนสด

เรมดวย T = � และ C = V โดยท key[vi] = � ของทกๆ จด ยกเวนแต key[vr] = 0 (vr เปนจดใดกได) จากนนเขาสวงวนเลอกจดทม key นอยสด (ใหเปนจด vg) นาเสนเชอม (�[vg], vg) รวมเขาใน T จากนนลด key ของจด vi �C ทตอกบ vg เมอ (vg ,vi) สนกวา (�[vi], vi) (หมายความวาไดพบเสนเชอมระหวาง vi กบ T เสนใหมทสนกวาเสนเกาทตอกบ T ทไดพบมา) กระทาการเลอกจด รวมเสนเชอมเขาใน T และลด key ของจด เชนนไปเรอยๆ จน C = � เขยนเปนรหสเทยมไดดงน

01: MST_Prim( G(V,E), vr )02: {03: for (each vertex vi�V) key[vi] = �04: key[vr] = 0; �[vr] = NULL; T = �05: C = a priority queue of V using key[vi] as keys06: while ( C � � ) {07: vg = ExtractMin( C )08: T = T � {(�[vg],vg)}09: for (each vertex vi � adjacent( vg ))10: if ( vi � C AND w(vg,vi) < key[vi] ) {11: DecreaseKey( vi, w(vg,vi) )12: �[vi] = vg13: }14: }15: return T16: }

บรรทดท 3 ใหทกๆ จดม key เปน � บรรทดท 4 ตงคาใหจดพเศษ vr ซงถกกาหนดใหเปนรากของตนไมทอดขาม T ทกาลงจะปลก (เนองจากเปนราก กเลยไมมพอดงนน �[vr] = NULL) บรรทดท 5 เปนการสราง priority queue ทเกบทกๆ จดของกราฟ โดยใชขอมลใน key เปนตวจดอนดบ หลงจากนนเขาสวงวน (บรรทดท 6 ถง 14) ดงจดทม key นอยสดออกมา จากนนเพมเสนเชอมเสนใหมเขาใน T แลวเรมปรบ key ของจดอนๆ ในวงวนทบรรทดท 9 ถง 13 การทางานของอลกอรทมเสรจสนเมอ C เปนเซตวาง จะไดตนไมแบบทอดขามเลกสดเกบอยใน T

ถาเราสราง priority queue C ดวยฮปแบบฟโบนกช บรรทดท 6 ใชเวลา �(n) ExtractMin(บรรทดท 7) และ DecreaseKey (บรรทดท 11) ใชเวลาถวเฉลยเปน O(log�V�) และ O(1) ตลอดการทางานจะมการ ExtractMin เปนจานวน �V� ครง และมการ DecreaseKey เปนจานวนอยางมาก �E� ครง ดงนนเวลารวมของอลกอรทมของพรมเปน O(�E�+�V�log�V�)

Page 243: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 227

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

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v6400

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v6400

100

110

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v640

0

100

110

50

50

40

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v6400

100

110

50

50

40

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v6400

100

45

50

50

40

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v640

0

100

45

50

50

40

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v6400

100

45

50

50

40

11045

50

50

60100

5560

v1

v2 v3

v4 v5

v640

รปท 10–8 การหาตนไมแบบทอดขามเลกทสดดวยอลกอรทมของพรม

การพสจนความถกตองของอลกอรทมของพรมและของครสกลอลกอรทมทงสองเลอกเสนเชอมรอบละเสนเหมอนกน ตางกนตรงทของครสกลนนเลอกเสนเชอมทไมจาเปนตองตอกน ดงนนกลมของเสนเชอมจงเปนปาไม ในขณะทของพรมนนเลอกเสนเชอมทตองตอกบเสนทไดเลอกไว จงมลกษณะเปนตนไมทงอกกงกานออกไปเรอยๆ

กาหนดให T คอกลมของเสนเชอมทไดเลอกไว ภายใน T ตองมตนไมอยางนอยหนงตน (ยกเวนตอนเรมตนท T=�) ให T* เปนตนไมตนหนงใน T จะขอพสจนกอนวาถา T* เปนสวนหนงของตนไมแบบทอดขามเลกสด เสนเชอมทสนสดทมจดปลายดานหนงเทานนทตอกบ T* ตองเปนสวนหนงของตนไมแบบทอดขามเลกสดดวย กาหนดให B คอตนไมแบบทอดขามเลกสดซง T* � B ให w(B) คอผลรวมของความยาวเสนเชอมทงหมดใน B และให (u,v) เปนเสนเชอมเสนสนสดทมจดปลายเพยงหนงจดทตอกบ T* ถา (u,v) �B กตรงตามทตองการพสจน

Page 244: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

228 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

แตถา (u,v)B ใหสงเกตวาตองมเสนเชอม (p, q) เสนหนงใน B ซงมจดปลายจดเดยวเทานนอยใน T* (เพราะ B เปนตนไมแบบทอดขาม) ถาให B’ = B {(u,v)} ยอมตองเกดวงจรขนใน B' แตถาเราตดเสนเชอม (p, q) ออกจาก B' จะได B'' = B' – { (p, q) } ซงเปนตนไมแบบทอดขามทม (u, v) จะไดวา w(B'') = w(B) + w(u, v) – w(p, q) แต w(u, v) � w(p, q) เพราะเราให (u,v) เปนเสนเชอมเสนสนสดทมจดปลายเพยงหนงจดทตอกบ T* เนองจาก w(B) � w(B'') และ w(B) นนนอยสด (จากขอกาหนด) แสดงวาจะเปนไปไดกเมอ w(u,v) = w(p,q) สรปไดวา w(B'') = w(B) นนคอ B'' กเปนตนไมแบบทอดขามเลกสดดวยทม (u, v) เปนกงอย

นอกจากน T* {(u,v)} ซงประกอบกนเปนตนไมหนงตน ตองเปนตนไมยอยของตนไมแบบทอดขามเลกสดดวย เพราะวา T* � B , B'' = B {(u,v)} – {(p, q)} และ (p, q)T* เนองจากอลกอรทมทงของครสกลและของพรม ตางกเรมจาก T*= � แลวเลอกเสนเชอมทเมอรวมกบ T* กเปนสวนหนงของตนไมแบบทอดขามเลกสดเสมอตลอดการทางาน ดงนนเมอเสรจสนการทางานยอมไดตนไมแบบทอดขามเลกสดตามตองการ �

รหสฮฟฟแมนนกเรยนคงรจกรหส ASCII ทใชในการแทนตวอกษรดวยจานวนฐานสองกนมาแลว เชน ‘A’ แทนดวย (01000001)2

‘b’ แทนดวย (01100010)2 เปนตน ASCII เปนลกษณะการเขารหสขอมลทเรยกวาแบบความยาวคงท (fixed–length) หมายความวาทกๆ ขอมลหนงตวอกษรใชเนอทเกบเทากนหมด ยงมวธการเขารหสขอมลอกแบบหนงท เรยกวาแบบความยาวแปรได(variable–length) ซงจานวนบตของรหสทแทนแตละขอมลอาจไมเทากนได จดเดนของรหสแบบความยาวแปรไดนกคอ เราสามารถใหรหสทสนๆ เพอแทนขอมลทปรากฎบอยๆ และใหรหสยาวเพอแทนขอมลทปรากฎนอย ทาใหใชปรมาณหนวยความจาในการเกบขอมลทนอยกวาแบบใชรหสความยาวคงท ตวอยางเชนในแฟมขอมลหนงประกอบดวยตวอกษรดงน ‘ช’, ‘ม’, ‘ย’, ‘ป’, ‘ส’ และ ‘า’ เปนจานวน 40, 21, 15, 14, 8 และ 2 ตวตามลาดบ ตารางท 10–1แสดงตวอยางการเขารหสแบบความยาวคงท กบแบบความยาวแปรได จะเหนไดวาแบบความยาวคงทนนใชปรมาณหนวยความจารวมเปน (40+21+15+14+8+2)�3 = 300 บต ในขณะทแบบความยาวแปรไดใชเพยง 40�1+21�3+15�3+14�3+8�4+2�4 = 230 บต

Page 245: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 229

ตารางท 10–1 ตวอยางการเขารหสแบบความยาวคงทและแบบความยาวแปรได

‘ช’ ‘ม’ ‘ย’ ‘ป’ ‘ส’ ‘า’จานวน 40 21 15 14 8 2รหสแบบความยาวคงท 000 001 010 011 100 101รหวแบบความยาวแปรได 0 100 101 110 1110 1111

ปญหาในหวขอนกคอการหารหสใหกบชดขอมลทมความถกากบแตละขอมล ซงใชหนวยความจานอยทสดในการแทนชดขอมลดงกลาว

เราจะสนใจเฉพาะรหสเตมหนา (prefix code) ซงเปนรหสชดทไมมรหสใดเปนสวนเตมหนาของรหสใด รหสแบบความยาวแปรไดในตารางท 10–1 กเปนรหสเตมหนา เชนถาดทรหสของ ‘ช’ ทเปน 0 กเหนไดวาไมมรหสตวอนเลยทขนตนดวย 0 และเปนเชนนกบรหสตวอนๆ การเขารหสขอความนนกทาไดงายโดยนารหสของแตละตวอกษรมาตอกน เชน ‘สายชม’ จะไดเปน 111011111010100 เมอถงตอนถอดรหสกอาศยตนไมรหสในรปท 10–9 ชวย โดยนาขอมลในสตรงรหสมาวงไลในตนไมเรมจากราก เมอชนใบใดกไดตวอกษรทกากบใบนน

ม :21ช :40 ย :15 ป :14 ส :8 า :2

1

1

1

10

00

0 0

1

รปท 10–9 ตนไมรหสของรหสแบบความยาวแปรไดในตารางท 10–1

ชดรหสเตมหนาหนงแบบสามารถถกแทนดวยตนไมรหสหนงตนดงตวอยางในรปท 10–9กาหนดให C คอเซตของตวอกษรทตางกนในชดขอมล f(c) คอความถของ c, c�C และ dT(c) คอความลกของใบทแทน c ในตนไมรหส T ดงนนจานวนบตทตองใชในการเขารหสทงชดขอมลยอมเทากบ

��

CcT cdcfTB )()()(

เราเรยก B(T) วาเปนตนทนของตนไม T

Page 246: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

230 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

รหสฮฟฟแมนเปนรหสแบบเตมหนาทเหมาะทสด คอเปนรหสซงมตนทนของตนไมรหสนอยทสด ขนตอนการสรางรหสฮฟฟแมนนนมลกษณะการทางานแบบตระกลาม เรมจากปาไมทมแตตนไมเลกๆ ตนละจด ตามจานวนตวอกษรใน C จากนนเลอกตนไมในปามาสองตนผกเปนลกของจดใหม กลายเปนตนไมตนใหมทไดจากการรวมสองตนเกา กระทาการเลอกแลวรวมในลกษณะเชนนเปนจานวน n–1 ครง (n = |C|) กเหลอเพยงตนเดยวในปา ซงเปนตนไมรหสทตองการ

รากของตนไมทกๆ ตนในปามความถกากบ โดยทความถของรากของตนไมคอผลรวมของความถของรากของตนไมยอยสองตนทเปนลก สาหรบกรณทตนไมทเพยงจดเดยวนน ความถของราก c กคอ f(c) นนเอง การเลอกแบบตระกลามใชวธการเลอกตนไมในปาสองตนทรากมความถนอยทสด ดงนนเราอาศย min–heap ในการเกบรากของตนไม โดยมความถเปนคยในการจดอนดบ เขยนเปนรหสเทยมไดดงน

01: Huffman( C[1..n] )02: {03: H = min–heap()04: for (i=1 to n) {05: x = new BinaryNode()06: x.left = x.right = NULL; x.freq = C[i].freq07: Insert( H, x )08: }09: for (i=1 to n–1_ {10: x = new BinaryNode()11: x.left = ExtractMin( H )12: x.right = ExtractMin( H )13: x.freq = x.left.freq + x.right.freq14: Insert( H, x )15: }16: return ExtractMin( Q );17: }

วงวนทบรรทดท 4 ถง 8 เปนการสรางฮปของตนไม n ตนๆ ละจดสาหรบตวอกษรแตละตวใน C วงวนท 9 ถง 15 เปนวงวนการเลอกแบบตระกลาม โดยดงตนไมสองตนทรากมความถตาทสด (บรรทดท 11 และ 12) มาเปนลกซายและขวาของรากใหมทเพงสราง ซงมความถเทากบผลรวมของรากของตนไมสองตนทเพงดงมา (บรรทดท 13) จากนนเพมกลบเขาไปในฮป กระทาการเลอกแลวรวมเปนจานวน n–1 ครง จะเหลอตนไมหนงตนในฮป เมอถกดงออกมากเปนตนไมรหสฮฟฟแมนทตองการ (บรรทดท 16)

ถาเราใชฮปธรรมดาแบบทวภาค จะไดวาการสรางใชเวลา O(n) มการลบตวนอยทสดเกดขนจานวน 2(n–1) ครง และมการเพม n–1 ครง การลบและเพมนหนงครงใชเวลา O(log n) ดงนนใชเวลารวมทงหมดในการสรางตนไมรหสฮฟฟแมนเปน O(n) + O(n log n) = O(n log n)

Page 247: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 231

รปท 10–10 แสดงขนตอนการเลอกแลวรวมตนไมเพอสรางตนไมรหสฮฟฟแมนของชดตวอกษรทแสดงในตารางท 10–1 จานวนทแสดงกากบจดตางๆ คอความถ ผลลพธสดทายทไดกคอตนไมตนเดยวกบทแสดงในรปท 10–9 (อยากใหสงเกตสกนดหนงวาในตนไมรหสทแสดงใหดน เรากาหนดใหกงซายเปนเลข 0 กงขวาเปนเลข 1 จรงๆ แลวเราจะกาหนดใหแตละกงเปนอยางไรกได ตราบเทาทกงซายและกงขวาของจดๆ หนงตองมคาตางกน กงหนง 0 อกกงหนง 1 กจะไดรหสเตมหนาทมตนทนนอยทสดเทากนทงนน)

เราจะมาพสจนกนวาอลกอรทมแบบตระกลามทไดบรรยายมาน ใหรหสทมตนทนนอยทสด จะขอเรมดวยการแสดงใหเหนวารหสเตมหนาเหมาะทสดนนมโครงสรางยอยเหมาะทสด จากนนจงแสดงใหเหนถงลกษณะเฉพาะของการเลอกแบบตระกลาม

ม :21ช :40 ย :15 ป :14 ส :8 า :2 ม :21ช :40 ย :15 ป :14 ส :8 า :2

1010

ม :21ช :40 ย :15 ป :14 ส :8 า :2

10

241

10

0

ม :21ช :40 ย :15 ป :14 ส :8 า :2

10

24361

10

00 1

ม :21ช :40 ย :15 ป :14 ส :8 า :2

10

2436

601

1

10

00

0

1

ม :21ช :40 ย :15 ป :14 ส :8 า :2

10

2436

60

100 1

1

1

10

00

0 0

1

รปท 10–10 ขนตอนการเลอกแลวรวมตนไมเพอสรางตนไมรหสฮฟฟแมน

กาหนดให T คอตนไมรหสทแทนรหสเตมหนาเหมาะทสดของ C โดยท C คอเซตของตวอกษรซง f(c) คอความถของตวอกษร c�C สาหรบใบ x และ y ใดๆ ใน T ทเปนพนองกน ให z เปนจดพอของ x และ y เราจะพสจนโครงสรางยอยเหมาะทสดวา ถาให f(z) = f(x) + f(y) จะไดวา T* = T – {(z,x), (z,y)} ตองเปนตนไมรหสทมตนทนนอยทสดสาหรบชดตวอกษร C �{z} – {x, y}

Page 248: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

232 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

x y

z

T*

T

รปท 10–11 ตนไมรหส T ประกอบดวยตนไมรหส T* ทไมรวม x และ y แตม z เปนใบใหม

จากนยามของตนทนของตนไม ��

CcT cdcfTB )()()( พจารณาตนไมในรปท 10–11 เรา

สามารถเขยน B(T) ในรปของ B(T*) ไดดงนB(T) = B(T*) – f(z)dT*(z) + f(x)dT(x) + f(y)dT(y)

= B(T*) – f(z)dT*(z) + (f(x) + f(y))(dT*(z)+1)= B(T*) –(f(x) + f(y)) dT*(z) + (f(x) + f(y))(dT*(z)+1)= B(T*) + f(x) + f(y)

บรรทดท 1 เปลยนเปนบรรทดท 2 ไดกเพราะ dT(x) = dT(y) = dT*(z)+1 บรรทดท 3 มาจากการท f(z) = f(x) + f(y) จากผลทได B(T) = B(T*) + f(x) + f(y) แสดงวา B(T) จะมคานอยทสดไดกเมอ B(T*) มคานอยทสด เปนการแสดงใหเหนถงโครงสรางยอยเหมาะทสดของปญหา �

คราวนเราจะมาแสดงลกษณะเฉพาะของการเลอกแบบตระกลาม ถาให x และ y คอตวอกษรใน C ทมความถตาสด การเลอกแบบตระกลามยอมเลอก x และ y มาสรางตนไมยอยกอนใคร ดงนนเมอสรางตนไมรหสแลว x และ y ยอมตองเปนใบทเปนพนองกน และเปนใบทระดบลกสดดวย (เพราะถกเลอกมารวมกอนใคร) เราจะแสดงใหเหนวามตนไมรหสทมตนทนนอยทสดซงม x และ y เปนใบระดบลกทสดและเปนพนองกน กาหนดให T คอตนไมรหสทมตนทนนอยทสดของ C และให b และ c เปนใบระดบลกทสดและเปนพนองกน ถา b และ c คอ x และ y กไมตองพสจนเพราะตรงกบการเลอกแบบตระกลาม แตถาไมใช ขอกาหนดให f(b) � f(c) และ f(x) � f(y) เราเรมดวยการสลบ b กบ x ในตนไม T ไดตนไมใหม T* ซงมตนทนดงน

B(T*) – B(T) = f(x)dT*(x) + f(b)dT*(b) – f(x)dT(x) – f(b)dT(b)= f(x)dT(b) + f(b)dT(x) – f(x)dT(x) + f(b)dT(b)= ( f(x) – f(b) )( dT(b) – dT(x) )� 0

Page 249: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 233

บรรทดท 1 เปลยนเปนบรรทดท 2 เพราะวา dT*(x) = dT(b) และ dT*(b) = dT(x) และเนองจาก f(x) � f(b) จากขอกาหนดทให f(x) เปนความถนอยทสด และ dT(b) � dT(x) จากขอกาหนดทให bเปนใบทระดบลกทสด ดงนนผลคณในบรรทดท 3 ตองไมเปนบวก นนคอ B(T*) � B(T) หรอกลาวไดวาตนไมหลงการสลบ b และ x มตนทนไมเพมขน

เราทาตอโดยการสลบ c และ y ในตนไม T* ไดตนไม T** ซงสามารถแสดงใหเหนไดในทานองเดยวกนวา B(T**) � B(T*) สรปไดวา B(T**) � B(T) เนองจาก B(T) เปนตนไมรหสทมตนทนนอยทสด ยอมแสดงวา B(T**) = B(T) สรปไดวามตนไมรหสทมตนทนนอยทสดซงม xและ y เปนใบลกสดและเปนพนองกน �

แบบฝกหด1. ถาเราพจารณาวถระหวางจดสองจดใดๆ บนตนไมแบบทอดขามเลกสดของกราฟ G เราจะสรปไดหรอไมวาวถนกคอวถสนสดระหวางจดสองจดนนบนกราฟ G

2. จรงหรอไมทตนไมแบบทอดขามทไดจากอลกอรทมของดจสตรา กคอตนไมแบบทอดขามเลกสดนนเอง

3. ถาเราแทนกราฟดวยเมทรกซประชด จงเขยนรหสเทยมของอลกอรทมของพรมใหมทใชโครงสรางขอมลแบบงาย ซงสามารถหาตนไมแบบทอดขามเลสดไดในเวลา O( |V|2 )

4. สมมตเรารตนไมแบบทอดขามเลกทสดของกราฟหนงแลว และมการเพมเสนเชอมเสนใหม (พรอมจดใหมหนงจด) ตอเขากบจดเดมในกราฟหนงจด อยากทราบวาเราจะหาตนไมแบบทอดขามเลกสดของกราฟหลงการเตมเสนเชอมเสนใหมนไดในเวลาเทาใด

5. กาหนดให G คอกราฟซงความยาวของเสนเชอมระหวางจดสองจดใดๆ คอระยะทางของจดคนนบนระนาบแบบยคลด (Euclidean plane) ซงหมายความวาความยาวของเสนเชอมตางๆ ทเชอมเมองสามเมองใดๆ ตองเปนไปตามอสมการของความยาวดานของสามเหลยม (triangle inequality) นนคอผลรวมของความยาวดานสองดานใดๆ ตองไมนอยกวาดานทสาม (ซงระยะทางของเมองตางๆบนระนาบแบบยคลดมคณสมบตขอน) จงออกแบบอลกอรทมเพอหาตนไมแบบทอดขามเลกสดทใชเวลาเปน O( |V| log |V| )

Page 250: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

234 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

6. จงยกตวอยางกราฟทมเสนเชอมบางเสนมนาหนกตดลบ ซงทาใหอลกอรทมของดจสตราใหคาตอบทผด

7. ถาเราใชฮปทวภาคในอลกอรทมของดจสตรา จะไดเวลาการทางานเปนเทาใด

8. ตนไมรหสทเราไดนาเสนอในเรองของรหสฮฟฟแมนนนเปนตนไมทวภาคททกๆ โหนดภายในมสองลก จงพสจนวาไมมตนไมรหสใดทเหมาะทสด ซงมโหนดภายในทมลกไมครบสอง

9. กาหนดใหแฟมหนงมตวอกษรทแตกตางกน n ตว เราจะไดตนไมรหสทมลกษณะใด ถาปรมาณของตวอกษรตางๆ เหลานทตองการหารหสฮฟฟแมนนนเปน fk, fk+1, fk+2, ..., fk+n-1

โดยท fi คอจานวนฟโบนกชตวท i และ k � 0

10. จงเปลยนอลกอรทมของการหารหสฮฟฟแมนในกรณทตองการหาเปนรหสฐานสามทเหมาะทสด

11. ในปญหา 0/1 Knapsack (ซงเรามสทธเลอกของทงชนหรอไมเลอกเทานน ถาอนดบทสงของตางๆ ถกเรยงตามนาหนกจากนอยไปมาก หรออนกดบเดยวกนกบเมอเราเรยงตามมลคาจากมากไปนอย จงออกแบบอลกอรทมทมประสทธภาพเพอหาผลเฉลยเหมาะทสด

12. คณสมรกษวางแผนขบรถจากสโขทยไปปตตาน รถของเขาเมอเตมนามนเตมถงสามารถวงได n กโลเมตร สมรกษมแผนทฉบบพเศษซงระบตาแหนงของปมนามน (พรอมทงระยะทางระหวางปมตางๆ) สมรกษใจรอนไมอยากจอดเตมนามนบอย จงออกแบบอลกอรทมใหเพอแนะนาสมรกษใหเตมนามนทปมใดบาง จงสามารถเดนทางถงทหมายไดโดยแวะเตมนามนเปนจานวนครงนอยสด

13. ปญหาการแลกเหรยญคอปญหาในการหาวธการการแลกเหรยญ โดยใชจานวนเหรยญทนอยสด เพอใหไดมลคารวมเทากบจานวนเงนทกาหนดให (ใหสมมตวาเรามเหรยญแตละแบบจานวนมากๆ) จงเสนออลกอรทมแบบตระกลามเพอแกปญหาน เมอ

ก) จงเสนออลกอรทมแบบตระกลามเพอแกปญหาน เมอมเฉพาะเหรยญ 1, 5, 10 บาท

ข) จงเสนออลกอรทมแบบตระกลามเพอแกปญหาน เมอมเฉพาะเหรยญ c0, c1, ..., ck โดยท c > 1 และ k � 1

Page 251: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:33 : [email protected] บทท 10 อลกอรทมแบบตระกลาม 235

14. กาหนดให G = (V, E) คอกราฟๆ หนง เราตองการหาเซตยอย VC � V ทมขนาดเลกทสด โดยทเสนเชอมทกเสนของกราฟมจดปลายอยใน VC เราเรยกเซต VC นวา vertex cover อลกอรทมแบบตระกลามขางลางนหา vertex cover ขนาดเลกสดไดหรอไม จงพสจนหรอยกตวอยางขดแยง

01: vertexCover_greedy( G=(V,E) )02: {03: Vc = �04: while ( E � � ) {05: choose v � V whose degree is maximum07: VC = Vc � {v}08: V = V – {v}09: remove from E every edge incident on v10: }11: return VC12: }

Page 252: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

236 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:33 : [email protected]

Page 253: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] 237

บทท 11

ปญหาตางๆทเราพบในบททแลวๆ มานน เราโชคดพอทสามารถหาอลกอรทมทใหผลเฉลยไดดวยประสทธภาพการทางานทยอมรบได (คอใชเวลาไมเปนฟงกชนเลขชกาลง) แตสาหรบบางปญหาแลว เราจาเปนตองใชวธแจกแจงและตรวจสอบผลเฉลยในการหาคาตอบ แตปญหาทตามมากคอจานวนผลเฉลยทตองแจกแจงและตรวจสอบนนมมากมาย (เชนมจานวนเปนฟงกชนของเลขชกาลงหรอแฟกตอเรยลของขนาดของขอมล เปนตน) ดงนนการแจงกรณและตรวจสอบทกๆ กรณคงกระทาไมไดในทางปฏบต จงจาเปนตองเพมกลวธในการแจงกรณเฉพาะกรณทนาสนใจ และหลกเลยงการแจงกรณกรณทมนใจวาไมมทางเปนคาตอบ ซงทาใหสามารถแจกแจงแลวพบคาตอบไดเรวขนจนเปนทยอมรบไดในทางปฏบต

เราจะเรมบทนดวยการนาเสนอรปแบบของผลเฉลยของปญหา ซงเปนสงทตองกาหนดขนมากอน รปแบบของผลเฉลยมหลากหลายมากมายแตทพบเหนบอยไดแก วธการเรยงสบเปลยน (permutation) เซตยอย (subset) และการแบงสวนเซต (set partition) จากนนนาเสนอกระบวนวธการแจงกรณผลเฉลยในสามรปแบบดงกลาว ตามดวยการจาลองกระบวนการแจงกรณดงกลาวดวยตนไมปรภมสถานะ (state space tree) ซงมจดแทนสถานะของผลเฉลย และการแตกกงแทนการแจงกรณ ทาใหสามารถเทยบเคยงการแจงกรณผลเฉลยไดเปนการแวะผานจดในตนไม การแวะผานจดจงเปนเสมอนเปนกระบวนการคนคาตอบในตนไม วธคนทมระบบระเบยบทใชกนมากไดแกการคนตามแนวลก ตามแนวกวาง และตามตนทนนอยสด ซงประกนไดวาตองคนพบคาตอบไดแนนอน แตอาจใชเวลานานทงนขนกบตวอยางปญหา เราสามารถใชกลวธการยอนรอย (backtracking) และการขยายและจากดเขต (branch and bound) มาชวยใหสามารถคนคาตอบไดรวดเรวขน ซงจะไดนาเสนอในรายละเอยดตอไป

การคนคาตอบในตนไมและกราฟ

Page 254: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

238 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

รปแบบของผลเฉลยในการแจงกรณและตรวจสอบผลเฉลยนน สงทเราจาเปนตองนยามใหเดนชดกคอรปแบบของผลเฉลยของปญหาทตองการแกไข โดยทวไปเราจะบรรยายผลเฉลยใหอยในรปแบบของ n สงอนดบ (n–tuple) เขยนเปน (x1, x2,..., xn ) คาของ xi ถกเลอกมาจากเซตขนาดจากด ดงนนเราสามารถหาคาตอบของตวอยางปญหาไดงายๆ (แตชา) ดวยการแจงกรณทกๆ คาของ xi ตางๆ ทเปนไปไดทงหมด และตรวจสอบแตละแบบทแจกแจงไดวาตรงตามเงอนไขของปญหาทจะเปนคาตอบไดหรอไม โดยทวไปเรามกเหนผลเฉลยอยในรปแบบของวธเรยงสบเปลยน (permutation) เซตยอย (subset) และการแบงสวนเซต (set partition) จะขออธบายดวยตวอยางของปญหาตางๆ ตอไปน

ตวอยางท 11-1 ปญหา bandwidth minimization ให G = (V, E) คอกราฟไมระบทศทาง สงทตองการคอวธเรยงจดตางๆ ของ G บนเสนตรง (ใหระยะของจดทวางถดกนหางกนหนงหนวย) เพอใหคจดทตอกบเสนเชอมเดยวกนซงวางหางกนทสดมระยะหางนอยทสด

1 2 3 4

5 6 7

1 2 3 4 5 6 7 1 2 3 4 5 6 7

รปท 11–1 ตวอยางการเรยงลาดบจดแบบตางๆ สาหรบปญหา Bandwidth Minimization

รปท 11–1 แสดงตวอยางการเรยงลาดบจดของกราฟ (รปบน) สองวธ (รปลาง) ในกรณทเรยงจดตามรปลางซาย จด 1 กบ 7 (ซงเปนจดทเสนเชอมตออยซงหางกนทสด) หางกน 6 หนวย ในขณะทกรณทเรยงจดตามรปลางขวา จะไดจดทมเสนเชอมตออยซงหางกนทสด หางกนเพยง 1 หนวย และเปนระยะหางทนอยทสด รปลางขวาจงเปนผลเฉลยทตองการ

เหนไดชดเลยวาคาตอบของปญหา bandwidth minimization ของกราฟทม n จด กคอหนงในวธเรยงสบเปลยนของจดทง n จด ดงนนหากเรากากบจดตางๆ ในกราฟดวยจานวน 1, 2, …, n ผล

Page 255: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 239

เฉลยกจะมรปแบบเปน n สงอนดบ (x1, x2, ..., xn) 1� xi � n และ xi �xj เมอ i � j หรออกนยหนงผลเฉลยของปญหาอยในรปแบบของวธเรยงสบเปลยนของ {1,2,.., n}

ตวอยางท 11-2 ปญหาผลรวมของเซตยอย (sum of subsets) ให A = { a1, a2, a3, …, an } เปนเซตของตวเลขจานวนเตม, ai > 0 และมตวเลขจานวนเตม P อกหนงตว สงทตองการหาคอเซต S � A ซงมผลรวมของตวเลขใน S เทากบ P

แบบท 1 : ผลเฉลยของปญหานกคอเซตยอยของ A เชนถา n = 4 A = {25, 10, 9, 2} P = 36จะไดเซตยอยทตองการกคอ {25, 9, 2} (ใหสงเกตวาคาตอบอาจมไดมากกวาหนงเซต) เราสามารถบรรยายเซตยอยใดๆ ดวย n สงอนดบ (x1, x2,..., xn ) xi �{0, 1} (หรอจะเรยกสนๆ วาเปนสตรงของบตความยาว n ) โดยท xi = 0 เมอ ai�S และ xi = 1 เมอ ai�S ดงนนผลเฉลยของตวอยางปญหา A = {25, 10, 9, 2} P = 36 คอ (1, 0, 1, 1)

แบบท 2 : เราอาจบรรยายผลเฉลยทเปนเซตยอยดวยเลขลาดบตางๆ ของสมาชกใน A ทอยในผลเฉลย นนคอบรรยายดวย k สงอนดบ (x1, x2,..., xk ) k � n โดยท xi �{ i | 1 � i � n } ดงนนผลเฉลยของตวอยางปญหา A = {25, 10, 9, 2} P = 36 คอ (1, 3, 4) หมายความวาเซตยอยทเปนผลเฉลยประกอบดวยสมาชกตวท 1, 3, และ 4 ของ A ใหสงเกตวาผลเฉลยหลายตวอาจแทนเซตยอยเซตเดยวกนเชน (3, 4, 1) กเปนผลเฉลยของตวอยางปญหาขางบนน ดงนนเพอลดความซาซอนเราจะกาหนดให xi < xi+1 1 � i < k (นนคอตวเลขตางๆ ซงเขยนใน k สงอนดบทแทนผลเฉลยนนจะเขยนเรยงจากซายไปขวาใหมคาจากนอยไปมาก)

ตวอยางท 11-3 ปญหาการใหสจดกราฟ (vertex coloring) เปนปญหาทตองการใหสจดตางๆ ในกราฟ โดยใชสเปนจานวนนอยทสด ภายใตเงอนไขวาจดทตอกบเสนเชอมเดยวกนตองมสตางกน ตวอยางเชนกราฟในรปท 11–2 ตองใชอยางนอย 4 สจงใหสจดไดตามเงอนไข

1

2 4

65

3

รปท 11–2 ตวอยางการใหสกราฟ (กราฟนตองใช 4 ส)

Page 256: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

240 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

เราสามารถบรรยายผลเฉลยของปญหาการใหสจดไดดวยการแบงสวนเซตของจดในกราฟ ตวอยางเชนคาตอบของการใหสจดของกราฟในรปท 11–2 คอ { {2,4}, {6}, {1,5}, {3}} โดยทแตละสวนทถกแบงมานนมจดทมสเดยวกน ปญหาทนาสนใจกคอวาเราจะบรรยายการแบงสวนเซตดวย n สงอนดบไดอยางไร ?

วธทจะนาเสนอตอไปนอาจจะดซบซอนเลกนอยในตอนแรก แตขอใหดตวอยางประกอบแลวจะเหนเบองหลงการแทนการแบงสวนเซตทงายมากดงน 1

� เขยนการแบงสวนเซตโดยเรยงตามสมาชกตวนอยทสดสดในแตละสวน เชนจากตวอยางคาตอบของการใหสกราฟขางบนน เขยนเรยงใหมได (15:24:3:6) (ตวทขดเสนใตคอตวนอยทสดในสวน เหนไดวาตวทขดเสนใตถกเรยงเปนลาดบจากนอยไปมาก)

� ใหหมายเลขสวน 0, 1, … ไลจากซายจากขวา ตวอยางเชนการแบงสวนขางบนนจะไดจด 1 และ 5 อยในสวนท 0 จด 2 และ 4 อยใน สวนท 1 จด 3 อยในสวนท 2 และจด 6 อยในสวนท 3

� กาหนดให xk คอหมายเลขสวนทเลข k เปนสมาชกอย จากตวอยางขางบนน จะได x1x2x3x4x5x6 คอ 012103 เราเรยก x1x2...xn นวาสตรง RG ยอมาจากคาวา restricted growth string (บางครงเรยกวา restricted growth function) ใหสงเกตวาคาของ xk โตไดอยางจากดตามอสมการขางลางน (สาหรบ k = 2, 3.., n โดยท x1 = 0)

xk � 1 + max( x1, x2, ..., xk–1 )

ถาเราจะลองเขยนสตรง RG ของการแบงสวนเซตทกแบบของ {1,2,3,4} จะไดดงตารางท 11–1ทแสดงในตารางนน จงใจเขยนสตรง RG ทกแบบ (สาหรบกรณ 4 หลก) เรยงลาดบจากนอยไปมากไลจากบนลงลาง เหนไดวาสตรง RG หนงแบบจะตรงกบการแบงสวนเซตหนงแบบ และจานวนการแบงสวนเซตทงหมดจะเทากบจานวนสตรง RG ทเปนไปไดทงหมด

สรปไดวาเราสามารถแทนการแบงสวนเซตไดดวยสตรง RG ซงมรปแบบเปน n สงอนดบ (x1, x2, …, xn ) โดยท x1 = 0 และ xk � 1 + max( x1, x2, ..., xk–1 ) สาหรบ k > 1

ตารางท 11–1 การแบงสวนเซตของ {1,2,3,4} และสตรง RG ตางๆ

Partitions RG strings

1 เพอความกระทดรด จะขอเขยนแบบยอๆ เชน { {2,4}, {6}, {1,5}, {3}} เขยนเปน (24:6:15:3)

Page 257: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 241

(1234) 0000(123:4) 0001(124:3} 0010(12:34) 0011(12:3:4) 0012(134:2) 0100(13:24) 0101(13:2:4) 0102(14:23) 0110(1:234) 0111(1:23:4) 0112(14:2:3) 0120(1:24:3) 0121(1:2:34) 0122(1:2:3:4) 0123

ยงมปญหาอนๆ อกมากมายทตวผลเฉลยอยในรปแบบของวธเรยงสบเปลยน เซตยอย และการแบงสวนเซต เชน

� ปญหา travelling salesman ตองการหาวธเรยงสบเปลยนของเมองทใหพนกงานขายเดนทางดวยตนทนตาทสด โดยผานเมองละหนงครง

� ปญหา graph isomorphism ตองการหาวธเรยงสบเปลยนของจดของทงสองกราฟทแสดงใหเหนวากราฟทงสองนนสมรปกน

� ปญหา 0/1 Knapsack ตองการหาเซตยอยของสงของทตองเลอกเพอใหไดมลคารวมมากสดในขณะทไมเกนความจถง

� ปญหา bin packing ตองการหาการแบงสวนเซตของ {a1, a2, …, an} โดยท 0<ai�1ซงมจานวนสวนนอยทสด โดยทผลรวมของจานวนทงหมดในแตละสวนไมเกน 1

การแจงกรณและตรวจสอบผลเฉลยเมอเราสามารถกาหนดแนชดไดแลววาผลเฉลยของปญหามรปแบบอยางไรแลว กเพยงแตแจกแจงและตรวจสอบผลเฉลยทกๆ แบบวาแบบใดตรงตามเงอนไขของตวอยางปญหา กสามารถหาคาตอบได เชนการแจงกรณทกๆ วธเรยงสบเปลยนจดของกราฟ เพอหาคาตอบของปญหา

Page 258: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

242 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

bandwidth minimization การแจงกรณและตรวจสอบทกๆ เซตยอยของจานวน วาเซตยอยใดมผลรวมเทากบคาตองการของปญหา sum of subset หรอการแจงกรณและตรวจสอบทกๆ การแบงสวนเซตของจดของกราฟในปญหา vertex coloring เพอหาการใหสทมจานวนสนอยทสด เปนตน

หวขอยอยตอไปนนาเสนอการแจงกรณวธเรยงสบเปลยน การแจงกรณเซตยอย และ การแจงกรณการแบงสวนเซต ทสามารถนาไปใชลยตรวจสอบเพอหาคาตอบของปญหาได กาหนดใหผลทไดจากการแจงกรณเกบในแถวลาดบ x[1..n] การแจงกรณทจะนาเสนอนนอาศยกลวธการเรยกแบบเวยนเกดทรบ x[1..k] (1�k�n) ทเตมคามาแลว จากนนขยายผลดวยการเตมคาของ x[k+1] ทเปนไปได แลวเรยกแบบเวยนเกดใหแจกแจงในสวนทเหลอ ดงนนจงเสมอนเปนการคอยๆ เตมคาใน x ไลจากซายไปขวา เมอเพมคาครบถงตวขวาสดกไดหนงรปแบบพรอมนาไปตรวจสอบ

แตตองขอบอกไวตรงนวามยงมวธสรางแบบอนๆ อกมากมาย อาทเชนสรางแบบสม สรางแบบทเกดการเปลยนแปลงนอยๆ จากทไดสรางครงทแลว เปนตน ผสนใจสามารถศกษาไดเพมเตมใน http:// www.theory.csc.uvic.ca/~cos

การแจงกรณวธเรยงสบเปลยนวธเรยงสบเปลยน (permutation) สาหรบชดตวเลข 1,2, ..., n มทงหมด n! แบบ การแจงกรณวธเรยงสบเปลยนกระทาไดหลากหลายรปแบบ เชนการแจงกรณตามลาดบอกษร (lexicographic order) หมายความวาเราเรมท 123...n และไปจบท n...321 โดยท permutation ทไดนนมคาเพมขนเรอยๆ เชน permutation ตางๆของ {1,2,3} ตามลาดบอกษรคอ 123, 132, 213, 231, 312, 321 เปนตน เราสามารถสราง permutation ตามลาดบอกษรแบบงายๆ ไดโดยใชโปรแกรมเวยนเกด คอยๆ ขยายขนาดของ permutation จากทถกกาหนดมา k หลกแรก (จากซายมอ) กทาการเพมหลกท k+1 ใหครบทกรปแบบซงเรยงจากนอยไปมาก ทไมไดใชตวเลขเดยวกนกบ k หลกแรก แลวเรยกแบบเวยนเกดตอ เมอใดทครบ n หลก กได permutation ตามทตองการ เขยนเปนรหสเทยมไดดงน (การเรมแจกแจงตองเรยก EnumLexiPerm( x[1..n], 0 ) )

Page 259: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 243

01: EnumLexiPerm( x[1..n], k )02: {03: if ( k == n ) Check( x[1..n] )04: else {05: for (i=1 to n) {06: x[k+1] = i07: j = 108: while ( j <= k AND x[j] � x[k+1] ) ++j09: if ( j > k ) EnumLexiPerm( x[1..n], k+1 )10: }11: }

EnumLexiPerm รบแถวลาดบ x ทม permutation บางสวนตงแตตวท x[1] ถง x[k] ถา k มคาเทากบ n กสรปวาได permutation ครบถวนหนงแบบ พรอมทจะนาไปใชได (บรรทดท 3) ถายงไมครบ กเตมตวท x[k+1] ดวยเลข 1,2, ..., n ซงไมซากบ k ตวแรก (บรรทดท 8 เปนการตรวจสอบวาซากบ k ตวแรกหรอไม) แลวเรยก EnumLexiPerm แบบเวยนเกดตอเพอขยายขนาดของ permutation ทหาไดไปอกหนงตาแหนง (นนคอเพม k อกหนง ในบรรทดท 9) ) เพยงเทานฟงกชน Check กจะไดรบ permutation ทกๆ รปแบบไปตรวจสอบวาเปนคาตอบของตวอยางปญหาทกาลงสนใจหรอไม

สาหรบกรณทเราไมสนใจวา permutation ตางๆ ทสรางขนตองเรยงตามลาดบอกษร กสามารถสรางไดงายขน ดวยรหสเทยมขางลางน (การเรมแจกแจงตองเรยก EnumPermutations( x[1..n], 0 ) ขอใหนกเรยนไปลองไลดกนเอง )

01: EnumPermutations( x[1..n], k )02: {03: if ( k == 0 ) for(i=1 to n) x[i] = i04: if ( k == n ) Check( x[1..n] )05: else {06: for (i=k+1 to n) {07: Swap( x[k+1], x[i] );08: EnumPermutations( x[1..n], k+1 )09: Swap( x[i], x[k+1] );10: }11: }

การแจงกรณเซตยอยกาหนดให S = {s1, s2, ..., sn} เราสามารถแทนเซต A � S ไดดวยสตรงของบตความยาว n (x1x2...xn) โดยท xi = 1 เมอ si � A และ xi = 0 เมอ si � A ดงนนเราสรางเซตยอยดวยการตงคา

Page 260: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

244 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

บตถดไปแบบ "เลอกไมเลอก" ทละตวดงน (การเรมแจกแจงตองเรยก EnumSubsets01( x[1..n], 0 ) )

01: EnumSubsets01( x[1..n], k )02: {03: if ( k == n ) Check( x[1..n] )04: else {05: x[k+1] = 106: EnumSubsets01( x[1..n], k+1 )07: x[k+1] = 008: EnumSubsets01( x[1..n], k+1 )09: }10: }

EnumSubsets01 รบแถวลาดบ x ทมการพจารณาเลอกไมเลอกสมาชกตวท 1 ถง k ในเซตมาแลว ถา k มคาเทากบ n กแสดงวาไดเซตยอยทสมบรณหนงแบบ พรอมนาไปใชได (บรรทดท 3) ถายงไมครบ ขยายใหพจารณาตวท k+1 ซงมสองกรณคอเลอกตวท k+1 รวมในเซตยอย (บรรทดท 5) แลวเรยก EnumSubsets01 แบบเวยนเกดตอ (บรรทดท 6) อกกรณกคอไมเลอกตวท k+1 (บรรทดท 7) แลวเรยก EnumSubsets01 แบบเวยนเกดตอ (บรรทดท 8) เพยงเทานฟงกชน Check กจะไดรบเซตยอยทกๆ รปแบบไปตรวจสอบวาเปนคาตอบของตวอยางปญหาทกาลงสนใจหรอไม

หรอในกรณทเราอยากแทนเซตยอยหนงดวยหมายเลขลาดบสมาชกในเซตทอยในเซตยอย โดยเขยนหมายเลขลาดบทงหลายเรยงจากนอยไปมาก เชนเราแทน {12, 43, 7} ซงเปนเซตยอยของ {43, 31, 12, 7, 5} ดวย (x1, x2, x3) = (1, 3, 4) (ซงคอรปแบบท 2 ทนาเสนอในตวอยางท 11-2) นนคอบรรยายดวย k สงอนดบ (x1, x2,..., xk ) k�n xi < xi+1 1� i < k โดยท xi �{ i | 1 �i� n } กสามารถกระทาไดดวยรหสเทยมขางลางน (การเรมแจกแจงตองเรยก EnumSubsets02( x[1..n], 0 ) ขอใหนกเรยนไปลองไลดกนเอง)

Page 261: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 245

01: EnumSubsets02( x[1..n], k )02: {03: Check( x[1..k], n )04: for ( i=x[k]+1 to n ) {05: x[k+1] = i06: EnumSubsets02( x[1..n], k+1 )07: }08: }

การแจงกรณการแบงสวนเซตเมอเราแทนการแบงสวนเซตดวยสตรง RG กสามารถแจกแจงการแบงสวนเซตไดโดยการแจงกรณสตรง RG ทงหมด รหสเทยมขางลางนแสดงการขยายขนาดของสตรง RG ในหลกถดไป (ทางขวา) ดวยคาทเปนไดทงหมดตามอสมการ xk � 1 + max( x1, x2, ..., xk–1 ) (การเรยกใชครงแรกตองเรยก EnumPartitions( x[1..n],0 ) )

01: EnumPartitions( x[1..n], k )02: {03: if ( k == n ) Check( x[1..n] )04: else {05: if ( k == 0 )06: m = 007: else08: m = 1 + max( x[1..k] )09: for (i=0 to m)10: x[k+1] = i11: EnumPartitions( x[1..n], k+1 )12: }13: }

EnumPartitions รบแถวลาดบ x ทเกบสตรง RG บางสวนทเตมมาแลวตงแต x[1] ถง x[k] ถา k มคาเทากบ n กแสดงวาไดสตรง RG ทครบถวนหนงรปแบบพรอมนาไปใชได (บรรทดท 3) ถายงไมครบ กขยายขนาดของสตรง RG โดยเตม x[k+1] ทกรปแบบทเปนไปได ตงแต 0, 1, ..., m โดยท m=1+max(x[1..k]) (บรรทดท 8 จากอสมการของ restricted growth function) แตสาหรบกรณท k = 0 จะได x[1] มคาเปนศนยเทานน จงให m=0 สาหรบกรณน (บรรทดท 6) จากนนเตม x[k+1] (บรรทดท 10) แลวเรยก EnumPartitions ตอ (บรรทดท 11) เพยงเทานฟงกชน Check กจะไดรบสตรง RG ซงแทนการแบงสวนเซตทกๆ รปแบบไปตรวจสอบวาเปนคาตอบของตวอยางปญหาทกาลงสนใจหรอไม

Page 262: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

246 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ตนไมปรภมสถานะถาเราจะลองตดตามสถานะของตวแปรตางๆ ระหวางการแจงกรณเซตยอยในรปแบบท 1 (ทนาเสนอในหนาท 244) โดยการเรยก EnumSubsets01(x[1..4],0) จะไดดงตารางท 11–2

ตารางท 11–2 สถานะการทางานของ EnumSubsets01

(x1, x2, x3, x4)Call #k=0 k=1 k=2 k=3 k=4

1 (?,?,?,?)2 (1,?,?,?)3 (1,1,?,?)4 (1,1,1,?)5 (1,1,1,1)6 (1,1,1,0)7 (1,1,0,?)8 (1,1,0,1)9 (1,1,0,0)

10 (1,0,?,?)11 (1,0,1,?)12 (1,0,1,1)13 (1,0,1,0)14 (1,0,0,?)15 (1,0,0,1)16 (1,0,0,0)17 (0,?,?,?)18 (0,1,?,?)19 (0,1,1,?)20 (0,1,1,1)21 (0,1,1,0)22 (0,1,0,?)23 (0,1,0,1)24 (0,1,0,0)25 (0,0,?,?)26 (0,0,1,?)27 (0,0,1,1)28 (0,0,1,0)29 (0,0,0,?)30 (0,0,0,1)31 (0,0,0,0)

แตละบรรทดในตารางคอการเรยก EnumSubsets01 หนงครงซงเปนผลทมาจากการเรยกแบบเวยนเกด แตละครงทมการเรยกจะขยายคาของผลเฉลยไปหนงคา (คา k เพมขนหนง) โดยขยายในล กษณะเชนนจนถงสดมภขวาสดเปนสถานะท k = 4 นนคอไดผลเฉลยในรปของเซตยอยทครบถวนหนงแบบ กนาไปใชเพอตรวจสอบได การเรยกเกดขนทงสน 31 ครง ไดผลเฉลยทแทนเซตยอยทงสน 16 แบบ

Page 263: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 247

เราสามารถจาลองสถานะการทางานของกระบวนการแจงกรณของ EnumSubsets01 ดวยตนไม โดยทจดของตนไมแทนสถานะการทางานซงกคอผลเฉลยทกาลงเตม และเสนเชอมแทนการเตมคาตางๆ ทเปนไปไดของผลเฉลย รปท 11–3 แสดงตนไมซงจาลองการทางานของ EnumSubsets01(x[1..4],0) โดยการเปลยนแปลงสถานะการทางานตามทไดแสดงในตารางท 11–2 นนจะเสมอนกบการแวะผานตนไมนแบบกอนลาดบ (preorder traversal) คาของกงตามวถจากรากถงจดใดๆ แทนผลเฉลยทคอยๆ ขยายขนาดขนเรอยๆ เมอวงลงจนถงใบกไดผลเฉลยสมบรณหนงแบบ ดงนนทจด a ในรปแทนสถานะทมผลเฉลยเปน (1,0,?,?) และทจด b แทนผลเฉลยสมบรณ (1,0,1,1) และทจด c แทน (0,0,1,0) ตนไมตนนมจดรวมทงสน 31 จดตรงกบจานวนการเรยกแบบเวยนเกดในตารางท 11–2 และม 16 ใบ ซงกตรงกบจานวนเซตยอยทงหมดทเปนไปได

x1=

x2=

x3=

x4=

1

1

1

1

1

1 1 1

1111111

0

0 0

0 0 0 0

0 0000000

b c

a

รปท 11–3 ตนไมจาลองการแจงกรณเซตยอยของเซตทมสมาชก 4 ตว (EnumSubsets01)

ถาเราใช EnumSubsets02 ในการแจงกรณเซตยอย (รปแบบท 2) สถานะตางๆ ในการเรยกใช EnumSubsets02(x[1..4],0) จะแสดงไดดวยตนไมในรปท 11–4 (อยากใหนกเรยนลองไลการทางานและเขยนสถานะขอผลเฉลยในทานองเดยวกบทแสดงในตารางท 11–2 ดเพอเปรยบเทยบกบตวตนไม) จะพบวาทกๆ จดในตนไมนเปนผลเฉลยทเปนไปไดทกรปแบบ (เชนจด b แทนผลเฉลย (1,3,4) และ จด c แทนผลเฉลย (3) ซงตรงกบเซตยอยเดยวกบทจด b และ cในรปท 11–3 ตามลาดบ) ตนไมตนนจงมทงสน 16 จด เทากบจานวนเซตยอยทเปนไปไดทงหมด

Page 264: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

248 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

bx4 =

c

x3 =

x2 =

x1 =

4

3

2

1 2 3 4

44343

44 4

รปท 11–4 ตนไมจาลองการแจงกรณเซตยอยของเซตทมสมาชก 4 ตว (EnumSubsets02)

หรอกรณของการแจงกรณวธการเรยงสบเปลยน EnumPermutations (ในหนาท 243) เราสามารถจาลองการทางานของ EnumPermutations(x[1..4],0) ไดดงรปท 11–5 จด aซงเปนใบแทนวธการสบเปลยนแบบหนงคอ (2,3,1,4) และใบ b กแทน (3,4,1,2) ในขณะทจด c แทนวธเรยงสบเปลยนบางสวน (4,1,?,?) ตนไมนมใบเปนจานวนทงสน 4!

x1=

x2=

x3=

x4=

3

4 3

4 2

4 2

4 3

2 3

2

2 3 4

3

4 3

4 1

4 1

4 3

1 3

1

1 3 4

1

4 1

4 2

4 2

4 1

2 1

2

2 1 4

3

1 3

1 2

1 2

1 3

2 3

2

2 3 1

1 2 3 4

a b

c

รปท 11–5 ตนไมจาลองการแจงกรณวธเรยงสบเปลยนของ {1,2,3,4}(EnumPermutations)

เราเรยกตนไมทจาลองสถานะการทางานของการแจงกรณนวาตนไมปรภมสถานะ (state–space tree) เนองจากเปนตนไมทจดตางๆ แทนสถานะการทางานทเปนไปไดทงหมด ถาผลเฉลยมรปแบบเปน n สงอนดบคอเปน (x1, x2, …, xn) ตนไมปรภมสถานะกจะสง n จดทระดบ k เกบผลเฉลย (x1, x2, …, xk) และกงทแตกออกมาจากจดในระดบท k กคอคาทเปนไปไดของ xk+1 เราเรยกจดซงมผลเฉลยทสมบรณวาสถานะผลเฉลย (solution state) การแจงกรณและตรวจสอบจงเสมอนการคนหาจดทเปนสถานะผลเฉลย ซงเมอตรวจสอบแลวตรงตามเงอนไขเปนคาตอบของตวอยางปญหาทไดรบ เราเรยกจดทเปนคาตอบของตวอยางปญหาวาสถานะคาตอบ(answer state)

Page 265: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 249

ตวอยางท 11-4 การคนคาตอบของปญหาผลรวมของเซตยอยโดยใช EnumSubsets01 กาหนดให A = { 25, 10, 9, 2 }

ถา P = 36 (นนคอหาเซตยอยทมผลรวมเทากบ 36) การแจงกรณและตรวจสอบเพอหาคาตอบจะเสมอนกบการแวะผานจดในตนไมในรปท 11–3 แบบกอนลาดบ จะไดเสนทางการคนแสดงดวยเสนทบในรปท 11–6ก ซงกจะไปพบสถานะคาตอบทจด j มผลเฉลยเปน (1,0,1,1) จะไดวา S = {25, 9, 2} มผลรวมเทากบ 36 ตามตองการ สรปไดวากวาจะพบคาตอบตองตรวจสอบจดเปนจานวน 12 จด

แตถาให P = 12 จะไปพบคาตอบทจด k ในรปท 11–6ข ซงตองตรวจสอบจดเปนจานวน 23 จด และถาให P = 16 เราจะตองตรวจสอบทกๆ จดในตนไม (จานวน 31 จด) กอนทสรปวาไมมเซตยอยทมผลรวมเทากบ 16 ตามทตองการ

x1=

x2=

x3=

x4=

1

1

1

1

1

1 1 1

1111111

0

0 0

0 0 0 0

0 0000000

j

(ก) A = { 25, 10, 9, 2 } และ P = 36x1=

x2=

x3=

x4=

1

1

1

1

1

1 1 1

1111111

0

0 0

0 0 0 0

0 0000000

k

(ข) A = { 25, 10, 9, 2 } และ P = 12รปท 11–6 ตวอยางการคนคาตอบของปญหาผลรวมของเซตยอยในตนไมปรภมสถานะ

Page 266: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

250 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ตวอยางท 11-5 คราวนจะขอใช EnumSubsets02 ในการแจงกรณและตรวจสอบเพอหาคาตอบของปญหาผลรวมของเซตยอย กาหนดให A = { 25, 10, 9, 2 }

เราสามารถจาลองการแจงกรณและตรวจสอบดวยการคนคาตอบในตนไมในรปท 11–4 แบบกอนลาดบ ถาให P = 36 จะไดเสนทางการคนแสดงดวยเสนทบดงแสดงในรปท 11–7ก ซงกจะไปพบคาตอบทจด j มสถานะผลเฉลยเปน (1,3,4) จะไดวา S = {25, 9, 2} สรปไดวากวาจะพบคาตอบตองแจกแจงและตรวจสอบจดเปนจานวน 8 จด

ถาให P = 12 จะไปพบคาตอบทจด k ในรปท 11–7ข ซงตองแจกแจงและตรวจสอบจดเปนจานวน 13 จด แตถาให P = 16 เราจะตองตรวจสอบทกๆ จดในตนไม (เปนจานวนทงสน 16 จด) กอนทสรปวาไมมคาตอบ

x4 =

x3 =

x2 =

x1 =

4

3

2

1 2 3 4

44343

44 4

j

(ก) A = { 25, 10, 9, 2 } และ P = 36

k

x4 =

x3 =

x2 =

x1 =

4

3

2

1 2 3 4

44343

44 4

(ข) A = { 25, 10, 9, 2 } และ P = 12รปท 11–7 ตวอยางการคนคาตอบของปญหาผลรวมของเซตยอยในตนไมปรภมสถานะ

Page 267: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 251

การคนตามแนวลก แนวกวาง และตามตนทนนอยสดเราไดแสดงใหเหนวาการแจงกรณและตรวจสอบผลเฉลยในรปแบบตางๆ มการทางานเสมอนกบการคนจดทเปนสถานะคาตอบในตนไมปรภมสถานะทจาลองการแจงกรณนน โดยการแวะผานจดในตนไมแบบกอนลาดบ เราเรยกการคนจดในลกษณะนวาการคนตามแนวลก (depth–first search) ยงมวธการคนจดแบบอนๆ เชนการคนตามแนวกวาง (breadth–first search) การคนตามตนทนนอยสด (least–cost search) เปนตน ในหวขอนเราจะมาศกษาลกษณะเฉพาะของการคนตามแนวลก ตามแนวกวาง และตามตนทนนอยสด ซงเปนการคนทมระบบ เขยนโปรแกรมไดกระทดรด และเหมาะกบปญหาในลกษณะทตางกน

Live–node และ E–nodeกอนทอธบายกนในรายละเอยดตอไป ตองขอเนนยาไวตรงนวาตนไปรภมสถานะนน เปนเพยงตนไมทจาลองการแจงกรณตามทไดเสนอมา ตวตนไมไมมจรง ไมไดถกสรางขนจรง แตถาคดใหดๆ เราเทยบเคยงการเรยกแบบเวยนเกดหนงครงเสมอนการแวะผานจดในตนไม เราเทยบเคยงสถานะของการทางานซงคอผลเฉลย x[1..k] ทรบเขามาตอนเรยก เสมอนกบเปนวถจากรากถงจดนนๆ เราสามารถเทยบเคยงตอไดวาเมอมการเรยกแบบเวยนเกดครงใหม กเสมอนกบการสรางจดใหมในตนไมเพอตรวจสอบ และตราบใดยงมการเรยกแบบเวยนเกดตออก (เพอใหคาทเปนไปไดทงหมดของ x[k+1]) ซงเสมอนกบการแตกกงซงยงไมหมด การเรยกแบบเวยนเกดครงนนกยงมคางอยในหนวยความจา เสมอนกบวาจดนนกยงมชวตอย และเมอใดทการทางานภายในมการเรยกแบบเวยนเกดเมอใหคาของ x[k+1] ครบทกกรณแลวมการคนการทางานไปสผเรยก กเสมอนกบเปนการทาลายจดนนทงไป

ดงนนพอจะเหนสถานะของจดตางๆ ในตนไมวามการสรางจด มการแตกกงของจด และมการทาลายจดทง แนนอนวา ณ ขณะใดขณะหนงจะมเพยงการเรยกแบบเวยนเกดเพยงอนเดยว ทกาลงทางานอย จงเปรยบเสมอนวา ณ ขณะใดขณะหนงมเพยงจดเดยวเทานนทกาลงแตกกงอย แตวา ณ ขณะใดขณะหนงอาจมหลายๆ การเรยกแบบเวยนเกดทยงทางานคางๆ อยได (ทคางเพราะไปเรยกแบบเวยนเกดตอ) จงเปรยบเสมอนวามจดทมชวตอยหลายจดได ณ ขณะใดขณะหนง เราเรยกจดทมชวตอยนวา live node และเรยกจดทกาลงแตกกงอยวา E–node

การคนคาตอบในตนไมปรภมสถานะ มหลายลกษณะขนกบ

Page 268: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

252 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

� วธการเลอกจด (จาก live node ทมอย) มาเปน E–node เพอแตกกง� วธการแตกกง E–node เพอใหได live node ใหมๆ เกดขน

การคนตามแนวลก ตามแนวกวาง และตามตนทนนอยสดมเกณฑในการเลอกและแตกกงทตางกน ดงจะไดนาเสนอใหหวขอยอยตอไปน

การคนตามแนวลกการคนตามแนวลกนนเหมอนกบการแวะผานตนไมแบบกอนลาดบ คอจะลงลกไปเรอยๆ นนแสดงใหเหนวาเรมดวยการสรางรากใหเปน live node รากถกเลอกใหเปน E–node แตกกงได live node ใหม จดใหมนกกลายเปน E–node ทนทเพอแตกกงตอได live node ใหม จดใหมนกกลายเปน E–node ทนทเพอแตกกงตออก เมอใดทจด E–node ปจจบนแตกกงหมดแลว (หรอแตกไมไดกรณเปนใบ) กจะถกทาลาย และเลอกจด live node กอนหนานเปนจด E–node เพอแตกกงตอ สรปไดวาจดบรรพบรษจะแตกกงหมดหลงจดลกหลาน (หรอจะพดวาจดทเกดกอนตายทหลง)

สมมตวาเราตองการคนตามแนวลกในตนไมปรภมสถานะทแสดงในรปท 11–8

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

รปท 11–8 ตวอยางตนไมปรภมสถานะ

รปท 11–9 แสดงจดตางๆ ทถกสรางขนระหวางการคนตามแนวลกในตนไมน วงกลมขาวคอ live node ในขณะทวงกลมดาคอ E–node เราตรวจสอบสถานะของจด v ตอนท v ถกสรางเปน live node และเราแตกกงจด v เมอ v ถกเลอกเปน E–node เรมดวยการสรางรากทจด 1 แตกกงซายไดจด 2 (รป 2) ซงกแตกกงซายไดจด 4 ตอ (รป 3) ซงกแตกกงซายไดจด 8 (รป 4) ถงตรงนจด 8 เปนใบไมแตกกง กถกทาลายไป ยอนขนกลบมาทจด 4 แตกกงขวาไดจด 9 (รป 5) ซงกถกทาลายอกเชนกนเพราะเปนใบ ยอนกลบมาทจด 4 ซงแตกกงหมดแลวกถกทาลาย ยอนกลบขนมาทจด 2 แตกกงขวาไดจด 5 (รป 6) กระทาการสราง แตกกง และทาลายจด ในลกษณะเชนนจนทกๆ ครบทกจด (ดรปประกอบ) จะเหนวาจดตางๆ ในตนไมถกสรางขนเปน live node ตามลาดบการคนตามแนวลก

Page 269: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 253

(1)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(2)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (9)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(3)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (10)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(4)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (11)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(5)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (12)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(6)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (13)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(7)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (14)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

(8)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (15)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1

รปท 11–9 การคนตามแนวลก

Page 270: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

254 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

คงเหนไดชดวาจานวนจดทเปน live node ของตนไมทมอย ณ ขณะใดขณะหนงนนเปน O(h) ซงมปรมาณนอยมากๆ เมอเทยบกบขนาดของตนไม

ตวอยางท 11-6 จงเขยนรหสเทยมเพอคนคาตอบของปญหาผลรวมของเซตยอยแบบตามแนวลก กาหนดให Aคอเซตของจานวน และให P เปนผลรวมทตองการ

ถาเรากาหนดรปแบบผลเฉลยทเปนเซตยอยใหเปนสตรงของบตความยาว n เพอระบวาจะเลอกหรอไมเลอกสมาชกในเซตมาเปนคาตอบ การคนตามแนวลกกคอการแจงกรณเซตยอย EnumSubsets01 (ในหนาท 244 ) เพยงแตเพมการตรวจสอบวาเซตยอยทแจกแจงมาไดนนมผลรวมเทากบทตองการหรอไม ดงน

01: SumofSubset_DFS01( A[1..n], P, x[1..n], k )02: {

03: if ( k==n AND ��

ni

ixiA1

][][ == P )

04: print( A[1..n], x[1..n] )05: else {06: x[k+1] = 107: SumofSubset_DFS01( A[1..n], P, x[1..n], k+1 )08: x[k+1] = 009: SumofSubset_DFS01( A[1..n], P, x[1..n], k+1 )10: }11: }

หากใครไมชอบเขยนดวยการเรยกแบบเวยนเกด กสามารถใช stack ชวยเกบสถานะ (ซงกคอผลเฉลย x[1..k]) ของจดทเปน live node ตางๆ เหตทใช stack กเพราะวาการคนตามแนวลกนนเลอก live node จดลาสดมาเปน E–node เมอใดทจดๆ หนงถกสรางขนกจะ push ลกๆ ของจดนนเรยงลาดบจากขวามาซายลงใน stack เหตผลทตองเรยงจากขวามาซายกเพราะวาการคนตามแนวลกนนตามประเพณนยมจะลงทางซายกอน ดงนนลกซายจะไดถก pop ออกมากอน (ในทนใหนกไววาการ push ไมใชการแตกกง แตการแตกกงจะเกดขนตอน pop) ดงนนการตรวจสอบสถานะของจดจะเกดขนหลง pop การคนตามแนวลกจงประกอบวงวนของการ pop ผลเฉลย x[1..k] ทกากบจดออกมาตรวจสอบ ใหคา x[k+1] และ push ผลเฉลย x[1..k+1] สาหรบทกๆ คาทเปนไปไดของ x[k+1] จากนนกลบไปทางานในวงวนเพอ pop ตอไป โดยเราเรมดวยการ push สถานะของราก เขยนเปนรหสเทยมไดดงน

Page 271: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 255

01: SumofSubset_DFS02( A[1..n], P )02: {03: S = empty stack04: push( S, x[1..0] );05: while ( isNotEmpty( S ) ) {06: x[1..k] = pop( S );

07: if ( k==n AND ��

ni

ixiA1

][][ == P )

08: print( A[1..n], x[1..n] )09: else {10: x[k+1] = 0;11: push( S, x[1..k+1] );12: x[k+1] = 1;13: push( S, x[1..k+1] );14: }15: }16: }

การคนตามแนวกวางกระบวนการคนคาตอบในตนไมปร ภมสถานะอกแบบหนงทมระบบระเบยบกคอ การคนตามแนวกวาง ลกษณะการคนเชนนคลายการแวะผานจดตางๆ ในตนไมทละระดบ คอเรมตรวจสอบสถานะของจดในระดบ 0 (ราก) ตามดวยทกๆ ในระดบท 1 ตามดวยทกๆ จดในระดบท 2 ไลไปทละระดบเชนนจนถงระดบลางสด ดงนนลาดบการตรวจสอบสถานะของจดของตนไมในรปท 11–8 กคอ 1, 2, 3, ..., 15

การคนตามแนวกวางจะเปนวงวนของการเลอก E–node มาหนงจดจาก live node ตางๆ จากนนจะแตกกง E–node ทเลอกมานเพอผลตจดลกออกมาเปน live node ใหหมดทกลก (แลวตวเองกถกทาลายไป) ประเดนนจะเหนวาตางจากการคนตามแนวลกทแตกกงท ละกงแลวเปลยนจดทเพงถกสรางเปน E–node ทนท นนคอในการคนตามแนวลก จดใดเกดกอนตายทหลง แตสาหรบการคนตามแนวกวางนนเกดกอนตายกอน รปท 11–10 แสดงตวอยางการคนตามแนวกวางในตนไมปรภมสถานะในรปท 11–8 กอนอนขอยาเลกนอยกนลมวา เราตรวจสอบสถานะของจดเมอจดนนถกสรางเปน live node และเราแตกกงจดเมอจดนนถกเลอกเปน E–node การคนเรมดวยการใหรากของตนไมเปน live node (แสดงดวยวงกลมขาว – รป 1) จากนนเปลยนเปน E–node (แสดงดวยวงกลมดา) แตกกงสรางจดลกเรยงลาดบจากซายไปขวาได live node ใหมๆ แลวตวเองกถกทาลายไป (รป 2) จากนนลงมาอกหนงระดบ ไลหยบ live node จากซายไปขวามาเปลยนเปน E–node แลวแตกกงได live node เพมขนอกในระดบถดไป กระทาเชนนไปเรอยๆ (ดรปประกอบ) จะเหนวาจดตางๆ ในตนไมถกสรางขนเปน live node ตามลาดบการคนตามแนวกวาง

Page 272: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

256 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

(1)

4

8 9 10 11 12 13 14 15

5 6 7

2 3

1 (9)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(2)

4

8 9 10 11 12 13 14 15

5 6 7

3 2

1 (10)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(3)

4

8 9 10 11 12 13 14 15

5 6 7

1

2 3

(11)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(4)

4

8 9 10 11 12 13 14 15

2

7

1

5 6

3

(12)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(5)

4

8 9 10 11 12 13 14 15

2 3

1

5 6 7

(13)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(6)

8 10 11 12 13 14 15

2 3

1

5 6 7 4

9

(14)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(7)

8 10

5

13 14 15

2 3

1

11

7 4

9 12

6

(15)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

(8)

8 10 11 14 15

2 3

1

5 7 4

9 12 13

6

(16)

8 10 11 14 15

2 3

1

5 74

9 12 13

6

รปท 11–10 การคนตามแนวกวาง

Page 273: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 257

ถาสงเกตลาดบของจดในตนไมทถกสรางขน และลาดบของ live node ตางๆ ทถกเลอกมาเปน E–node เพอแตกกงตอนน จดทถกสรางเปน live node กอนกจะถกเลอกออกมาแตกกงกอน ดงนนจงเปนธรรมชาตอยางยงทเราจะจดเกบ live node ตางๆ ไวใน queue ดงนนวงวนการทางานระหวางการคนตามแนวกวางกคอการดงจดออกจาก queue เพอแตกกงสรางจดลกทงหมดเปน live node เพมใสเขาไปใน queue หมนวนทางานในลกษณะนจน queue หมด

ตวอยางท 11-7 จงเขยนรหสเทยมเพอคนคาตอบของปญหาผลรวมของเซตยอยแบบตามแนวกวาง กาหนดให Aคอเซตของจานวน และให P เปนผลรวมทตองการ

ถาเรากาหนดรปแบบผลเฉลยทเปนเซตยอยใหเปนสตรงของบตความยาว n เพอระบวาจะเลอกหรอไมเลอกสมาชกในเซตมาเปนคาตอบ นนคอมตนไมปรภมสถานะในลกษณะเดยวกบทแสดงในรปท 11–3 การคนตามแนวกวางกจะเรมดวยการสรางราก ตรวจสอบราก เพมรากเขา queue จากนนเขาวงวนเพอลบผลเฉลย x[1..k] กากบจดออกจาก queue เพอนามาขยายโดยการเตมคาของ x[k+1] ตรวจสอบ x[1..k+1] และเพมเขา queue ดวยทกๆ คาทเปนไปไดของ x[k+1] แลวกลบไปทางานของวงวนตอไปจนกวา queue จะหมด เขยนไดเปนรหสเทยมตอไปน

01: SumofSubset_BFS( A[1..n], P )02: {03: Q = empty queue04: Check( A[1..n], P, x[1..0])05: enqueue( Q, x[1..0] );06: while ( isNotEmpty( Q ) ) {07: x[1..k] = dequeue( Q );08: if ( k < n ) {09: x[k+1] = 1;10: Check( A[1..n], P, x[1..k+1])11: enqueue( Q, x[1..k+1] );12: x[k+1] = 0;13: Check( A[1..n], P, x[1..k+1])14: enqueue( Q, x[1..k+1] );15: }16: }17: }18: –––––––––––––––––––––––––––––––––––––––––––––––19: Check( A[1..n], P, x[1..k] )20: {

21: if ( k==n AND ��

ni

ixiA1

][][ == P )

22: print( A[1..n], x[1..n] )23: }

Page 274: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

258 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ใหสงเกตวาจานวน live node ทมอย ณ ขณะใดขณะหนงระหวางการคนตามแนวกวางนน มมากกวากรณของการคนตามแนวลก เนองจากจานวน live node ของการคนตามแนวลกแปรตามสงของตนไม แตจานวน live node ของการคนตามแนวกวางแปรตามจานวนจดในแตละระดบ และตนไมปรภมสถานะมกเปนตนไมอวน จงมจานวนจดในแตละระดบมาก

หลายคนคงตงคาถามตอนนวาถาจดทเปนสถานะผลเฉลยมาอยทใบหมด การคนตามแนวกวางกตองแวะผานจดภายในเปนจานวนมากแนนอน ตวอยางเชนตองการหาเซตยอยของ {25, 10, 9, 2} ทมผลรวมเทากบ 36 พบวากวาทการคนตามแนวกวางจะพบคาตอบ กตองแวะผานจดจานวน 20 จดดงแสดงในรปท 11–11 ในขณะทเราแวะผานเพยง 12 จด ถาคนตามแนวลก (ดตวอยางท 11-4 ประกอบ)

x1=

x2=

x3=

x4=

1

1

1

1

1

1 1 1

1111111

0

0 0

0 0 0 0

0 0000000

a

รปท 11–11 การคนตามแนวกวางของเพอหาเซตยอยของ {25,10,9,2} ทมผลรวมเปน 36

แลวการคนตามแนวกวางมดตรงไหน ? สาหรบกรณทจดทงหลายในตนไมมสถานะเปนผลเฉลยนน การคนตามแนวกวางเมอพบจดทเปนสถานะคาตอบแลว จะประกนไดวาพบจดทเปนสถานะคาตอบทอยในระดบตนทสดของตนไม (เพราะพจารณาลงมาทละระดบๆ) แลวประเดนนมขอดตรงไหน ? ตรงนขนกบตวปญหา ตวอยางเชนตองการหาเซตยอยทมผลรวมเทากบคาทตองการ และตองการใหไดเซตยอยขนาดเลกทสดดวย การคนตามแนวกวางจงพจารณาเซตยอยขนาดเพมขนทละหนงทกๆ แบบ ตามระดบทกาลงคน นอกจากนสาหรบบางปญหาเราอาจพบตนไมปรภมสถานะทสงมากๆ (หรอบางครงเปนอนนต) ถาคาตอบทคนอยทางขวาของตนไมในระดบไมลกนก การคนตามแนวลกกจะเสยเวลามากๆ ลงตามแนวลก ถาเปนตนไมอนนตกจะตดในวงวน (จนในทสดขอมลลน stack) ในขณะทการคนตามแนวกวางจะคนลงมาทละระดบๆ และสามารถคนพบคาตอบ (เราจะไดเหนเหตการณเชนนในเรองของกราฟปรภมสถานะในภายหลง)

Page 275: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 259

การคนตามตนทนนอยสดถาคดดดๆ จะรสกวาไมเหนมเหตผลเลยสาหรบวธการเลอกจดทจะมาเปน E–node เพอแตกกงตอของการคนตามแนวลกและแนวกวาง การคนตามแนวลกบอกใหเราลงลกกอน การคนตามแนวกวางบอกใหเราลงทละระดบ แนนอนวาฟงดแลวมระเบยบด แตเปนการคนทไมไดใชความรจากตวอยางปญหาทไดรบมาเพอนาทางไปสคาตอบเลย จงเกดแนวคดวาหากเราสามารถใชขอมลจากตวอยางปญหาทรบมานน ประกอบกบผลเฉลยบางสวน x[1..k] ตามจด live node ตางๆ ทเกบอย มาคานวณหาคาอะไรบางอยาง ซงขอเรยกวาตนทน (cost) ซง "พอจะ" นามาใชเปนแนวทางวาจด live node ใดทมตนทนนอยสด "นาจะ" นาไปสคาตอบทตองการ (ใหสงเกตวาผเขยนใชคาวา "พอจะ" และ "นาจะ" ซงรสกไมคอยมนใจเลย ความจรงกตองเปนเชนนน เพราะหากเรามนใจเตมรอยวาวธคดตนทนจากผลเฉลยบางสวนทตวนอยทสดจะนาไปสคาตอบไดแน แสดงวาเราพบอลกอรทมแบบตระกลามแลว ไมตองมาเสยเวลาคนหรอก ดงนนในทนเราจงมความไมคอยมนใจ แตยงมความหวง)

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

แลวตนทนหรอกาไรทวานจะคานวณมาไดอยางไร ประเดนนขนกบตวปญหา (ทานองเดยวกบการเลอกแบบตระกลาม) ขอยกเปนตวอยางพอเหนแนว แลวเราจะไดเหนตวอยางเพมอกในภายหลง อยางไรกตามอยาลมวาเราคานวณตนทนหรอกาไรนจากสถานะของจด (ซงคอผลเฉลย x[1..k]) กบขอมลของตวอยางปญหา

ตวอยางท 11-8 ปญหาผลรวมของเซตยอย ตองการหาเซตยอยของ A = {a1, a2, …, an} ทมผลรวมเทากบ P และเลอกใชรปแบบผลเฉลย (x1, x2, …, xk) ประกอบดวยเลขลาดบตางๆ ของสมาชกใน A ทอยในผลเฉลย (แบบท 2 ทนาเสนอในหนาท 239)

กาหนดใหตนทนของจดทมผลเฉลย (x1, x2, …, xk) คอ

��

���

��� ��

��

otherwise

PaifaPxxxrkj x

kj xk jj 1121 ),...,,(

Page 276: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

260 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ตความไดวาดวยการกาหนดตนทนเชนน เราอยากเลอกจดทแทนเซตยอยซงมผลรวมใกลเคยงกบ P ใหมากทสด แตมคาไมเกน P รปท 11–12 แสดงการคนตามตนทนนอยสดเพอหาเซตยอยของ {25,10,9,2} ทมผลรวมเปน 36 (รป ก) และมผลรวมเปน 12 (รป ข)

x4 =

x3 =

x2 =

x1 =

4

3

2

1 2 3 4

44343

44 4

j

36

11 26 27 34

1 2 9

� � 0

(ก) A = { 25, 10, 9, 2 } และ P = 36

k

x4 =

x3 =

x2 =

x1 =

4

3

2

1 2 3 4

44343

44 4

12

� 2 3 10

� 0

(ข) A = { 25, 10, 9, 2 } และ P = 12รปท 11–12 ตวอยางการคนคาตอบของปญหาผลรวมของเซตยอยในตนไมปรภมสถานะ

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

ในการคนตามแนวลกเราเตรยมจดทจะเปน E–node ไวใน stack การคนตามแนวกวางเราใช queue สาหรบการคนตามตนทนนอยสดนนเรากจะใช priority queue ซงสรางไดดวย min heap เปนตวจดเกบ live node สาหรบกรณการคนตามตนทนนอยสด (แตถาเปนกรณการคนตามกาไรมากทสด กคงตองใช max-heap) โดยแตละจดมตนทนกากบเปน priority วงวนการคนจะประกอบดวยการเลอกจดถดไปมาแตกกง ซงกเพยงแต ExtractMin ออกจากฮป จากนนแตกกง

Page 277: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 261

ไดลกๆ ทงหมดออกมา คานวนคาตนทน แลวเพมกลบเขาไปในฮป ทาการคนเชนนจนกวาจะพบคาตอบหรอฮปวาง (ซงแสดงวาไมพบคาตอบ)

ดงนนการคนคาตอบของปญหาผลรวมของเซตยอย โดยใชตนทนทนาเสนอขางบนนสามารถเขยนเปนรหสเทยมไดดงน (เราใชโครงการทางานของการแจงกรณเซตยอย EnumSubset02ในหนาท 245 H เปนฮปทใชเกบสถานะของจดโดยมตนทนซงคานวณจากฟงกชน Cost เปน priority กากบสถานะ )

01: SumofSubsets_LCSearch( A[1..n], P )02: {03: H = empty min–Heap04: Check( A[1..n], P, x[1..0])05: Insert( H, x[1..0], Cost(A[1..n], P, x[1..0]) )06: while ( isNotEmpty( H ) ) {07: x[1..k] = ExtractMin( H );08: for ( i=x[k]+1 to n ) {09: x[k+1] = i00: Check( A[1..n], P, x[1..k+1] )01: Insert( H, x[1..k+1], Cost(A[1..n], P, x[1..0]) )02: }13: }14: }15: ––––––––––––––––––––––––––––––––––––––––––––––––––––16: Check( A[1..n], P, x[1..k] )17: {

18: if ( ��

ki

ixA1

]][[ == P ) print( A[1..n], x[1..k] )

19: }20: ––––––––––––––––––––––––––––––––––––––––––––––––––––21: Cost( A[1..n], P, x[1..k] )22: {

23: if ( ��

ki

ixA1

]][[ � P ) return (P –��

ki

ixA1

]][[ )

24: return �25: }

กราฟปรภมสถานะตวอยางของปญหาทเราไดนาเสนอมาตงแตตนบทนน เราสามารถจาลองการแจงกรณผลเฉลยไดดวยตนไม ดวยคณสมบตของตนไมนนหมายความวาจดๆ หนงในตนไมมทมาไดเพยงทางเดยว (มจดพอ/แมเพยงจดเดยว) แตกมหลายปญหาทการจาลองการแจงกรณผลเฉลยในลกษณะทกระทามาจะไดเปนกราฟ กราฟทแทนการแจงกรณในลกษณะนกเรยกวาเปนกราฟปรภมสถานะ (state–space graph) จะขอนาเสนอดวยตวอยางตอไปน

Page 278: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

262 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ตวอยางท 11-9 ปญหาคณสองหารสาม 2 : วากนวาจานวนเตมใดๆ สามารถหาไดดวยการเรมจากเลข 1 แลวคณสอง และ/หรอ หารสาม (ปดเศษทง) ไปเรอยๆ เชน 10 = 1�2�2�2�2/3�2 เปนตน จงหาวธการไดมาซงจานวนเตม n ดวยวธขางตน

ผลเฉลยของปญหานอยในรปแบบของ (x1, x2, ..., xk ) โดยท xi = “�2” หรอ “/3” ใหสงเกตวาผลเฉลยของปญหานมขนาดไมจากด การขยายผลเฉลย x[k+1] เพมจาก x[1..k] ระหวางการแจงกรณ กกระทาไดไมยากโดยแตกกงออกสองกง เสนซายใหเปน “/3” เสนขวาใหเปน “�2”รปท 11–13 แสดงสวนบนๆ ของตนไมปรภมสถานะทจาลองการแจงกรณผลเฉลย ตวเลขภายในวงกลมทจด แทนคาทไดจากการคณสองและ/หรอหารสามตามวถจากรากลงมาถงจดนน

x1=

x2=

x3=

/3

/3

/3

/3

/3 /3 /3

�2

�2 �2

�2 �2 �2 �2

1

0 2

0 0 0 4

81000000

รปท 11–13 สวนหนงตนไมปรภมสถานะในการแจงกรณผลเฉลยของปญหาคณสองหารสาม

มองดตนไมในรปขางบนน กรสกไดทนทวามจดมากมายทใหคาซากน (ในรปนม 0 ซากน10 จด และม 1 ซากน 2 จด) ถาปลอยใหคนในตนไมนคงใชเวลานานมากๆ (เพราะมจานวนจดมาก แถมยงซากนอกดวย) นอกจากนถาปลอยใหคนตามแนวลก กคงคนไมมวนสนสด (เพราะลงซายตลอดไดคา 0 ตลอด จะมเรวกกรณเดยวคอตองการหาคา 0) 3 เราสามารถลดรปของตนไมนลงไดโดยรวมจดทใหคาเดยวกนเขาดวยกน จะไดเปนกราฟปรภมสถานะดงแสดงในรปท 11–14

2 ปญหานมทมาจากปญหา 3x+1 อยากใหนกเรยนลองสบคนแหลงขอมลอนวานคอปญหาอะไร3 ตวอยางนชใหเหนวาใชการคนตามแนวลกไมไดเลย แตใชการคนตามแนวกวางนอกจากจะพบคาตอบแลว ยงพบคาตอบทประกอบดวยการคณสองและ/หรอหารสามทมจานวนตวกระทานอยทสดดวย (เพราะจะพบคาตอบในระดบทตนทสด)

Page 279: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 263

/3

/3

�2

�2

�2

1

0 2

4

8

/3

/3 �2

รปท 11–14 สวนหนงกราฟปรภมสถานะทลดรปจากตนไมในรปท 11–13

เมอเราจาลองการแจงกรณไดดวยกราฟปรภมสถานะแลว สงทตองระวงและคอยตรวจสอบเสมอระหวางการคนคาตอบในกราฟกคอ ตองไมแตกกงไปแวะผานจดทเคยผานมาแลว ดวยวธการหลกเลยงการแวะผานจดทเคยผานมาในอดต เราจะสามารถใชการคนตามแนวลก และวธอนๆ ทไดนาเสนอมาได

รปท 11–15 แสดงตวอยางการคนตามแนวลกเมอกาหนดให n = 10 เสนประสเทาแสดงใหเหนถงการไมแตกกงไปแวะผานจดทเคยผานมาแลว ซงกไดคาตอบวา 10 = 1�2�2�2�2/3�2

/3

/3

�2

�2

�2

1

0 2

4

8

/3

/3 �2

�2

16

/3

/3

/3 �2

10

5

รปท 11–15 การคนตามแนวลกไดคาตอบ 10 = 1�2�2�2�2/3�2

การคนตามแนวลกไมประกนวาจะไดคาตอบดวยจานวนตวกระทาทนอยทสด เชนเมอ n = 13 การคนตามแนวลกแวะผานจดเปนจานวน 76 จด แลวพบคาตอบคอ

13 = 1x2x2x2x2/3x2/3x2x2x2x2x2/3x2/3/3x2x2/3x2x2x2x2x2x2/3x2/3/3x2x2/3x2/3x2x2/3x2x2/3x2/3x2x2/3/3x2x2/3x2x2/3/3x2x2x2/3x2x2x2/3x2/3/3x2x2x2/3/3x2x2/3x2/3

Page 280: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

264 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

แตถาใชการคนตามแนวกวางจะไดคาตอบ 13 = 1x2x2x2x2/3x2x2x2/3 ซงประกอบดวยตวกระทาทมจานวนนอยทสด โดยจะแวะผานจดเปนจานวน 21 จด (ลองเขยนกราฟระหวางการคนตามแนวกวางดวยมอด สกครกไดคาตอบ)

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

01: M2D3_DFS( n, x[1..k], s )02: InsertSet( T, s );03: if ( s == n ) {04: print( x[1..k] );05: found = TRUE;06: } else {07: found = FALSE;08: s1 = s / 309: if ( notExist( T, s1 ) ) {10: x[k+1] = “/3”11: found = M2D3_DFS( n, x[1..k+1], s1 )12: }13: s1 = s x 214: if ( (NOT found) AND notExist( T, s1 ) ) {15: x[k+1] = “x2”16: found = M2D3_DFS( n, x[1..k+1], s1 )17: }18: }19: return found20: }

M2D3_DFS รบคา n ทตองการหาวธสราง รบ x[1..k] ซงเปนผลเฉลยทไดสรางมา โดยทผลของการคณสองและ/หรอหารสามจากคา 1 ตามทระบใน x[1..k] นนจะมคาเทากบ s (เรมเรยกครงแรก k=0, และ s=1 ) เนองจากเรากาลงแวะผานจดทมคาเปน s กอนอนกจากอนวาเราไดแวะผาน s แลว โดยการเพมคา s ไวในโครงสรางขอมลประเภทเซต (บรรทดท 2) ถา s มคาเทากบ n กแสดงวาพบคาตอบแลว (บรรทดท 2 ถง 4) ถาไมเทากลองหารสาม (บรรทดท 7) ตรวจสอบกอนวาเปนคาใหมนเคยแวะผานมาหรอยง (บรรทดท 9) ถายงกขยายผลเฉลยและลงไปคนคาตอบตอ (บรรทดท 10 และ 11) ถาคนเสรจแลวไมพบคาตอบ กลองคณสองแลวทาการตรวจสอบวาซากบคาในอดตหรอไมกอนจะลยคนตอในทานองเดยวกน (บรรทดท 13 ถง 17)

ขอใหนกเรยนลองคดดวาอะไรจะเกดขนถาเราแตกกงในลาดบทตางจากททามา คอใหลอง “x2” กอนจงลอง “/3”

Page 281: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 265

การยอนรอยอานถงตรงน นกเรยนหลายคนคงรสกวา การแจงกรณและตรวจสอบทผานๆ มานน จานวนผลเฉลยมมากเหลอเกน คอมเปนจานวนซงเปนฟงกชน exponential หรอ factorial ของขนาดของปญหา ดงนนการคนคาตอบไมวาจะตามแนวลก ตามแนวกวาง หรอตามตนทนนอยสดนนกมโอกาสทจะแวะผานจดเปนจานวนมากๆ เชนกน แตความจรงแลวขณะทเราคนจดภายในของตนไมนน เราสามารถอาศยความรอะไรบางอยางเกยวกบตวปญหามาชวยเรงความเรวในการคนจดทเปนสถานะคาตอบได โดยความรนจะชวย “เลม” (prune) ตนไมยอยๆ ขณะแวะผานจดออกจากการพจารณาได นนคอเมอมนใจวาสถานะผลเฉลยทงหลายในตนไมยอยนนๆ ไมมทางเปนสถานะคาตอบของตวอยางปญหาทกาลงคนคาตอบอย กปวยการทจะแวะผานจดตางๆ ในตนไมยอยนน การเลมตนไมขณะคนคาตอบน ในทางปฏบตสามารถขจดจานวนจดทไมตองนามาพจารณาออกเปนจานวนมากได

ขณะทกาลงแวะผานจดในตนไม (หรอกราฟ) ปรภมสถานะ ระหวางการแตกกงๆ หนง เราจะคดสกเลกนอยกอนวาจดทจะผลตเปน live node ใหมนนม "แวว" วานาไปสจดทเปนสถานะคาตอบไดหรอไม ถาเราสามารถสรปไดแนๆ วาจดตางๆ ในตนไมยอยทเรากาลงจะแตกกงไปน ไมมทางเปนสถานะคาตอบแนนอน กจะไดไมตองเสยเวลาไปผลตรากของตนไมยอยน จงเสมอนเปนการเลมตนไมยอยนออก ทาใหตนไมปรภมสถานะทตองคนมขนาดเลกลงไดโดยนย การพจารณาความมแววหรอไมมแววของจดนนจะเปนอยางไรนน ขนกบลกษณะของปญหา

ตวอยางท 11-10 ปญหา sum of subsets : ปญหานผลเฉลยอยในรปของเซตยอย ถาเรากาลงขยายผลเฉลย x[1..k] ทจดๆ หนงในตนไมเปน x[1..k+1] แลวไดผลรวมของจานวนทงหมดทไดเลอกมาเกนคา P ทตองการ กคงมนใจไดแนๆ วาจดตางๆ ในตนไมยอยขางลางยอมมผลรวมเกน Pดวย จงเหนไดชดวาจดทมผลเฉลย x[1..k+1] นนไมมแวว

ตวอยางท 11-11 ปญหา vertex coloring : ปญหานผลเฉลยอยในรปของการแบงสวนเซต (ซงแทนไดดวยสตรง RG ดงทไดนาเสนอในตวอยางท 11-3 หนาท 239) ถาเรากาลงขยายผลเฉลย x[1..k] ทจดๆ หนงในตนไมเปน x[1..k+1] แลวพบวาสททาใหจด k+1 (ซงกคอคาของ x[k+1]) นนผด

Page 282: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

266 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

กฎ นนคอมเสนเชอมทตอจด k+1 กบจดอนทเราใหสแลวและเปนสเดยวกบสท k+1 เพยงเทานกมนใจแนวา x[1..k+1] ทเราอยากจะแตกกงไปนนไมมแวว

เมอเรานาแนวคดในการตรวจสอบความมแววของจดกอนแตกกง รวมกบการคนตามแนวลก จะไดการคนทเรยกวาการยอนรอย (backtracking) ความจรงแลวการยอนรอยเปนพฤตกรรมของการคนตามแนวลกทเมอมการแตกกงทจดๆ หนงจนหมดแลว กจะยอนตามรอยเดมทมา กลบไปยงจดระดบบนเพอแตกกงตอ เพยงแตวาเมอผนวกกบการตรวจสอบความมแววของจดดวย ทาใหเกดการยอนรอยทเรวกวาปกต เนองจากสามารถเกดการยอนรอยไดทจดภายในโดยไมตองลงไปคนระดบลางๆ แทนทจะตองไลคนจากรากถงใบแลวจงยอนรอยกลบในทางเดมเหมอนการคนตามแนวลกแบบปกต

ตวอยางท 11-12 ปญหา sum of subsets : คราวนเราจะมาใชการยอนรอยในการคนคาตอบของปญหาผลรวมของเซตยอย ขอทวนปญหาเลกนอยเราตองการหาเซตยอย S ของ A = { a1, a2, a3, …, an } ทมผลรวมเปน P จะขอใชผลเฉลยในรปแบบเลอกไมเลอก นนคอผลเฉลยมรปแบบเปน ( x1, x2, …, xn ) xi �{0, 1} โดยท xi = 0 เมอ ai�S และ xi = 1 เมอ ai�S และใชวธการตรวจสอบความมแววของจดตามตวอยางท 11-10 นนคอ (x1, x2, …, xk, xk+1) มแววเมอ i

ki iax��

11

� P มฉะนนกถอวาไมมแวว

ถา A = {25, 10, 9, 2} และ P = 12 รปท 11–16 แสดงเสนทางการคนคาตอบ และ “ระเบด” ในรปนนคอการแตกกงทจะไปยงจดทไมมแวว (กเลยไมไป) เรมทรากแลวอยากลงมาทางซายเปนการให x1=1 หมายความวาเลอกเลข 25 พบวามคาเกน 12 กรวาไมตองลงไปคนตอแลว (เพราะเกนคา P ทตองการ) กมาแตกกงตอทราก นนคอคนตอทางขวาเปนการให x1=0 หมายความวาไมเลอกเลข 25 ผลรวมของเลขตางๆ ทไดเลอกมากยงไมเกน 12 กลงไปคนตอตามแนวลกทางซาย x2=1 คอการเลอกเลข 10 ไดผลรวมเปน 10 ยงไมเกน 12 กลงไปคนตออกทางซาย x3=1 คอการเลอกเลข 9 คราวนไดผลรวมของเลขทไดเลอกมาเปน 19 พบวาเกน 12 ไมมแวว กไมไป แตกกงทางขวาตอ (x3=0) แลวลงซายอกครง (x4=1) กจะไดคาตอบ

และถาสงเกตอกสกนดจะพบวาสาหรบปญหาผลรวมของเซตยอย ลาดบของขอมลใน A กสงผลกบเวลาในการคนคาตอบดวย ถากาหนดให A = {2, 9, 10, 25} และ P = 12 จะไดผลของการคนแบบยอนรอยเปนดงรปท 11–17

Page 283: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 267

x1=

x2=

x3=

x4=

1

1

0

0

�=0

�=25

�=0

�=10

�=10

�=12

�=19

รปท 11–16 การคนแบบยอนรอยเมอ A = {25, 10, 9, 2} และ P = 12

x1=

x2=

x3=

x4=

1

1

1

11

0

0

00

�=0

�=2

�=11 �=2

�=11 �=12

�=36 �=11 �=37 �=12

�=21

รปท 11–17 การคนแบบยอนรอยเมอ A = {2, 9 10, 25} และ P = 12

จากลกษณะการคนตามแนวลก (SumofSubset_DFS01 ทแสดงในตวอยางท 11-6 ) และการตรวจสอบความมแววของจด สามารถเขยนเปนรหสเทยมไดดงน

01: SumofSubset_BT01( A[1..n], P, x[1..n], k )02: {

03: sum = ][][1

iAixki

���

04: if ( k == n AND sum == P )05: print( A[1..n], x[1..n] )06: if ( k < n ) {07: if ( sum + A[k+1] <= P ) {08: x[k+1] = 109: SumOfSubset_BT01( A[1..n], P, x[1..n], k+1 )10: }11: x[k+1] = 012: SumOfSubset_BT01( A[1..n], P, x[1..n], k+1 )13: }14: }

Page 284: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

268 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

โครงของการทางานหลกๆ จะคลายการคนตามแนวลกทไดแสดงในตวอยางท 11-6 เพยงแตเราเพมการตรวจสอบความมแววของจดกอนจะแตกกงซาย (x[k+1]=1) ในบรรทดท 7 กรณของการแตกกงขวานนไมตองตรวจสอบ เพราะถา (x1, x2, …, xk) มแวว (x1, x2, …, xk, 0) กตองมแววดวย

ตวอยางท 11-13 ปญหา sum of subsets : คราวนจะใชการยอนรอยเพอคนคาตอบในตนไมปรภม ทแจกแจงผลเฉลยในรปแบบทแทนเซตยอยหนงดวยหมายเลขลาดบสมาชกในเซตทอยในเซตยอยนนโดยเขยนหมายเลขลาดบทงหลายเรยงจากนอยไปมาก (ซงคอรปแบบท 2 ทไดนาเสนอในตวอยางท 11-2) และใชวธการตรวจสอบความมแววของจดตามตวอยางท 11-10 นนคอ (x1, x2, …, xk, xk+1) มแววเมอ � �

11

ki xi

a � P มฉะนนกถอวาไมมแวว

ถา A = {25, 10, 9, 2} และ P = 12 รปท 11–18 แสดงเสนทางการคนคาตอบ และ “ระเบด” ในรปนนคอการแตกกงไปยงจดทไมมแวว เรมทรากแลวอยากลงมาทางกงซายซงคอการเลอกเลข 25 (x1=1) พบวามคาเกน 12 กรวาไมมแวว ไมตองลงไปคนตอ จงไปคนตอในกงถดไปคอการเลอกเลข 10 (x1=2) มผลรวมเปน 10 ไมเกน 12 กลงไปคนตอคอการเลอกเลข 9 (x2=3) คราวนไดผลรวมของเลขทไดเลอกมาเปน 10+9=19 พบวาเกน 12 จงไปคนตออกกงหนง (x2=4) ไดผลรวมเปน 12 ตรงตามทตองการ

�=0

�=25

�=10

�=19

�=12

x4 =

x3 =

x2 =

x1 = 2

4

รปท 11–18 ตวอยางการยอนรอยในตนไมปรภมสถานะของปญหาผลรวมของเซตยอย

จากลกษณะการคนตามแนวลก (SumofSubset_DFS02 ทแสดงในตวอยางท 11-6 ) และการตรวจสอบความมแววของจด (เพมการตรวจสอบนทบรรทด 7) สามารถเขยนเปนรหสเทยมไดดงน

Page 285: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 269

01: SumOfSubset_BT02( A[1..n], P, x[1..n], k )02: {

03: sum = ��

ki

ixA1

]][[04: if ( sum == P ) then print( A[1..n], x[1..k] )05: for (i=x[k]+1 to n) {06: x[k+1] = i07: if ( sum + A[x[k+1]] <= P )08: SumOfSubset_BT02( A[1..n], P, x[1..n], k+1 )09: }10: }

เราสามารถออกแบบการตรวจสอบความมแวว ใหสลบซบซอนมากกวาทไดนาเสนอมากได เพอใหสามารถเลมตนไมออกไดมากขน เชน �

ki xi

a1

+ ���

nxi i

ka

1� P แสดงวายงมแวว

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

ตวอยางท 11-14 ปญหา n ควน : กาหนดใหมตารางขนาด n�n ชอง และควน n ตว ปญหา n ควน (n–queen problem) คอปญหาการหาวธการวางควนทง n ตวบนตารางทไมทาใหควนตวใดมองเหนควนตวอนๆ 4 รปท 11–19 แสดงผลเฉลยของปญหา n ควน เมอ n=4 และ 5

Q QQ Q

Q QQ Q

n = 4 Q n = 5

รปท 11–19 ผลเฉลยของปญหา n ควน

รปแบบของผลเฉลยมหลายแบบ ดงน

� แบบท 1 : กาหนดใหแตละชองในตารางมหมายเลขกากบไลจาก 1, 2, ..., n2 จะไดรปแบบของผลเฉลย เปน n สงอนดบ ( x1, x2, ..., xn ) โดยท xi �{ i | 1 � i � n2} นนคอเราบรรยายผลเฉลยดวยตวเลข n ตวทระบหมายเลขชองทวางควน n ตว ผลเฉลยจะมคาได n2n แบบ รปแบบนม n สงอนดบมากมายทมคาซงไมมทางเปนคาตอบของปญหาได เชนกรณ xi ซาคากบ xj โดยท i � j

4 ควนในหมากรกฝรงนนจะสามารถวงไดทงขนบนลงลาง ทางซายทางขวา และตามแนวทแยง ไดระยะทางไกลถงขอบตาราง

Page 286: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

270 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

� แบบท 2 : เราเพมเงอนไข xi < xi+1 เพอแกปญหาไมมคา xi ซากนของแบบแรก นนคอเปนการเลอกเลข n ตวจากตวเลขทเปนไปได n2 ตว ดงนนรปแบบของผลเฉลยเปน ( x1, x2, ..., xn ) โดยท xi �{ i | 1 � i � n2} และ xi < xi+1 1 � i < n จงมผลเฉลยทงสน C(n2, n) แบบ รปแบบนกมปญหาเชนมหลายๆ ผลเฉลยทวางควนมากกวาหนงตวในแถวแนวนอนเดยวกน เปนตน

� แบบท 3 : เพอความมนใจวาจะไมมการวางควนมากกวาหนงตวในหนงแถวแนวนอน เราจะเลกใหหมายเลขกบแตละชอง แตจะกาหนดหมายเลขใหแตละแถวแนวตงเปน 1 ถง n แลวใหผลเฉลยเปนตวเลข n ตวแทนหมายเลขแถวแนวตงของตาแหนงควนในแตละแถวแนวนอน รปแบบของผลเฉลยเปน ( x1, x2, ..., xn ) โดยท xi �{ i | 1 � i � n } เหมอนกบการกาหนดพกดใหควนตวท i อยตาแหนง ( i, xi ) ดงนนจะมผลเฉลยทเปนไปได nn แบบ แตเหนไดวามกรณทหนงแถวแนวตงมควนไดหลายตว ซงไมมทางเปนคาตอบได

� แบบท 4 : กาหนดรปแบบของผลเฉลยใหเปนวธเรยงสบเปลยน (permutation) ของ {1,2,..., n} นนคอกาหนดใหเปน ( x1, x2, ..., xn ) โดยท xi �{ i | 1 � i � n} และ xi � xj เมอ i �j ซงจะสามารถขจดปญหากรณทควนอยแนวตงเดยวกนไปไดโดยอตโนมต และมจานวนผลเฉลยทงสน n! แบบ แตกยงมปญหาวาบางผลเฉลยนนเปนคาตอบไมไดเพราะมควนเกนหนงในแนวทแยงเดยวกน

เราไดแสดงใหเหนถงการกาหนดรปแบบของผลเฉลยทมผลตอจานวนผลเฉลยทเปนไปได รปแบบทตองการคอรปแบบทไดจานวนผลเฉลยทงหมดนอยๆ สาหรบปญหา n ควน เราเลอกแบบสดทายเพราะ n2n � C(n2, n) � nn � n!

จากรปแบบของผลเฉลยในแบบท 4 เรากสามารถอาศยการแจงกรณและตรวจสอบวธเรยงสบเปลยน (EnumPermutations ในหนาท 243) เพอหาคาตอบได ถา n = 4 จะจาลองไดดวยตนไมปรภมสถานะในรปท 11–20

ผลเฉลย (x1, x2, ..., xk) กคอตาแหนงของการวางควน k ตว ใน k แถวแรก (แถวละหนงตว) โดยท xi กคอหมายเลขชองของควนในแถวท i (x1, x2, ..., xk) มแววกเมอควนทง k ตวนไมมตวใดเหนกนเลยตามแนวทแยง (แนวอนไมตองไปคด เพราะรปแบบของผลเฉลยนนบงคบใหไมเหนกน) ถาเราขยายผลเฉลยเปน (x1, x2, ..., xk, xk+1) ผลเฉลยนจะมแววกเมอ xk+1 ซงคอตาแหนง

Page 287: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 271

ของควนตวท k+1 นนไมอยในแนวทแยงใดๆ กบควน k ตวกอนหนา ดงนนสามารถเขยนการคนคาตอบของปญหา n ควนดวยการยอนรอยเปนรหสเทยมไดดงน

x1=

x2=

x3=

x4=

3

4 3

4 2

4 2

4 3

2 3

2

2 3 4

3

4 3

4 1

4 1

4 3

1 3

1

1 3 4

1

4 1

4 2

4 2

4 1

2 1

2

2 1 4

3

1 3

1 2

1 2

1 3

2 3

2

2 3 1

1 2 3 4

รปท 11–20 ตนไมปรภมสถานะของปญหา 4 ควน

01: nQueen_BT( x[1..n], k )02: {03: if ( k == 0 ) for(i=1 to n) x[i] = i04: if ( k == n ) print( x[1..n] )05: else {06: for (i=k+1 to n) {07: Swap( x[k+1], x[i] );08: if ( promising( x[1..k+1] ) )09: nQueen_BT( x[1..n], k+1 )10: Swap( x[i], x[k+1] );11: }12: }13: }14:15: promising( x[1..k] )16: {17: for (j=1 to k–1)18: if (abs(x[j]–x[k])==abs(j–k) ) return FALSE19: return TRUE20: }

โครงการทางานมลกษณะเหมอนการแจงกรณวธการเรยงสบเปลยน (EnumPermutationsในหนาท 243) เพยงแตเพมการตรวจสอบการขยายผลเฉลยวามแววหรอไมในบรรทดท 8 โดยเรยกฟงกชน promising ขอใหนกเรยนไปดรายละเอยดของ promising กนเองในบรรทดท 15 ถง 20

รปท 11–21 แสดงจดทมการแวะผานและเสนเชอมทมการแตกกงระหวางการคนคาตอบดวยการยอนรอย ตนไมนมจานวนจดทงสน 65 จด แตพอเราคนแบบยอนรอย จะเลมตนไมเหลอแคทแสดงดวยสเขมในรปท 11–21 คอมการแวะผานจดเพยง 17 จดเทานนกไดคาตอบการวางควนสองรปแบบ

Page 288: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

272 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

2

x4= 3 2

x3= 1 4 3

x2= 3 4 4 1 12

x1= 1 2 3 4

รปท 11–21 การยอนรอยในตนไมปรภมสถานะของปญหา 4 ควน

หากจะลองเปรยบเทยบการคนดวยการยอนรอย กบการแจงกรณและตรวจสอบวธเรยงสบเปลยน (EnumPermutations ซงกคอการคนตามแนวลกนนเอง) จะพบวาการยอนรอยคนพบคาตอบไดเรวกวามากๆ ตารางท 11–3 เปรยบเทยบจานวนจดทแวะผานในตนไมปรภมสถานะในการยอนรอย กบจานวนวธเรยงสบเปลยนทตองตรวจสอบในการแจงกรณ จนกวาพบคาตอบแรก กบจนกวาจะพบทกคาตอบ

ตารางท 11–3 การเปรยบเทยบจานวนจดทแวะผานในการยอนรอยกบจานวนวธเรยงสบเปลยนทตรวจสอบในการแจงกรณ

Backtracking EnumPermutationsnFirst Soln All Soln First Soln All Soln

4 9 17 12 246 33 153 188 7208 117 2,057 2,830 40,320

10 103 35,538 59,034 3,628,80012 262 856,189 4,546,044 479,001,60014 1,915 27,358,553 572,457,587 87,178,291,200

ถงแมการยอนรอยจะใหคาตอบไดเรวกวาการแจงกรณและตรวจสอบกตาม แตกยงทางานชามากเมอ n มคามาก (อยากใหนกเรยนลองเขยนโปรแกรมแลวสงคนคาตอบกรณ n = 100 ด) ในบทถดไปเราจะนาเสนอกลวธอนๆ ทหาคาตอบของปญหา n ควนนในเวลาเรวกวาการยอนรอยมากๆ

Page 289: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 273

ตวอยางท 11-15 ปญหา 0/1 Knapsack : กาหนดใหมของอย n ชน ชนท i หนก wi และมมลคา vi เรามถงอยหนงใบทรบนาหนกไดไมเกน W ปญหา 0/1 knapsack กคอจะเลอกหยบของชนใดใสถงด จงจะไดมลคารวมสงสด โดยทถงไมขาด ปญหานสามารถหาผลเฉลยเหมาะทสดไดดวยกาหนดการพลวต (ใหนกเรยนลองคดดเองวาจะทาอยางไร) ซงใชเวลาการทางานเปน �(nW) เปนเวลาซงแปรตามคาของ W ดงนนยอมแปรเปนฟงกชน exponential ของขนาดของ W

คราวนเราจะมาลองแกปญหานกนดวยการยอนรอย ผลเฉลยของปญหานกเปนเซตยอยของของทใหเราเลอก จะขอแทนเซตยอยหนงดวยหมายเลขลาดบสมาชกในเซตทอยในเซตยอยนนโดยเขยนหมายเลขลาดบทงหลายเรยงจากนอยไปมาก (นนคอผลเฉลยอยในรปแบบท 2 ทไดนาเสนอในตวอยางท 11-2) จะไดตนไมปรภมสถานะของปญหานในลกษณะเดยวกบของปญหา sum of subsets (ตวอยางท 11-13) ดงนนจงมโครงของการทางานคลายกน จะตางกนกตรงทปญหา 0/1 Knapsack นนเปนปญหาการหาคาเหมาะทสด ดงนนจงตองคนตนไมทงตนเพอหาผลเฉลยทไดมลคารวมสงทสด

แตความจรงเรากคงไมตองวงคนทงตนหรอก เพราะวาการยอนรอยชวยเลมตนไมยอยออกบางสวนทงได การตรวจสอบวาการขยายผลเฉลยจาก (x1, x2, …, xk) เปน (x1, x2, …, xk, xk+1) วามแววหรอไมนน กระทาไดงายๆ คอการตรวจสอบวาถงรบนาหนกไหวหรอไม ถาไหวกมแวว เขยนไดเปนรหสเทยมดงน01: Knap_BT( v[1..n], w[1..n], W, x[1..n], k, Vmax )02: {

03: sumV = ��

ki

ixv1

]][[ ; sumW = ��

ki

ixw1

]][[

04: if ( sumV > Vmax ) {05: Vmax =sumV06: optSoln[1..k] = x[1..k]07: }08: for (i=x[k]+1 to n) {09: x[k+1] = i10: if ( sumW + w[x[k+1]] <= W )11: Knap_BT( v[1..n], w[1..n], W, x[1..n], k+1, Vmax)12: }13: }

Knap_BT รบผลเฉลย x[1..k] ทมแวว ถามมลคารวมมากกวาผลเฉลยทเคยพบมา (Vmax) กจะปรบคา Vmax พรอมทงจาผลเฉลยนไวดวย (บรรทดท 4 ถง 6) จากนนขยายผลเฉลยเพอคนตอ

Page 290: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

274 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ตามแนวลก แตกอนจะลงไปคนตอกตรวจสอบกอนวาผลเฉลยทขยาย x[1..k+1] นมแววหรอไม (บรรทดท 10)

มาดตวอยางการคนคาตอบโดยใชการยอนรอย กาหนดใหมของ 6 ชน ซงมมลคาและนาหนกดงแสดงขางลางน และถงทใชใสของรบนาหนกไดมากสด 23

1 2 3 4 5 6vi 10 12 6 10 2 6wi 10 14 7 12 6 24 W = 23

10 14 7 12 6

7 12 6 7 6 12 6 6

0

10 12 6 10 2

16 12 18

18

16 8 1220 14

6

w

x1 =

w

x2 =

w

x2 =

รปท 11–22 ตวอยางการคนคาตอบของปญหา 0/1 knapsack ดวยวธการยอนรอย

รปท 11–22 แสดงการคนคาตอบในตนไมปรภมสถานะ จานวนในวงกลมซงแทนจดของตนไมคอมลคารวมของของทงหมดทไดเลอกมา จานวนกากบกงคอนาหนกของของชนซงตดสนใจเลอก (จานวนตรงนไมไดแทน xi เหมอนกบทเคยเขยนมา แตแทน w

xi เพราะจะสอความหมายกวา) เสนประสเทาแทนกงทลองแตกไปแตไมมแวว ทกๆ จดทมแววทแวะผานนนมสถานะเปนผลเฉลยทงสน แตเมอคนจนยอนรอยกลบมาทรากแลว จะพบวาจดทแสดงดวยสดาทบนนคอจดทมมลคารวมสงทสด ดงนนคาตอบคอ (x1, x2, x3) = (1,3,5) มนาหนกรวมเปน 22 มลคารวมเปน 20

ตนไมปรภมสถานะทงตนของตวอยางนมจานวนจดทงสน 26 จด การยอนรอยดวยวธการตรวจสอบจดวามแววหรอไมอยางงายๆ ทไดนาเสนอมาน สามารถเลมตนไมยอยออกไปจนเหลอใหแวะผานเพยง 15 จดเทานน

Page 291: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 275

การขยายและจากดเขตการคนคาตอบดวยวธการยอนรอยทไดนาเสนอในหวขอทแลวนน มลกษณะการคนตามแนวลก โดยจะลงไปคนตามแนวลกตอเฉพาะกบจดทมแววเทานน นนคอจะเลมตนไมออกเมอพบจดทไมมแวว ประสทธภาพการทางานจงขนกบวธการตรวจสอบความมแววของจด การคนตามแนวลกนนเลอกลงไปทางกงซายกอน รอจนยอนรอยเสรจกลบมาทเดมแลวจงลงคนตอกงถดไป กระทาเชนนจากซายไปขวา จงอาจมคนตงขอสงเกตแลวถามวา “ทาไมตองเลอกลงกงซายกอน ?” คาตอบกคอ “เพราะวางายด เขยนโปรแกรมกสนด (ใชการเรยกแบบเวยนเกด) เนอทหนวยความจากใชไมมาก (แปรตามความลกของตนไม)” แตถาเรายอมเขยนโปรแกรมยงขน ใชเนอทมากขน แตตองการใหคนพบคาตอบไดเรวๆ จะทาอยางไร คาตอบกคอใหเลอกใชการคนทเรยกวาการขยายและจากดเขต (branch and bound)

การขยายและจากดเขตเหมาะกบปญหาการหาคาเหมาะทสด โดยอาศยการคานวณขอบเขตลางของตนทน5 กากบจด live node ตางๆ แลวใชขอบเขตนเปนปจจยในการเลมตนไม

55

60 65 68

65

121

65100 70 90

85

110

1

2

3

4

5

6

รปท 11–23 ตวอยางการใชขอบเขตของผลเฉลยเพอเลมตนไม

ขอยกตวอยางประกอบในรปท 11–23 วงกลมขาวแทนจดในตนไมทแตกกงเสรจหมดแลว วงกลมดาแทน live node สเหลยมแทนจดทเปนสถานะผลเฉลย จานวนภายในวงกลมคอขอบเขตลางของตนทนทคานวณได ณ จดนน จานวนภายในสเหลยมคอตนทนของผลเฉลยทไดคนพบ และ ตวเลขกากบขางนอกวงกลมคอลาดบของจดทถกแตกกง (อยาเพมไปสนใจตอนนวาทาไมลาดบการแตกกงมนแปลกๆ) จากรปพบวาระหวางการคนเราไดพบผลเฉลยมา 3 ผลเฉลยแลว 5 หรอเปนขอบเขตบนของกาไรกได ทงนกขนกบลกษณะของฟงกชนจดประสงควาตองการคานอยทสดหรอมากทสด แตในการบรรยายนจะขอสมมตใหเรากาลงสนใจหาตนทนนอยสด

Page 292: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

276 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

ตวทมตนทนนอยสดคอ 85 (ซงอาจมผลเฉลยอนทนอยกวาทจะพบในอนาคตกได) ถอไดวา 85เปนขอบเขต “บน” ของผลเฉลยทเราสนใจ (นนคอจะไปสนใจผลเฉลยทมากกวา 85 ทาไมในเมอเรากาลงหาผลเฉลยทมตนทนนอยสด) และตอนนเราม live node อย 3 จด (จดดาในรป) ซงมขอบเขตลางของตนทนกากบคอ 100, 70, และ 90 ยอมแสดงวาไมจาเปนตองไปแตกกงตอจาก live node จดแรก และจดทสาม เนองจากมขอบเขตลางของตนทนมากกวา 85 ปวยการทจะลงไปคน (นนคอคนแลวกไมมทางไดนอยกวา 100 กบ 90 ตามลาดบ ซงแยกวาผลเฉลยทไดพบมา) จงเทากบเปนการเลมตนไมยอยออกไดสองตน

กลาวโดยสรป เราคานวณขอบเขตลางของตนทนเพอกากบไวทจดตางๆ เราจาตนทนของผลเฉลยดทสดทไดคนพบมาเปนขอบเขตบนของตนทน เพอเลมตนไมยอยซงรากมขอบเขตลางของตนทนสงกวาตนทนของผลเฉลยดทสดทไดพบมา

การคานวณและใชขอบเขตในการเลมตนไมในลกษณะน สามารถใชรวมกบการคนทงตามแนวลก ตามแนวกวาง และตามตนทนนอยสด โดยทวไปพบวาจะใชคกบการคนตามตนทนนอยสด โดยใชขอบเขตลางของตนทนทกากบจดเปนปจจยในเลอกจดทเหมาะสมทจะแตกกงเปนจดถดไปนน ซงกเหนไดวามเหตมผล เพราะเรากอยากเลอกแตกกงทจดซงมสทธจะไดตนทนนอยสดไวกอน (ลาดบของจดทถกแตกกงในรปท 11–23 กเปนการคนตามตนทนนอยสด) เหนไดวาการขยายและจากดเขตผสมผสานทงการเลอกไปคนทจดทเหมาะสม และการเลมตนไมออก ซงใชลกษณะเฉพาะของทงตวปญหาเอง และของตวอยางปญหาทกาลงคนคาตอบ

ตวอยางท 11-16 ปญหา 0/1 Knapsack : กาหนดใหมของอย n ชน ชนท i หนก wi และมมลคา vi เรามถงอยหนงใบทรบนาหนกของไดไมเกน W ปญหา 0/1 knapsack กคอจะเลอกหยบของชนใดใสถงด จงจะไดมลคารวมสงสด โดยทถงไมขาด

ปญหานเปนการหาคาเหมาะทสดแบบตองการกาไรมากทสด (ซงจะตรงขามกบแบบตนทนนอยสดทไดอธบายมา) ดงนนเราตองมวธคานวณขอบเขตบนของมลคารวม ณ จดตางๆ ในตนไม และคอยจามลคารวมของผลเฉลยทพบมาแลวไวเปนขอบเขตลางของคาตอบ

ถาเราอนญาตใหเฉอนของออกเปนบางสวนไดปญหานเรยกวา fractional knapsack ทสามารถหาผลเฉลยเหมาะทสดไดในเวลาอนรวดเรวดวยอลกอรทมแบบตระกลาม (ตามทไดนาเสนอในบททแลว) โดยเลอกของทมมลคาตอนาหนกสงสดกอน แนนอนวาการอนญาตใหเฉอนของ

Page 293: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 277

ออกไดบางสวนใน fractional Knapsack ยอมตองไดของมลคารวมไมนอยไปกวาคาตอบทไดจาก 0/1 knapsack ดงนนเราสามารถใชคาตอบของปญหา fractional knapsack มาเปนขอบเขตบนของมลคารวมเพอใชกากบจดตางๆ ในตนไมได

ผลเฉลยของ 0/1 knapsack อยในรปแบบของเซตยอย ดงนนจะขอแทนเซตยอยหนงดวยหมายเลขลาดบสมาชกในเซตทอยในเซตยอยนนโดยเขยนหมายเลขลาดบทงหลายเรยงจากนอยไปมาก (เชนเดยวกบทใชในตวอยางท 11-15) กาหนดใหจด u มผลเฉลย (x1, x2, ..., xk) กากบอย หมายความวาเราพจารณาเลอกของมาแลว k ชน (ชนท x1, ชนท x2, …, ชนท xk) มมลคารวมเปน �

ki xi

v1

และมนาหนกรวมเปน��

ki xi

w1

ยงเหลอชนท xk+1 ถงชนท n ทยงไมไดพจารณา ดงนนถาให Vf คอมลคารวมของผลเฉลยเหมาะทสดของปญหา fractional knapsack สาหรบการเลอกของชนท xk+1 ถงชนท n ใสถงทรบนาหนกได W–�

ki xi

w1

จะไดวา

��

ki xi

v1

+Vf คอขอบเขตบนของมลคารวมทจด u

มาดตวอยางกนดกวา กาหนดใหมของ 6 ชน ซงมมลคาและนาหนกดงแสดงขางลางน และถงทใชใสของรบนาหนกไดมากสด 23

1 2 3 4 5 6vi 10 12 6 10 2 6wi 10 14 7 12 6 24 W = 23

รปท 11–24 แสดงขนตอนการขยายและจากดเขตจนไดคาตอบ ภายในทกๆ วงกลมมจานวนสองจานวนกากบ จานวนดานบนคอขอบเขตบนของมลคารวมทจดนน สวนจานวนดานลางคอมลคารวมของสงทไดเลอกมา ตวเลขกากบขางๆ วงกลมระบลาดบของการแวะผานจด วงกลมขอบดาทบคอ live node วงกลมเทาคอจดทถกเลมออก จานวนทกากบเสนเชอมคอนาหนกของชนทเลอก และจานวนทเขยนตรงขางลางวงกลมคอคา Vmax ซงคอมลคารวมสงทสดของผลเฉลยทไดคนพบมาขณะทจดนนถกสรางขน

เรมทราก (รป ก) แทนสถานะทยงไมไดเลอกอะไร มมลคารวมเปน 0 มขอบเขตของมลคารวมเปน 21.1 ซงจดนคอผลเฉลยทเพงพบมมลคารวมเปน 0 ดงนน Vmax = 0 ตอมา (รป ข) รากนถกเลอกเปน E–node แตกกงได 5 จดใหม (กงท 6 แตกไมไดเพราะนาหนกเกน W) ใหสงเกตคาของ Vmax ทเพมเปน 10 เมอจด 2 เกด และเปลยนเปน 12 เมอจด 3 เกด พอจด 4 5 และ 6 เกดไมเปลยน Vmax (เพราะมลคารวมไมมากกวา Vmax) ใหสงเกตวาพอจด 6 เกด กลบพบวาขอบเขตบนของมลคารวมทจดนเปน 6.25 ซงนอยกวา Vmax = 12 ดงนนจงสามารถตดจดนออกจากการ

Page 294: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

278 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

พจารณาได ถงตรงนม live node เหลออย 4 จด เลอกจดทมขอบเขตบนของมลคารวมสงทสดมากเปน E–node เพอแตกกงตอ ไดจดท 3 แตกกงตอผลตจดขนมาอก 3 จด (รป ค) (ความจรงมอกกงหนงกอนกงแรกทแสดง ซงแทนการเลอกของชนทหนก 14 แตเลอกไมไดเพราะนาหนกรวมจะเกน จงไมแตกกงน) ตรงนถงตอนสาคญ แตกกงแรกไดจด 7 เปลยนคา Vmax เปน 16 สงผลใหตดจด 5 ได (เพราะ 13.3 < 16) พอแตกกงทสองไดจด 8 กเปลยนคา Vmax ไดอกเปน 20 คราวนจะพบวาสามารถตดจด 3 และ 4 ออกได (เพราะวา 19.7 < 20 และ 17.3 < 20 ตามลาดบ) และพอแตกกงทสามไดจด 9 กถกตดทนท (เพราะ 13.8 < 20) ถงตรงนเหลอ live node อย 2 จด (มขอบเขตบนของมลคารวมเทากนเสยดวยคอ 21.0) สมมตวาจด 7 ถกเลอกใหเปน E–node พบวาแตกกงไดกงเดยว (ทนาหนกรวมไมเกน) แตพอแตกไดจด 10 (รป ง) กพบวาถกตดออกทนทอกเชนกน (เพราะ 18.0 < 20)

เลอก live node ทเหลอจดถดไปทมขอบเขตบนของมลรวมสงทสดมาเปน E–node ตอ (ตอนนความจรงเหลอแคจดเดยวเทานน) ไดจด 8 ซงแตกกงตอไมได อกแลว live node กหมดแลว ดงนน Vmax (พรอมทงจดทไดผลเฉลยทมมลคารวมเปน Vmax) กคอคาตอบ

021.11

Vmax = 0

(ก)

0021.1

1021.1

1219.7

617.3

1013.3

26.252 3 4 5 6

Vmax = 10 12 12 12 12

10 14 7 12 6

(ข)

7 8 9

0021.1

1021.1

1219.7

617.3

1013.3

26.25

1621.0

2021.0

1213.8

Vmax = 16 20 20

7 12 6

(ค)

0021.1

1021.1

1219.7

617.3

1013.3

26.25

1621.0

2021.0

1213.8

1818.0

10

Vmax = 20

6

(ง)รปท 11–24 ตวอยางการขยายและจากดเขตสาหรบปญหา 0/1 knapsack

Page 295: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 279

ในประเดนของการเขยนโปรแกรมนน เราไมสามารถเขยนการคนตามตนทนนอยสด (หรอกาไรมากทสด) ทมการขยายและจากดเขตไดงายๆ สวยๆ เหมอนกบการยอนรอย (ซงเขยนแบบเวยนเกด) ได ในทนเราเลอกคนตามมลคาสงทสด กตองจดเกบ live node ตางๆ ระหวางการคนใน max–heap โดยมวงวนเพอดงจดทมขอบเขตบนของมลคารวมสงสด (ดวยการ ExtractMax ออกจากฮป) มาแตกกงตอ ขอสงเกตประการหนงกคอ การใชมลคารวมสงทสดทเคยพบมาเปนตวเลม live node ทมขอบเขตบนของมลคารวมไมมากกวา ดวยการลบออกจากฮปนน เหนจะทาไดไมคอยดนกในทางปฏบต เนองจากการหาจดในฮปทควรถกเลม แลวลบจดเหลานนจะเสยเวลาแปรตามขนาดของฮป ถาจะคดใหละเอยดหนอย เราไมตองไปพะวงกบจดเหลานกได เพราะการจดเกบจดเหลานใน max–heap นนหมายความวาเมอไรท ExtractMax ออกมาไดจดทมขอบเขตบนของมลคารวมไมมากกวามลคารวมสงทสดทเคยพบมา แสดงวาทกๆ จดในฮป ณ ขณะนนกตองมคาไมมากกวาเชนกน แสดงวาไมตองไปแตกกงตออกแลว เพราะไมมทางไดคาตอบทดกวา จงสามารถยตการคนได และคาตอบทใหมลคารวมสงสดทไดพบมานนกคอคาตอบทตองการของตวอยางปญหา สามารถเขยนเปนรหสเทยมไดดงน

01: Knapsack01_BB( v[1..n], w[1..n], W )02: {03: H = empty max–Heap04: VUB = FracKnap( v[1..n], w[1..n], W )05: Insert( H, x[1..0], VUB )06: Vmax = 007: while ( isNotEmpty( H ) ) {08: (x[1..k], VUB) = ExtractMax( H )09: if ( VUB � Vmax ) break;10: for ( i=x[k]+1 to n ) {11: x[k+1] = i

12: sumW = ��

ki

ixw1

]][[ + w[x[k+1]];

13: sumV = ��

ki

ixv1

]][[ + v[x[k+1]];

14: if ( sumW � W ) {15: if ( sumV > Vmax ) {16: Vmax = sumV17: optSoln[1..k+1] = x[1..k+1]18: }19: VUB = sumV +FracKnap(v[k+2..n],w[k+2..n],W–sumW)20: Insert( H, x[1..k+1], VUB )21: }22: }23: }24: print( optSoln )25: }

Page 296: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

280 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

Knapsack01_BB รบแถวลาดบ v, w ซงเกบมลคาและนาหนกตางๆ (กาหนดให ขอมลใน vและ w นนเรยงลาดบตามคาของมลคาตอนาหนกของสงของตางๆ จากมากไปนอย) W คอนาหนกรวมทถงรบได เรมดวยการเตรยม max–heap วางๆ H (บรรทดท 3) จากนนเพมรากเขาไปใน H (บรรทดท 4 และ 5) โดยมการคานวณขอบเขตบนของมลคารวมดวย FracKnap (ซงเปนอลกอรทมแบบตระกลามทหาคาตอบไดในเวลาทแปรตามจานวนสงของ) เพอใชเปนตวกากบความสาคญของขอมลในฮป ตามดวยการตงคาเรมตนใหกบ Vmax (เปน 0) ซงเกบมลคารวมสงทสดของคาตอบทไดพบมา จากนนเขาสวงวน เรมดวยการ ExtractMax ไดจดทมขอบเขตบนของมลคารวมสงทสดเกบไวใน VUB และผลเฉลย x[1..k] ทจดนน (บรรทดท 8) ถาจดทไดม VUB ไมมากกวา Vmax กแสดงวาเราสามารถเลม live node ตางๆ ในฮป ออกไดหมด และ Vmax กเปนมลคารวมสงทสดของปญหา ดงนนจงสามารถออกจากวงวนได (บรรทดท 9) ถาไมเปนเชนนน กตองแตกกงตอ ในแตละกรณกตองตรวจสอบวานาหนกรวมตองไมเกน W (บรรทดท 14) ถาไมเกนและเปนผลเฉลยทมมลคารวมทสงกวา Vmax (บรรทดท 15) กตองปรบคา Vmax

และจาคาตอบนไวดวย (บรรทดท 16 และ 17) จากนนคานวณขอบเขตบนของมลคารวมจดใหมทถกแตกกงน และเพมเขาไปในฮป (บรรทดท 19 และ 20) แลวกลบไปเรมทาในวงวนในรอบถดไป

ตวอยางท 11-17 ปญหา assignment : ในโครงการหนงเราตองมอบหมายงาน (ม n ประเภท) ใหคน n คนทา (คนละประเภท) โดยมตนทนการมอบหมายงาน j ให i ทาเปน cij จงหาวธการมอบหมายงานซงมตนทนรวมตาทสด เราสามารถบรรยายตนทนการมอบหมายงานดวยเมตรกซ ตวอยางเชนตนทนการมอบหมายงาน 4 งานให a, b, c, และ d ทาเปนดงน

1 2 3 4a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

ประเดนแรกทตองคดถงกอนเลยกคอรปแบบของผลเฉลย เหนไดชดเลยวาผลเฉลยคอวธเรยงสบเปลยนงาน {1,2,3,4} ให a,b,c,d ทา เชน (2,1,4,3) แทนการมอบหมายให a, b, c, และ dทางาน 2, 1, 4, และ 3 ตามลาดบซงมตนทนรวมเปน 12+15+23+8 = 58 ถาแจกแจงวธเรยงสบเปลยนทกๆ แบบ หาตนทนรวมของแตละแบบ กยอมไดคาตอบในทสด แตการแจงกรณทกๆ วธเรยงสบเปลยนนนใชเวลาเปน �(n!)

Page 297: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 281

ปญหานเปนปญหาการหาคาเหมาะทสด จงเหมาะกบการขยายและจากดเขต ดงนนสงทตองพจารณากคอจะคานวณขอบเขตลางของตนทนไดอยางไร เมอเราทราบผลเฉลยบางสวน ขอบเขตลางของตนทนรวมเมอเรารผลเฉลยบางสวน กคอตนทนรวมของการมอบหมายงานทกระทาไปแลว บวกกบขอบเขตลางของตนทนรวมของการมอบหมายงานทเหลอ

แลวเราจะรขอบเขตลางของการมอบหมายงานทเหลอไดอยางไร ? สมมตวาเราไดมอบหมายให a ทางาน 2 แลว นนคอกาลงพจารณาผลเฉลย (2,?,?,?) กเปนทแนนอนวาเราไมตองสนใจ aและงาน 2 อก หรอพดงายกคอตดแถวในเมตรกซออกเปนดงแสดงขางลางน

1 2 3 4a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

วธงายทสดกบอกวาตนทนของการมอบหมายงานทเหลอกตองไมตากวา 0 ซงกไมผด แตไมสรางสรรคอะไรเลย ! ถาดจากเมตรกซทเหลอขางบนนในแตละแถวแนวนอน จะพบวา แถว bประกอบดวยตนทน 15, 14, และ 25 มคานอยทสดในแถวคอ 14 แสดงวาจะให b ทางานใดกตามอยางนอยกตองใชตนทน 14 ในทานองเดยวกนตองใชตนทนอยางนอย 10 และ 8 สาหรบ c และ d ตามลาดบ ดงนนการมอบหมายงานทเหลอให b, c, และ d ตองใชตนทนรวมอยางนอย 14+10+8 = 32 สรปไดวาผลเฉลย (2,?,?,?) มขอบเขตลางของตนทนรวมเปน 12+32=44

อนง แทนทเราจะหาคานอยทสดในแตละแถวแนวนอนทเหลอมารวมกนตามททามาขางบนน เรากสามารถนาคานอยทสดในแตละแถวแนวตงทเหลอ มารวมกนเพอใชเปนขอบเขตลางของตนทนรวมของการมอบหมายงานทเหลอกได (ลองคดดวาทาไม ?) ซงถาทาแบบนกบตวอยางขางบนนจะได 10+8+23=41 เมอนามารวมกบการมอบหมายงานททาไปแลว 12 จะไดขอบเขตลางของตนทนรวมของ (2,?,?,?) คอ 53 ทง 0, 44, และ 53 ตางกเปนขอบเขตลางของตนทนรวมของ (2,?,?,?) แต 53 นนดกวา (เพราะมคามากสด) อยางไรกตามไมไดหมายความวาการพจารณาหาผลรวมของคานอยทสดตามแถวแนวตงจะดกวาเสมอไป เพราะทงนขนกบคาตางๆ ในเมตรกซ สาหรบทจะอธบายตอไปนจะขอใชวธการหาผลรวมของคานอยทสดตามแถวแนวนอน6 ดงนนสามารถเขยนขอบเขตลางของตนทนรวมของผลเฉลย (x1, x2, ..., xk) ไดดงน

6 จะหาทงสองแบบแลวเลอกตวมากกวากได

Page 298: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

282 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

� �����

���

��� �

��

���

�n

kiij

kpxjnj

k

iix cc

p

i1 1,

11min

ตองขอชแจงตรงนการใชสญลกษณตางๆ สกเลกนอยตรงนจะไดไมสบสน เราเขยนผลเฉลยในรปแบบ (x1, x2, ..., xk) xi ตางๆในผลเฉลยน i เปนหมายเลขแทนคน xi เปนหมายเลขงานทให i ทา ในทางปฏบตเราแทนทงคนและงานดวยหมายเลข แตทไดนาเสนอดวยตวอยางกอนนเราใชตวอกษรแทนคน เพราะจะไดไมสบสน

เราจะมาเรมใชการขยายและจากดเขต เพอคนคาตอบสาหรบเมตรกซตนทนทแสดงไวตอนตน1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

จากตวอยางปญหาน (1,2,3,4) เปนผลเฉลยหนงแนนอน มตนทนรวมเปน 14+10+17+40 = 81 ซงสามารถถกใชเปนคาเรมตนของตนทนรวมตาทสดทเคยพบมา เพอใชเลมตนทนระหวางคน

เรมจากผลเฉลย (?,?,?,?) เปนราก ซงยงไมมอบหมายงานใดๆ สามารถคานวณขอบเขตลางของตนทนรวมไดเปน 40

ผลเฉลย เมตรกซตนทน ขอบเขตลางของตนทนรวม

(?,?,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(0) + (12+10+10+8) = 40

เนองจากตอนนมแคจดเดยว นามาแตกกงไดผลเฉลย (1,?,?,?), (2,?,?,?), (3,?,?,?), และ (4,?,?,?) ซงสามารถคานวณหาของเขตลางของตนทนรวมเปน 49, 44, 51, และ 48 ตามลาดบ

(1,?,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(14) + (10+17+8) = 49

(2,?,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(12) + (14+10+8) = 44

Page 299: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 283

(3,?,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(15) + (10+10+16) = 51

(4,?,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20) + (10+10+8) = 48

ตอนนเราม 4 จด เนองจากจด (2,?,?,?) มขอบเขตลางนอยทสด จงถกนามาแตกกงตอ ได (2,1,?,?), (2,3,?,?), (2,4,?,?) ซงมขอบเขตลางของตนทนรวมเปน 52, 52, และ 55 ตามลาดบ

(2,1,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(12+15) + (17+8) = 52

(2,3,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(12+14) + (10+16) = 52

(2,4,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(12+25) + (10+8) = 55

ถงตรงนมจดเหลออย 7 จด จดทมขอบเขตลางนอยทสดคอ (4,?,?,?) จงนามาแตกกงตอ ได (4,2,?,?), (4,3,?,?), และ (4,1,?,?) ซงมขอบเขตลางของตนทนรวมเปน 48, 60, และ 60 ตามลาดบ

(4,2,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20+10) + (10+8) = 48

(4,3,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20+14) + (10+16) = 60

Page 300: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

284 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

(4,1,?,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20+15) + (17+8) = 60

คราวนจด (4,2,?,?) มขอบเขตลางนอยทสด แตกกงตอได (4,2,3,?) และ (4,2,1,?) ซงมขอบเขตลางของตนทนรวมเปน 63 และ 48 ตามลาดบ

(4,2,3,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20+10+17) + (16) = 63

(4,2,1,?)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20+10+10) + (8) = 48

จด (4,2,1,?) มขอบเขตลางนอยทสด นามาแตกกงได (4,2,1,3) มขอบเขตลางเปน 48

(4,2,1,3)1 2 3 4

a 14 12 15 20b 15 10 14 25c 10 19 17 23d 16 18 8 40

(20+10+10+8) + (0) = 48

จด (4,2,1,3) นมสถานะผลเฉลย มตนทนรวมจรงคอ 48 นอยกวา 81 (ซงเปนผลเฉลยตอนตนทเราม) ดงนนจงตองปรบผลเฉลยทมตนทนรวมนอยทสดทพบเปน (4,2,1,3) มตนทนรวมเปน 48

กตองขยายและจากดเขตกนตอ แตถงตรงนพบวาจด live node ตางๆ ทยงเหลออยตอนนมขอบเขตลางของตนทนรวมมากกวา 48 ทงสน จงสรปไดทนทวา (4,2,1,3) เปนการมอบหมายงานทมตนทนรวมตาทสด (รปท 11–25 แสดงตนไมทแตกกงไดระหวางการคน ภายในวงกลมทแทนจดของตนไมมจานวนสองจานวนกากบ จานวนดานบนคอตนทนรวมจากงานทไดมอบหมายแลว และจานวนดานลางคอขอบเขตลางของตนทนรวมทผลเฉลยน)

การขยายและจากดเขตสาหรบปญหาการมอบหมายงานทไดนา เสนอมานเขยนไดเปนรหสเทยมดงน

Page 301: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 285

1 2 3 4

040

1449

1244

1551

2048

4763

4048

4848

3048

3460

3560

2752

2652

2055

1 3 4 2 3 1

3 1

3

x1 =

x2 =

x3 =

x4 =

รปท 11–25 ตวอยางตนไมปรภมสถานะทไดจากการขยายและจากดเขต01: Assignment_BB( c[1..n, 1..n] )02: {03: H = empty min–Heap04: CLB = LowerBoundCost( c[1..n, 1..n], x[1..0] )05: Insert( H, x[1..0], CLB )06: Cmin = 007: for (i=1 to n) { optSoln[i] = i; Cmin += c[i,i] }08: for (i=1 to n) x[i] = i09: while ( isNotEmpty( H ) ) {10: (x[1..k], CLB) = ExtractMin( H )11: if ( CLB � Cmin ) break;12: for (i=k+1 to n) {13: Swap( x[k+1], x[i] );

14: sumC = ��

11

ki x[i]]c[i,

15: if ( k+1 == n AND sumC < Cmin ) {16: Cmin = sumC17: optSoln[1..n] = x[1..n]18: }19: CLB = LowerBoundCost( c[1..n, 1..n], x[1..k+1] )20: Insert( H, x[1..k+1], CLB )21: Swap( x[i], x[k+1] );22: }23: }24: print( optSoln )25: }26:27: LowerBoundCost( c[1..n, 1..n], x[1..k] )28: {

29: return � �����

���

��� ��

���

��

n

ki kppxjnj

k

i 1 1],[11min j]c[i,x[i]]c[i,

30: }

Page 302: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

286 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

แบบฝกหด1. จงเขยนรหสเทยมของการแจงกรณวธเรยงสบเปลยน ซงวธเรยงสบเปลยนสองวธใดทถกแจกแจงถดกนจะตางกนเพยงแคการสลบขอมลหนงคเทานน

2. จงเขยนรหสเทยมของการแจงกรณวธจดหม (combination) ซงคอการเลอกขอมล k ตวออกจากขอมล n ตว

3. จงเขยนอลกอรทมแบบคนตามแนวกวางสาหรบปญหาการคณสองหารสาม (ทไดนาเสนอในตวอยางท 11-9)

4. จงเสนอวธการตรวจสอบความมแววของจดระหวางการคนแบบยอนรอย สาหรบปญหาผลรวมของเซตยอย เพมเตมจากทไดนาเสนอในตวอยางท 11-10

5. จงเขยนโปรแกรมดวยวธการยอนรอยสาหรบปญหา n ควน เพอหาวาจะตองแวะผานจดในตนไมปรภมสถานะเปนจานวนกจดกอนจะพบคาตอบแรก เมอ n = 20, n = 30 และ n = 35 (จะไดนาผลนเพมในตารางท 11–3)

6. จงเสนอวธการตรวจสอบความมแววของจดระหวางการคนแบบยอนรอย สาหรบปญหา0/1 Knapsack เพมเตมจากทไดนาเสนอในตวอยางท 11-15

7. กาหนดให G = (V, E) คอกราฟๆ หนง เราตองการหาเซตยอย VC � V โดยทเสนเชอมทกเสนของกราฟมจดปลายอยใน VC เราเรยกเซต VC นวา vertex cover จงเขยนรหสเทยมของอลกอรทมแบบยอนรอยเพอหา vertex cover ทมขนาด k จด

8. การเรยงยายตาแหนง (derangement) คอวธเรยงสบเปลยน (permutation) ของตวเลข 1, 2, ..., n ทสาหรบทกๆ i (1� i � n) ตวท i ไมใชคา ตวอยางเชนการเรยงยายตาแหนงทงหมดของ (1,2,3) คอ (2,3,1) และ (3,1,2) จงเขยนรหสเทยมของอลกอรทมแบบยอนรอยซงพมพการเรยงยายตาแหนงทกรปแบบของ 1, 2, ..., n

9. คดวานกเรยนแทบทกคนคงเคยเหน (ดรป) แผนพลาสตดสเหลยมจตรสมพนท 4�4 ตารางหนวยขนาดเลกกวาฝามอ ซงประกอบดวยแผนพลาสตกเลกๆ 15 ชน แตละชนมตวเลขกากบตงแตเลข 1 ถง 15 มขนาด 1�1 วางตอกนอย และเหลอชองวางขนาด 1�1 ปญหา 15-puzzle นกาหนดใหหาวธการเลอนแผนพลาสตกเลกๆ จนในทสดไดเลขเรยงจาก 1 จนถง

Page 303: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 30/10/00 5:37 : [email protected] บทท 11 การคนคาตอบในตนไมและกราฟ 287

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

6 2 4 1 2 3 41 5 3 8 5 6 7 8

13 10 7 11 9 10 11 1214 9 15 12

�13 14 15

10. เกม Hi-Q ประกอบดวยตาแหนงบนกระดาน 33 ตาแหนง (ดงรปซาย) โดยเรมตนจะมลกแกววางอยในตาแหนงตางๆ ทกๆตาแหนงยกเวนตาแหนงตรงกลางผเลนจะทาการเคลอนยายลกแกว โดยยายลกแกวลกหนงขามลกแกวขางเคยงหนงลกไปยงชองทวาง ลกแกวทถกขามจะถกนาออกจากกระดาน เกมจะจบลง (ดวยชยชนะ) กตอเมอสามารถหาลาดบการเคลอนยายลกแกว จนกระทงเหลอลกแกวเพยงหนงลก วางไวทตาแหนงตรงกลาง

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

ข) จงออกแบบอลกอรทมสาหรบปญหา Hi-Q กรณทวไปทมคา m และ n กาหนดลกษณะของกระดานดงรปดานขวา

m n m

11. จากคาของจานวนเตมบวก n ทใหเปนขอมลขาเขา จงออกแบบอลกอรทมแบบยอนรอยเพอหาเซตของจานวนเตมบวก (ทมคาแตกตางกนหมด) ทกๆ รปแบบทมผลรวมเทากบ n ตวอยางเชน n = 10 จะไดวาผลลพธดงน 1+2+3+4, 1+2+7, 1+3+6, 1+4+5, 1+9, 2+3+5, 2+8, 3+7, 4+6, และ 10

12. จงออกแบบอลกอรทมเพอแสดงวงจรแบบแฮมลตนทงหมดของกราฟ G (วงจรแบแฮมลตนคอวงจรซงผานทกๆ จดในกราฟ จดละหนงครง)

13. จงออกแบบอลกอรทมแบบขยายและจากดเขตสาหรบปญหาการเดนทางของพนกงาน โดยนาเสนอวธการคานวณขอบเขตลางของความยาวของการเดนทาง อยางละเอยด

Page 304: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

288 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 30/10/00 5:37 : [email protected]

14. จงเขยนโปรแกรมเพอแกปญหา 0/1 Knapsack ดวยวธดงตอไปน จากนนทาการทดลองเพอแกปญหาขนาดตางๆ กน (n = 30, 40, 50, 100, ...) โดยเปรยบเทยบเวลาการทางานจรง (และสามารถนาผลลพธทไดของแตละโปรแกรมมาใชทวนสอบคาตอบกนและกนไดดวย)

ก) แจกแจงทกๆ เซตยอยข) ยอนรอยค) ขยายและจากดเขตง) กาหนดการพลวต

Page 305: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] 289

บทท 12

อลกอรทมทเราไดศกษากนมาตงแตตนเปนอลกอรทมทเรยกกนวา อลกอรทมเชงกาหนด(deterministic algorithm) คอเปนอลกอรทมทพฤตกรรมการทางานถกกาหนดโดยขอมลขาเขาทไดรบเทานน ดงนนจงมการทางานทเหมอนกนทกครงทไดรบขอมลขาเขาทเหมอนกน ซงถายงจากนไดเราเคยใหคานยามของอลกอรทมไววา เปนลาดบของขนตอนเชงคานวณซงแปลงตวอยางขอมลขาเขาของปญหาไปเปนผลลพธทถกตอง ภายในเวลาอนจากด สาหรบทกๆ ตวอยางปญหา เราคงไมตองการอลกอรทมทมพฤตกรรมไมแนนอนใหคาตอบทถกบางผดบาง หรอทางานนานมากๆ โดยไมรวาจะไดคาตอบหรอไม เมอไร แตสงทเราจะมาเรยนรกนในบทน คออลกอรทมประเภทหนงทฝาฝนความตองการสองขอดงกลาว นนคอบางครงกใหคาตอบทผด บางครงกทางานไมสนสด แตพฤตกรรมดงกลาวเกดขนดวยโอกาสทนอยมาก จนยอมรบไดในทางปฏบต เราเรยกอลกอรทมประเภทนวาอลกอรทมเชงสม (randomized algorithm) เนองจากพฤตกรรมการทางานไมไดถกกาหนดโดยขอมลขาเขาเพยงอยางเดยว แตจะถกกาหนดโดยกระบวนการสมทเกดขนระหวางการทางานดวย (ดรปท 12–1)

DeterministicAlgorithm

problem instance

output

RandomizedAlgorithm

problem instance

output

randomnumber

generator

รปท 12–1 ความแตกตางระหวางอลอรทมเชงกาหนดและอลกอรทมเชงสม

อลกอรทมเชงสม

Page 306: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

290 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

เหตผลหลกทใชอลกอรทมเชงสมมสองประเดนคองายกบเรว อลกอรทมเชงสมสาหรบหลายๆ ปญหา (เชนปญหาทางกราฟ ทางเรขาคณตเชงคานวณ) ใชเวลาการทางานเทยบเทากบอลกอรทมเชงกาหนดทมอยแตมแนวการทางานทงายกวา ซบซอนนอยกวามากๆ และกมหลายปญหาซงไมมอลกอรทเชงกาหนดใดหาคาตอบไดอยางมประสทธภาพ แตมอลกอรทมเชงสมทใหคาตอบไดอยางรวดเรว (เชนปญหาการทดสอบจานวนเฉพาะ)

แรกเรมอลกอรทมเชงสมไดรบความสนใจสาหรบปญหาเชงจานวน เชนการทดสอบจานวนเฉพาะ แตกไดมผออกแบบอลกอรทมเชงสมทใชสาหรบปญหาทางสาขาอนมากขน ๆ เปนลาดบ เชนปญหาเชงเรขาคณต ปญหาทางกราฟ รวมถงการออกแบบโครงสรางขอมล เปนตน

ความจรงเราเคยพบอลกอรทมเชงสมมาสองอลกอรทมแลว ครงแรก (ในบทท 1) คออลกอรทมสาหรบปญหา majority และครงทสอง (ในบทท 8) คอ randomized quicksort อลกอรทมเชงสมในการหา majority นนอาศยความจรงทวา ถารายการขอมลทสนใจม majority กยอมมขอมลทเปน majority เปนจานวนมาก การสมเลอกขอมลมาหนงตวแลวลองนบดในรายการวามเกนครงหรอไม กนาจะมโอกาสสงทจะสมไดตวทเปน majority มานบ โดยเราสามารถเพมความมนใจในคาตอบดวยการสมแลวลองนบหลายๆ หน มปญหามากมายทใชหลกการนในการออกแบบอลกอรทมเชงสม เนองจากมขอมลทยนยนความถกตองของคาตอบ (เรยกวาเปนพยาน – witness) มากมายใหสมเลอก

สวน quicksort แบบปกตนนใชเวลาการทางานทขนกบการเลอกตวหลก (pivot) และลาดบของขอมลขาเขา ประสทธภาพการทางานของกรณเลวสดและกรณเฉลยนนมอตราการเตบโตทตางกนมาก (เปน n2 และ n log n ตามลาดบ) เราใชการเลอก pivot แบบสมเพอลดโอกาสใหเหลอนอยมากๆ ทจะโชครายใช pivot ทเกดกรณเลวสดตลอดการเรยงลาดบ หรอเราจะอาศยการจดลาดบขอมลขาเขาเสยใหมแบบสมกอนทจะไป quicksort แบบปกต กจะเปนการทาลายโอกาสทจะเกดกรณเลวสดไดเชนกน มปญหาอนๆ อกทมพฤตกรรมการทางานทขนกบลาดบของขอมลขาเขา ซงเราสามารถใชหลกการจดลาดบขอมลขาเขาใหมลาดบสมๆ เพอลดโอกาสทจะเกดกรณเลวๆ

ในบทนเราจะมาแตะเนอหาผวๆ ของอลกอรทมเชงสมกนสองลกษณะคอแบบมอนตคารโล(Monte Carlo) และแบบลาสเวกส (Las Vegas) อลกอรทมทงสองลกษณะนตางกนในเชงพฤตกรรม อลกอรทมแบบมอนตคารโลนนใหคาตอบเรว แตอาจเปนคาตอบผดดวยความนาจะเปน

Page 307: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 291

ทตา (ตวอยางเชนอลกอรทมในกาหา majority ) สวนอลกอรทมแบบลาสเวกสนนใหคาตอบทถกตองเสมอ แตอาจชาดวยความนาจะเปนทตา (เชน randomized quicksort)

การศกษาเนอหาของอลกอรทมเชงสมนน อาศยทฤษฎความนาจะเปนและสถตเปนเครองมอมากมายในการพสจนประสทธภาพเชงเวลาของอลกอรทม บทนมจดประสงคเพอใหนกศกษาเหนแนวคด หลกการทางาน และความมหศจรรยของอลกอรทมเชงสม โดยอาจจะละเลยการพสจนผลบางในบางเรอง ซงอยนอกเหนอขอบเขตของหนงสอเลมน

อลกอรทมแบบมอนตคารโลอลกอรทมแบบมอนตคารโลนนเปนอลกอรทมเชงสมประเภททใหคาตอบเสมอ แตมโอกาสทจะใหคาตอบทผดได ฟงตอนแรกแลวไมนาสนใจเลย ถาจะใหนาสนใจกตองพดใหละเอยดขนสกนดเกยวกบการตอบผดตอบถก กาหนดให p เปนจานวนจรงซง 0<p<1 เราเรยกอลกอรทมหนงวาเปน p–correct ถาอลกอรทมนนใหคาตอบทถกตองดวยความนาจะเปนอยางนอย p ไมวาจะรบขอมลขาเขาใดๆ กตาม ตวอยางเชนอลกอรทมเชงสมทหา majority ขางลางนเปน ½–correct เพราะวาถา A[1..n] ไมม majority อลกอรทมนจะใหคาตอบถกตอบเสมอ (ไมวาจะสมไดตวใดมานบกยอมไมใช majority) แตถา A[1..n] ม majority กจะคนคาตอบทถกตองดวยความนาจะเปนอยางนอย ½ (เพราะขอมลทเปน majority ตองมจานวนตวเกนครง โอกาสทจะสมไดตวทเปน majority มานบกยอมเกนครง)

01: isThereMajority_MC( A[1..n] )02: {03: r = random(1,n)04: c = 005: for (i=1 to n)06: if ( A[i] == A[r] ) ++c07:08: if ( c > n/2 ) return TRUE else return FALSE09: }

อานถงตรงนหลายคนอาจถามวา เอะถาเราแคโยนเหรยญ ถาไดหวกตอบวาม majority ถาไดกอยกตอบวาไมม majority จะเปนอลกอรทม ½–correct และไดผลการทางานเหมอนกบ isThereMajority_MC หรอไม คาตอบกคอการโยนเหรยญ นนใหโอกาสทจะไดคาตอบถกหรอผดเทากนซงเทากบ 0.5 ซงถอไดวาเปน ½–correct แตจะไมเหมอนอลกอรทม isThereMajority_MC ซงโอกาสไดคาตอบถกมเกน 0.5 แตประเดนนไมใชจดเดนมากนก

Page 308: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

292 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

ของ isThereMajority_MC จดทนาสนใจอยตรงทวา isThereMajority_MC เปนอลกอรทมแบบเอนเอยง (biased) บางทเรยกวาแบบขอผดพลาดดานเดยว (one-sided error)

อลกอรทมแบบเอนเอยงคออลกอรทมทใหคาตอบหนงซงเรามนใจไดแนนอนวาถกตอง เชนเมอ isThereMajority_MC ตอบวา TRUE เรามนใจวาตองม majority แนเพราะไดพบพยานทยนยนคาตอบนนแลว ความเอนเอยงนเองทาใหเราสามารถเรยก isThereMajority_MCซาหลายๆ หนเพอลดโอกาสทจะไดคาตอบผด ดงน

01: isThereMajority_MC_Repeat( A[1..n], k )02: {03: for (i=1 to k) {04: if ( isThereMajority_MC( A[1..n] ) == TRUE )05: return TRUE06: }07: return FALSE;08: }

ในทนเราวนเรยก isThereMajority_MC หลายๆ หน (มากทสด k หน) เมอใดทไดคาตอบเปน TRUE เรากมนใจไดเลยวาม majority แน ถารอบแรกไดคาตอบเปน FALSE กมนใจแคเกน ½ วาไมม majority ถายงไมมนใจพอ กวนเรยกตอ ถารอบทสองกยงไดคาตอบวา FALSE อก คราวนกมนใจเกน 1– (½ )2 = ¾ วาไมม majority ถายงไมมนใจพออก กวนเรยกตออก การทเราไดคาตอบวา FALSE ในแตละรอบนนเปนการเพมความมนใจวาไมม majority มากขนเรอยๆ จนในทสดหลงจากเรยกครบ k หนแลวพบวาไดคาตอบเปน FALSE ตลอด กจะสรปวานาจะไมม majority ดวยความนาจะเปนซงมากกวา (1–2–k ) นนคอโอกาสทคาตอบจะผดมเพยง 1 ใน 2k แสดงวา isThereMajority_MC_Repeat เปนอลกอรทมแบบ (1–2–k )–correct

หวขอยอยทจะนาเสนอตอไปนเปนตวอยางของอลกอรทมแบบมอนตคารโลสาหรบปญหาแบบตางๆ

การทวนสอบการคณเมทรกซกาหนดใหมเมทรกซขนาด n�n สามตวคอ A, B, และ C อยากทราบวา C = AB หรอไม วธงายๆ กคอลองคณ A กบ B ไดผลลพธแลวกนาไดเทยบกบ C การคณเมทรกซแบบตรงไปตรงมาใชเวลาเปน �(n3) บวกกบเวลาในการเปรยบเทยบผลลพธกบ C อก �(n2) ดงนนใชเวลารวมเปน �(n3) หรอถาจะใชอลกอรทมการคณของสแตรสเสนกใชเวลาเปน O(n2.81) หรอใชอลกอรทมการคณเมทรกซทดทสดทไดพบกนมาของ Coppersmith และ Winograd กใชเวลา O(n2.376) แต

Page 309: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 293

ทเราจะนาเสนอในทนใชอลกอรทมเชงสมแบบมอนตคารโลซงทางานเรวกวา ( O(n2) ) ดวยความนาจะเปนทจะไดคาตอบผดไมเกน � สาหรบคาคงตว � > 0 ใดๆ

กาหนดให D = C – AB และ X คอเวกเตอรขนาด 1�n ซงแตละสมาชก xi แทนการเลอกหรอไมเลอกพจารณาแถวท i ในเมทรกซ D (นนคอให xi = 0 หรอ 1) ดงนน XD กคอเวกเตอรขนาด 1�n ทไดจากการนาแถวตางๆ ทเราสนใจใน D (กาหนดโดย X) มาบวกกน เชน X = [0, 0, 1, 0, 1] และ

������

������

��

0121020000612000000000000

D

จะไดวา XD = [ 0, 1, 0, 0, 6 ]

ถา C = AB สรปไดวา XD = [0, 0, ..., 0] แนๆ ไมขนกบคาของ X แตถา C � AB กเปนทแนนอนวา D � 0 หมายความวาตองมสกแถวหนงใน D ทมสมาชกบางตวซงมคาไมใช 0 ถากาหนดให k คอแถวๆ หนงใน D ทมสมาชกบางตวซงมคาไมใช 0 จะไดวาสาหรบ X ใดๆ ถาให Y คอเวกเตอรขนาด 1�n ซงมคาเหมอนกบ X ยกเวนเฉพาะ yk ใหมคาเทากบ kx (หมายความวาถา xk = 0แลว yk = 1 และถา xk = 1 แลว yk = 0) จะไดวา XD และ YD จะเปนเวกเตอรศนย ทงคไมได (ลองคดดเอง) จากผลตรงนจงเกดแนวคดวา ถากาหนดคาใหกบ xi ตางๆ ใน X เปนเลข 0 หรอ 1 แบบสม โอกาสทแถวท k จะถกเลอกหรอไมถกเลอกใน X มพอๆ กน เนองจากอาจมไดหลายๆ แถวใน D ทมสมาชกทไมใช 0 ดงนนความนาจะเปนท XD � 0 จงมคาอยางนอย ½

จากแนวคดขางตนน กเพยงแตสมคาของเวกเตอร X จากนนคานวณ XD แลวทดสอบวามคาเปน ศนยหรอไม ถาไมเปนศนยกมนใจแนๆ วา C � AB แตถา XD เปนศนยกมนใจเกนครงวา C = AB เทานกไดอลกอรทม ½–correct แบบเอนเอยงซงสามารถเพมความมนใจไดอกดวยการทาซาๆ

หลายคนคงตะขดตะขวงใจวาเนองจาก D = C – AB แสดงวาตองมการคานวณ AB กยอมใชเวลาเชนเดยวกนการคณ AB แลวเปรยบเทยบกบ C แบบตรงไปตรงไปมา มาคดอะไรกนมากมายแลวไดอลกอรทมเชงสมทมโอกาสผด ใจเยนๆ ทอธบายขางบนนเปนแนวคด ความจรงแลวเราไมคานวณ D หรอก การตรวจสอบวา XD เปนศนยหรอไมนนจะใชการเปรยบเทยบวา

Page 310: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

294 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

XC กบ XAB เทากนหรอไมแทน การคานวณ XC นนกระทาไดในเวลา �(n2) สวนการคานวณ XAB นนถาใสวงเลบระบลาดบการคณเปน (XA)B กจะใชเวลาเปน �(n2) เชนกน ดงนนอลกอรทมเชงสมแบบมอนตคารโล ½–correct แบบเอนเอยง เพอการทวนสอบวา C = AB หรอไม เขยนไดดวยรหสเทยมดงน

01: isEqual_MC( A[1..n,1..n], B[1..n,1..n], C[1..n,1..n] )02: {03: for (i=1 to n) X[i] = random(0,1)04: if XC == (XA)B return TRUE else return FALSE05: }

เนองจากอลกอรทมนเอนเอยงจงสามารถทาซาเพอเพมความมนใจไดงายๆ ดงน01: isEqual_MC_Repeat( A[1..n,1..n], B[1..n,1..n],02: C[1..n,1..n], � )03: {04: k = �lg 1/��05: for (i=1 to k) {06: if ( isEqual_MC( A, B, C ) == FALSE )07: return FALSE08: }09: return TRUE;10: }

เมอไรท isEqual_MC คนคา FALSE (บรรทดท 6) แสดงวาไดพบพยานทมนใจแนวา C � AB แตถาคนคา TRUE กจะทาซาเพอเพมความมนใจ หากทาซาไป k ครงแลว isEqual_MC ตอบวา TRUE ทกครง กมนใจดวยความนาจะเปน (1–2–k) วา C = AB ดงนนหากเรารบคา � ซงคอคาสงสดของความนาจะเปนทจะใหคาตอบผด นนคอ � = 2–k

ดงนนกสามารถคานวณจานวนรอบทตองทาซาไดวา k = �lg 1/�� (บรรทดท 4)

สวนตดนอยสดกาหนดให G = (V, E) คอกราฟไมระบทศทางทตอกน ซงอาจมเสนเชอมมากกวาหนงเสนระหวางคจดใดในกราฟ โดยท n คอจานวนจดของกราฟ เรานยามสวนตด (cut) ใน G คอเซตของเสนเชอมซงเมอลบเสนเชอมเหลานออกแลวจะแยก G ออกเปนมากกวาหนงองคประกอบ และนยามสวนตดนอยสด (min–cut) คอสวนตดซงมขนาดเลกทสด (คอมจานวนเสนเชอมนอยทสด) หลายคนคงคนเคยกบทฤษฎการไหลมากสดสวนตดนอยสด (Max Flow – Min Cut Theorem) ของขายงาน ซงสามารถนามาใชหาสวนตดนอยสดไดในเวลา O(mnlog(n2/m)) ดวยอ

Page 311: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 295

ลกอรทมเชงกาหนดทดสดทไดพบกนมา 1 โดยท m เปนจานวนเสนเชอม แตเราจะมานาเสนออลกอรทมเชงสมซงหาสวนตดนอยสดกนในทน

เราอาศยการหดเสนเชอม (edge contraction) ซงคอการรวมจดสองจดในกราฟทมเสนเชอมตอถงกนเขาดวยกน แลวลบเสนเชอมทตอระหวางคจดทรวมกนทงหมดทงไป (รปท 12–2 แสดงตวอยางการหดเสนเชอม (c,d) ในรป ก ไดผลเปนรป ข ) แนวคดการทางานกคอการสมเสนเชอมมาหดเชนนไปเรอยๆ จนกวาจะเหลอเพยงสองจดในกราฟ (เนองจากการหดเสนเชอมหนงครงเปนการลดจานวนจดในกราฟลงหนงจด ดงนนจงวนสมเสนเชอมมาหดจานวน n–2รอบ) กจะไดเสนเชอมตางๆ ทตอระหวางสองจดทเหลอนเปนสวนตดของกราฟ (และมโอกาสเปนสวนตดนอยสดดวย) อยากใหนกเรยนลองเขยนอลกอรทมในรายละเอยดทใชเวลาการทางานเปน O(n2)

a

bc

d e

a

b

(c,d) e

(ก) (ข)รปท 12–2 ตวอยางการหดเสนเชอม

ขอสงเกตทนาสนใจของการหดเสนเชอมกคอวา การหดเสนเชอมไมไดลดขนาดของสวนตดนอยสดใน G ทงนเนองจากวาสวนตดทกๆ สวนของกราฟ ณ ขณะใดๆ กยงคงเปนสวนตดของกราฟเดม

กมาถงชวงทตองวเคราะหอลกอรทมเชงสมขางตนกน กาหนดให C คอสวนตดนอยสดใน Gโดยท k คอจานวนเสนเชอมใน C เนองจากสวนตดนอยสดของกราฟ G ตองมจานวนเสนเชอมไมเกนดกรนอยทสดของจดใน G (ลองคดด) และจากคณสมบตของกราฟทวาผลรวมของดกรของทกๆ จดในกราฟยอมเทากบสองเทาของจานวนเสนเชอม (ลองกลบไปทบทวนทฤษฎกราฟดเอง) สรปไดวา

1 A.V. Goldberg and R.E. Tarjan, A new approach to the maximum flow problem. Journal of the ACM,

35:921–940, 1988.

Page 312: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

296 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

k � min{ d(v1), d(v2), ..., d(vn) }

2m = � d(vi)

� nk

m � nk2

โดยท m คอจานวนเสนเชอม n คอจานวนจด และ d(vi) คอดกรของจด vi

ขอถามวาในรอบแรกของการสมเสนเชอมเพอนามาหดนน โอกาสทจะไมเลอกเสนเชอมใน Cเปนเทาไร ? เนองจาก C ม k เสน กราฟ G มเสนเชอมอยางนอย nk/2 เสน ดงนนความนาจะเปนทจะไมเลอกเสนเชอมใน C มาหดกเปนอยางนอย (1 – k/(nk/2) ) = (1 – 2/n) คดในทานองเดยวกนจะไดวาความนาจะเปนทจะไมเลอกเสนเชอมใน C มาหดในรอบทสองกเปนอยางนอย 1 – 2/(n–1) ดงนนหลงจากผานการสมเสนเชอมมาหดจานวน n–2 เสน กจะเหลอสองจด โดยมความนาจะเปนทเสนเชอมทกเสนใน C จะหลดรอดพนการถกสมเลอกมาหดไดตลอด เปนอยางนอย

)1(2

321

221

12121

���

���

���

���

���

���

���

���

��

nnnnn�

สรปไดวาความนาจะเปนทจะไดสวนตดนอยสดมมากกวา 2/n2 ดงนนถาเราหาสวนตดดวยวธนซาๆ กน q หน แลวเลอกสวนตดทมขนาดเลกสด โอกาสทสวนตดนจะไมใชสวนตดนอยสดจะเปนอยางมาก (1–2/n2)q สมมตให q = n2/2 จะไดความนาจะเปนทไมไดสวนตดนอยสดนอยกวา 1/e � 1/ 2.718 < 0.368 (เพราะวา ex x

x/1)1(lim /1

��

��

ลองใชความรแคลคลสหาดเอง)

ถาเราวนทาซามากกวานกยอมสามารถลดโอกาส ทจะไมไดสวนตดนอยสดลงไปไดตามตองการ แตกตองแลกกบเวลาการทางานทนานขน เชนถาทาซาเปนจานวน O(n2log n) หน กจะใชเวลาทงสนเปน O(n4log n) อยางไรกตามดวยแนวคดของการหดเสนเชอมน เราสามารถลดเวลาการทางานลงไดเหลอแค O(n2logO(1)n) ซงจะไมขออธบายในทน

อยากใหสงเกตวาการหาสวนตดนอยสดเชงสมทนาเสนอมาน เราไดอลกอรทมทไมใชแบบ p-correct (เพราะหาคา p ทคงตวไมได) ไมเอนเอยง (เพราะเราไมรแนวาคาตอบทไดคาตอบใดถกตอง) แตกสามารถทาซาเพอลดโอกาสทจะไมพบสวนตดนอยสดเลยลง โดยขณะทาซากตองจาสวนตดทไดทมขนาดเลกสดเทาททามา

Page 313: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 297

การทดสอบความเปนจานวนเฉพาะถาจะวาไปแลวอลกอรทมเชงสมแบบมอนตคารโลทไดรบกลาวขานถงมากทสดกเหนจะเปนอลกอรทมทออกแบบมาเพอทดสอบวาจานวนเตมคทกาหนดใหนน เปนจานวนเฉพาะหรอไม ในปจจบนยงไมมอลกอรทมเชงกาหนดใดทแกปญหานไดในเวลาทรวดเรว แนวคดของอลกอรทมเชงสมแบบมอนตคารโลทจะนาเสนอตอไปนอาศยทฤษฎจานวนมาชวยการในสมเลอกพยานทแสดงความเปนจานวนประกอบของจานวนทกาลงทดสอบ ถาหาพบกสรปไดทนทวาเปนจานวนประกอบ (นนคอเปนอลกอรมแบบเอนเอยง) แตถาพยายามหามาพอสมควรกยงไมพบพยาน จงสรปวาเปนจานวนเฉพาะดวยความนาจะเปนทสง (จะสงเพยงใดกขนกบความพยายามในการเลอกพยานมาตรวจสอบ)

เรมดวยการใชทฤษฎบทเลกของแฟรมาต (Fermat’s Little Theorem) ทบอกวา

ถา n เปนจานวนเฉพาะแลว an–1 � 1 (mod n) สาหรบทกๆ a > 0 ทเฉพาะสมพทธกบ n

ดงนนการพสจนวา n เปนจานวนประกอบกระทาไดโดยหาคา a (สกหนงคา) มาเปนพยานทแสดงวา an–1 mod n � 1 หรออกนยหนง n จะเปนจานวนเฉพาะไดกตองแสดงใหเหนจรงวา an–1 mod n = 1 สาหรบทกๆ คา a = 1,2,3,...,n–1 เขยนเปนรหสเทยมไดดงน

01: isPrime_Fermat( n )02: {03: for (a = 1 to n–1)04: if ( an–1 mod n � 1 ) return FALSE05: return TRUE06: }

ถงแมวาเราสามารถคานวณคาของ an–1 mod n (ในบรรทดท 4) ไดรวดเรวดวยการใชการยกกาลงมอดลาร (ใชเวลาเปน O(�3) โดยท � คอจานวนบตในการแทนคา n) แตอลกอรทมขางบนนตองคานวณคา an–1 mod n เปนจานวน O(n) = O(2�) ครง แสดงวาอลกอรทมนใชเวลาเปนฟงกชนเลขชกาลงของขนาดของขอมลขาเขา ซงชามาก เชนถา n = 2521–1 (ซงเปนจานวนเฉพาะ) กตองคานวณ an–1 mod n โดยท a มคาตงแต 1 ถง n-1 จนครบทกกรณกวาจะสรปไดวาเปนจานวนเฉพาะ ถาการคานวณ an–1 mod n ครงหนงกระทาไดในเวลาประมาณ 1 นาโนวนาท (10–9 วนาท) การทดสอบใหครบทกกรณตองใชเวลาทงสนประมาณ 3�1060 ป !!! (อานถงตรงนหลายคนคงรสกวาทาไมตองทดสอบ an–1 mod n == 1 ดวย ทดสอบดวย a | n หรอ gcd(a,n) == 1 จะงายกวามากๆ แตในทนมจดประสงคเพยงใหเหนทมาของอลกอรทมทจะนาเสนอตอไป)

Page 314: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

298 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

ทฤษฎบทเลกของแฟรมาตบอกเราวาการแสดงวา n เปนจานวนประกอบนนขอพยาน a แคตวเดยวกพอ แตการแสดงวา n เปนจานวนเฉพาะนนเหนอยมากๆ (จากทแสดงขางบน) อยางไรกตามยงมขาวดอยตรงทวา “มจานวนประกอบ n ทม a ซงใหคา an–1 mod n = 1 อยจานวนนอยมาก” เราเรยกจานวนประกอบ n แบบนวาจานวนเฉพาะเทยมฐาน a (base–a pseudoprime) และเรยก a นวาพยานเทจ (false witness) ตวอยางเชน 341 เปนจานวนประกอบ (341=11�31)แต 2340 mod 341 = 1 ถาลองแจกแจงดจะพบวามจานวนเฉพาะเทยมฐาน 2 อยเพยง 22 ตวเทานนทมคานอยกวา 10,000 หรอถาพจารณากรณทใหญกวานจะพบวาถาสมเลขขนาด 50 หลก จะมโอกาสเพยงหนงในลานเทานนทเปนจานวนเฉพาะเทยมฐาน 2 หรอถาสมเลขขนาด 100 หลก จะมโอกาสเพยงหนงในสบลานลาน (1013) ทเปนจานวนเฉพาะเทยมฐาน 2 เปนตน ขาวดนจงเปนแนวคดใหเกดอลกอรทมทยอมเสยงทจะใหคาตอบผด (ซงคาดวานอย) ดวยการทดสอบเพยงแค 2n–1 mod n มคาเทากบ 1 หรอไม ถาไมเทากมนใจแนวาเปนจานวนประกอบ ถาเทากมความมนใจสงวาเปนจานวนเฉพาะ เขยนเปนรหสเทยมไดดงน

01: isBase2Pseudoprime( n )02: {03: if ( 2n–1 mod n � 1 ) return FALSE; else return TRUE04: }

อลกอรทมขางบนนมขอเสยอยตรงทวา ไมสามารถเรยกซาเพอลดโอกาสทจะไดคาตอบผดลงได ตวอยางเชน 341 เปนจานวนเฉพาะเทยมฐาน 2 เราเรยก isBase2Pseudoprime(341)สกกหนกไดคาตอบเหมอนกนคอ TRUE (เราไมเรยกอลกอรทมขางบนนวาเปนอลกอรทมเชงสมเพราะมนมพฤตกรรมการทางานทเหมอนกนทกครงทเรยกใช)

ดวยความรทวาจานวนประกอบตวทเปนจานวนเฉพาะเทยมในฐานหนง อาจไมเปนจานวนเฉพาะเทยมในอกฐานหนงกเปนได เชนถงแมวา 2340 mod 341 = 1 แต 3340 mod 341 = 56 ดงนนจงเกดแนวคดวานาจะใชวธสมพยาน a ในชวง 2 ถง n–2 มาทดสอบ 2 เขยนเปนอลกอรทมเชงสมแบบมอนตคารโลไดดงน

2 เราไมสนใจกรณ a = 1 และ a = n–1 เพราะวา 1n–1 mod n = 1 สาหรบทกๆ n และ (n–1)n–1 mod n = 1สาหรบทก n � 3 ทเปนจานวนค)

Page 315: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 299

01: isPrime_Fermat_MC( n )02: {03: a = random( 2, n–2 )04: if ( an–1 mod n � 1 ) return FALSE; else return TRUE05: }

ดวยวธนเราไดอลกอรทมทเอนเอยงกบคาตอบ FALSE (คอถาตอบวาไมใชจานวนเฉพาะกมนใจในคาตอบไดแนวาถก เพราะพบพยานแลว) และสามารถเรยกซาได เพอเพมความมนใจในคาตอบกรณท เปน TRUE วาคงเปนจานวนเฉพาะจรงๆ คาถามทนาสนใจกคอแลว isPrime_Fermat_MC เปนอลกอรทมแบบ p–correct หรอไม ถาเปนแลว p มคาเทาไร

อลกอรทม isPrime_Fermat_MC นนงาย รวดเรว และใชไดดทเดยวในการทดสอบความเปนจานวนเฉพาะ แตกมจานวนประกอบอยประเภทหนงท เ รยกวาจานวนคารไมเคล(Carmichael number) ซงผานการทดสอบของแฟรมาตในทกๆ a ทเฉพาะสมพทธกบ n แสดงใหเหนวามจานวนประกอบอยประเภทหนงทมพยานเทจมากมาย ดงแสดงเปนตวอยางในตารางท 12–1 โดยทสดสวนของจานวนพยานเทจมเพมขนเรอยๆ ตามคาของจานวนคารไมเคล (651693055693681 มพยานเทจถง 99.9965%) อกทงเปนทคาดเดากนวามจานวนคารไมเคลอยเปนอนนต ดงนนจงไมสามารถระบ p เพอบอกไดอยางมนใจวา isPrime_Fermat_MC เปนอลกอรทมแบบ p–correct ได สรปไดวามจานวนประกอบอยมากมายทเราไมสามารถเรยก isPrime_Fermat_MC ซาเพอลดความนาจะเปนทจะใหคาตอบผดลงได

ตารางท 12–1 จานวนพยานเทจของจานวนคารไมเคล 3 ตวแรกCarmichael Number จานวน false withness (2 ถง n–2)

561 318 (57%)1105 766 (69%)1729 1294 (75%)

แลวจะทาอยางไรด ? ดวยความรในทฤษฎจานวน เราสามารถอาศยทฤษฎการผกผนมอดโลจานวนเฉพาะขางลางนเสรมเขาไประหวางการทดสอบของแฟรมาต กลายเปนการทดสอบอกแบบทเรยกกนวาการทดสอบของมลเลอร–ราบน (Miller–Rabin’s primality test)

ให n เปนจานวนเฉพาะและ 1� d � n–1 จะไดวา d 2 � 1 (mod n) กตอเมอ d � �1 (mod n)

เพอใหเขาใจกระบวนการทดสอบของมลเลอรและราบน จะขอขยายรายละเอยดของการหาคา an–1 mod n ใน isPrime_Fermat_MC แสดงไดดวยรหสเทยมดงน

Page 316: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

300 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

01: isPrime_Fermat_MC( n )02: {03: a = random( 2, n–2 )04: <bk,bk–1,...,b1,b0> = the binary representation of n–105: d = 106: for (i=k downto 0) {07: d = d2 mod n08: if (bi == 1) d = (d�a) mod n09: }10: if (d � 1) return TRUE else return FALSE11: }

บรรทดท 4 ถง 9 คอรายละเอยดของการหาคา an–1 mod n แทนทจะใชการเรยกแบบแวยนเกดตามทไดเคยนาเสนอมา (ในบทท 8) จะขอเขยนในอกลกษณะหนง (เรยกวาการยกกาลงสองซา– repeated squaring) ทไดผลเหมอนกนแตทางานในรปวงวน กาหนดให <bk, bk–1, ..., b1, b0>คอรหสฐานสองของ n–1 นนคอ n–1 = bk2k + bk–12k–1 +...+ b121 + b020 ดงนน

� � 011

00

11

11

00

11

11

2222

2222

)2222(1

bbbb

bbbb

bbbbn

aaaa

aaaa

aa

kk

kk

kk

kk

kk

���

���

��

��

���

���

��

������

ซงเปนทมาของการทางานในวงวน for ทบรรทดท 6 ถง 9 เพยงแตมการ mod n เสรมตามหลงทกๆ การยกกาลงสอง และการคณ เมอคานวณ an–1 mod n เสรจผลทไดเกบใน d ซงถกทดสอบในบรรทดท 10 วา n เปนจานวนประกอบหรอเปนจานวนเฉพาะเทยมฐาน a

ใหสงเกตวาในทกๆ รอบของวงวน for ขางบนนมการคานวณ d2 mod n เนองจากเรากาลงสนใจทดสอบวา n เปนจานวนเฉพาะหรอไม ดงนนเมอใดท d2 mod n = 1 กตองทดสอบตอทนทวาแลว d = 1 หรอ d = n–1 ดวยหรอไม 3 ถาไมเทากบ 1 และไมเทากบ n–1 จะสรปไดทนทเลยวา n เปนจานวนประกอบแนๆ (ดวยความรจากทฤษฎการผกผนมอดโลจานวนเฉพาะ) ไดอลกอรทมเชงสมแบบมอนตคารโลเขยนไดเปนรหสเทยมดงน

3 เนองจากระหวางการทางานในวงวนนน 0 � d � n–1 แนๆ ดงนนการท d � 1 (mod n) มสองกรณคอ d =1 และ d = n–1

Page 317: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 301

01: isPrime_MillerRabin_MC( n )02: {03: a = random( 2, n–2 )04: <bk,bk–1,...,b1,b0> = the binary representation of n–105: d = 106: for (i=k downto 0) {07: x = d08: d = d2 mod n09: if ( d == 1 AND x � 1 AND x � n–1 ) return FALSE10: if (bi == 1) d = (d�a) mod n11: }12: if (d � 1) return FASLE else return TRUE13: }

ซงกเพยงแตเพมบรรทดท 7 เพอเกบคา d กอนยกกาลงสองและเพมการทดสอบในบรรทดท 9 ตามทฤษฎทอธบายขางตน

มาดกนสกตวอยาง ให n = 1729 จะได (1728)10 = (11011000000)2 ดงนนการเปลยนแปลงคาตางๆ ของตวแปรตางๆ ในอลกอรทมขางบนนจะเปนดงน กาหนดใหสมได a = 3

i bi xd (บรรทดท 9) d (บรรทดท 10)

10 1 1 1 13 mod 1729 = 39 1 3 32 mod 1729 = 9 93 mod 1729 = 278 0 27 272 mod 1729 = 729 7297 1 729 7292 mod 1729 = 638 6383 mod 1729 = 1856 1 185 1852 mod 1729 = 1374 13743 mod 1729 = 6645 0 664 6642 mod 1729 = 1

ในรอบท i = 5 การตรวจสอบทบรรทดท 9 พบวา d = 1 แต x = 664 (ซงไมเทากบ 1 และ 1728) ดงนนสรปไดวา 1729 เปนจานวนประกอบแนๆ

และกอกเชนเคย การทดสอบของมลเลอรราบนกไมสมบรณรอยเปอรเซนต เชนให n = 1729 แตคราวนสมได a = 9 การเปลยนแปลงคาตางๆ ของตวแปรตางๆ ในอลกอรทมเปนดงน

i bi xd (บรรทดท 9) d (บรรทดท 10)

10 1 1 1 19 mod 1729 = 99 1 9 92 mod 1729 = 81 819 mod 1729 = 7298 0 729 7292 mod 1729 = 638 6387 1 638 6382 mod 1729 = 729 7299 mod 1729 = 13746 1 1374 13742 mod 1729 = 1537 15379 mod 1729 = 15 0 1 12 mod 1729 = 1 14 0 1 12 mod 1729 = 1 13 0 1 12 mod 1729 = 1 12 0 1 12 mod 1729 = 1 11 0 1 12 mod 1729 = 1 10 0 1 12 mod 1729 = 1 1

Page 318: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

302 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

จากตวอยางขางบนน ไมสามารถสรปไดวา 1729 เปนจานวนประกอบ เพราะพยานทสมมา (a = 9) ไมสามารถยนยนความเปนจานวนประกอบได ดงนนการสรปวาเปนจานวนเฉพาะจงใหผลผดในกรณน เราเรยกจานวนประกอบทผานการทดสอบของมลเลอรราบนเมอใช a เปนพยานวาเปนจานวนเฉพาะเทยมเขมฐาน a (base–a strong pseudoprime) และเรยก a ในเหตการณเชนนวาเปนพยานเทจเขม (strong false witness)

ถงแมวาการมจานวนเฉพาะเทยมเขมในการทดสอบของมลเลอรราบน บอกเราวาการทดสอบนมโอกาสทางานผดพลาด (เหมอนกบการมจานวนเฉพาะเทยมในการทดสอบของแฟรมาต) แตขาวดคอจานวนพยานเทจเขมนนมนอยมากๆ ดงตวอยางทแสดงในตารางท 12–2 อกทงสามารถพสจนไดวา (จะไมพสจนใหด ผสนใจหาอานไดในหนงสอทางทฤษฎจานวนทวไป)

มจานวนพยานเทจเขมไมเกน (n–9)/4 ตว ในการทดสอบจานวนประกอบค n > 4

สรปไดวาการทดสอบของมลเลอรราบน (isPrime_MillerRabin_MC) มโอกาสใหคาตอบผดนอยกวา ¼ (เพราะวามพยานเทจเขมนอยกวา n/4 จากพยานทงหมดทมตงแต 2 ถง n–2) ดงนนจงเปนอลกอรทมมอนตคารโลแบบ ¾–correct ทเอนเอยงดวย

ตารางท 12–2 จานวนพยานเทจและพยานเทจเขมของจานวนคารไมเคล 3 ตวแรกCarmichael Number

(n)จานวน false withness

(2 ถง n–2)จานวน strong false withness

(2 ถง n–2)561 318 (57%) 8 (1.4%)1105 766 (69%) 28 (2.5%)1729 1294 (75%) 160 (9.3%)

ดงนนจงสามารถเรยกการทดสอบนซาไดเพอลดโอกาสผดพลาดลงไดตามความพอใจ ถาตองการใหความนาจะเปนทจะไดคาตอบผดไมเกน � กตองเรยกซา k ครงเพอให 4–k � � นนคอ ให k = �(lg 1/�) / 2� ดวยอลกอรทมขางลางน

01: isPrime_MillerRabin_MC_Repeat( n, k )02: {03: for(i=1 to k) {04: if ( isPrime_MillerRabin_MC(n) == FALSE)05: return FALSE06: }07: return TRUE08: }

Page 319: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 303

ในทฤษฎจานวนเชงวเคราะหนน มขอความคาดเดาทไดรบการกลาวขานกนมากขอความหนงเรยกวา “generalized Riemann hypothesis” ซงใหผลทนกทฤษฎจานวนทงหลายเชอวาเปนจรงแตยงพสจนไมไดวา

มพยาน a ทยนยนความเปนจานวนประกอบในการทดสอบของมลเลอรราบนแนๆ ในชวง

1 < a < 70(lg n)2

ดงนนเราสามารถออกแบบการทดสอบความเปนจานวนเฉพาะได โดยการลยทดสอบดวยวธเดยวกบมลเลอรราบนเพยงแตวาคราวนใชวธแปรคา a ตงแต 2 ถง 70(lg n)2 ถาผานหมดกมนใจเตมรอยวาเปนจานวนเฉพาะ กลายเปนอลกอรทมเชงกาหนด (ไมใชแบบเชงสมแลว) แตตองอยาลมวาตรงนตงอยบนขอความคาดเดาทยงไมไดรบการพสจน เนองจากการทดสอบของมลเลอรราบนหนงครง คอการยกกาลงมอดลารใชเวลาแปรตามกาลงสามของจานวนบตซงกคอ O( (lg n)3 ) เราตองทาการทดสอบโดยเปลยนพยาน a เปนจานวน O( (lg n)2 ) หน ผลทไดกคออลกอรทมททางานในเวลา O( (lg n)5 ) ซงเปนฟงกชนแบบพหนามของขนาดของขอมล

การจบคสตรงการจบคสตรง (string matchng) คอปญหาทรบสตรง X = x1x2x3... xn และ Y = y1y2y3... ym โดยท n � m โดยมจดประสงคเพอหาวามสตรง Y ปรากฎอยทใดในสตรง X กาหนดให X(j) คอxjxj+1...xj+m–1 ซงกคอสตรงยอยของ X ความยาว m ซงเรมทตาแหนงท j ใน X อลกอรทมเชงกาหนดแบบงายใชวธลย โดยการลองเทยบสตรง X(j) กบ Y สาหรบ j = 1,2, ...,n–m+1 ซงใชเวลาเปน O(nm) เพราะการเทยบสตรงแตละครงใชเวลาแปรตามขนาดของ Y เปน O(m) และเราตองเทยบเปนจานวน O(n) ครงตามคา j อยางไรกตามมอลกอรทมเชงกาหนดอยหลายวธดวยกนทสามารถจบคสตรงไดในเวลา O(m+n) เชนอลกอรทม KMP (Knuth–Morris–Pratt) 4 และ BM (Boyer Moore) 5 เปนตน แตอลกอรทมเหลานมขนตอนวธคอนขางยงยาก ในหวขอยอยน

4 D. E. Knuth, J. H. Morris, Jr., and V. R. Pratt, “Fast pattern mathcing in strings” SIAM Journal of

Computing, vol. 6, no. 1, pp. 323–350, 19775 R. S. Boyer and J. S. Moore, “A fast string searching algorithm,” Communications of the ACM, vol. 20,

no. 10, pp 762–772, 1977

Page 320: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

304 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

เราจะนาเสนออลกอรทมเชงสมแบบมอนตคารโลทมขนตอนการทางานทงายมาก (แตวเคราะหยงหนอย) ซงมคาคาดหวงของเวลาการทางานเปน O(n+m) เชนกน

เพอความงายในการนาเสนอจะพจารณาสตรง X และ Y ในลกษณะทเปนสตรงของบต (นนคอ xi และ yj ใดๆ ในสตรงมคาเปน 0 หรอ 1) ลองคดดเลนๆ กอนวาถา Y เปนสตรงความยาวไมเกน 32 บต แทนทเราจะเปรยบเทยบ X(j) กบ Y บตตอบต เปนจานวนอยางมาก 32 บต ทาไมเราไมมอง 32 บตนเปนจานวนเตม ซงเราสามารถเกบในรจสเตอรของหนวยประมวลผล (ซพยแบบ 32 บตกจะสามารถประมวลผลขอมลไดครงละ 32 บต) แลวใชคาสงเปรยบเทยบจานวนเตมซงหนวยประมวลผลสามารถเปรยบเทยบทง 32 บตไดพรอมๆ กนทนท ถอไดวาการเปรยบเทยบ X(j) กบ Y ใชเวลาคงตว ดวยขอกาหนดขางตนการจบคสตรงกใชเวลา O(n)

แตถา m มคามากกวา 32 บต แลวจะทาอยางไร ? ถาจะใชกลวธขางตน กแสดงวาเรามอง X(j) กบ Y เปนเลขขนาด m บต การเปรยบเทยบจานวนเตมขนาด m บตสองจานวนโดยคอยๆ เปรยบเทยบทละ 32 บต (ตามขนาดของรจสเตอรในระบบ) กตองใชการเปรยบเทยบรจสเตอรเปนจานวน �m/32� ครง ซงกคอ O(m) นนเอง เวลาโดยรวมของการจบคสตรงกเปน O(nm)

กลวธการจบคสตรงทจะนาเสนอนใชวธการมองสตรงเปนจานวนเตมเชนเดยวกน โดยจะไมนา X(j) กบ Y มาเปรยบเทยบโดยตรง แตอาศยการนา X(j) กบ Y ไปผานฟงกชน Fp ซงเปลยนจากจานวนเตมในชวง [0, 2m–1] ไปเปนจานวนเตมในชวง [0, p–1] ทมชวงเลกกวามาก เลกพอทจะเกบในรจสเตอรจานวนคงทได (ประเดยวคอยบอกวา Fp เปนอยางไร และ p คออะไร) เมอไดผลลพธเปนจานวนเตม Fp(X(j)) กบ Fp(Y) แลวกสามารถนามาเปรยบเทยบแทนการเปรยบเทยบ X(j) กบ Y ในเวลารวดเรวกวามาก

ผลลพธของฟงกชน Fp นเปรยบเสมอนเปนตวแทนของสตรง ดงนนจงเรยก Fp วาเปนฟงกชนลายนวมอ (fingerprint function) โดยให Fp(Y) = Y mod p เปนฟงกชนงายๆ ทใชคานวณคาลายนวมอของจานวนเตม Y โดยท p เปนจานวนเฉพาะ (คาของ p จะคอยบอกในภายหลง) เราคงตองการให Fp(X(j)) � Fp(Y) เมอ X(j) � Y และ Fp(X(j)) = Fp(Y) เมอ X(j) = Y แตเนองจากฟงกชน FP นนเปลยนจานวนเตมในชวงกวางไปเปนจานวนในชวงทแคบกวา ดงนนจงมโอกาสท Fp(X(j)) = Fp(Y) โดยท X(j) � Y เราเรยกเหตการณเชนนวาเปนการจบคเทจ (false

Page 321: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 305

match) 6 ดวยการตงคา p ใหมคาเหมาะสม สามารถทาใหโอกาสทจะเกดการจบคเทจเปน O(1/n) (จะแสดงใหเหนจรงตอไป) สาหรบกรณ Fp(X(j)) � Fp(Y) กเปนอนแนใจไดวา X(j) � Y

ถงตรงนมอยสองคาถามทนาสงสยคอ p มคาเทาไร ? และเราจะคานวณ Fp(X(j)) สาหรบ j = 1, 2, ..., n–m+1 อยางรวดเรวไดอยางไร ? จะขอตอบคาถามขอหลงกอน กอนอนเราคานวณ Fp(Y) เพยงครงเดยวเพราะสตรง Y ไมเปลยนแปลง แตสาหรบ X(j) นนเปลยนแปลงไปเรอยตามคา jถาสงเกตดๆ จะพบวา X(j+1) กคอ m–1 บตทางขวาของ X(j) ตอทายดวยบต xj+m ของ X นนคอ

X(j+1) = 2[ X(j) – 2m–1xj ] + xj+m

จาก Fp(X(j)) = X(j) mod p ดงนนFp( X(j+1) ) = ( 2[ Fp(X(j) – 2m–1xj ] + xj+m ) mod p

แสดงใหเหนวาการคานวณ Fp( X(j+1) ) นนใชผลของ Fp( X(j) ) มาชวยลดภาระการคานวณลงไปเปน O(1) จะมกแต Fp(X(1)) เทานนทตองเสยเวลาคานวณเปน O(m)

กมาถงคาถามวาแลว p มคาเทาไร จงจะทาให Pr[ เกดการจบคเทจ ] = O(1/n) นนคอโอกาสทจะเกดการจบคเทจลดลงเรอยตามขนาดของสตรงตนแบบทตองการจบค กอนอนขอยอนอดตไปสความรในเรองทฤษฎจานวน ดงตอไปน (ทไมขอพสจน)

� มจานวนตวหารเฉพาะ (prime divisor) อยไมเกน m ตวของจานวนทมคานอยกวา 2m

� กาหนดให �(�) คอจานวนของจานวนเฉพาะทมคาไมเกน � ทฤษฎบทจานวนเฉพาะ (The Prime Number Theorem) บอกเราวา �(�) � � /ln �

เนองจากการจบคเทจคอ X(j) � Y (mod p) แตวา X(j) � Y ซงเกดขนไดเมอ p หารผลตางของ X(j) กบ Y ลงตว ผลตางนเปนจานวนทมขนาดไมเกน 2m (เพราะวา X(j) และ Y มขนาด m บต) ดงนนจงมจานวนเฉพาะทหารผลตางนลงตวไมเกน m ตว ถาเราสมเลอกจานวนเฉพาะ p ทมคานอยกวา � และ กาหนดให � = n2m log (n2m) จะไดวา

Pr[ Fp(X(j)) = Fp(Y) | X(j)) � Y ] � m�(�) = O�

���mlog (n2m log n2m)

n2m log n2m = O��

��1

n2

เนองจากม X(j) เปนจานวน O(n) ตวทตองพจารณา ( j =1,2,..., n–m+1 ) แสดงวา

6 อยากใหนกเรยนเทยบเคยงการจบคเทจกบการชนในเรองของการแฮช จะพบวามแนวคดเบองหลงการทางานคลายกน

Page 322: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

306 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

Pr [ เกดการจบคเทจ ] = O�� ��n

n2 = O�� ��1

n

จากขอกาหนดขางตนทให � = n2m log (n2m), n > m และ p < � สรปไดวา p เปนจานวนเฉพาะทมขนาดเปน O( log n )

ในทางปฏบตเรามกกาหนดใหสมเลอก p ทมจานวนบตประมาณเทากบขนาดของรจสเตอรของหนวยประมวลผลทใช เพราะการคานวณ Fp จะกระทาไดสะดวกและรวดเรว สมมตวาเราใชหนวยประมวลผลแบบ 64 บต จะไดวา �(264) � 4�1017 ตว ดงนนโอกาสทจะเกดการจบคเทจจะเปน nm

4�1017 ลองให n = 108 m = 103 จะได Pr[ เกดการจบคเทจ ] นอยกวา 1 ใน 106

วธการจบคสตรงขางบนนเปนวธของ Rabin และ Karp 7 เขยนเปนรหสเทยมสนๆ ไดดงน01: StringMatching_Rabin_Karp_MC( X[1..n], Y[1..m] )02: {03: p = bigRandomPrime()04: fy = Fp( Y[1..m] )05: fx = Fp( X[1..m] )06: j = 107: while ( j < n–m+1 && fy != fx ) {08: ++j09: fx = ((2*fx – 2m X[j]) + X[j+m]) mod p10: }11: if ( fy == fx ) return j else return 012: }

อลกอรทมแบบลาสเวกสอลกอรทมเชงสมแบบลาสเวกสเปนอลกอรทมคนคาตอบทถกตองเสมอ เพยงแตวามเวลาการทางานทไมแนนอน บางครงเรวมาก บางครงชามาก บางครงชามากๆ จนไมรวาทางานตดในวงวนไมสนสดหรอไม เราสามารถแบงอลกอรทมแบบลาสเวกสไดเปนสองแบบคอแบบทไมตองเรยกซา กบอกแบบทอาจตองเรยกซาหลายครง แบบไมตองเรยกซานนอาศยการปรบปรงจากอลกอรทมเชงกาหนดทมอยเดมโดยเพมการเลอกเชงสมเขาไประหวางการทางาน ผลทไดจะเปนอลกอรทมทเราเรยกใชครงเดยวกไดคาตอบเสมอ สวนแบบทอาจตองเรยกซานนอาศยอ

7 R. M. Karp and M. O. Rabin, “Efficient randomized pattern–matching algorithms,” IBM Journal of

Research and Development, 31:249–260, 1987

Page 323: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 307

ลกอรทมเชงสมซงอาจใหคาตอบทถกตองหรอยอมรบวาหาคาตอบไมได เมอใดทรวาหาคาตอบไมไดกเพยงแตเรยกซาใหม กระทาเชนนจนกวาจะหาคาตอบพบ หวขอยอยถดไปนจะนาเสนอรายละเอยดของอลกอรทมของทงสองแบบนพรอมตวอยางตางๆ

อลกอรทมแบบลาสเวกสทไมตองเรยกซาอลกอรทมแบบลาสเวกสในลกษณะนอาศยการปรบปรงอลกอรทมเชงกาหนดทมอย โดยเพมวธการเลอก หรอการตดสนใจเชงสมบางอยางเขาไประหวางการทางาน โดยทวไปเรามกใชกบอลกอรทมเชงกาหนดซงมเวลาการทางานในกรณเฉลยและกรณเลวสดซงตางกนมาก เมอเพมการเลอกสมเขาไป จะมผลทาใหคาคาดหวงของเวลาการทางานมคาเทยบเทากบเวลาการทางานในกรณเฉลยของอลกอรทมเชงกาหนดนน

ตวอยางเชน QuickSort ซงใชวธการเลอกขอมลตวแรกในชดขอมลเปน pivot นน เปนอลกอรทมเชงกาหนดซงมเวลาการทางานในกรณเลวสดเปน O(n2) และในกรณเฉลยเปน O(n log n)ถาเปลยนวธการเลอกขอมลตวแรกเปน pivot มาเปนการสมเลอกขอมลมาเปน pivot (ซงคอ RandomizedQuickSort) จะไดผลดงน

� ไมมขอมลขาเขาชดเลวสด เพราะเราไมรลวงหนาวาขอมลตวใดบางจะถกสมเปน pivot ระหวางการทางาน

� ถาเรยกใช RandomizedQuickSort กบขอมลชดเดยวกน หลายๆ ครงจะใชเวลาตางกน เนองจากสมได pivot ตางกน ซงมคาคาดหวงของเวลาการทางานเทากบเวลาการทางานของ QuickSort ในกรณเฉลยซงเปน O(n log n)

ตองขอเนนตรงนวา เมอเราพดถงเวลาการทางานในกรณเฉลยของอลกอรทมเชงกาหนดหนงๆ นน คอเวลาเฉลยนวเคราะหมาจากเวลาการทางานสาหรบขอมลขาเขาในทกๆ ลกษณะ โดยตองอาศยการแจงแจงโอกาสขอมลขาเขาในตละลกษณะ ทจะปรากฎขนจรงในทางปฏบตเขามาเกยวของดวยซงเปนสงทมกไมร หรอถารกอาจเปลยนแปลงได (โดยทวไปกเลยเฉลยแบบใหโอกาสทแตละลกษณะจะเกดขนมเทาๆ กน) แตถาเราพดถงคาคาดหวงของเวลาการทางานของอลกอรทมแบบสม จะเปนเวลาการทางานสาหรบขอมลขาเขาใดๆ ซงหาไดจากเวลาการทางานของอลกอรทมกบขอมลขาเขานนๆ กระทาซาแลวซาเลา (เนองจากเวลาการทางานในแตละครงนนไมเหมอนกน ขนการผลทไดจาการสมระหวางการทางาน) การวเคราะหไมไดอาศยความนาจะเปนทขอมลขาเขานนจะเกดขนเลย แตจะขนกบการแจงแจงผลทไดจากการสมในอ

Page 324: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

308 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

ลกอรทมซงเปนสงทเราสามารถวเคราะหได (เชนกรณการเลอกตวหลกแบบสมนนตความไดวาขอมลแตละตวในรายการมสทธถกเลอกเปนตวหลกไดเทาๆ กน)

อลกอรทมแบบลาสเวกสทอาจตองเรยกซาเราสามารถสรางอลกอรทมแบบลาสเวกสในอกรปแบบหนงทใหคาตอบถกตองเสมอ โดยนาผลทไดจากอลกอรทมแบบมอนตคารโลมาตรวจสอบความถกตองของคาตอบ ถาถกตองกเปนการเสรจสนการทางาน แตถาผดกเพยงแตเรยกใชอลกอรทมแบบมอนตคารโลใหมซา (ซงจะมพฤตกรรมการทางานตางจากการเรยกครงทแลว เพราะเปนอลกอรทมเชงสม) จนกวาจะไดคาตอบทถกตอง แตเราจะทาเชนนใหไดผลดกเมอมวธตรวจสอบคาตอบจากอลกอรทมแบบมอนตคารโลอยางรวดเรววาถกตองหรอไม ดงแสดงดวยรหสเทยมขางลางน

01: Algorithm_LV( x )02: {03: do {04: a = Algorithm_MC( x )05: } while( isNotCorrect( x, a ) )06: return a07: }

กาหนดให tMC คอคาคาดหวงของเวลาการทางานของ Algorithm_MC tV คอเวลาทใชในการตรวจสอบคาตอบวาถกตองหรอไม (ฟงกชน isNotCorrect) p คอความนาจะเปนท Algorithm_MC จะใหคาตอบทถกตอง และ tLV คอคาคาดหวงของเวลาการทางานของ Algorithm_LV จะไดวา

tLV = p(tMC + tV) + (1–p)(tMC + tV + tLV)

= (tMC + tV)

p

หรออกวธหนงทมลกษณะการทางานคลายกน แตคราวนใหออกแบบอลกอรทมเชงสมซงไดผลลพธสองรปแบบคอ ใหผลลพธทเปนคาตอบทถกตอง หรอไมกใหผลลพธทระบวา "หาคาตอบไมได" 8 เรยกใชอลกอรทมเชงสมน ถาใหคาตอบออกมากเสรจสนการทางาน (เพราะพบคาตอบทถกแนแลว) แตถาผลทไดคอการยอมรบวาหาคาตอบไมได กเรยกซาทาใหมจนกวาจะไดคาตอบ (อยาลมวาเนองจากเปนอลกอรทมเชงสมการเรยกใหมกมพฤตกรรมการทางานแบบใหม) แสดงดวยรหสเทยมไดดงน

8 บางคนกนยามลกษณะของอลกอรทมเชงสมแบบนวาเปนอลกอรทมแบบลาสเวกส

Page 325: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 309

01: Algorithm_LV( x )02: {03: do {04: (a, success) = Algorithm_Randomized( x )05: } while( NOT success )06: return a07: }

กาหนดให tS และ tF คอคาคาดหวงของเวลาการทางานของ Algorithm_Randomizedสาหรบกรณทหาคาตอบได และกรณทยอมรบวาหาคาตอบไมไดตามลาดบ p คอความนาจะเปนท Algorithm_Randomized จะใหคาตอบ และ tLV คอคาคาดหวงของเวลาการทางานของ Algorithm_LV จะไดวา

tLV = p�tS + (1–p)(tF + tLV)

= tS + tF��

��1-p

p

ปญหาการเลอกปญหาการเลอก (selection) คอปญหาการเลอกขอมลตวทเลกทสดเปนอนดบท m ในรายการซงเราไดนาเสนออลกอรทมเชงกาหนดทหาคาตอบไดในเวลา O(n) มาแลว (QuickSelect) โดยอาศยการแบงสวนแบบทเลอกตวหลกดวยวธ “มธยฐานของมธยฐานของหา” ซงประกนคณภาพการแบงสวนแบบ 30%–70% ในกรณเลวสด ทาใหสามารถหาคาตอบไดในเวลาทเปนเชงเสนกบปรมาณขอมล ถาหนกลบไปใชการแบงสวนแบบใชขอมลตวแรกในรายการเปนตวหลก กจะไดเวลาการทางานในกรณเลวสดเปน O(n2) แตในกรณเฉลยกลบใชเวลาเปน O(n) พฤตกรรมของอลกอรทมเชงกาหนดเชนน (ซงเหมอนกบกรณ QuickSort) สงผลใหสามารถสรางอลกอรทมแบบลาสเวกสทสมเลอกขอมลในรายการมาเปนตวหลก กจะไดคาคาดหวงของเวลาการทางานเปน O(n) เชนกน (ขอใหกลบไปดวธวเคราะหในบทท 8)

การจบคสตรงจากทไดนาเสนออลกอรทมการจบคสตรงของ Rabin–Karp แบบมอนตคารโลมาแลว พบวาโอกาสทจะเกดการจบคเทจนนมนอยมาก แตอยางไรกตามกยงมโอกาสผด เราสามารถสรางอลกอรทมแบบลาสเวกสทใหคาตอบในการจบคสตรงทถกตองเสมอ โดยการนาผลทไดจาก StringMatching_Rabin_Karp_MC มาตรวจสอบวาเมอ Fp(X(j)) มคาเทากบ Y แลว X(j) เหมอนกบ Y หรอไม ซงภาระการตรวจสอบตรงนเสยเวลา O(m) หากพบวาเทากบกจบ แตถา

Page 326: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

310 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

พบวาไมเทากน กสามารถเรยก StringMatching_Rabin_Karp_MC ซา แสดงดวยรหสเทยมขางลางน ซงมคาคาดหวงของเวลาการทางานเปน O( (m+n) / (1–1/n) ) = O( m+n )01: StringMatching_Rabin_Karp_LV( X[1..n], Y[1..m] )02: {03: do {04: j = StringMatching_Rabin_Karp_MC( X[1..n], Y[1..m] )05: if ( j == 0 ) break;06: i = 107: while ( i <= m && X[j+i–1] == Y[i] )08: ++i09: } while( X[j+1–1] � Y[i] )10: return j11: }

หรอจะใชหนกลบไปใชวธการลยจบคแบบ brute force ปกต ซงใชเวลาเปน O(mn) กได โดยมคาคาดหวงของเวลาการทางานเปน O( (m+n)(1–1/n) + mn(1/n) ) = O( m+n ) เชนกน

ปญหา n ควนกาหนดใหมตารางขนาด n�n ชอง และควน n ตว ปญหา n ควน ตองการหาวธการวางควนทง n ตวบนตารางโดยไมมควนตวใดมองเหนควนตวอนๆ เราไดศกษาปญหานพรอมทงวธหาคาตอบดวยการยอนรอยในบททแลว การยอนรอยเปนวธทงาย แตสามารถหาคาตอบไดเฉพาะกรณท n มขนาดเลกๆ ในกรณท n เปนหลกรอย เหนจะใชการยอนรอยไมไดแนๆ (แคลองให n=30 กตองตรวจสอบสถานะในตนไมปรภมสถานะเปนจานวน 56,429,620 จดกวาจะพบคาตอบแรก) ทงนเพราะวาการยอนรอยมระเบยบเกนไป !!! คอลองวางควนไลจากซายไปขวาในแตละบรรทด การลองวางจากซายไปขวาทเปนระเบยบน มไดเปนตวชในเหนวาจะพบคาตอบไดรวดเรว ทาไมเราไมเลอกชองทวางไดแบบสม ไลไปทละบรรทด ดงน01: nQueen_Rand( x[1..n] )02: {03: for ( k=1 to n ) {04: c = 0;05: for ( j=1 to n ) {06: x[k] = j07: if ( promising( x, k ) ok[++c] = j08: }09: if ( c == 0 ) return FAILURE10: x[k] = ok[ random(1,c) ]11: }12: return SUCCESS;13: }

วงวนรอบนอกทาหนาทวางควนหนงตวในแตละรอบ วงวนรอบใน (บรรทดท 5 ถง 8) ทาหนาทหาชองทวางไดซงไมชนกบค วนทไดเคยวางมาแลวในแถวดานบนๆ โดยเกบชองทวางไดไว

Page 327: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 311

ในแถวลาดบ ok โดยตวแปร c เกบจานวนชองทวางได ถา c เปน 0 แสดงวา "ตน" ไมมชองทวางไดกเลกเพราะลมเหลว (บรรทดท 9) แตถามชองทวางไดกสมเลอกชองหนงมาวางควนลงไป (บรรทดท 10) อลกอรทมมโอกาสไดคาตอบผดจงเปนแบบมอนตคารโลแตเนองจากเราสามารถตรวจสอบคาตอบวาผดหรอถกไดงาย ดงนนจงสามารถเรยกซาไดในกรณทไดคาตอบทผด ไดเปนอลกอรทมแบบลาสเวกสดงน01: nQueen_LV( n )02: {04: while ( nQueen_Rand( x[1..n] ) == FAILURE ) { }05: return x[1..n]06: }

ผเขยนไดลองใช nQueen_LV หาคาตอบของปญหา 30 ควน และ 100 ควน แลวเกบสถตของจานวนการวางควน (บรรทดท 10 ของ nQueen_Rand) จานวนการเรยก nQueen_Rand(บรรทดท 4 ใน nQueen_LV) จากนนคานวณคา davg ซงแทนจานวนควนเฉลยทวางสาเรจในการเรยก nQueen_LV หนงครง แสดงดงตารางท 12–3

ตารางท 12–3 การทดลองใช nQueen_LV หาคาตอบของกรณ n=30 และ100#การวางควน #การเรยกซา davgการทดลอง

ครงท n = 30 n = 100 n = 30 n = 100 n = 30 n = 100

1 2099 9851 84 108 24.9 91.22 1649 40805 66 449 24.9 90.93 1292 4179 51 46 25.3 90.84 616 33406 25 366 24.6 91.35 3983 38320 160 420 24.9 91.2

จากผลการทดลองแสดงใหเหนวา nQueen_LV นนสามารถหาคาตอบของ n ควนไดอยางรวดเรวมาก แตเวลาการทางานจะไมแนนอนแปรเปลยนไดมากในการทดลองแตละครง (กเพราะวาเวลาไปขนกบการสมระหวางการทางาน ) สงทน าสนใจกคอวาในการทางานของ nQueen_Rand นนสวนใหญเกอบจะสาเรจ วางควนไปไดเปนจานวนมาก แลวกมาพบวาตน จงวางแถวตอไปไมได (ดจากคาของ davg เมอ n = 30 พบวาโดยเฉลยวางสาเรจไปไดประมาณ 25 ตว ในขณะทเมอ n = 100 พบวาโดยเฉลยวางสาเรจไปไดประมาณ 91 ตว)

จากพฤตกรรมของการวางควนทเกอบสาเรจเชนน นาไปสการนากลวธการวางสมไปใชรวมกบการยอนรอย โดยวางควนจานวนมาก (แตไมครบ) แบบสมกอน (ซงมโอกาสสาเรจสง) แลวคอยวางควนทเหลอตอดวยวธการยอนรอย ซงพบวเปนวธทสามารถหาคาตอบของปญหา nควนไดอยางรวดเรว (อยากใหนกเรยนไปลองทาด)

Page 328: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

312 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

การแฮชเชงจกรภพแนวคดของการแฮช (hashing) ถกนาเสนอโดย Dumey ในป ค.ศ. 1956 9 สาหรบปญหาตารางสญลกษณ (symbol table) ทใชเกบชอตวแปร และชอฟงกชนตางๆ ของโปรแกรมระหวางการแปล (compile) โปรแกรมคอมพวเตอร ปจจยทมผลอยางมากตอประสทธภาพในการจดเกบขอมลในตารางแฮชนน กคอฟงกชนแฮชทเลอกใช (ตามทไดนาเสนอไวในบทท 6) ฟงกชนแฮชทดตองเปนฟงกชนทคานวณไดรวดเรวลดจานวนการชน นนคอควรมคณสมบตทแตละคยทเปนไปไดมโอกาสเทาๆ กนทจะไปอยในชองใดๆ ในตาราง (เรยกคณสมบตเชนนวา simple uniform hashing) แตไมวาเราจะออกแบบฟงกชนไวดเพยงใด กคงมขอมลบางชดซงสรางปญหาใหเกดการชนเปนจานวนมากกบฟงกชนแฮชทเลอกใชนนได

ตวอยางเชนตวแปลภาษาคอมพวเตอร (compiler) ทตองใชตารางสญลกษณในการจดเกบชอตวแปร ชอฟงกชนตางๆ ในโปรแกรมทกาลงถกแปล สมมตวาฟงกชนแฮชทเลอกใชนนตดชอตวแปรเฉพาะ 7 ตวอกษรทางซายมาคานวณ ถาหากเราโชครายไปตงชอตวแปรตางๆ ในโปรแกรม โดยปดทายชอตวแปรทกๆ ตวดวย Somchai เชน counterSomchai, tempSomchai เปนตน กเหนไดชดวายอมเกดการชนเปนจานวนมากในตารางแฮชทใชในตวแปลภาษาน หมายความวาตองเสยเวลาในการแปลโปรแกรมนมากผดปกต ทงๆ ทสาหรบโปรแกรมโดยทวไป (ซงไมไดตงชอเจดตวทายเหมอนกนเชนน) สามารถแปลไดอยางรวดเรว เราอาจวเคราะหเหตการณในลกษณะเชนนวาเปนเรองปกตสาหรบอลกอรทมเชงกาหนดโดยทวไป วาตองมบางชดขอมลททางานชาจนกอใหเกดกรณเลวสดขนได แตถาสาหรบขอมลขาเขากรณเฉลยนนทางานไดอยางมประสทธภาพ กยอมรบกนได แตตองขอเตอนวาการวเคราะหกรณเฉลยนนมกใชสมมตฐานวา ขอมลขาเขาในแตละลกษณะนมโอกาสเกดขนเทาๆ กน ซงอาจไมจรงกได ในทางปฏบตอาจมกลมคนทชอบตงชอตวแปรทลงทายดวยตวอกษรทเหมอนๆ กนกได

จะทาอยางไรดจงจะออกแบบการจดเกบซงมเวลาทางาน ไมขนกบลกษณะของชดขอมลทไดรบ ความตองการนเองนามาซงการใชอลกอรทมเชงสม (ในทนเปนแบบลาสเวกสซงใหผลลพธถกตองเสมอ) เราสามารถหลกเลยงการทตองเผชญกบขอมลขาเขาทไมพงประสงคได โดยแทนทจะใชฟงกชนแฮชทออกแบบไวลวงหนาเพยงหนงฟงกชนในระบบ กออกแบบใหมฟงกชนแฮชจานวนมากๆ ใหสมเลอกใชไดกอนเรมทางาน (ตองขอเนนวาเมอเลอกใชฟงกชนแฮชใด ก

9 A. L. Dumey, Computers and Automation 5 (1956) 6–9.

Page 329: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 313

ตองใชฟงกชนนนตลอดการประมวลผล เชนสาหรบกรณตวแปลภาษากหมายความวา ตวแปลภาษาจะสมฟงกชนแฮชใหมทกครงทเรมแปลโปรแกรมใหม) เนองจากฟงกชนแฮชถกสมมาใชขณะทางาน ดงนนโอกาสทจะไดฟงกชนแฮชททางานไมดกบขอมลขาเขาทไดรบกนอยมาก

สงทจะนาเสนอตอไปนจะสรางความกระจางในประเดนทผอานคงนกสงสยในใจวา กลมของฟงกชนแฮชทถอวาดนนมลกษณะเชนไร ? ถาดแลวสงผลตอเวลาการทางานอยางไร ? และตวอยางกลมของฟงกชนแฮชทดทมใชกนพรอมทงวธการสม

แนวคดการสมเลอกฟงกชนแฮช สรางปญหาตามมาคอเราตองมกลมของฟงกชนแฮชตางๆ ใหเลอกใช การออกแบบฟงกชนแฮชสกตวกยงอยแลว แตนตองมเปนกลม จะออกแบบอยางไร เพอใหไดกลมของฟงกชนแฮชทด กอนอนเรามานยามคาวากลมของฟงกชนแฮชทดกนกอน เราเรยกกลมของฟงกชนแฮช H วาเปนเชงเอกภพ "universal class of hash functions" เมอจานวนของฟงกชน h � H ซงทาให h(x) = h(y) มทงสน |H| / m สาหรบแตละคของคย x และ yทไมเหมอนกน และ m คอขนาดของตาราง ดวยนยามของกลมเชงเอกภพนตความไดวา ถาเราสมเลอก h จาก H มาใช โอกาสทคย x และ y ทไมเหมอนกนจะชนกนนนม 1/m นนคอ

Pr[ h(x) = h(y) | x � y ] = 1m

สาหรบคย x และ y ใดๆ ทไมเหมอนกนและ h เปนฟงกชนทสมเลอกจาก H

คราวนมาดวา H ซงเปนกลมของฟงกชนแฮชเชงจกรภาพนนมดอะไร กอนอนขอกาหนดให Sคอเซตของคยตางๆ ทเราจะจดเกบ n คอขนาดของเซต S c(x, S) คอคาคาดหวงของจานวนการชนทเกดขนระหวาง x กบคยอนๆ ใน S และ Xx, y คอตวแปรเชงสมทมคาเปน 1 เมอ h(x) = h(y) มฉะนนมคาเปน 0 จะไดวา

���

xySyyxXSxc

,,),(

จากคณสมบต linearity of expectation จะไดวา

� � � ����

xySyyxXESxcE

,,),(

จากนยามกลมเชงจกภพจะไดวา E(Xx, y ) = 1/m ดงนน

� �m

nm

SxcExySy

11),(,

�� ���

Page 330: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

314 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

ตความไดวาถาเราใชฟงกชนแฮช h ทไดจากการสมเลอกจาก H เพอเกบขอมลจานวน n ตวในตารางแฮชขนาด m จะไดวาคาคาดหวงของจานวนการชนระหวางคย x กบคยอนๆ ทเกบอยในตารางแฮชจะมคาประมาณเทากบ load factor ของตารางนน ซงเปนสงทผใชตารางแฮชปรารถนา เนองจาก load factor เปนตวกาหนดเวลาการทางานของ การเพม ลบ และหาคย อกทงเราสามารถออกแบบใหตารางแฮชมการขยาย (หรอหด) ขนาดของตารางดวยขบวนการ rehashing เพอควบคมคา load factor ไมใหเกนขอบเขตทกาหนดไวได ทาใหเราสามารถควบคมเวลาการทางานของแตละการดาเนนการใหเปน O(1) ได

หลงจากรแลววาการสมเลอกฟงกชนแฮชมาใช จากกลมของฟงกชนแฮชเชงจกรภาพนนเปนเรองด ปญหาทตามมากคอแลวเราจะหากลมของฟงกชนทวานไดอยางไร ? กาหนดใหคยตางๆ เปนจานวนเตมในชวง [0, U–1] และ m คอขนาดของตารางแฮช ดงนนฟงกชนแฮชใดๆ ตองแปลงจานวนเตมในชวง [0, U–1] เปนจานวนเตมในชวง [0, m–1] ถาจะลองคดดตรงนสกคร กจะพบวาเซตของฟงกชนทกๆ รปแบบจาก {0,1,...,U–1} � {0,1,..., m–1) (ซงมจานวนทงสน mU ฟงกชน) กคอกลมเชงจกรภพนนเอง (เนองจากสาหรบคของคย x และ y ใดๆ ผลของการแฮชมชนกนได m ตาแหนงในตาราง และ mapping ของคยทเหลอซงมจานวน U–2 มไดทงสน mU–2 แบบ ดงนนจานวนฟงกชนทาให x ชน y มทงสน m� mU–2 = mU–1 แบบซงมคาเทากบ mU/m) อยากใหนกเรยนลองคดตอนนวาจะแทนเซตของฟงกชนทกๆ รปแบบจาก {0,1,...,U–1} � {0,1,..., m–1) ไดอยางไร สมเลอกอยางไร และเมอเลอกไดแลวจะแทนฟงกชนทเลอกไดอยางไร สามประเดนน (เมอนกเรยนทราบคาตอบแลว) ชใหเหนวากลมเชงจกภพแบบนใชไมไดในทางปฏบต

ในป ค.ศ. 1979 Carter และ Wegman 10 ไดนยามกลมของฟงกชนแฮชเชงจกรภพแบบสอง (2–universal) วาเปนเซต H ของฟงกชน

Pr[ h(x) = h(y) | x � y ] � 1m

10 J.L. Carter and M.N. Wegman, Universal classes of hash functions, J. Comp. Sys Sci. 18 (1979), 143–154.

Page 331: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 315

สาหรบคย x และ y ใดๆ ทไมเหมอนกนและ h เปนฟงกชนทสมเลอกจาก H เหนไดชดจากนยามวากลมเชงจกภพแบบสองนไมดอยกวากลมเชงจกรภพทไดนยามไวตอนตน (แถมอาจดกวาดวยซาไป) โดย Carter และ Wegman ไดพสจนวาฟงกชนแฮชในรปแบบดงน

ha,b(x) = ((ax + b) mod p ) mod m

เปนกลมเชงจกรภพแบบสอง โดยท x คอคาของคย m เปนขนาดของตาราง p เปนจานวนเฉพาะทมคาในชวง [U, 2U ) 11 ฟงกชนแฮชตางๆ ในกลมมลกษณะตางกนตามคาของ a และ bโดยท 0 < a < p และ 0 � b < p กลมฟงกชนนบรรยายงาย ตวฟงกชนกไมซบซน อกทงสามารถเลอกสมไดสะดวก โดยเพยงสมคา a และ b ในชวงทกาหนด

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

ha,b(x) = g( fa,b(x) ) โดยท fa,b(x) = (ax + b) mod p และ g(j) = j mod m

กอนอนขอเรมดวยการแสดงใหเหนวาการชนกนนนเปนผลของ g(k) เทานน โดยจะแสดงใหเหนวา fa,b(x) � fa,b(y) สาหรบทกๆ x และ y ทตางกน ดวยวธการขดแยง ถา fa,b(x) = fa,b(y) จะไดวา (ax + b) mod p = (ay + b) mod p แสดงดวยสมภาค (congruence) ไดเปน

ax + b � ay + b (mod p)

ตด b ออกทงสองขางได และเนองจาก 0 < a < p ดงนน gcd( a, p ) = 1 จะเขยนใหมไดเปน 12

x � y (mod p)

ซงเปนไปไมได เนองจาก x � y ทง x และ y เปนคยมคาในชวง [0,U–1] และ p � U จงเปนไปไมไดท x จะสมภาคกบ y สรปไดวาถาคยตางกน ผลของฟงกชน fa,b จะใหคาตางกน

คราวนเรากจะมานบจานวนคของคา a และ b (ซงกคอจานวนฟงกชนในกลม) ททาให ha,b(x) = ha,b(y) สาหรบคย x และ y ทตางกน กาหนดให k เปนจานวนเตมในชวง [0, p–1] จะพบวามคา a และ b ททาให fa,b(x) = k อย p–1 แบบ (ทงนเพราะวาเราเลอกคา a ไดตงแต 1 ถง p–1 และ

11 ในทฤษฎจานวนนนมขอความคาดเดาทระบวาตองมจานวนเฉพาะสกตวแนๆ ในชวง [U, 2U) โดยท Uคอจานวนเตมใดๆ ทมากกวา 1

12 จากความรในทฤษฎจานวนทวา ถา ax � ay (mod p) แลวจะได x � y (mod p / gcd(a,p) )

Page 332: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

316 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

สาหรบแตละ a ทเลอกได เราสามารถหาคา b ททาให fa,b(x) = k ไดเสมอ) สาหรบคาของ aและ b ในแตละแบบนนจะใหผลของ fa,b(y) � k (จากผลทไดในยอหนาทแลว) แตเมอนาผลจาก fa,b(y) จานวน p–1 ตวทตางกนเหลานไปผาน g จะไดวามอยไมเกน �(p–1)/m� ตวทได g(fa,b(y)) = g(k) (จากนยามของฟงกชน g(j) = j mod m) แสดงวาสาหรบคา k ใดๆ ในชวง [0, p–1] จะมคาของ a และ b อยางมาก �(p–1)/n� คททาใหเกดการชนกน ha,b(x) = ha,b(y) ของคย x และ y ทตางกน เนองจาก k มคาทเปนไปไดทงสน p คา ดงนนจานวนฟงกชนททาใหเกดการชนกนของคย x และ y ทตางกนจงมคาไมเกน

mpp

mpp )1(1 �

���

���

� �

ดงนนถาสมเลอกคา a และ b ในชวง 0 < a < p และ 0 � b < p ตามขอกาหนด (ซงเลอกไดเเปนจานวนทงสน (p–1)p แบบ) จะมอยไมเกน (p–1)p/m แบบซงกอใหเกดการชน สาหรบคของคยใดๆ ทตางกน นนคอ

Pr[ ha,b(x) = ha,b (y) | x � y ] � p(p-1)/n(p-1)p =

1m

แสดงวา ha,b(x) เปนกลมของฟงกชนแฮชเชงจกรภพแบบสอง

ทอธบายมาทงหมดนเพอแสดงใหเหนวาการนาแนวค ดของอลกอรทมแบบลาสเวกสในการสมเลอกฟงกชนแฮชมาใชจากกลมของฟงกชนเชงจกรภพแบบสอง (แทนทจะใชเพยงฟงกชนเดยวในระบบ) สงผลใหคาคาดหวงของเวลาการทางานเปน O(1) โดยไมขนกบลกษณะของชดขอมลทจดเกบ

แบบฝกหด1. กาหนดให X คอเวกเตอรของเลขฐานสองขนาด 1�n และ Y คอเวกเตอรขนาด 1�n ซงมคาเหมอนกบ X ยกเวนเฉพาะชองท k ชองหนง ซง Y[k] ใหมคาเทากบ ][kX และ D คอเมทรกซขนาด n�n ซงไมใชเมทรกซศนย จงพสจนวา XD และ YD จะเปนเวกเตอรศนย ทงคไมได

Page 333: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 317

2. จงออกแบบอลกอรทมแบบมอนตคารโล สาหรบตรวจสอบวา A และ B ซงคอเมทรกซขนาด n�n นน A เปนเมทรกซผกผนของเมทรกซ B หรอไม อธบายดวยวาอลกอรทมทนาเสนอมาเปนแบบเอนเอยง และ p-correct หรอไม

3. จงเขยนรหสเทยมของอลกอรทมแบบมอนตคารโลซงคนจานวนเฉพาะทม k หลก

4. กาหนดให A เปนอลกอรทมซงใหคาตอบสองแบบ คอ Y กบ N A เปนอลกอรทมแบบมอนตคารโลซงไมเอนเอยง (หมายความวาคาทคนทงสองแบบนมโอกาสผดทงค) สมมตวาโอกาสท A คนคาตอบถก (ของทงสองแบบ) เปน 3/4 ถาเราใชวธเรยก A สามครง แลวดวาได Y หรอ N แบบใดมากกวากนกถอเอาคาตอบนนเปนหลก จงคานวณความนาจะเปนทไดคาตอบถกดวยการเรยก A สามครงในลกษณะขางตนน

5. ปญหา 2SAT รบ f ซงคอนพจนบลน (Boolean expression) ซงเขยนอยในรปแบบบรรทดฐานแบบเชอม (conjunctive normal form – CNF หรอบางทเรยกกนวาผลคณของผลบวก – product of sums) เชน )()()( 213231 xxxxxxf ������ โดยแตละวงเลบมเพยงสองตวแปรเทานน จากนนตรวจสอบวามวธกาหนดคาใหกบตวแปรบลนตางๆ ใน f ททาให f มคาเปนจรงไดหรอไม

สมมตวามทางทาให f เปนจรงได เราสามารถออกแบบอลกอรทมเชงสมแบบมอนตคารโลซงหาคาของตวแปรตางๆ ททาให f เปนจรงไดในเวลาคาดหวงแบบพหนามดงน กาหนดคาแบบสมใหกบตวแปรตางๆ จากนนตรวจสอบดวามวงเลบใดบางทไดคาเปนเทจ ถาไมมกจบการทางาน แตถายงมบางวงเลบทไดคาเปนเทจ กสมเลอกขนมาหนงวงเลบ จากนนสมเลอกหนงในสองตวแปร (ทตองเปนเทจทงค) แลวกลบคาทาใหเปนจรง (กยอมทาใหวงเลบนเปนจรง) กระทาการสมวงเลบทเทจ สมตวแปรในวงเลบแลวกลบคา เชนนไปเรอยๆ จนได f เปนจรง

จงพสจนวาคาคาดหวงของเวลาการทางานขางตนเปน O(n2) ในการหาคาของตวแปรตางๆ ททาให f เปนจรง โดยท n คอจานวนตวแปร

6. จงออกแบบอลกอรทมเชงสมมอนตคารโลแบบเอนเอยง ซงตรวจสอบวานพจนบลน f ในปญหา 2SAT นนมทางทาใหเปนจรงหรอไม

Page 334: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

318 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

7. กาหนดให ��

n

i

ii xaxA

0)( , �

n

i

ii xbxB

0)( และ �

n

i

ii xcxC

2

0)( เปนฟงกชนพหนาม

ทมดกรเปน n, n และ 2n ตามลาดบ เราสามารถตรวจสอบไดงายๆ วาผลคณของ A(x) กบ B(x) เทากบ C(x) หรอไม ดวยการลองคณ polynomial A(x) กบ B(x) กนจรงๆ จากนนกนาสมประสทธตางๆ ของ xi ในผลคณทไดมาเปรยบเทยบกบสมประสทธตางๆของ xi ใน C(x) กทราบผล เชน A(x) = (1–x), B(x) = (1+x), C(x) = (1+x2) ลองคณ (1–x)(+x) = (1–x2) เทยบสมประสทธกบ (1+x2) กพบวาไมเทา วธนตรงไปตรงมาแตชา มาดอกวธดกวา

คณ Freivalds เสนอวาเราใชวธลองแทนคา x ในฟงกชนทงสามดวยจานวนทสมมาจากเซตของจานวนทมขนาด 4n ตว จากนนคานวณคาของฟงกชนทงสาม แลวลองคณ A กบ B เพอตรวจสอบคาทไดกบ C เชนลองแทน x ดวย 3 ใน A(x) = (1–x), B(x) = (1+x), C(x) = (1+x2) จะได A(3) = –2, B(3) = 4, C(3) = 10 กสรปไดทนทวา A(x)B(x) � C(x) วธนกมโอกาสโชคราย ถาเราลองแทน x ดวย 0 กจะพบวาเทากน

อยากทราบวาอลกอรทมแบบมอนตคารโลของคณ Freivalds ขางบนนเเอนเอยงหรอไม และเปน p-correct โดยท p มคาเทาใด

8. จงวเคราะหคาคาดหวงของจานวนจดในตนไมปรภมสถานะทจะตองแวะผาน ของอลกอรทมแบบลาสเวกสสาหรบปญหา n ควน ถากาหนดให p คอความนาจะเปนทจะทาสาเรจ และ f คอระดบความลกเฉลยทลงไปจนพบวาลมเหลว

9. ในการสรางรายการโยง (linked list) นนโดยทวไปเราจะสรางดวยตวแปรแบบตวชเพอการโยง และใชการจองหนวยความจาแบบพลวตในการจองเนอทเกบชอมล แตเรากสามารถสรางรายการโยงไดดวยแถวลาดบสองชแถว data[] และ next[] data นนมไวเกบขอมล ในขณะท next เกบเลขดชนของชองในแถวลาดบทขอมลตวถดไปอย (เรยกวธสรางแบบนวา cursor-based) มตวแปร head เกบเลขดชนของแถวลาดบทเกบขอมลตวแรกในรายการโยง ดงนนขอมลตวทสองกคอ data[next[head]] เมอใด next[i] = 0 กแสดงวาไมมตวถดไปแลว ถาเราจดเกบรายการโยงนโดยเกบในขอมลเรยงจากนอยไปมาก และถารายการโยงมขอมล n ตว กใชแถวลาดบตงแตชองท 1 ถง n ขอเสยของรายการโยงกคอไมสามารถคนขอมลแบบทวภาคได แตเรากอลกอรทมแบบลาสเวกสคนไดรวดรวกวา ซงสามารถกระทาดงน สมเลอกขอมลมา n ตว จากนนหาตวทคามากสดทไมมากกวา x สมมตวาเกบอยทดชนท k จากนนเรมวงคนแบบลาดบตามรายการโยงเรม

Page 335: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 27/10/00 21:56 : [email protected] บทท 12 อลกอรทมเชงสม 319

จาก data[k], data[next[k]], … เปนตนไป จงแสดงใหเหนจรงวาคาคาดหวงของเวลาในการคนคอ O( n )

10. กาหนดให A และ B เปนอลกอรทมมอนตคารโลแบบเอนเอยงซงแกปญหาเดยวกน โดยท A เปนอลกอรทมแบบ p-correct และเอนเอยงไปทางคาตอบ “จรง” ในขณะท B เปนอลกอรทมแบบ q-correct และเอนเอยงไปทางคาตอบ “เทจ” จงนาเสนอวธการใช A และ Bเพอออกแบบอลกอรทมลาสเวกส (ซงใหคาตอบกตองถก หรอไมกยอมรบวาหาคาตอยไมได) อลกอรทมดงกลาวควรเรยกใช A และ B อยางมากเพยงหนงครง และถาอลกอรทมนใหคาตอบถกดวยความนาจะเปน r อยากทราบวาอลกอรทมทนาเสนอนม r ซงมคามากสดเทาทจะเปนไปไดเทาไร

Page 336: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

320 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 27/10/00 21:56 : [email protected]

Page 337: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] 321

บทท 13

ตงแตบทแรกจนถงบทลาสด เราไดนาเสนอวธการวเคราะหและออกแบบอลกอรทม เพอแกไขขอปญหาทไดรบ สาหรบในบทนเราจะมองกนอกมมหนง คอมองทตวปญหาวาจะสามารถแยกแยะปญหาตางๆ ออกเปนกลมๆ ตามความยาก ความงาย หรอความซบซอนของตวปญหาไดอยางไร สมมตวาโรงงานตดแผนเหลกแหงหนง รบงานตดแผนเหลกออกเปนชนสวนยอยๆ มรปทรงหลากหลายตามความตองการของลกคา ดงตวอยางในรปท 13–1ก

1

2

3

4

56

7

1 2

56 7

34

(ก) (ข)รปท 13–1 ตวอยางการวางรปทรงทตองการ

เพอใหเกดกาไรสงสด เรากควรวางรปแบบตางๆ ทตองการบนแผนเหลก เพอใหเหลอเศษเหลกหลงการตดนอยทสด (รปท 13–1ข) ถาเราตองออกแบบอลกอรทมเพอแกปญหาน กเหนจะมเรองใหคดมากมาย สมมตเราใชเวลาผานไปหนงอาทตย สองอาทตย สามอาทตย หนงเดอนแลว กไดแตอลกอรทมทใหผลลพธตามตองการเฉพาะกรณทจานวนรปแบบบนแผนเหลกมนอยๆ ถามมากกจะทางานชามากๆ จนทนรอคาตอบไมได หรอไมกไดอลกอรทมททางานเรวแตไมไดคาตอบทดทสด (คอเหลอเศษเหลกไมนอยสด) จะโทษวาปญหามนยากเกนความสามารถกเหนจะไมคอยดนก แลวเราจะทาอยางไรด ? คงเปนการดถาเราจะพสจนไดวาปญหานยากในระดบททกๆ คนในวงการในปจจบนกแกไมไดเหมอนเรา (จงไมนามเหตผลจางคนอน

เอนพบรบรณ

Page 338: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

322 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

มาออกแบบแทนเรา) ดงนนเราจงควรแนะนาใหทางเจาของเปลยนจดประสงค ใหเราออกแบบอลกอรทมทไดผลลพธทเหลอเศษเหลก “นอยๆ” เทาทจะนอยได แตอาจไมนอยทสด

มปญหามากมายทพบกนในสารพดวงการทมลกษณะเชนน คอยากในระดบทยงไมมใครในโลกออกแบบอลกอรทมทใหผลเฉลยไดเรวๆ เราจะไดศกษากลมปญหาทมลกษณะเชนนซงมชอเรยกวากลมปญหาเอนพบรบรณ (NP–Complete) โดยจะนาเสนอนยามในเรองประสทธภาพของอลกอรทมนยามความยากงายของปญหา ปญหาการตดสนใจ กลมปญหา P, NP, NP–hard และ NP–complete การลดรปปญหา และกลวธทใชในการออกแบบอลกอรทมทจดการเกยวกบปญหาในกลมน

อลกอรทมทมและทไมมประสทธภาพจะขอเรมดวยการสรปเวลาการทางานของอลกอรทมตางๆ ทไดนาเสนอมาในบทกอนๆ ตารางท 13–1 แสดงตวอยางของปญหาและประสทธภาพของอลกอรทมตางๆ โดยเรยงตามปญหาซงเราไดอลกอรทมทมอตราการเตบโตของเวลาการทางานนอยไปยงมาก ไลจากบนลงลาง มทงแบบ log n, n, n log n, n2, n3, ไปจนถงแบบ 2n และ n! ขอเนนวาอลกอรทมทไดนาเสนอมานนอาจจะไมใชอลกอรทมทดทสดสาหรบปญหานนๆ กได (เชนปญหา longest increasing subsequence นนสามารถแกไดดวยอกอลกอรทมทไมไดนาเสนอ แตใชเวลาเปน O(n log n)) ถา A เปนอลกอรทมซงมเวลาการทางานเปน O(nk) โดยท n คอขนาดของขอมลขาเขา และ kคอคาคงท นนคอมขอบเขตบนของเวลาการทางานเปนฟงกชนพหนาม (polynomial–time algorithm) กเปนทยอมรบกนในวงการวา A เปนอลกอรทมทมประสทธภาพ หมายความวา Aจะทางานไดรวดเรว และมอตราการเตบโตของเวลาการทางานทยอมรบได และในทางตรงกนขามถา B เปนอลกอรทมทมเวลาการทางานทโตเรวเกนกวาฟงกชนพหนาม เชน nlog n 2n หรอ n! เปนตน ซงจะขอเรยกเหมาวาเปนฟงกชนเลขชกาลง (exponential–time algorithm) เพอความสะดวก เรากเรยก B วาเปนอลกอรทมทไมมประสทธภาพ 1

1 Edmonds เปนผใหนยามนในบทความ “Paths, trees, and flowers” Canad. J. Math, 17, 449–46, 1965

Page 339: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 323

ตารางท 13–1 ตวอยางประสทธภาพของอลกอรทมตางๆ ทไดนาเสนอปญหา เวลาการทางานของ

อลกอรทมทไดนาเสนอsearch (comparison–based) O(log n)selection (comparison–based) O(n)sorting (comparison–based) O(n log n)closest point in 2D O(n log n)fractional knapsack O(n log n)single–source shortest path O(e+vlog v)minimum spanning tree O(e log e)longest increasing subsequence O(n2)matrix multiplication O(n2.81)optimal binary search tree O(n3)all pair shortest path O(v3)sum of subset O(2n)0/1 knapsack O(2n)assignment O(n!)

หลายคนคงอยากจะแยงวาถานยามคาวา “มและไมมประสทธภาพ” เปนในลกษณะนกหมายความวาอลกอรทมทใชเวลาเปน 1000000�n100 กยอมมประสทธภาพมากกวาอลกอรทมทใชเวลาเปน 0.0000001�2n ซงไมคอยยตธรรมเทาไรนก ตองขอชแจงใหกระจางตรงนวาการใชเกณฑตรงทวาเปนพหนามหรอไมเปนตวแบงวามหรอไมมประสทธภาพนน ทาใหเราสามารถศกษาเรองของความซบซอนของปญหาเชงเวลาการทางานได โดยไมขนกบลกษณะการเขารหสขอมล หรอลกษณะของเครองคอมพวเตอรซงใชทางาน อกทงในทางปฏบตกมกไมคอยพบอลกอรทมทมลกษณะตามตวอยางขางตน เอาเปนวาเราใชความเปนพหนามนเปนเสนแบงการมประสทธภาพหรอไม ซงแนนอนวากคงตองมกรณยกเวนบาง แตกถอไดวามนอย (ตวอยางทเหนเดนชดกเหนจะเปนการแกปญหา linear programming ดวยวธ simplex ซงมเวลาการทางานในกรณเลวสดแบบเลขชกาลง ในขณะทสามารถแกไดดวยวธ ellipsoid ซงมเวลาการทางานแบบพหนาม แตวธแรกนนเรวกวาวธหลงมากๆ ในทางปฏบต)

Page 340: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

324 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

ปญหางายและยากหลงจากทไดนยามวาอะไรคออลกอรทมทมประสทธภาพและไมมประสทธภาพแลว คราวนกจะมานยามคาวาปญหางายและปญหายาก เราเรยกปญหาหนงวางาย (tractable problem) กเมอเรามอลกอรทมทมประสทธภาพซงใชแกไขปญหานได และเรยกวาปญหาหนงวายาก (intractable problem) กเมอเราพสจนไดวาตองใชอลกอรทมทไมมประสทธภาพแนๆ ในการแกปญหาน

จากนยามขางตนกยอมสรปไดวาปญหาตางๆ ยกเวนสามปญหาสดทายในตารางท 13–1 นนเปนปญหางายทงสน ทงนกเพราะวาเราไดพบอลกอรทมทมประสทธภาพซงแกปญหาเหลานไดแลว แตเรายงไมสามารถดวนสรปไดวาสามปญหาสดทายในตารางท 13–1 นนเปนปญหายาก กเพราะวาอาจมอลกอรทมอนๆ ทมประสทธภาพซงแกปญหาเหลานไดทเรายงไมรจกกได ความจรงแลวในปจจบนกยงไมมใครหาอลกอรทมทมประสทธภาพซงแกสามปญหานได เรากยงไมสามารถพดไดเตมปากวาเปนปญหายาก ทงนกเพราะวายงไมมใครพสจนไดเลยวาไมมอลกอรทมทมประสทธภาพใดๆ แกปญหาเหลานได กลมปญหาประเภทนมมาก ซงจะวาไปแลวเปนกลมปญหาหลกทเราจะไดศกษากนในบทน

แลวมปญหาอะไรบางทรวายากแนๆ หลายคนคงนกถงปญหาทผลตคาตอบซงมขนาดมโหฬารเปนฟงกชนเลขชกาลง เชนปญหาการแจกแจงทกๆ เซตยอยซงตองแจงทงสน 2n แบบ หรอปญหาการหาวธการยายจานของหอคอยฮานอย ซงตองยายจาน 2n–1 ครง เปนตน กโดยอตโนมตตองเปนปญหายากตามนยาม เพราะเวลาทจะแสดงผลลพธใหครบถวนกเปนฟงกชนเลขชกาลงอยแลว แตวาปญหายากทเขาสนใจกนในวงการจะเปนปญหาทคาตอบไมไดมขนาดใหญแบบน แตมขนาดเปนแคฟงกชนพหนามของขนาดปญหา และตองใชเวลาเปนฟงกชนเลขชกาลงเพอคดหาคาตอบ (พดงายๆ กคอคดคาตอบนานๆ ไมใชแสดงคาตอบยาวๆ) ตวอยางเชนปญหาการหาวธเดนหมากในเกมหมากรกหรอหมากฮอสเพอใหชนะ เปนตน หรอทยากขนไปอกกคอปญหาประเภททพสจนไดเลยวาไมมอลกอรทมใดๆ หาคาตอบได (เรยกวาปญหา noncomputable) เชนขอปญหาทสบของฮลแบรต (Hilbert’s tenth problem) 2 ซงตองการหาคา

2 นกคณตศาสตรชาวเยอรมนชอดาฟด ฮลแบรต (David Hilbert) ไดตงคาถามนไวในป ค.ศ. 1900 และไดรบการพสจนวาเปนปญหาแบบคานวณไมไดในป 1971 โดย Mateyasevic

Page 341: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 325

ตอบของสมการไดโอแฟนไทนใดๆ (diphantine equation) 3 ปญหาการหยด (halting problem) 4 ซงรบโปรแกรมคอมพวเตอร P และขอมลขาเขา I ของโปรแกรมน จากนนถามวาการทางานของ P เมอรบ I ไปประมวลผล ในทสดแลวจะหยดการทางานหรอไม เปนตน

ปญหาการตดสนใจเพอใหสามารถจดกลมปญหางายขน จะขอสนใจแตเฉพาะปญหาทใหคาตอบวา ใช/ไมใช ได/ไมได ม/ไมม จรง/เทจ นนคอมเพยงสองคาตอบ เราเรยกวาปญหาประเภทนวาปญหาการตดสนใจ (decision problem) จะขอเสรมดวยตวอยางดงตอไปน

ตวอยางท 13-1 Relatively Prime : กาหนดให a และ b เปนจานวนเตมบวก อยากทราบวา a และ b เฉพาะสมพทธกนหรอไม (นนคอตวหารรวมมากของ a และ b เทากบ 1 หรอไม)

ตวอยางท 13-2 Satisfiability (SAT) : กาหนดให f คอนพจนบลน (Boolean expression) ซงเขยนอยในรปแบบบรรทดฐานแบบเชอม (conjunctive normal form – CNF หรอบางทเรยกกนวาผลคณของผลบวก – product of sums) เชน )()()( 2132321 xxxxxxxf ������� อยากทราบวามวธกาหนดคาใหกบตวแปรบลนตางๆ ใน f ททาให f มคาเปนจรงไดหรอไม

สาหรบนพจนบลนในตวอยางนกเหนจะตอบวาได โดยกาหนดให x1 x2 และ x3 เปนจรงหมด

ตวอยางท 13-3 Hamiltonian Circuit (HAM) : กาหนดให G คอกราฟ อยากทราบวา G มวงจรแบบแฮมลตนหรอไม (นนคอมวงจรบน G ทผานทกๆ จดๆ ละหนงครงหรอไม)

3 ตวอยางเชนจงหาวามคาตอบจานวนเตมของตวแปร x , y และ z ในสมการ 42x2y + 34xz = 112 หรอไม ?4 นกคณตศาสตรชอ Alan Turing เปนผพสจนวา halting problem เปนปญหาแบบคานวณไมได ในปค.ศ.1937

Page 342: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

326 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

รปท 13–2 แสดงกราฟสองกราฟ โดยทกราฟทางซายมวงจรแฮมลตน และกราฟทางขวาไมม (ขอใหนกเรยนลองพสจนกนเอาเอง)

1

25

4 3

10

1

13 4

7 8 9

5

2 3

611

รปท 13–2 ตวอยางกราฟทมวงจรแฮมลตน และไมมวงจรแฮมลตน

ตวอยางท 13-4 Vertex Cover (VC) : กาหนดให G = (V, E) คอกราฟ และ k คอเลขจานวนเตมบวก อยากทราบวาม vertex cover ของ G ซงมขนาดไมเกน k หรอไม (นยามให vertex คอเซต VC � V โดยทเสนเชอมทกๆ เสนใน E มจดปลายอยางนอยหนงจดทเปนสมาชกของ VC)

พจารณากราฟดานซายในรปท 13–2 กจะม vertex cover ขนาดไมเกน 3 แตจะไมม vertex cover ขนาดไมเกน 2 (นนคอไมม 2 จดใดในกราฟทตดกบทกๆ เสนเชอม)

ตวอยางท 13-5 Subset Sum (SS) : ปญหานกคอผลรวมของเซตยอย (sum of subset) ทไดเคยนาเสนอในบททแลวนนเอง แตคราวนขอคาตอบแบบมหรอไมมเทานน นนคอกาหนดให Sเปนเซตของตวเลขจานวนเตมบวก และ k คอจานวนเตมบวกอกหนงตว อยากทราบวามเซตยอย SS � S ซงมผลรวมของตวเลขใน SS เทากบ k หรอไม

ตวอยางท 13-6 Travelling Salesperson Problem (TSP) : กาหนดให G คอกราฟ อยากทราบวามวงจรในกราฟนซงผานทกๆ จดในกราฟจดละหนงครงโดยความยาวรวมของวงจรมคาไมเกน k หรอไม

Page 343: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 327

การจดกลมปญหาทเราจะนาเสนอตอไปน เปนการจดกลมปญหาทเปนปญหาการตดสนใจทงสน ทเปนเชนนเพราะวาจะทาใหจดกลมงาย บรรยายลกษณะของปญหาในเชงภาษารปนย (formal language) ไดงาย อกทงนาไปสทฤษฎของเอนพบรบรณทเปนประเดนหลกของบทน

เนองจากเรามกพบปญหาการหาคาเหมาะทสด (optimization problem) ในทางปฏบต เรากสามารถแปลงปญหาเหลานใหอยในรปของปญหาการตดสนใจได โดยการระบขอบเขตของคาตอบ ในกรณของปญหาการคานอยทสด (minimization) เชนปญหาการหา vertex cover ขนาดเลกทสดนน แทนทจะถามวา vertex cover ขนาดเลกทสดคอเซตยอยใด กเปลยนเปนถามวาม vertex cover ขนาดไมเกน k หรอไม หรอปญหาการหาทางเดนสนทสดของพนกงานขาย กเปลยนมาถามวามทางเดนของพนกงานขายทมความยาวรวมไมเกน k หรอไม เปนตน สาหรบปญหาการคามากทสด (maximization) กเพยงแตเปลยนการระบขอบเขตบนมาเปนการระบขอบเขตลาง นนคอแทนทจะถามในลกษณะ “ไมเกน k” กมาถามในลกษณะ “ไมนอยกวา k”

กลมปญหา Pเราเรมใหนยามปญหากลมทประกอบดวยปญหางายกนกอน เรยกชอกลมนวา P

P คอกลมของปญหาการตดสนใจทสามารถหาคาตอบไดดวยอลกอรทมเชงกาหนดในเวลาแบบพหนาม (deterministic polynomial–time algorithm)

ตว P กมาจาก p ของคาวา polynomial นนเอง ตวอยางกลมปญหา P มมากมาย ขอแสดงเปนตวอยางสกจานวนหนงดงน

� กราฟ G ม spanning tree ซงมผลรวมของนาหนกเสนเชอมไมเกน k หรอไม

� กราฟ G ซงเสนเชอมตางๆ มความยาวเปนบวก จะมทางเดนจากจด s ไป t ซงมความยาวไมเกน k หรอไม

� จานวนเตมบวก a และ b เฉพาะสมพทธกนหรอไม

Page 344: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

328 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

� มวธกาหนดคาใหตวแปรบลนตางๆในนพจนบลน f ใหไดคาเปนจรงหรอไม ถา f เปนนพจนบลนในรปแบบบรรทดฐานแบบเลอก (disjuntive normal form – DNF หรอทเรยกกนวา sum of products)

� มวธใหสจดในกราฟ G ดวยสสองสหรอไม (โดยทไมมจดปลายสองจดของเสนเชอมใดในกราฟมสเดยวกน)

กลมปญหา NPมปญหาการตดสนใจอยมากมายทไมสามารถจดใหอยในกลม P ได ทงนกเพราะไมสามารถหาอลกอรทมเชงกาหนดทใหคาตอบไดในเวลาแบบพหนาม และปญหาเหลานกยงพสจนไมไดอกเชนกนวา ดวยเวลาแบบพหนามนนไมเพยงพอทจะหาคาตอบของปญหาเหลานได ในหวขอนเราจะนาเสนอกลมปญหาหนงทมชอเรยกวากลม NP (โดยท P � NP) ปญหาการตดสนใจใดๆ ทถกจดอยใน NP ไดกเมอเปนปญหาทสามารถทวนสอบความถกตองของคาตอบไดในเวลาแบบพหนาม

การทวนสอบคณลกษณะสาคญของปญหาในกลม NP คอความสามารถในการทวนสอบไดในเวลาแบบพหนาม (polynomially verifiable) กาหนดให Q เปนปญหาการตดสนใจปญหาหนง สมมตวา AQ

เปนกลองดาวเศษทอางวาใหคาตอบของปญหา Q ไดถกตองเสมอ โดย AQ นจะไมใหคาตอบวา“ใช” หรอ “ไมใช” (ตามลกษณะของคาตอบของปญหาการตดสนใจ) แตจะใหหลกฐานยนยนสาหรบกรณทตอบวา “ใช” ตวอยางเชนถาเปนปญหา SAT (ตวอยางท 13-2) หลกฐานยนยนกเปนคาของตวแปรบลนตางๆ ทอางวาจะทาใหนพจนบลนนนมคาเปนจรง หรอถาเปนปญหา TSP (ตวอยางท 13-6) หลกฐานยนยนกเปนวงจรทผานทกๆ จดๆ ละครงในกราฟซงอางวามความยาวของเสนเชอมรวมแลวไมเกน k เปนตน เนองจาก Ax เปนกลองดา เราไมรเนอใน เรากควรทวนสอบหลกฐานยนยนท Ax ใหมาวาจะเปนกรณของคาตอบ “ใช” หรอไม ตวอยางเชนสาหรบปญหา SAT กเพยงนาคาของตวแปรบลนตางๆ จากหลกฐานท Ax ใหมาแทนในนพจนบลนของตวอยางปญหา จากนนหาคาของนพจนบลนนนวาเปน “จรง” หรอไม ซงใชเวลาในการ

Page 345: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 329

ทวนสอบแปรตามจานวนตวแปรและขนาดของนพจน สาหรบปญหา TSP กเพยงนาความยาวของเสนเชอมตางๆ ในวงจรทไดรบจากหลกฐานมารวมกนแลวดวามคาไมเกน k หรอไม ซงใชเวลาในการทวนสอบแปรตามจานวนเสนเชอมของวงจร เปนตน ถายอนกลบไปดปญหาการตดสนใจตางๆ ทไดนาเสนอมาในตวอยางท 13-1 ถงตวอยางท 13-6 ลวนแลวแตสามารถทวนสอบไดในเวลาแบบพหนามทงสน การทวนสอบไดอยางมประสทธภาพนเองเปนทมาของกลมปญหา NP

NP คอกลมของปญหาการตดสนใจทสามารถทวนสอบไดในเวลาแบบพหนาม

ความแตกตางของ P และ NP จงอยทวาปญหาใน P นนเราตองแกไดรวดเรวในขณะทปญหาใน NP นนตองทวนสอบไดรวดเรว จงเหนไดชดวา P กตองจดอยใน NP ดวยนนคอ P � NP ทงนเพราะวาเราสามารถนาอลกอรทมทมประสทธภาพในการหาคาตอบของปญหา มาเปนตวทวนสอบทไดรบซงกยอมกระทาไดในเวลาแบบพหนามเชนกน

อลกอรทมเชงไมกาหนดเราอาจมองความแตกตางของ P และ NP ตามประเภทของอลกอรทมทใชในการหาคาตอบ นนคอปญหาใน P นนแกไดเรวดวยอลกอรทมเชงกาหนด ในขณะทปญหาใน NP นนกสามารถแกไดเรวเชนกนแตตองอาศยอลกอรทมเชงไมกาหนด จงเปนทมาของนยามในอกแบบคอ

NP คอกลมของปญหาการตดสนใจทสามารถหาคาตอบไดดวยอลกอรทมเชงไมกาหนดในเวลาแบบพหนาม (non–deterministic polynomial–time algorithm)

(ซงเปนทมาของคาวา NP) คาถามทตามมากคอ อลกอรทมเชงไมกาหนดเปนอยางไร ? กอนอนตองขอเนนวาอลกอรทมเชงไมกาหนดทจะนาเสนอตอไปนนนเปนสงทเขยนได แตเขยนขนแลวกไมมเครองคอมพวเตอรใดในโลกทางานใหได เราอาศยรปแบบนามธรรมของอลกอรทมประเภทนเพอจดประสงคในการจดกลมปญหา สงทแปลกประหลาดเกยวกบอลกอรทมเชงไมกาหนดคอฟงกชนมหศจรรยทเรยกวา nd_choice (nd ยอมาจาก non–deterministic) ซงใชเวลาการทางานเปน O(1) ลองมาดตวอยางรหสเทยมตอไปน

Page 346: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

330 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

01: nd_search( A[1..n], x )02: {03: i = nd_choice( 1, n )04: if( A[i] == x ) return YES05: else return NO06: }

nd_search ทาหนาทตรวจสอบวามขอมล x อยในแถวลาดบ A หรอไม สงททากคอเรยกใชฟงกชน nd_choice เพอเลอกมาหนงตาแหนงในแถวลาดบ (เปนจานวนเตมตงแต 1 ถง n) ในบรรทดท 3 จากนนนาตาแหนงทเลอกมานทวนสอบวามคาเทากบ x ทตองการหาหรอไม ถาเทากนกคน YES ถาไมเทากคน NO ซงระบผลของการทวนสอบ

เราสามารถตความการทางานของอลกอรทมเชงไมกาหนด nd_search ไดสองลกษณะคอ

� เรามฟงกชนมหศจรรย nd_choice ซงมความสามารถทจะคนหลกฐานทยนยนไดวามคาตอบ "ใช" ของตวอยางปญหาทไดรบเสมอ เมอมคาตอบ "ใช" จรงๆ ตรงนเปรยบnd_choice เสมอนกลองดาวเศษทไดเกรนไวในหวขอทแลว ดงนนเราจงตองมการทวนสอบหลกฐานทไดรบจาก nd_choice เพอยนยนวาเปนคาตอบ "ใช" หรอไม (ทงนเพราะวาถากรณทตวอยางปญหาทไดรบนนไมมหลกฐานยนยนกรณ "ใช" กยอมคนหลกฐานทผดกลบมา)

� หรอเราจะมองวาเมอใดทมการเรยก nd_choice หนงครงจะเกดการสรางสวนประมวลผลขนมาเปนจานวนเทากบจานวนกรณผลลพธทเปนไปไดของ nd_choice ซงตางกทาคาสงถดไปตอในฟงกชน nd_search โดยจะตางกตรงทผลลพธทคนจาก nd_choiceนนตางกนหมด อลกอรทมเชงไมกาหนดจะคนคา "ใช" กตอเมอมอยางนอยหนงสวนประมวลผลทคนคา "ใช"

ถาเราตความแบบแรก กดจะมหศจรรยเกนไปทจะมฟงกชนทคนหลกฐาน "ใช" ไดเสมอในเวลาคงตว หรอถาตความแบบทสองกคงจะลาบากเชนเดยวกนทการสรางสวนประมวลผลเพอทางานในทกๆ กรณทเปนไปไดพรอมๆ กน (ถงแมจะใชระบบคอมพวเตอรทมหลายหนวยประมวลผลกทาไมไดอยด เพราะหนวยประมวลผลในระบบมจานวนจากด แตสวนประมวลผลทถกสรางขนในลกษณะทสองนนมจานวนเทาใดกไดตามจานวนกรณทเปนไปได) จงขอเนนยาตรงนอกครงหนงวา เราคงไมสามารถใชงานอลกอรทมเชงไมกาหนดทเขยนมาไดจรง แตการจดกลม NP ใหประกอบดวยปญหาการตดสนใจทเราหาคาตอบไดดวยอลกอรทมเชงไม

Page 347: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 331

กาหนดในเวลาแบบพหนามนน จะนาไปสการจดหมวดหมปญหา NP บรบรณทจะศกษากนตอไป

การลดรปปญหากอนทจะเขาสเนอหาของ NP บรบรณนน จะตองทาความเขาใจกบแนวคดในการลดรปปญหา (reduction) กนกอน กาหนดให Q1 และ Q2 เปนปญหาการตดสนใจสองปญหา ถาเราสามารถลดรปปญหา Q1 ไปเปนปญหา Q2 กแสดงวาเราสามารถเปลยนตวอยางปญหาใดๆ ของ Q1 ไปเปนตวอยางปญหาของ Q2 ได จากนนใชอลกอรทมทแกปญหา Q2 หาคาตอบ กจะเปนคาตอบของตวอยางปญหาของ Q1 นน (ดรปท 13–3)

วธแปลง instance ของ Q1 ไปเปน instance ของ Q2

อลกอรทมซงแกปญหา Q2

instance ของ Q1

instance ของ Q2

คาตอบของ instance ของ Q2

คาตอบของ instance ของ Q1รปท 13–3 การลดรปปญหาการตดสนใจจาก Q1 ไปเปน Q2

การลดรปปญหานนจะวาไปแลวเปนกลวธหนงในการแกไขปญหาแบบหนง สมมตวาเราตองการแกปญหา Q1 สงหนงทนกออกแบบอลกอรทมตองคดถงกคอ Q1 เปนปญหาทเรารสกวาคลายๆ กบปญหา Q2 อนทเราเคยรจกวธแกไขหรอไม ถารสกวาคลาย เราจะมวธตความปญหา Q1 ใหไปอยในรปแบบของปญหา Q2 ทเรารวธแกไขนนไดอยางไร

Page 348: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

332 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

แตในทนเราจะอาศยการลดรปปญหา เปนเครองมอในการเปรยบเทยบความยากงายของปญหาการตดสนใจ กาหนดใหเราสามารถลดรปปญหา Q1 ไปเปน Q2 ไดโดยใชเวลา t(n) ในการแปลงตวอยางปญหา และอลกอรทมในการแกปญหา Q2 ใชเวลาเปน f(n) ยอมแสดงใหเหนวาอลกอรทมในการแกปญหา Q1 ทไดจากการลดรปปญหานกยอมใชเวลาเปน t(n) + f(n) เนองจากเรากาลงสนใจจาแนกปญหาวาเปนแบบงายหรอแบบยาก ดงนนจงสนใจเฉพาะการลดรปทใชเวลาแบบพหนามเทานนในการแปลงตวอยางปญหา นนคอ t(n) = O(nk) ทงนกเพราะวาผลของ t(n)+f(n) จะเปนฟงกชนแบบพหนามหรอไม จะไดขนกบ f(n) เพยงอยางเดยว เราเรยกการลดรปทมคณสมบตนวาการลดรปแบบพหนาม (polynomial reduction) และเขยน “Q1 �P Q2” เมอปญหา Q1 ลดรปแบบพหนามไปเปนปญหา Q2 ได

ขอสรปอกครงวาเราไดอลกอรทมในการแกปญหา Q1 ทไดจากการลดรปปญหาไปเปน Q2 ซงใชเวลาเปน t(n) + f(n) เนองจากอาจมอลกอรทมอนทแกปญหา Q1 ในเวลาทนอยกวากเปนไปได ดงนนเราสรปไดวา “Q1 ไมยากกวา Q2” หรอพดในอกมมหนงคอ “Q2 ไมงายกวา Q1” ดงนนจงมกใชสญลกษณ � ระบความสามารถในการลดรปปญหา การลดรปปญหาจงนาไปสการกาหนดความยากงายเชงสมพทธของปญหา ลองมาดตวอยางตอไปน

ตวอยางท 13-7 Cyclic String Matching (CSM) : กาหนดให A = a1a2...an และ B = b1b2...bn เปนสตรงความยาว n ปญหาทเราสนใจในทนคออยากทราบวาเราสามารถหมน A เพอใหได B หรอไม เชน “MCHAISO” ไดมาจากการหมน “SOMCHAI” ไปทางขวา 4 ครง

แทนทเราจะออกแบบอลกอรทมเพอแกปญหา CSM เราอาจหาวธเปลยนปญหานไปเปนปญหาทเรารจก จากการสงเกตวาถาเราหมน A แลวได B แสดงวา B ตองเปนสตรงยอยของสตรงทสรางมาจากการนา A ตอกบ A เชน “MCHAISO” เปนสตรงยอยของ “SOMCHAISOMCHAI” ดงนนเราจะลดรปปญหา CSM ไปเปนปญหา SM โดยปญหา SM กคอปญหาการจบคสตรง ซงหาวาสตรง Y ปรากฎเปนสตรงยอยใดใน X สมมตวา stringMatch(X,Y) คออลกอรทมหนงทเรารจกมากอนสาหรบปญหา SM เราสามารถสรางอลกอรทมเพอแกปญหา CSM ไดดงน

01: CyclicStringMatch( A, B )02: {03: X = concat(A,A)04: if ( stringMatch(X,B) == NOTFOUND ) return FALSE05: return TRUE;06: }

สรปไดวา CSM �P SM นนคอ SM ไมงายกวา CSM

Page 349: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 333

ตวอยางท 13-8 การลดรปปญหาการยกกาลงสองไปเปนปญหาการคณ : กาหนดใหเรารวธการคณจานวนสองจานวน multiply(x,y) อยากทราบวธการยกกาลงสอง a2

เราสามารถหาวธการยกกาลงสองไดโดยอาศยวธการคณจากสตร a2 = a�a ดงนนกสามารถใช multiply(x,y) เพอยกกาลงสองไดโดยตงคาของทง x และ y ใหเทากบ a กเปนอนเสรจสน เขยนเปนรหสเทยมไดดงน

01: NewSquare( a )02: {03: return multiply( a, a )04: }

สรปไดวาการคณไมงายกวาการยกกาลงสอง

ตวอยางท 13-9 การลดรปปญหาการคณไปเปนปญหาการยกกาลงสอง : กาหนดใหเรารวธการยกกาลงสอง x2

square(x) แตไมรวธการคณ อยากทราบวธการคณจานวนสองจานวน a�b โดยอาศยวธการยกกาลงสอง

โดยการใชสตร a�b = (a + b)2 – (a – b)2

4 กสามารถใช square(x) เพอการคณดงน01: NewMultiply( a, b )02: {03: return (square(a+b)–square(a–b)) / 404: }

สรปไดวาการยกกาลงสองไมงายกวาการคณ และเนองจากการคณกไมงายกวาการยกกาลงสอง (จากผลของตวอยางทแลว) จงสรปวาสองปญหานมความยากงายเทากน (คาวา “ยากงายเทากน” ในทนหมายความวา ถาปญหาหนงยากอกปญหากยาก ถาปญหาหนงงายอกปญหากงายเหมอนกน)

ตวอยางท 13-10 การลดรปปญหา vertex cover (VC) ไปเปนปญหาเซตอสระ (IS – independent set) : กาหนดให G = (V,E) เปนกราฟๆ หนง vertex cover ของ G คอเซตยอย VC � V ทเสนเชอมทกเสนใน Eมจดปลายอยางนอยหนงจดอยใน VC สวนเซตอสระของ G คอเซตยอย VI � V ทไมมเสนเชอมใดใน E ซงตอระหวางจดใดๆ ใน VI พจารณากราฟตวอยางในรปท 13–4 จะไดวา {1,4}

Page 350: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

334 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

{2,3,5} {1,2} เปนตวอยางของ vertex cover ในขณะท {1,3} ไมใชจดปก และ {2, 5} {2,3,5} {1,4} เปนตวอยางของเซตอสระ แต {2,3,4} ไมใชเซตอสระ เปนตน

1

25

4 3

รปท 13–4 กราฟตวอยาง

จากนยามขางตน จะไดวา VC = V – VI เพราะวาไมมเสนเชอมใดๆ ในกราฟตอกบจดตางๆใน VI

เสนเชอมทกๆ เสนของกราฟกยอมตองตอกบ V – VI จากคณสมบตขอนชใหเหนวาเราสามารถหา vertex ไดจากเซตอสระ

กาหนดให VC คอปญหาตดสนใจทหาวาม vertex cover ของกราฟทมขนาดไมเกน k หรอไม ในขณะท IS คอปญหาการตดสนใจทหาวามเซตอสระของกราฟทมขนาดไมนอยกวา k หรอไม ดงนนถากราฟ G = (V, E) มเซตอสระขนาด k กราฟนยอมม vertex cover ขนาด |V| – k จงนาไปสอลกอรทมของปญหา VC ซงหาไดจากอลกอรทมของปญหา IS ดงแสดงดวยรหสเทยมขางลางน

01: VertexCover( G=(V,E), k )02: {03: return IndependentSet( G, |V|–k )04: }

สรปไดวา VC �P IS นนคอ IS ไมงายกวา VC

กลมปญหา NP บรบรณจากทไดจดกลมปญหาการตดสนใจเปนกลม P และ NP โดยทรวา P � NP ปญหาตางๆ ใน P นนเปนปญหางายทงสน เพราะมอลกอรทมทหาคาตอบไดอยางมประสทธภาพ ในขณะทความยากงายของปญหาในกลม NP นนยงไมคอยเดนชดนก คอเปนปญหาทเพยงแตทวนสอบหลกฐานไดอยางมประสทธภาพ มปญหาตางๆ มากมายใน NP ซงยงไมมใครหาอลกอรทมทมประ

Page 351: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 335

สทธภาพไดอาทเชน TSP, VC, IS, SAT เปนตน ในป ค.ศ. 1971 คก (Cook) 5 6 ไดแสดงใหเหนวา ปญหา SAT เปนปญหาทยากทสดใน NP โดยการพสจนวาทกๆ ปญหาใน NP นนสามารถลดรปแบบพหนามไปเปน SAT ไดหมด (จะขอไมแสดงวธพสจน เนองจากยดยาวเกนไป) และในปค.ศ. 1972 คารป (Karp) 7 ไดอาศยกลวธการลดรปเพอแสดงใหเหนวามปญหาอนๆ อกมากมายในหลากหลายรปแบบทมความยากงายเทยบเทา SAT และนเองคอกลมปญหาทมชอเรยกวา NP บรบรณ (NP–complete เขยนยอวา NPC) ซงกคอกลมของปญหาทยากทสดใน NP และหมายความดวยวาเปนกลมของปญหาทมความยากงายทดเทยมกนหมด (อนเปนทมาของคาวา “บรบรณ” ดงนนหากใครพบอลกอรทมทมประสทธภาพทแกเพยงหนงปญหาใน NP บรบรณ กยอมหมายความวาทกๆ ปญหาใน NPC เปนปญหางายทงสน (นนคอพสจนไดวา P=NP) หรอในทางกลบกน ถามใครสามารถพสจนเพยงหนงปญหาใดใน NP บรบรณวาเปนปญหายาก กสรปไดวาทกๆ ปญหาในกลมนเปนปญหายากทงสน (นนคอพสจนไดวา P � NP หรออกนยหนง P � NP) 8 ปญหาทจดอยในกลม NPC มมากมายเปนพนปญหา และเปนปญหาทพบในทางปฏบตทงสน 9 จงเปนกลมปญหาทไดรบความสนใจเปนอยางยง ตองขอเนนวาในปจจบนนกวจยในวงการตาง "รสก" วา NPC เปนปญหายาก เพราะหาอลกอรทมทมประสทธภาพไมไดกนเลย แตกยงพสจนไมไดวาเปนปญหายากจรง จงคาดเดากนวาแผนผงการจาแนกปญหาในกลม NP นาจะเปนดงรปท 13–5

5 S.A. Cook, “The complexity of theorem–proving procedure”, Proceedings of the 3rd Annual ACM Symo.

on Theory of Computing, pp. 151–158, 1971.6 ในปเดยวกนนกวจยชาวรสเซยชอ Levin กไดนาเสนอปญหาทยากทสดใน NP เชนกน แตเปนปญหาทเกยวกบการปแผน domino ใหตอกนบนระนาบ

7 R. Karp, “Reducibility among combinatorial problems”, Complexity of Computer Computations, pp. 85–104, 1972

8 Clay Mathmatics Institute ไดเสนอเงนรางวลหนงลานเหรยญดอลลารสหรฐ สาหรบบคคลแรกทพสจนไดวา P = NP หรอวา P � NP (ดรายละเอยดไดท http://www.claymath.org)

9 ผทสนใจศกษาตวอยางปญหา NPC สามารถหาอานไดจากหนงสอ "Computers and Intractability" โดยM.R. Garey และ D. S. Johnson ซงถอกนวาเปน "ตานาน” ทางดาน NPC

Page 352: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

336 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

NPC

P

NP

รปท 13–5 การจาแนกปญหาในกลม NP (สมมตวา P � NP)

จากแนวคดของการลดรปและการจดกลมขางตน จงเปนทมาของกลมปญหา NP–hard และ NPC ซงนยามไดดงน

Q เปนปญหา NP–hard ถาทกๆ ปญหาใน NP สามารถลดรปแบบพหนามไปเปน Q ได

NPC คอกลมของปญหาการตดสนใจทเปน NP–hard และอยในกลม NP

ขอเนนตรงนวาปญหา NP–hard ไมจาเปนตองเปนปญหาการตดสนใจ และกไมจาเปนตองอยใน NP จากนยามบอกวาปญหา NP–hard ไมงายกวาทกๆ ปญหาใน NP

การพสจนวาปญหา Q อยใน NPC หรอไมนน กตองพสจนวา Q � NP และ Q เปน NP–hard การพสจนประเดนแรกนนไมคอยยาก เพยงแสดงใหเหนวาเราสามารถทวนสอบหลกฐานเพอยนยนคาตอบใชของ Q ไดในเวลาแบบพหนาม กเปนอนเสรจ แตการพสจนในประเดนหลงนน กคงจะยงยากมากทจะมาแสดงใหเหนจรงวาทกๆ ปญหาใน NP ลดรปแบบพหนามไปเปน Q ได แตโชคดทวาเรามปญหาอนๆ ทเรารวาอยใน NPC แลว (อยางนอยกปญหา SAT ทคณคกไดพสจนไว ซงถอไดวาเปนปญหาแรกทพบในกลม NPC) กเลอกมาสกหนงปญหาแลวพยายามแสดงวาสามารถลดรปแบบพหนามไปเปน Q ได กเปนอนเสรจสน เพราะนนเปนการแสดงวา Q นนไมงายกวาปญหาหนงใน NPC กยอมแสดงวา Q ไมงายกวาทกๆ ปญหาใน NP แตเนองจาก Q อยใน NP กแสดงวา Q มความยากงายทดเทยมกบปญหาอนใน NPC จงเปนสมาชกของ NPC ดวย

แตกมอยหลายปญหาซงพสจนไดวาอยใน NP แตพสจนไมไดวาเปน P หรอ NPC กนแน ตวอยางของปญหาประเภทนไดแกปญหาการทดสอบวากราฟสองกราฟสมสณฐานกนหรอไม (graph isomorphism) และปญหาการทดสอบวาจานวนเตมทกาหนดใหเปนจานวนประกอบหรอไม จะเหนไดวาเราสามารถหาวธทวนสอบสองปญหานไดไมยาก แตยงไมมใครแสดงได

Page 353: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 337

วาเปน NPC ปญหากาหนดการเชงเสน (linear programming) กเคยมลกษณะเชนน จนกระทงในป ค.ศ. 1979 จงมผคนพบอลกอรทมทใชเวลาแบบพหนามสาหรบปญหานได (แสดงวามนเปนปญหาใน P )

จะขอแสดงใหเหนการพสจนความเปน NP บรบรณของปญหาจานวนหนงดวยตวอยางตอไปน ลาดบการลดรปปญหาแสดงไดดงรปท 13–6 ลกศรแสดงทศทางการลดรปนนคอจะแสดงใหเหนวา SAT �P CLIQUE �P VC �P SS และ SAT �P 3SAT โดยใชปญหา SAT เปนจดเรมตนในการพสจนปญหาอนๆ วาเปน NPC เมอเรารแลววาปญหาใดเปน NPC กสามารถนาปญหานนไปลดรปสปญหาอน เพอแสดงใหเหนวาปญหาอนนนเปน NPC ไดดวย 10

SAT

CLIQUE

VERTEX-COVER

SUBSET-SUM

3SAT

รปท 13–6 ตวอยางลาดบการลดรปปญหา

ตวอยางท 13-11 CLIQUE เปนปญหา NPC : กาหนดให G = (V, E) คอกราฟไมระบทศทาง และ k คอจานวนเตม ปญหา CLIQUE ถามวา G มคลก (clique) ขนาดอยางนอย k หรอไม (คลกคอกราฟยอยทเปนกราฟบรบรณ (complete graph) ขนาดของคลกคอจานวนจดของคลก) เชนกราฟในรปท 13–7 มคลกขนาด 5 คอกราฟยอยทประกอบดวยจด 1 2 3 4 และ 5

10 แมกระทงปญหา Minesweeper Consistency ซงเปนปญหาการตดสนใจของเกม Minesweeper ทมใหเลนกนในเครองคอมพวเตอรทวไป กเปน NPC เชนกนโดยการแสดงใหเหนจรงวา SAT สามารถลดรปไปเปนปญหานได (“Minesweeper is NP–complete”, Mathematical Intelligencer, vol.22 no. 4, 2000, pp 9–15.)

Page 354: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

338 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

2 4

613 5

รปท 13–7 กราฟตวอยางมคลกขนาด 5

เราจะพสจนวา CLIQUE เปนปญหา NPC โดยพสจนวา CLIQUE � NP และ SAT �P CLIQUE

CLIQUE � NP : เราสามารถทวนสอบหลกฐานไดไมยาก โดยเพยงแตตรวจสอบวาเซตยอยของจดในกราฟ (ซงเปนหลกฐานในการทวนสอบ) นนมจานวนจดไมนอยกวา k จด และมเสนเชอมตอกนระหวางทกๆ คจดในเซตยอยน ซงภาระตรงนใชเวลา O( |V|2 ) เปนเวลาแบบพหนาม แสดงวา CLIQUE อยใน NP

SAT �P CLIQUE : ประเดนนยงเลกนอย คอเราตองแสดงใหเหนจรงวาสามารถเปลยนนพจนบลนในรปแบบ CNF ใดๆ ไปเปนกราฟและจานวน k (ซงเปนขอกาหนดของ CLIQUE) ใหได โดยคาตอบของตวอยางปญหาทแปลงแลว จะตองเปนคาตอบเดยวกบความเปนไปไดในการทาใหนพจนบลนทไดรบมคาเปนจรง

กาหนดให E = E1� E2 ����� Em เปนนพจนบลนใด ทม Ei เปนนพจนยอยในรปแบบการ or ตวแปรบลนตางๆ เราจะสรางกราฟทมจดตางๆ วางเรยงเปนแถวๆ แนวตงเปนจานวน m แถว นนคอหนงแถวสาหรบแตละ Ei โดยแถวแนวตงท i จะมจดเทากบจานวนตวแปรทปรากฎใน Ei จากนนกาหนดการใหมเสนเชอมระหวางจดในกราฟดงนคอ

� ไมมเสนเชอมตอระหวางจดตางๆในแถวแนวตงเดยวกน

� มเสนเชอมตอระหวางทกๆ คจดทอยคนละแนวแถวตง ยกเวนเสยแตกรณของคจดซงมาจากตวแปรบลนในรปแบบทเปนสวนเตมเตมกนและกน

จะไดวากราฟทสรางไดมคลกขนาด m กตอเมอเรามวธกาหนดตวแปรในนพจนใหมคาเปนจรงได มาดกนสกหนงตวอยางกอนจะแสดงใหเหนวาขอความขางตนเปนจรง รปท 13–8 แสดงกราฟทสรางไดจากนพจน f = ( x � y � z– ) � (y– � z ) � (x– � y )

จะเหนวากราฟนมคลกขนาด 3 อยหลายชด เชน x (แถวซาย) z (แถวกลาง) และ y (แถวขวา) สงผลใหทราบวาถาให x ในวงเลบแรก z ในวงเลบกลาง และ y ในวงเลบทายของนพจนเปนจรง กจะทาใหนพจนนเปนจรง

Page 355: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 339

y– x–

z–

x

y

z y

รปท 13–8 กราฟซงไดจากการแปลงนพจน ( x � y � z– ) � (y– � z ) � (x– � y )

จากตวอยางขางตนสรปไดวา ถากราฟนมคลกขนาด m คลกนตองประกอบดวยจดตางๆ จากแถวแนวตงทกๆ แถวๆ ละจด เพราะวาไมมเสนเชอมตอระหวางจดในแถวแนวตวเดยวกน ดงนนถากาหนดคาจรงใหกบตวแปรในนพจนทคล องลองกบจดของคลก จะไดวาแตละวงเลบของนพจนมอยางนอยหนงตวแปรทมคาเปนจรง และเนองจากไมมตวแปรใดทไดคาจรงทงในรปแบบปกตและรปแบบเตมเตม (เพราะไมมเสนเชอมตอระหวางจดทแทนรปแบบทงสองตามขอกาหนดของการแปลง) ดงนนทกๆ วงเลบของนพจนมคาเปนจรงหมด ทาใหคาของนพจนเปนจรงดวย

และในทางกลบกนถาเรามวธกาหนดคาตวแปรในพนพจนบลนเปนจรงได กยอมแสดงวาแตละวงเลบในนพจนยอมตองมตวแปรทถกกาหนดคาจรงไดโดยไมขดกน (หมายความวาตองไมมตวแปรใดทไดคาจรงทงในรปแบบปกตและรปแบบเตมเตม) จะไดวาจดตางๆ ทแทนตวแปรทมคาจรงเหลานจานวน m จดในกราฟยอมประกอบกนเปนคลกขนาด m ทงนเพราะวามจดตางๆ เหลานตองมเสนเชอมตอระหวางกนและกนแนๆ (เพราะไมมคจดใดทแทนตวแปรทเปนสวนเตมเตมของกนและกน) สรปไดวา SAT �P CLIQUE

เมอแสดงใหเหนวา CLIQUE � NP และ SAT �P CLIQUE โดยททราบแลววา SAT เปน NPC ดงนนสรปไดวา CLIQUE เปนปญหา NPC ดวย �

ตวอยางท 13-12 VC เปนปญหา NPC : VC (ตามทไดนยามไวในตวอยางท 13-10) ถามวาม vertex cover ของกราฟ G=(V, E) ขนาดไมเกน k หรอไม

เราจะพสจนวา VC เปนปญหา NPC โดยพสจนวา VC � NP และ CLIQUE �P VC (เนองจากเราทราบแลววา CLIQUE เปน NPC ในตวอยางท 13-11)

Page 356: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

340 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

VC � NP : เราสามารถทวนสอบหลกฐานไดไมยาก เพยงแตตรวจสอบหลกฐานซงเปนเซตยอยของจด (VC � V)ใน G วาเสนเชอมทกๆ เสนของกราฟตอกบจดๆ หนงใน VC และ |VC| � k ขนตอนการทวนสอบนใชเวลา O( |E| )

CLIQUE �P VC : ขนตอนนจะแสดงใหเหนวา CLIQUE (ซงรแลววาเปน NPC) สามารถลดรปแบบพหนามไปเปน VC ได สาหรบ CLIQUE นนเราตองการทราบวามคลกขนาดไมนอยกวา kในกราฟ G=(V, E) หรอไม เราสามารถสรางกราฟใหม G � ซงเปนสวนเตมเตมของ G นนคอ G �

= (V, E � ) โดยท E � = { (i, j) | (i, j) E } จากนนถามวาม vertex cover ขนาดไมเกน |V|–k หรอไม (ดตวอยางในรปท 13–9) ทเปนเชนนกเพราะวา ถา C = (U, EU) คอคลกหนงใน G เซตของจด V–U ยอมตดกบเสนเชอมทกเสนของ G

� เพราะวาไมมเสนเชอมตอระหวางจดใดๆ ใน U

ของ G � ดงนน V–U จงเปน vertex cover ของ G �

และในทางกลบกน ถา VC คอ vertex cover ของ G �

เสนเชอมทกเสนของ G �

ยอมตดกบจดตางๆใน VC แสดงวาตองไมมเสนเชอมระหวางจดในเซต V – VC ของ G

� กหมายความวา

สาหรบ G แลว V – VC ตองประกอบกนเปนคลกแนนอน สรปไดวา CLIQUE �P VC2 4

613 5

มคลกขนาดไมนอยกวา 4 หรอไม ?

2 4

613 5

ม vertex cover ขนาดไมเกน 2 หรอไม ?รปท 13–9 ตวอยางการลดรปปญหา CLIQUE ไปเปน VC

เมอแสดงใหเหนวา VC � NP และ CLIQUE �P VC โดยททราบแลววา CLIQUE เปน NPC ดงนนสรปไดวา VC เปนปญหา NPC ดวย �

ตวอยางท 13-13 SS เปนปญหา NPC : SS (ตามทไดนยามไวในตวอยางท 13-5) ถามวามเซตยอย SS � S ซงมผลรวมของตวเลขใน SS เทากบ t หรอไม โดยท S คอเซตของจานวนเตม และ t คอจานวนเตม

เราจะพสจนวา SS เปนปญหา NPC โดยพสจนวา SS � NP และ VC �P SS (เนองจากเราทราบแลววา VC เปน NPC ในตวอยางท 13-12)

Page 357: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 341

SS � NP : เราสามารถทวนสอบหลกฐานซงเปนเซตยอย SS � S ไดไมยาก เพยงแตตรวจสอบวา �

� SSxx มคาเทากบ t หรอไม ขนตอนการทวนสอบนใชเวลา O( |S| )

VC �P SS : ขนตอนนจะยงยากเลกนอย โดยมจดประสงคเพอแสดงใหเหนวา VC (ซงรแลววาเปน NPC) สามารถลดรปแบบพหนามไปเปน SS ได จะขอแทนกราฟ G=(V, E) ดวยเมทรกซอบตการณ (incidence matrix) B ซงมขนาด |V| |E| โดยท bij มคาเปน 1 ถามจด vi ตอกบเสนเชอม ej มฉะนนกมคาเปน 0 รปท 13–10 แสดงตวอยางกราฟและเมทรกซอบตการณ

e1 e2 e3 e4v1 0 1 1 1v2 1 0 1 0v3 0 1 0 0v4 1 0 0 0

v1

v2v5

v4 v3

e4 e3

e2

e1

v5 0 0 0 1

รปท 13–10 กราฟและเมทรกซอบตการณ

เราจะลดรปปญหา VC ซงรบกราฟ G=(V, E) และจานวนเตม k ไปเปนปญหา SS ซงรบเซต Sของจานวนเตม และจานวนเตม t จะขออธบายกระบวนการลดรปนดวยตวอยางดงน (ดรปท 13–11 ประกอบดวย) กาหนดให VC รบกราฟในรปท 13–10 และ k = 31. เขยนตารางใหมขนมาหนงตาราง โดยใชเมทรกซอบตการณของ G เปนจดเรมตน

(แสดงดวยกรอบสเหลยมในรปท 13–11)2. เพมสดมภทางซายทมคา 1 เปนจานวนเทากบจานวนจดในกราฟ3. เพมแถวอกเปนจานวนเทากบจานวนเสนเชอม โดยมคา 1 เฉพาะชองตามแนวทแยงมมจากขวาลงมาซาย

4. มองเลขทปรากฎในแตละแถวใหเปนเลขฐานสบ (ไดเปนจานวนในสดมภขวาสด) จะไดเปนเซต S = {s1, s2, ..., sn} โดยท n = |S| = |V| + |E|

5. ให t ของปญหา SS มคาเทากบ (k22...2)10 โดยเลข 2 มเปนจานวนเทากบจานวนเสนเชอม

Page 358: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

342 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

e1 e2 e3 e4s1 = 1 1 1 1 0 11110s2 = 1 0 1 0 1 10101s3 = 1 0 0 1 0 10010s4 = 1 0 0 0 1 10001s5 = 1 1 0 0 0 11000s6 = 0 0 0 0 1 1s7 = 0 0 0 1 0 10s8 = 0 0 1 0 0 100s9 = 0 1 0 0 0 1000t = 3 2 2 2 2 32222

รปท 13–11 “มเซตยอยของ S = {s1, s2, ...,s8} ทมผลรวมเทากบ t หรอไม ?”

จากผลทไดในรปท 13–11 จะไดขอมลขาเขาของปญหา SS เปน S = {11110, 10101, 10010, 10001, 11000, 1, 10, 100, 1000} และ t = 32222 ซงมคาตอบวา “ม” เพราะ 11110 + 10101 + 10010 + 1 + 1000 = 32222 (ใหสงเกตวา 11110 10101 และ 10010 นนไดมาจากจด v1 v2 และ v3 ของกราฟในรปท 13–10 ซงกคอ vertex cover หนงของกราฟนทมขนาด 3 จดนนเอง)

ขอใหนกเรยนพสจนตอวากราฟ G ทนาไปแปลงม vertex cover ขนาดเทากบ k กตอเมอ S ซงเปนเซตของจานวนทไดจากการแปลงดวยขนตอนขางตนนมเซตยอยทมผลรวมเทากบ t

เมอแสดงใหเหนวา SS � NP และ VC �P SS โดยททราบแลววา VC เปน NPC ดงนนสรปไดวา SS เปนปญหา NPC ดวย �

ตวอยางท 13-14 3SAT เปนปญหา NPC : 3SAT เปนกรณเฉพาะของ SAT เมอแตละวงเลบของนพจนบลนมตวแปร 3 ตว 11

กอนอนอยากบอกใหรกอนวา 1SAT � P และ 2SAT � P (หวงวานกเรยนคงออกแบบอลกอรทมทมประสทธภาพเพอแกปญหา 1SAT ไดในอดใจ แตสาหรบ 2SAT อาจตองคดหนกหนอย) แตพอเปน 3SAT ปญหากลบเปลยนเปน NPC เราจะพสจนวา 3SAT เปนปญหา NPC โดยพสจนวา 3SAT � NP และ SAT �P 3SAT (เนองจากคกไดพสจนแลววา SAT เปน NPC)

3SAT � NP : เราสามารถทวนสอบหลกฐานซงเปนคาของตวแปรตางๆ ในนพจนได โดยเพยงแทนคาแลวหาคาของนพจนวาเปนจรงหรอไม กไดคาตอบ ซงใชเวลาการทวนสอบแปรตามขนาดของนพจน 11 บางคนเรยกปญหานวา 3CNF (CNF มาจาก conjuctive normal form ของนพจนบลนทรบเปนขอมลขาเขา)

Page 359: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 343

SAT �P 3SAT : ขนตอนนจะยงยากเลกนอย แตจะแสดงใหเหนวา 3SAT ซงแตละวงเลบในนพจนมจานวนตวแปร 3 ตว ซงเมอเทยบกบของ SAT จะมกตวกไดนน แทจรงแลวไมงายไปกวา SAT เลย กาหนดให E คอนพจนบลนของ SAT การแปลงนพจนบลนของ SAT ไปเปนนพจนของ 3SAT จะแปลงทละวงเลบของ E โดยวธการแปลงจะขนกบจานวนตวแปรในวงเลบ ซงสามารถจาแนกไดเปนสลกษณะดงน1. กรณทมตวแปร 3 ตวในวงเลบ : กรณนงายสดไมตองทาอะไร ยกวงเลบนไปใชเลย2. กรณทมตวแปร 2 ตวในวงเลบ : เราใชวธเพมตวแปรเสรมเพอใหครบ 3 ตว คอถาวงเลบนคอ (x1+ x2) กแปลงเปน (x1+ x2+ y–)(x1+ x2+ y)

3. กรณทมตวแปร 1 ตวในวงเลบ : กทานองเดยวกบกรณ 2 ตว คอเพมตวแปรเสรม แตกรณนเพมสองตว นนคอแปลงจาก (x1) เปน (x1+ y– + z–) (x1+ y– + z) (x1+ y + z–) (x1+ y + z)

4. กรณทมตวแปร 4 ตวขนไปในวงเลบ : สมมตวาวงเลบนคอ C = (x1+ x2+...+ xk ) k �4 เราจะเพมตวแปรเสรม w1, w2, ..., wk–3 แลวแปลง C นเปน C* ซงเทากบ

))(())()(( 31342324213121 ��������������� kkkkkk wxxwwxwwxwwxwxx �

ขอใหสงเกตวาถา C มคาเปนจรง ตองม xi ใดสกตวมคาเปนจรง สมมตวา xj มคาจรงใน CC* กยอมมคาจรงไดถาเรากาหนดให w1 w2 ... wj–2 มคาจรงหมด และ wi ทเหลอเปนเทจหมด และในทางกลบกนถา C* มคาจรง จะตองม xi สกหนงตวมคาจรง ทงนเพราะวาถา xi

ทกตวมคาเทจหมด C* จะเทากบ ))(())()(( 33432211 ������ kkk wwwwwwww � ซงไม

มทางเปนจรงได สรปไดวา C มคาจรงไดกตอเมอ C* มคาจรงดวย

มาดกนสกหนงตวอยางให E = (x1)(x2+ x–3 )( x1+ x3+ x–4 ) ( x1+ x–2+ x3 + x4 + x5) จะแปลงไดเปน(x1+ y–1 + z–1) (x1+ y–1 + z1) (x1+ y1 + z–1) (x1+ y1 + z1) (x2+ x–3 + y–2) (x2+ x–3 + y2 ) ( x1+ x3+ x–4 ) ( x1+x–2+ w1 ) ( x3+ w– 1+ w2 ) ( x4+ x5 + w– 2 )

เมอแสดงใหเหนวา 3SAT � NP และ SAT �P 3SAT โดยททราบแลววา SAT เปน NPC ดงนนสรปไดวา 3SAT เปนปญหา NPC ดวย �

Page 360: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

344 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

การออกแบบอลกอรทมสาหรบปญหา NP–Hardเมอเราทราบแลววาปญหาหนงเปน NPC สงทสรปไดกคอวาปญหานเปนปญหาทใครๆ ในปจจบนกยงหาอลกอรทมทมประสทธภาพไมได ทงๆ ทกยงไมมใครพสจนไดวายากจรง แตคนสวนใหญสงสยวาจะยาก และถาเปนปญหาการหาคาเหมาะทสด (optimization problem) ทเปน NP–hard สถานการณกเปนในทานองเดยวกน 12 แลวเราในฐานะผออกแบบอลกอรทมจะทาอยางไรตอ แนนอนวากคงตองออกแบบอลกอรทมเพอแกปญหานอยดแหละ เพยงแตวาคงตองเปลยนวตถประสงคกนบางเพอจะไดจดการกบปญหานได แลวแตวาตองการแบบใด ดงน

1. “ไดคาตอบดสดแน แตอาจชามากๆ” วธนใชการยอนรอย หรอการขยายและจากดเขตเปนกลวธหลกในการคนผลเฉลย (ทไดศกษากนมาในบทท 11) ทงนสงทตองคานงถงคอการออกแบบตนไมหรอกราฟปรภมสถานะ การตรวจความมแววของจด และฟงกชนกนเขตตางๆ ทใชระหวางการคน วธนประกนไดวาไดอลกอรทมทพบคาตอบแนนอนของปญหา แตจะชาเรวเพยงใดประกนไมได เวลาการทางานกรณเลวสดกยงคงเปนแบบเลขชกาลง ตรงนตองขอเนนวาไมใชวาเวลาการทางานจะเปนกรณเลวสดเสมอ ในทางปฏบตอาจพบกรณเลวสดไมมากกได (เชน ไดมการศกษาจานวนจดทตองตรวจสอบในตนไมปรภมสถานะระหวางการคนคาตอบแบบยอนรอยของปญหา “การใหสจดของกราฟดวยสสามสจะพอไหม” ซงเปน NPC วาโดยเฉลยแลวจะสารวจจดในตนไมปรภมสถานะเพยง 197 จดเทานน ไมขนกบขนาดของกราฟ !!! 13)

2. “มกไดคาตอบด ในทางปฏบต แตอาจชา” วธนใชการคนเฉพาะท (local search) โดยอาศยการคอยๆ เปลยนคาตอบจากทมอยไปเรอยๆ จนกวาจะเปนทพอใจ โดยมกลไกการปรบเปลยนคาตอบหลายแบบอาทเชน hill climbing, steepest descent, simulated annealing, tabu search และ genetic algorithm เปนตน คาตอบทไดนนไมไดคาดวาจะเปนแบบดทสด

12 ในหวขอนจะพดถงปญหาการหาคาเหมาะทสดทงนน เนองจากในทางปฏบตเราตองการคาตอบของปญหาประเภทนมากกวาคาตอบของกรณปญหาการตดสนใจ (เชนอยากรการเดนทางของพนกงานขายทสนสด มากกวาอยากรแความการเดนทางทยาวไมเกน k อย แตไมรวาเสนทางใด)

13 Herbert S. Wilf, “Backtrack: An O(1) average time algorithm for the graph coloring problem”, Information Processing Letters 18 (1984), 119–122.

Page 361: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 345

แตขอแบบ “ดๆ” ดงนนจะไมสามารถประกนคณภาพของคาตอบได อกทงคณภาพของคาตอบนนขนกบตวอยางปญหาทไดรบ และตองอาศยการปรบคาของตวแปรตางๆ ในกระบวนการคน อยางไรกตามเปนวธทใชไดผลเปนทยอมรบในทางปฏบต

3. “ประกนคณภาพ แถมเรวดวย” วธนใชอลกอรทมแบบประมาณ (approximation algorithm) ซงเปนอลกอรทมประเภททใหผลเฉลยทรบประกนคณภาพ (พสจนได) ดวยเวลาการทางานแบบพหนาม ไมวาจะรบตวอยางใดๆ ของปญหากตาม เชนประกนวาคาตอบทไดจะมคาไมเกน 1.5 เทาของคาของคาตอบทดทสด เปนตน

เนองจากเราไดนาเสนอรายละเอยดของการยอยรอย และการขยายและจากดเขตกนแลวในบทท 11 ในหวขอนจะนาเสนอแนวคดหลกๆ ของการคนเฉพาะท และอลกอรทมเชงประมาณเทานน โดยจะไมลงในรายละเอยดมากนก เนองจากอยนอกเหนอขอบเขตของวชาอลกอรทมเบองตนน

การคนเฉพาะทการคนเฉพาะท (local search) เปนกลวธทใชในการแกปญหาการหาคาเหมาะทสดเชงการจด (combinatorial optimization problem) ซงเปนปญหา NP–hard โดยอาศยการคอยๆ เปลยนคาตอบจากทมอยไปเรอยๆ จนกวาจะเปนทพอใจ ภายใตสมมตฐานดงตอไปน

� ให S เปนเซตของผลเฉลยทเปนไปไดทงหมด (ซงมขนาดใหญมากๆ )� ฟงกชน f(s) สาหรบการคานวณตนทนของผลเฉลย s โดยปญหาทสนใจมวตถประสงคทจะหาผลเฉลยทม f(s) เหมาะทสด (นอย / มากทสด)

� ฟงกชน initialSolution() ซงสามารถสรางผลเฉลยเรมตน� ฟงกชน next(s) ซงสามารถสรางเซตของผลเฉลยตางๆ ทผลตไดถดจากผลเฉลย s บางทเรยกวาฟงกชนเพอนบาน (neighborhood function) (และนเองเปนทมาของคาวา “เฉพาะท”)

การคนเฉพาะทมกระบวนการทางานแบบวนซา (iterative) เพอคนผลเฉลยในปรภมผลเฉลยไปเรอยๆ จนกวาจะไดผลลพธทพอใจ โดยเรมจากผลเฉลยเรมตน จากนนสรางผลเฉลยถดไป กระทาเชนนวนซาไปเรอยๆ เขยนเปนรหสเทยมไดดงน

Page 362: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

346 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

01: localSearch( )02: {03: s = initialSolution()04: while not terminate(s) {05: s’ = select( next(s) )06: if ( accept(s,s’) ) then s = s’07: }08: }

เรมดวยผลเฉลยเรมตนในบรรทดท 3 เขาวงวนทางานจนกวาจะพอใจตามเงอนไขทกาหนดใน terminate() ประเดนทนาสนใจอยทฟงกชน select และ accept โดยท select ทาหนาทเลอกผลเฉลยในเซตของผลเฉลยถดไปมาพจารณา และ accept ทาหนาทตดสนใจวาจะยอมรบผลเฉลยใหมทเลอกมาหรอไม สองฟงกชนนเอง เปนตวสรางความแตกตางๆ ของกลวธการคนเฉพาะท ซงมหลากหลายวธแตกตางกนดงน

1. Simple descent : ฟงกชน select ทาหนาทเลอกผลเฉลยถดไป (s’ ) แบบสมจาก next(s) มาใชหนงผลเฉลย สวน accept นนจะยอมรบผลเฉลยกเฉพาะเมอ s’ มคาของ f(s’ ) ทดกวา f(s) วธนเปนทรจกในอกชอหนงวา hill climbing (ซงเปรยบเสมอนการไตหบเขาทมแตจะไตลงเทานน) การวนซาจะสนสดเมอไมสามารถหาผลเฉลยทดกวาได (ซงไมไดหมายความจะพบผลเฉลยทเหมาะทสด เพราะผลเฉลยทพบนนอาจมสภาพทเรยกวาเหมาะทสดเฉพาะท – local optima คอปรบไดดกวาไมไดแลวจาก next(s))

2. Steepest descent : แทนทจะสมเลอกผลเฉลยมาเพยงหนงเดยวเทานนจาก next(s) ตามททาใน simple descent วธนพจารณาและคานวณคา f ของทกๆ ผลเฉลยใน next(s) แลวเลอกตวทมคา f ดทสด โดย accept จะยอมรบผลเฉลยทเลอกมานกเมอมคา f ทดกวาของผลเฉลยเดมทมอย การพจารณาและคานวณ f ของทกๆ ผลเฉลยโดยทวไปใชเวลามาก จงมกใชวธการเลอกเซตยอยของ next(s) แบบสม หรอโดยใชศกษาสานก (heuristic) จากลกษณะของปญหามาพจารณาเพอลดเวลาการทางานของ select

3. Simulated annealing 14: วธนลอเลยนอณหพลศาสตรของกระบวนการอบเหนยว (annealing) ซงเปนขนตอนการลดอณหภมระหวางการหลอมเพอใหไดโลหะทอยในสภาวะทเหมาะทสด (โดยจะลดอณหภมอยางชาๆ เพอใหไดโลหะทเหนยว ไมเปราะ) วธน

14 S. Kirkpatrick, C. D. Gelatt, Jr., and M. P. Vecchi. Optimization by simulated annealing. Science,

220:671–680, 1983.

Page 363: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 347

เทยบผลเฉลยปจจบนเปนสถานะปจจบนของโครงสรางโลหะในระบบ คา f ทกากบผลเฉลยกเปรยบเสมอนพลงงานของสถานะ และการทางานแบบวนซาเปรยบเสมอนกบการคอยๆ ลดอณหภมลงเรอยๆ

วธนอาศยหลกการเลอกของ select ทคลายกบของ simple descent จะตางกนกตรงทฟงกชน accept นนอาจยอมรบผลเฉลยใหมทเลวกวาของเกาได ภายใตความนาจะเปนซงเปนฟงกชนทมพารามเตอรคอ �f = f(s’ ) – f(s) และตวแปรอณหภม t ระหวางการวนซา (tมคาสงตอนเรมตน และลดคาลงเรอยๆ ระหวางการวนซา) ดงน

if ( �f < 0 ) s = s’ else if ( e–�f/kt > random(0,1) ) then s = s’

เงอนไขแรกในการยอมรบผลเฉลยใหมคอเมอไดของดกวา (ในทนถอวาตองการคา f ทนอยทสด) แตถาไมดกวากยอมรบเมอผานเงอนไขทสอง เหตผลทใชคาของ ktfe /�� (k คอคาคงตวของโบลตซมนน – Boltzmann) นนกมาจากพฤตกรรมของกระบวนการฟสกสระหวางการอบเหนยว ซงหมายความวาเรายอมรบผลเฉลยทเลวกวาไดงายในระยะแรกของการวนซา (เมออณหภมสง) แตจะยอมรบของเลวกวายากขนเรอยๆ เมออณหภมลดลง และยอมรบผลเฉลยทเลวนอยกวาไดงายกวาทเลวมากกวา การวนซาจะสนสดเมอถงอณหภมเยน หรอถงสภาพทไมไดผลเฉลยทดกวาเปนเกนเวลาทตงเปนเกณฑไว

4. Tabu search 15 : วธนมแนวคดคลายกบ steepest descent แตการคนจะดาเนนการตอถงแมวาจะไปตนทจดเหมาะทสดเฉพาะท โดยจะไปตอในทๆไมเคยไปมากอนถงแมวาจะไดผลทเลวกวากตาม นนคอจะพจารณาเฉพาะผลเฉลยของ next(s) ทไมเคยถกเลอกมาเทานน (เพอปองกนการทางานซาซอน) ดงนนจงตองมการจดเกบผลเฉลยทเคยถกเลอก (เรยกวาเปน Tabu list 16 ) เพอใชตรวจสอบการซาซอนดงกลาว

5. Genetic algorithm 17 : วธนลอเลยนววฒนาการของสงมชวต อาศยแนวคดทวาเฉพาะผทแขงแกรงเทานนถงจะอยรอด จดเดนของวธนทตางจากวธอนๆ อยตรงทวาวธนไมไดเกบและเปลยนแปลงทละผลเฉลย แตจะเกบเปนเซตของผลเฉลยทดๆ เปรยบไดกบประชากร

15 F. Glover. Tabu search: A tutorial. Interfaces, Vol. 20, :4, 74–94, 1990.16 อยากใหนกเรยนลองคดดวาทาไมถงเรยกวา “Tabu”17 J. H. Holland. Adaptation in Natural and Artificial Systems. Univ. of Michigan Press, Ann Arbor, 1975.

Page 364: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

348 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

แขงแกรงทยงมชวตอย ดงนนการเปลยนแปลงของผลเฉลยในการวนซาในแตละรอบนนจะเปนการเปลยนเซตของผลเฉลย แตละผลเฉลยจะถกเขารหสเปนลาดบของสญลกษณเทยบไดกบยนของสงมชวต ดงนนเซตของผลเฉลยจงเปรยบไดกบประชากร ประชากรในรนตอไปยอมเกดมาจากประชากรในปจจบน โดยอาศยแนวคดของการสบพนธ การกลายพนธ ของประชากร (ขนตอนนใชวธการสมเขามาเกยวของดวย เพอปรบเปลยนรหสทแทนผลเฉลย) คา f กากบผลเฉลยถกเทยบกบคาความแขงแกรง (fitness) ของยนเพอใชในกระบวนการเลอกประชากรในรนถดไป ดงนนยนตวใดทมความแขงแกรงไมเขาเกณฑกจะตายไปในทสด เหลอตวทแขงแกรงทสดเปนผลเฉลยสดทาย

การคนเฉพาะทนใชไดดกบหลากหลายปญหาซงเกยวกบการหาคาเหมาะทสดเชงการจด มผนาไปประยกตในหลากหลายวงการ ซงสามารถหาผลเฉลยทดไดสาหรบปญหาทพบในทางปฏบต อยางไรกตามความสาเรจของการใชวธการขางตนน ขนกบความสามารถในการเขาใจลกษณะของปญหา การเขารหสตวอยางของปญหา และการนาศกษาสานกมาใชในการสรางเซตของผลเฉลยถดไป อกทงเมอเขยนเปนโปรแกรมแลวมกพบวามพารามเตอรอนๆ อกหลายตว ทตองมการปรบแตง เพอใหไดการทางานทด ตวอยางเชนใน simulated annealing นน จะตองตอบคาถามอาทเชน อณหภมควรเรมตนทใด จะลดอณหภมอยางไร เปนตน

อลกอรทมเชงประมาณอลกอรทมเชงประมาณเปนอกทางเลอกหนงสาหรบปญหาทเปน NP–hard จดเดนของอลกอรทมประเภทนกคอประเดนการประกนคณภาพของผลเฉลยทได ดวยเวลาการทางานแบบพหนาม การประกนคณภาพนนระบดวยคา ซงเปนตวสะทอนวาผลเฉลยทไดจากอลกอรทมตองมคณภาพไมเลวเกน เทาของผลเฉลยทเหมาะทสด กาหนดให Q คอปญหาการหาคาเหมาะทสด A คออลกอรทมสาหรบปญหา Q C(i) คอตนทนของผลเฉลยทไดหาจาก A เมอรบตวอยางปญหา i ของ P และ COPT(i) คอตนทนของผลเฉลยเหมาะทสดของตวอยางปญหา i เราเรยก Aวาเปนอลกอรทมเชงประมาณแบบ เมอเงอนไขขางลางนเปนจรงเสมอสาหรบทกๆ ตวอยางปญหา i ของ P

max ��

��C(i)

COPT(i) ,COPT(i) C(i) � �

เราใชนยามนทงกบปญหาการหาคานอยทสดและมากทสด โดยมจดประสงคให >1 และยงมคาใกล 1 เทาใดกยงหมายความวาผลเฉลยมคณภาพมากเทานน ดงนนถา = 2 สาหรบปญหา

Page 365: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 349

การหาคานอยทสด กหมายความวาผลเฉลยทไดมตนทนไมเกนสองเทาของตนทนทนอยทสด ในขณะทสาหรบปญหาการหามากทสด จะหมายความวาผลเฉลยทไดมตนทนไมนอยกวาครงหนงของตนทนทมากทสด

ในบางโอกาสเราอาจตองการระบคณภาพดวยขอบเขตของคาคลาดเคลอนสมพทธ � นนคอแทนทจะระบวา “A เปนอลกอรทมเชงประมาณแบบ ” กระบเปน “A เปนอลกอรทมเชงประมาณแบบ (1+�)” โดยท � > 0 (หมายความวา � ยงนอยยงด)

ตองขอสรปสภาพของการออกแบบอลกอรมเชงประมาณสาหรบปญหา NP–hard ทมอยในปจจบนดงน

� มอยหลากหลายปญหาทมอลกอรทมเชงประมาณแบบ ได โดย เปนคาคงตว

� มอยหลายปญหาทยงหาอลกอรทมเชงประมาณแบบ ซงเปนคาคงตวไมได จะมกเฉพาะเมออนญาตให เพมตามขนาดของตวอยางปญหา (นนคอเปน (n))

� มอยหลายปญหาทมอลกอรทมเชงประมาณแบบ (1+�) ซงเราสามารถลด � ใหนอยเทาไรกได (ตราบเทาท � > 0) โดยการเพมเวลาการทางาน ซงยงคงเปนแบบพหนามอย (เรยกวาเปนการใชเวลาซอคณภาพ)

� มอยหลายปญหาทพสจนไดวาไมมทางทจะมอลกอรทมเชงประมาณได

� มปญหาอกมากมายทยงรอใหมคนออกแบบอลกอรทมเชงประมาณให

การออกแบบอลกอรทมเชงประมาณนนมการใชศกษาสานกเขาชวยออกแบบ (คลายกบอลกอรทมแบบตระกลาม) ซงขนกบขอปญหาทสนใจ แตประเดนใหญกคอจะตองหาคา (หรอ �) ซงเปนตวประกนคณภาพของอลกอรทมไดจรง (ตองขอเนนวาตองประกนคณภาพไดสาหรบทกๆ ขอมลขาเขาของปญหา) จงเรยกวาเปนอลกอรทมเชงประมาณได แสดงดวยตวอยางดงตอไปน

ตวอยางท 13-15 Vertex Cover : กาหนดให G = (V, E) คอกราฟๆ หนง เราตองการหาเซตยอย VC � V ทมขนาดเลกทสด โดยทเสนเชอมทกเสนของกราฟมจดปลายอยใน VC

ปญหานเปน NP–hard ถงแมวาจะยากตอการหา vertex cover ทมขนาดเลกทสด แตกไมคอยยากถาจะหากรณทมขนาด “เลกๆ” อลกอรทมเชงประมาณขางลางนจะใหผลลพธเปน vertex cover ทมขนาดไมเกนสองเทาของขนาดทเลกทสด

Page 366: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

350 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

01: VertexCover_approx( G=(V,E) )02: {03: Vc = �04: E’ = E05: while ( E’ � � ) {06: (u,v) � an arbitary edge of E’07: VC = Vc � {u, v}08: remove from E’ every edge incident on u or v09: }10: return VC11: }

แนวคดการทางานกคอวงวนการเลอกเสนเชอมมาหนงเสน รวมจดปลายทงสองเปนสมาชกใน vertex cover จากนนลบเสนเชอมทกๆ เสนทตดกบจดทงสองน (เนองจากถกปกดวยจดทงสองแลวกลบทงไดหมด) กระทาเชนนไปเรอยๆ จนเสนเชอมทกๆ เสนถกลบจนหมด อลกอรทมนจงใชเวลาเปน O(E) และผลลพธทไดเปน vertex cover แนๆ เพราะวาเสนเชอมใดๆ จะถกลบกเมอมจดใน vertex cover ทตดกบมน

ประเดนทตองพสจนกคอเรองของการประกนคณภาพของผลลพธ เราจะมาพสจนกนวาอลกอรทมนเปนการประมาณแบบ 2

กาหนดให E* คอเซตของเสนเชอมทงหมดทถกเลอกในบรรทดท 6 เปนทแนนอนวาเสนตางๆ เหลานตองไมมจดปลายรวมกน ทงนเพราะวาเมอเราเลอกมาหนงเสนกลบทกๆ เสนทมจดปลายตดกบจดปลายของเสนทเลอก เสนเชอมทถกเลอกในรอบถดไปกยอมไมมจดปลายรวมกบเสนเชอมทถกเลอกกอนหนาน และเนองจากเรารวมจดปลายทงสองของทกๆ เสนเชอมของ E* เปน vertex cover ดงนนสรปไดวา |VC| = 2|E*|

กาหนดให VOPT คอ vertex cover ทมขนาดเลกทสด ถา e � E* จะตองม v � VOPT อยางนอยหนงจดทเปนจดปลายของ e และตองไมเปนจดปลายของเสนเชอมอนใน E* ทงนกเพราะวาเสนเชอมตางๆใน E* ไมมจดปลายรวมกน ดงนน |E*| � |VOPT|

จากผลทได |VC| = 2|E*| และ |E*| � |VOPT| สรปไดวา |VC| � 2|VOPT| �

ตวอยางท 13-16 0/1 Knapsack : กาหนดใหมของอย n ชน ชนท i หนก wi และมมลคา vi เรามถงอยหนงใบทรบนาหนกไดไมเกน W จะเลอกหยบของชนใดใสถงด จงจะไดมลคารวมสงสด โดยทถงไมขาด

ปญหานกเปน NP–hard ซงสามารถหาคาตอบไดดวยกาหนดการพลวตไดในเวลา �(nW) ซงแปรตามคาของ W (จงเปนฟงกชนเลขชกาลงของจานวนบตของทใชแทน W) ในขณะท

Page 367: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 351

fractional knapsack เปนปญหางาย มอลกอรทมแบบตระกลามซงใชเวลา O(n log n) โดยเลอกหยบตามลาดบของสงของทมมลคาตอนาหนกไลจากมากไปนอย ตามทไดนาเสนอในบทท 10

อยางไรกตามเราสามารถนาแนวคดของอลกอรทมแบบตระกลามน มาใชสรางอลกอรทมเชงประมาณแบบ 2 ดงน

01: Knapsack_approx( obj[1..n], W )02: {03: greedyValue = knapsack_greedy( obj[1..n], W )04: mostValue = max_value( obj[1..n] )05: return( max( mostvalue, greedyValue ) )06: }07:08: Knapsack_greedy( obj[1..n], W )09: {10: sort obj[1..n] by obj[i].v/obj[i].w (nonincreasing)11: sumW = 0; sumV = 012: for ( i=1 to n ) {13: if ( sumW+obj[i].w � W ) {14: sumW += obj[i].w15: sumV += obj[i].v16: }17: }18: return sumV19: }

อลกอรทมน 18 หาคาตอบดวยวธแบบตระกลาม (บรรทดท 3) กบวธการเลอกของทมมลคาสงสด (บรรทดท 4) แลวเลอกคาตอบทมคามากกวา (บรรทดท 5) การหาคาตอบดวยวธแบบตระกลามนน กกระทาดวยการเลอกของตามลาดบของสงของทมมลคาตอนาหนกไลจากมากไปนอย ตราบเทาทยงใสในถงได (บรรทดท 8 ถง 19)

เราสามารถพสจนวามลคารวมทไดจากอลกอรทมเชงประมาณน จะมคาไมตากวาครงหนงของมลคารวมทสงทสด (นนคอเปนอลกอรทมเชงประมาณแบบ 2) ถาถงสามารถจของไดทกชน ผลทไดกยอมมมลคารวมสงสดแนนอน (เพราะเลอกทกชนแนๆ ) ดงนนเราจะพสจนกรณทถงรบนาหนกไดตากวาผลรวมของนาหนกทงหมด กอนอนขอตงขอกาหนดดงตอไปนกอน

� สงของตางๆ เรยงลาดบตามมลคารวมตอนาหนก (vi / wi � vj / wj เมอ i < j )� m คอหมายเลขชนทมมลคาสงสด� k คอหมายเลขชนทนอยสดททาให Ww

ki i ���1

� V คอมลคารวมทไดจาก knapsack_approx ดงนน V = ��

���

��

11

,maxki im vv

18 เพอความงายในการนาเสนอ อลกอรทมนคนเฉพาะมลคารวมของสงของทไดเลอกใสถง

Page 368: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

352 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

� VOPT คอมลคารวมสงสด

ถาเราขยายขนาดของถงใหรบนาหนกได W* = ��

ki iw

1 ซงมมลคารวมเปน V* = �

ki iv

1

จะไดวาการเลอกของตงแตชนท 1 ถง k นนยอมไดมลรวมสงสดเมอถงรบได W* (เพราะเปนกรณพเศษของผลลพธทไดจากอลกอรทมแบบตระกลามทไมมการเฉอนของเลย) แนนอนวา VOPT � V* อกทง vm � vk (จากนยามของ m) จงสามารถสรปไดวา

2

2

212121

,max

OPT

*

1

11

11

11

V

V

v

vv

vv

vvV

ki i

ki ik

ki im

ki im

��

���

��

��

���

� �

��

���

� �

��

���

��

นนคอมลคารวมทไดจาก Knapsack_approx มคาไมตากวาครงหนงของมลคารวมทสงสด (นนคอเปนอลกอรทมเชงประมาณแบบ 2) �

ตวอยางท 13-17 Euclidean Travelling Salesperson : ปญหาการเดนทางของพนกงานขายในตวอยางน เราสนใจเฉพาะกรณเมอความยาวของเสนเชอมระหวางเมองสองเมองใดคอระยะขจดของตาแหนงของเมองบนระนาบแบบยคลด (Euclidean plane) ซงหมายความวาความยาวของเสนเชอมตางๆ ทเชอมเมองสามเมองใดๆ ตองเปนไปตามอสมการของความยาวดานของสามเหลยม (triangle inequality) นนคอผลรวมของความยาวดานสองดานใดๆ ตองไมนอยกวาดานทสาม (ซงระยะขจดของเมองตางๆบนระนาบแบบยคลดมคณสมบตขอน)

ดวยเงอนไขทเพมเขาไปเชนนกยงคงทาใหปญหานเปน NP–hard แตทาใหเราสามารถหาอลกอรทมเชงประมาณแบบ 2 สาหรบปญหานไดงายมากๆ โดยมขนตอนดงน

Page 369: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 353

01: Euclidean_TSP_approx( G=(V,E) )02: {03: TMST = MST( G )04: Tour = PreorderTraversal( TMST )05: }

เรมดวยการหาตนไมแบบทอดขามเลกสดของกราฟ จากนนจะไดวาการเดนทางของพนกงานขายกคอลาดบของการแวะผานจดในตนไมนแบบกอนลาดบ รปท 13–12ก แสดงจด 13 จด ซงมเสนเชอมตอถงกนหมด (ไมไดแสดงเสนเชอมในรป) หลงจากนนหาตนไมแบบทอดขามเลกสดจะไดดง รปท 13–12 ข ถาใหจดหมายเลข 1 เปนรากแลวแวะผานแบบกอนลาดบจะไดลาดบจดทแวะผานคอ 1, 2, 3, ..., 12, 13 จะไดการเดนทางของพนกงานขายเชงประมาณแสดงดงรปท 13–12ค

5

1

13

11

9

7

42

12

10

8

6

3

5

1

13

11

9

7

42

12

10

8

6

3

5

1

13

11

9

7

42

12

10

8

6

3

(ก) (ข) (ค)รปท 13–12 การเดนทางของพนกงานขายเชงประมาณ

เราจะแสดงใหเหนจรงวาการเดนทางทไดจาก Euclidean_TSP_approx นนยาวไมเกนสองเทาของการเดนทางทสนสด กอนอนของกาหนดสญลกษณทจะใชอางองดงตอไปน

� TMST คอตนไมแบบทอดขามเลกสดตนหนงของกราฟ� TTSP คอการเดนทางทหาไดจาก Euclidean_TSP_approx� LMST เปนผลรวมของความยาวของเสนเชอมทกเสนใน TMST

� LTSP เปนระยะทางของการเดนทาง TTSP

� LOPT คอระยะทางรวมของการเดนทางของพนกงานขายทสนสด

เนองจากการเดนทางของพนกงานขายเปนวงจรในกราฟ ถาเราตดเสนเชอมทยาวทสดในวงจรนออก กยอมเปนตนไม (เปนตนไมทเปนเสนยาวตอกนไป) และตนไมนยอมตองเปนตนไมทอดขามดวย (เพราะเปนทางเดนทผานทกจด) แตไมจาเปนตองเปนตนไมทอดขามทเลกทสด

Page 370: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

354 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

ดงนน LOPT � LMST ถาเราเรมทรากของ TMST แลววงไปตามเสนเชอมในลกษณะตามแนวลก โดยเมอพบทางตนกวงยอนกลบเสนเชอมขนมา ผานทงสองดานของเสนเชอมในลกษณะนไปเรอยๆ จนมาจบทราก ตวอยางเชนเสนประในรปท 13–13ก แสดงวถการเลอยตามเสนเชอมของตนไมในรป จะไดวาวถการเลอยบน TMST นยอมมความยาวรวมเปนสองเทาของความยาวรวมของเสนเชอมของตนไมซงเทากบ 2LMST

(ก) (ข)

รปท 13–13 วถการเดนตามเสนเชอม (ก) และการเดนลด (ข)

แตเนองจากการเดนทางของพนกงานจะตองผานเมองละครงแบบไมซา ดงนนแทนทจะเดนตามเสนเชอมในลกษณะขางตน คอยอนกลบเมองเดมเพอไปเมองใหม กสามารถเดนลดตรงไปเมองใหมไดเลย เสนประในรปท 13–13ข แสดงการเสนทางลดของการเดนในรปท 13–13ก และเปนการเดนทางซงไมผานเมองซากน โดยเรามนใจไดแนๆ วาเสนทางลดนตองไมยาวกวาแบบเดนยอน ทงนเพราะเงอนไขของอสมการของสามเหลยมนนเอง การเดนลดแบบนจะมลาดบของเมองทผานตามลาดบการแวะผานแบบกอนลาดบ

สรปไดวา LTSP � 2LMST และ LMST � LOPT ดงนน LTSP � 2LOPT จงไดอลกอรทมเชงประมาณแบบ 2 �

แนวคดหลกของอลกอรทมเชงประมาณขางตนน กคอการเปลยนตนไมแบบทอดขามเลกสดของกราฟไปเปนวงจรแฮมลตน อาจมองไดวาวธททามานนเปลยนเสนเชอมแตละเสนของ TMST เปนสองเสน กจะไดกราฟแบบออยเลอร (เนองจากทกๆ จดมดกรเปนเลขค) หาวงจรแบบออยเลอร แลวจงใชทางลดบนวงจรออยเลอรเพอหลกเลยงการเดนผานจดซาไดเปนวงจร

Page 371: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 355

แฮมลตน ถาเราเพมกระบวนการเปลยน TMST ไปเปนกราฟแบบออยเลอร ท “ฉลาด” ขน (และซบซอนกวา) กจะไดทางเดนทางเชงประมาณทมคณภาพกวา ซงสามารถทาไดดงน 19

1. หา VODD ซงคอเซตของจดทมดกรเปนเลขคใน TMST ( |VODD| ตองเปนเลขค จากคณสมบตของกราฟ)

2. หาการจบคจดใน VODD ซงใหผลรวมของระยะทางของคจดทจบคกนทงหมดทนอยทสด (minimal length matching)

3. เพมเสนเชอมใน TMST ระหวางจดทจบคกนจากขตอยทแลว จะไดกราฟแบบออยเลอร (เพราะทกๆ จดใน VODD ซงเคยมดกรเปนเลขค กจะมดกรเปนเลขคหลงเพมเสนเชอม)

4. หาวงจรแบบออยเลอรบนกราฟทได

5. ใชการเดนทางลดบนวงจรออยเลอร เพอหลกเลยงการผานจดซา ไดเปนวงจรแฮมลตนทแทนการเดนทางของพนกงานขาย

รปท 13–14ก แสดงตนไมแบบทอดขามเลกสด ม VODD = {1, 5, 7, 9, 11, 13} หาการจบคแบบระยะทางสนสดจะไดการเพมเสนเชอม (1,13), (5,7), และ (9,11) ไดกราฟแบบออยเลอรในรปท 13–14ข เมอหาวงจรแบบออยเลอร บวกกบการใชทางลดเพอหลกเลยงการผานจดซา จะไดการเดนทางดงรปท 13–14ค

5

1

13

11

9

7

42

12

10

8

6

3

5

1

13

11

9

7

42

12

10

8

6

3

5

1

13

11

9

7

42

12

10

8

6

3

(ก) (ข) (ค)รปท 13–14 การปรบปรงการเดนทางของพนกงานขายเชงประมาณ

19 N. Christofides, “Worst–case analysis of a new heuristic for the traveling salesman problem,” Technical

Report, Grad. School of Industrial Adm., Carnegie–Mellon Univ., 1976.

Page 372: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

356 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

เราสามารถพสจนไดวาการเดนทางทไดนมระยะทางไมเกน 1.5 เทาของ LOPT (ซงเปนอลกอรทมเชงประมาณสาหรบปญหานทมขอบเขตของคณภาพทดทสดในปจจบน)

กาหนดให EM คอเซตของเสนเชอมทไดจากการจบคจดใน VODD แบบระยะทางสนทสด GE คอกราฟทไดจากการรวม EM เขากบ TMST (ตวอยางเชนรปท 13–14ข) LE คอผลรวมของความยาวของเสนเชอมทกๆ เสนใน EM และ LE คอความยาวของวงจรแบบออยเลอรบน GE แนนอนวา LE = LM + LMST (เนองจากวงจรออยเลอรตองผานเสนเชอมทกเสน) เราสามารถหาความสมพนธของ LOPT กบ LM และ LMST ไดดงน

� LMST � LOPT จากทไดแสดงใหเหนจรงในหนาท 354

� LM � 0.5LOPT : กาหนดให TODD คอการเดนทางสนทสดซงผานเฉพาะจดใน VODD และ LODD คอระยะทางรวมของ TODD ซงแนนอนวา LODD � LOPT เราสามารถนา TODD มาใชหาการจบคจดใน VODD แบบระยะทางสนทสดได โดยเลอกเสนเชอมใน TODD แบบเสนเวนเสน ซงจะไดการจบคจดสองแบบ แตละแบบตองมผลรวมของความยาวเสนเชอมไมเกนครงหนงของ LODD ดงนน LM � 0.5LODD สรปไดวา LM � 0.5LOPT

จาก LE = LM + LMST และผลทไดขางตน จะไดวา LE � 1.5LOPT เมอเราเดนทางลดบนวงจรแบบออยเลอรทไดเพอไมผานจดซากยอมมไมยาวกวา LE แนนอน ดงนนการเดนทางทไดนยอมยาวไมเกน 1.5 เทาของการเดนทางสนทสด �

ตวอยางท 13-18 General Traveling Salesperson : ปญหานตองการการเดนทางของพนกงานขายทสนทสดบนกราฟใดๆ เราสามารถพสจนไดวาไมมอลกอรทมเชงประมาณใดๆ (ซงใชเวลาแบบพหนาม) แกปญหานได นอกเสยจากวา P = NP

การพสจนตอไปนแสดงใหเหนวา ถามอลกอรทมเชงประมาณแบบ � ซงใชเวลาแบบพหนามโดยท � � 1 สาหรบปญหาน (ใหชอวา A) เรากสามารถนา A ไปแกปญหาวงจรแบบแฮมลตนไดในเวลาแบบพหนาม เนองจากปญหาวงจรแบบแฮมลตนนนเปน NPC จงหมายความวาจะม A ไดจรงกตอเมอ P=NP

กาหนดให G = (V, E) เปนกราฟ ปญหาวงจรแบบแฮมลตนตองการตรวจสอบวากราฟ G มวงจรแบบแฮมลตนหรอไม จะขอสรางกราฟ G* = (V, E*) ซงเปนกราฟแบบบรบรณ มเซตของจดเหมอนกบ V แตละเสนเชอมมนาหนก w(i, j) (ซงจะขอเรยกเปนความยาวแทน) โดยท

Page 373: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 357

���

��

otherwiseVEjiif

jiw||1

),(1),(

ดวยวธการสราง G* จาก G จะไดวาถา G มวงจรแบบแฮมลตน G* กยอมตองมการเดนทางทมระยะทางรวมเทากบ |V| ซงกคอวงจรแบบแฮมลตนนน โดยทแตละเสนมยาว 1 และถา G ไมมวงจรแบบแฮมลตน G* กตองมแตการเดนทางทมระยะทางรวมเกน �|V| เพราะอยางนอยเสนเชอมหนงบนการเดนทางตองไมปรากฎใน G และเสนเชอมนนยาว 1+ �|V|

ดงนนถาเราม A ซงเปนอลกอรทมเชงประมาณแบบ � สาหรบปญหาการเดนของพนกงานขาย กแสดงวา A สามารถหาการเดนทางทมระยะทางไมเกน � เทาของระยะทางของการเดนทางทสนทสด ดงนนถา G มวงจรแบบแฮมลตน A กยอมหาการเดนทางทยาว |V| ใน G* ไดแน(เพราะถาไปผานเสนเชอมทยาว 1+ �|V| กจะผดคณสมบตการประมาณแบบ �) และถา G ไมมวงจรแบบแฮมลตน การเดนทางใน G* ท A หาไดกยอมตองยาวกวา �|V| แนๆ ดงนนเราสามารถใช A เพอแกปญหาวงจรแบบแฮมลตน ถา A ใชเวลาการทางานแบบพหนาม กแสดงวา P=NP เนองจากปญหาวงจรแบบแฮมลตนนนเปน NPC สรปไดวาจะม A สาหรบปญหาการเดนทางของพนกงานขาย กเมอ P=NP �

แบบฝกหด1. จงแสดงใหเหนจรงวาปญหาตอไปนอยในกลม NP โดยการเขยนรหสเทยมของอลกอรทมททวนสอบหลกฐานเพอยนยนคาตอบของปญหาเหลานไดในเวลาแบบพหนาม

ก) Bin packing : ให U คอกลมของตวเลขจานวนจรงซงมคาในชวง (0, 1] อยากทราบวามวธแบงสวน U ออกเปนกลมยอยทไมมสวนรวมเปนจานวนไมเกน k กลมยอยหรอไม โดยทแตละกลมยอยมผลรวมไมเกน 1

ข) Partition : ให U คอกลมของตวเลขจานวนจรง อยากทราบวามวธแบง U ออกเปนสองกลมยอยซงมผลรวมเทากนหรอไม

ค) Quadratic congruence : ให a, b และ c เปนจานวนเตม อยากทราบวามจานวนเตมบวก x < c ททาให x2 � a (mod b) หรอไม

Page 374: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

358 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

ง) MAX-2SAT : ให f เปนนพจนบลนซงเขยนอยในรปแบบบรรทดฐานแบบเชอม (conjunctive normal form – CNF) โดยทแตละวงเลบมเพยงสองตวแปร อยากทราบวามวธกาหนดคาใหกบตวแปรททาใหมวงเลบใน f ทมคาจรงเปนจานวนอยางนอย k วงเลบหรอไม

2. ปญหาการใหสสามส (3-coloring) ถามวาเรามวธใหสจดของกราฟหนงโดยใชสสามสหรอไม โดยทไมมจดปลายสองจดของเสนเชอมใดมสเหมอนกน

3. จงออกแบบอลกอรทมเชงกาหนดทมประสทธภาพสาหรบปญหา 2SAT

4. จงออกแบบอลกอรทมเชงกาหนดทมประสทธภาพสาหรบปญหา 2-coloring

5. ถาเปลยนคาถามของปญหาการเดนทางของพนกงานขายเปน “ไมมการเดนทางของพนกงานขายทมระยะทางรวมไมเกน k หรอไม ?” ปญหาใหมนอยในกลม NP หรอไม เพราะอะไร

6. กาหนดใหมฟงกชน IsThereSubset(A[1..n],k) ทคนคาจรง เมอมเซตยอยของจานวนในแถวลาดบ A ทรวมกนแลวมคาเทากบ k ถาไมมกคนคาเทจ จงแสดงใหเหนจรงวาเราสามารถเรยกใชฟงกชนนเปนจานวน O( n ) หน เพอหาเซตยอยของ A ทมผลรวมเทากบ k เมอ IsThereSubset(A[1..n],k) คนคาจรง

7. นายทกษณตงคาถามใหลกนองหาคาตอบ กอนทตวเองจะบนไปดงานทเยอรมนวา “สมมตวามลกบอลจานวนหนงซงมสตางกนเปนจานวน n ส ลกบอลม 2 ขนาด (ใหญกบเลก) เขาหยบลกบอลขนกบ m ลก ใสลงในถงจานวน k ใบ (k � m)โดยถงแตละใบมลกบอลอยางนอยหนงลก จงหาวามนเปนไปไดหรอไมทจะหยบลกบอล k ลกออกจากถงๆ ละหนงลก โดยไมมลกบอลสองลกใดๆ ทถกเลอกออกมา มสเหมอนกนแตขนาดตางกน” จงพสจนวาปญหานเปน NP–complete

8. จงแสดงใหเหนจรงวา 3SAT �P CLIQUE

9. ปญหา subgraph-isomorphism ถามวากราฟ G1 เปนกราฟยอยของกราฟ G2 หรอไม จงแสดงใหเหนจรงวาปญหานเปน NP บรบรณ

10. จงแสดงใหเหนจรงวาการตรวจสอบวากราฟหนงมทางเดนแบบแฮมลตน (Hamiltonian path) หรอไมนนเปนปญหา NP บรบรณ

Page 375: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:44 : [email protected] บทท 13 เอนพบรบรณ 359

11. จงยกตวอยางกราฟทแสดงวาอลกอรทมขางลางนอาจให vertex cover ทมขนาดเกน 2 เทาของกรณทเลกสด

01: vertexCover_greedy( G=(V,E) )02: {03: Vc = �04: while ( E � � ) {05: choose v � V whose degree is maximum07: VC = Vc � {v}08: V = V – {v}09: remove from E every edge incident on v10: }11: return VC12: }

12. จงออกแบบอลกอรทมทใชเวลาเปนเชงเสนในการหา vertex cover ของตนไม

13. เราไดแสดงใหเหนวา CLIQUE �P VC (ตวอยางท 13-12) เราจะสามารถนาอลกอรทมเชงประมาณของปญหา vertex cover ทไดนาเสนอในตวอยางท 13-15 ไปปรบใหเปนอลกอรทมเชงประมาณของปญหา CLIQUE ไดหรอไม

14. จงยกตวอยางปญหา 0/1 knapsack ซงทาใหผลทไดจากอลกอรทม Knapsack_approxในหนาท 351 นนมาจาก mostValue ซงคอของชนทมมลคามากสด แทนทจะเปนผลลพธทไดจากอลกอรทมยอยแบบตระกลาม

15. จงยกตวอยางตาแหนงของจดของปญหาการเดนทางของพนกงานขายบนระนาบแบบยคลด ซงเมอใชอลกอรทมเชงประมาณแบบ 3/2 ทไดนาเสนอหนาท 355 ซงใหผลลพธเปน 1.5 เทาของการเดนทางทสนสด

Page 376: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

360 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:44 : [email protected]

Page 377: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:50 : [email protected] 361

[1] A. V. Aho, J. E. Hopcroft, and J. D. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, 1974.

[2] S. Baase. Computer Algorithms: Introduction to Design and Analysis. Addison-Wesley, 1978

[3] J. Bentley, Programming Pearl. Addison-Wesley, 1986.

[4] J. Bentley, More Programming Pearl. Addison-Wesley, 1988.

[5] G. Brassard and P. Bratley. Algorithmics: Theory and Practice. Prentice Hall, 1988

[6] G. Brassard and P. Bratley. Fundamentals of Algorithmics. Prentice Hall, 1996.

[7] T. H. Cormen, C. E. Leiserson, and R. L. Rivest, Introduction to Algorithms. MIT Press, 1990

[8] M. R. Garey and D. S. Johnson. Computers and Intractability: A Guide to the Theory of NP-Completeness. W. H. Freeman, 1979.

[9] G. H. Gonnet and R. Baeza-Yates. Handbook of Algorithms and Data Structures, Addison-Wesley, 1991.

[10] D. Harel, Algorithmics: The Spirit of Computing. Addison-Wesley, 1987.

[11] D. S. Hochbaum, ed., Approximation Algorithms for NP-Hard Problems, PWS. 1997.

[12] E. Horowitz and S. Sahni. Fundamentals of Computer Algorithms. Computer Science Press, 1978.

[13] D. E. Knuth. The Art of Computer Programming: Fundamental Algorithms,volume 1, Addison-Wesley, 3rd ed., 199x

[14] D. E. Knuth. The Art of Computer Programming: Seminumeraical Algorithms,volume 2, Addison-Wesley, 3rd ed., 199x

บรรณานกรม

Page 378: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

362 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:50 : [email protected]

[15] D. E. Knuth. The Art of Computer Programming: Sorting and Searching, volume 3, Addison-Wesley, 3rd ed., 199x

[16] U. Manber. Introduction to Algorithms: A Creative Approah, Addison-Wesley, 1989.

[17] R. Motwani and P. Raghavan. Randomized Algorithms. Cambridge University Press, 1995.

[18] W. H. Press, B. P. Flannery, S. A. Teukolsky, and W. T. Vetterling, Numerical Recipies in C: The Art of Scientific Computing, Cambridge University Press, 1988.

[19] I. Parberry. Problems on Algorithms, Prentice Hall, 1995.

[20] F. P. Preparata, M. I. Shamos, and R. S. Preparata. Computational Geometry: An Introduction. Springer-Verlag, 1991.

[21] P. W. Purdon Jr. and C. A. Brown, The Analysis of Algorithms. Holt, Rinehart, and Winston, 1985.

[22] G. Rawlins. Compared to What ?: An Introduction to the Analysis of Algorithms.Computer Science Press, 1992.

[23] S. Sahni, Data Structures, Algorithms, and Applications in C++, McGraw-Hill, 1998.

[24] R. Sedgewick, Algorithms. Addison-Wesley, 1983.

[25] R. Sedgewick and P. Flajolet, An Introduction to the Analysis of Algorithms, Addison-Wesley, 1996.

[26] S. S. Skeina, The Algorithm Design Manual. Telos/Springer-Verlag, 1998

[27] M. A. Weiss, Data Structures and Algorithm Analysis in Java. Addison-Wesley, 1999.

[28] H. S. Wilf, Algorithms and Complexity. Prentice Hall, 1986.

คาแนะนาหนงสอเลมนเรยบเรยงมาจากตาราตางๆ ทงฉบบตานาน ฉบบคมภร ฉบบอานเลน และอนๆ ตามทไดแจกแจงขางบนน อกทงยงไดนาเนอหาความรทมอยในอนเตอรเนตอกมากมาย มาผสมรวมกน เลอกประเดนทนาสนใจมานาเสนอ จะขอแสดงความคดเหนเลกนอยเกยวกบตาราตางๆ ทแจกแจงไวในบรรณานกรมนคราวๆ พอเปนแนวทางสาหรบผทตองการคนควาเพมเตม

Page 379: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:50 : [email protected] บรรณานกรม 363

ฉบบอานเลน

ผมขอแนะนาใหผมความสนใจเกยวศาสตรทางอลกอรทม เรมตนอานหนงสอของ Harel [10] เนองจากเปนหนงสออานงาย ไมลงลกมาก แตออกแนวกวางครอบคลมทกประเดน ใชภาษารบงายไมเปนทางการ และมคณตศาสตรประกอบนอยมาก

ฉบบตานาน

ตานานในทนผมใหนยามวาเปนหนงสอเลมแรกๆ ทางอลกอรทมมคนอางองกนมากมายมหาศาล หองสมดทกๆ ทตองมไวบนหง หนงสอประเภทนเหนจะหนไมพนตาราดง TAOCP ของ Knuth 3 เลม [13] [14] และ [15] ทยงขายดอยถงทกวนน ตาราของ Aho [1]

ซงใครทตอนนอายเกน 40 ทเคยศกษาสายนมาตองทรมานอานมาทงนน ของ Horowitz [12] ซงถงแมจะไมมพมพอกแลว กยงนากลบไปพลกดเปนระยะ และอกเลมกเหนจะเปนของ Garey และ Johnson [8] หนาปกดา ซงวากนแตเรองของ NP บรบรณ

ฉบบคมภร

ใครๆ ในยคนเหนจะปฏเสธไมไดวาตาราจาก MIT หนาเกน 2 นว หนกเปนกโล ทเรยกกนตดปากวา CLR (มาจากตวอกษรนาหนาของผแตง 3 คน) [7] เปนตาราบงคบทใชในวชาทางอลกอรทมมากทสด ถงแมจะเกาเปนสบปแลว กยงมคนใชกนมาก (เลมใหมคาดวาจะออกป 2001) ครอบคลมเนอหามากมาย ละเอยดทงการเขยนโปรแกรม (ถงแมจะใชรหสเทยมบรรยาย) และการวเคราะห

ฉบบตารากบขาว

ประเภทนเปนหนงสอรวบรวมปญหาเชงคานวณ พรอมทงอลกอรทมสาหรบปญหานนๆ ทใชกนมากกเหนจะเปนของ Sedgewick [24] (มออกรนใหมแลวทแบงเปนสองเลม) แตทมาแรงกเหนจะเปนของ Skiena [26] เนองจากแนบ CD-ROM ซงรวบรวมขมปญญาของสารพดโปรแกรมทไวใชแกสารพดอลกอรทม และหนงสอทชอตรงกบหมวดนเลยกคอ Numerical Recipies [18] ซงรวบรวมโปรแกรมของปญหาเชงจานวนไวมากมาย

ฉบบทวไป

ตาราทางอลกอรทมเลมอนๆ ตางกมประเดนการนาเสนอของตวเอง ตาราของ Brassard และ Bratley [6] อานงาย ครอบคลมเนอหามากมาย (มทงบททเกยวกบอลกอรทมเชงสม

Page 380: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

364 การวเคราะหและออกแบบอลกอรทม Draft 1.0 : 28/10/00 20:50 : [email protected]

เชงประมาณ และเชงขนาน) อยาสบสนกบตาราของพวกเขาอกเลม [5] ทพมพกอนหนาน ซงไมคอยหนาแตอานยาก (เพราะทงเรองคาใจไวเปนแบบฝกหดเยอะมาก) ตาราของ Manber [16] นาเสนอการออกแบบอลกอรทมโดยใชวธอปนยกนทงเลม ใครทชอบอปนยเชงคณตศาสตรอยแลวกคงอานกนไดราบรน และสาหรบผทสนใจทาแตโจทย กคงตองอานของ Parberry [19] ซงรวบรวมปญหาทปรากฏในเลมอนๆ มาไวในทเดยวกน (พรอมคาแนะนาในการแกไขบาง) ถาตองเนนทางการวเคราะหกคงตองอานของ Purdon และ Brown [21] และของ Sedgewick และ Flajolet [25] ถาตองเนนการเขยนโปรแกรมกตองอานของ Bentley [3] และ [4] ทมเกรดเลกเกรดนอยทบางทคดไมถง สาหรบผทตองการประหยดเงนซอเลมเดยวใชไดหลายวชากเหนจะตองใชของ Weiss [27] ซงมทงเรองโครงสรางขอมล อลกอรทม และการเขยนโปรแกรม (แตเขาเนนเรองโครงสรางมากกวาเรองอน) แตถาตองการของฟรเลยกตองอานของ Wilf [28] (พอลขสทธกบสานกพมพหมดแลวเขากแจกเปน Internet Edition ฟรทนทท http://www.cis.upenn.edu/~wilf/) แตเปนหนงสออานยากสกหนอย

ฉบบเฉพาะกจ

ประเภทนเนนเปนบางกลวธ หรอบางกลมปญหา แตจะลงในรายละเอยดมากเปนพเศษ เชนของ Motwani และ Raghavan [17] เนนเรองอลกอรทมเชงสม ของ Hochbaum [11] เนนเรองอลกอรทมเชงประมาณ ของ Preparata [20] เนนเรองปญหาเรขาคณตเชงคานวณ เปนตน

ถาอยากจะรวามหนงสอทางอลกอรทมมากมายเพยงใด กลองเขาไปท amazon.com หรอ fatbrain.com แลวคนหนงสอทมคาวา algorithm เปนชอหนงสอด กจะรเอง กตองขอปดทายวาผสนใจยงสามารถสบเสาะแสวงหาความรไดจากเอกสารทเปนทางการ เปนเรองเปนราว และทไมเปนเรองเปนราว เกยวกบอลกอรทมไดจากเครอขาย Internet ทผมเขาไปใชบรการบอยกเหนจะเปน Web site ดงตอไปน

� Computer Science Bibliography :http://wwwhttp://liinwww.ira.uka.de/bibliography/index.html

� A compendium of NP optimization problems :http://www.nada.kth.se/theory/compendium/

Page 381: Design and Analysis of Algorithms - Burapha Universityseree/lecture/... · 2001-06-09 · คณิตศาสตร ... สูตร แต ไม เคยเป ดสอนมาเป

Draft 1.0 : 28/10/00 20:50 : [email protected] บรรณานกรม 365

� The Stony Brook Algorithm Repository :http://www.cs.sunysb.edu/~algorith/

� Definitions of Algorithms, Data Structures, and Problems :http://hissa.nist.gov/dads/

� Networked Computer Science Technical Reports Library :http://www.ncstrl.org/

� Eric Weisstein's World of Mathematics :http://mathworld.wolfram.com

� ACM - Association of Computing Machinery (Digital Library) :www.acm.org/dl

� IEEE Computer Society :www.computer.org