grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/algorithm...Ý Â a...

189

Upload: others

Post on 07-Feb-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

Page 2: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

Page 3: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

í¤ ùÚÈ÷¢ü¨Àúõ ø üê ùÀØÈ÷¢

öä

ݵþ¤Úó üÂÏ §¤¢ ùøÃ

Þû¤ ¢µ¨

ý¢ Àa¨ ÀÞ Àa¨ µî¢

1384 ùõ ¤£

www.Bshams.ir

www.Bshams.ir

Page 4: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

ÝÂaó ßÞÂaó Üaó ÝÆ

°óÎõ ´¨Âúê

õÀÖõ

ü±÷¹õ ýû¢Þ÷ üêÂãõ 1 ÛÊê

1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ü±÷¹õ ýû¢Þ÷ .11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . big-O ¢Þ÷ 1.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . big −Ω ¢Þ÷ 2.12 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . θ ¢Þ÷ 3.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . small− o¢Þ÷ 4.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . small− ω ¢Þ÷ 5.13 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ýÂð ÝÞþÃîõ Ìì 6.15 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ìì À ± 7.1

üµÈð¥ ýû ݵþ¤Úó 2 ÛÊê

9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . üµÈð¥ ýû ݵþ¤Úóø ¢ãõ .29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . üµÈ𥠢ãõ 1.210 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . û Èþ¤ ¢¤õ ¤¢ ¶½ 1.1.214 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .üµÈð¥ ýû ݵþ¤Úó 2.226 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Master Theorem) ü¨¨ Ìì 3.235 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . û ݵþ¤Úó Ãó÷ 4.237 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ý¥¨ °Âõ ýû ݵþ¤Úó 5.237 . . . . . . . . . . . . . . . . . Selection Sort ü¿µ÷ ý¥¨ °Âõ ݵþ¤Úó 1.5.237 . . . . . . . . . . . . . . . . . . . . . .Bubble Sort ü± ý¥¨ °Âõ ݵþ¤Úó 2.5.2

www.Bshams.ir

www.Bshams.ir

Page 5: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

38 . . . . . . . . . . . . . . . . . . . Insertion Sort ü¤¢ ý¥¨ °Âõ ݵþ¤Úó 3.5.239 . . . . . . . . . . . . . . . . . . . . Pigeon hole Sort ý±î ÷ ý¥¨ °Âõ 4.5.241 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Binary Searchüþø¢ø¢ ý¹µÆ 5.5.242 . . . . . . . . . . . . .Binary Insertion Sort ü¤¢ üþø¢ø¢ ý¥¨ °Âõ 6.5.243 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Shell Sort ݵþ¤Úó 7.5.245 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Bucket Sort1 ݵþ¤Úó 8.5.245 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Bucket Sort2 ݵþ¤Úó 9.5.246 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bin Sort ݵþ¤Úó 10.5.247 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Counting Sort ݵþ¤Úó 11.5.247 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Radix sort ݵþ¤Úó 12.5.248 . . . . . . . . . . . . . . . . . . üµÈ𥠢ãõ ( ö¢Âî Û) ö¢Âî Trace ÛÞä 6.250 . . . . . . . . . . . . . . . . . . . . . . . . . Catalan Number öî ¢Àä  ý¤Áð 7.2

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ 3 ÛÊê

55 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . û ù¢¢ öÞµ¡¨ ¥ ü¡Â .356 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Sparse array)§¤³¨ þ¤ 1.357 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .üþø¢ø¢ ´¡¤¢ 2.359 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . max heap ´¡¤¢ 3.362 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ( ýÜÞø¢ ²û) Binomial Heap 4.363 . . . . . . . . . . . . . . . . . . . . . . . . . ( ý ÜÞø¢ ´¡¤¢ )Binomial Tree 1.4.363 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Max Binomial Tree 2.4.364 . . . . . . . . . . . . . . . . . . . . . . . The Merge Of Max Binomial Trees 3.4.364 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Binomial Heap 4.4.365 . . . . . . . . . . . . . . . . . . . . . . . . .Min Binomial Heap ýø¤  ÜÞä 5.4.366 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Max Binomial Heap 6.4.367 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .FIBONACCI HEAP 5.367 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Fibonacci Tree 1.5.3

www.Bshams.ir

www.Bshams.ir

Page 6: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

68 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Max Fibonacci Tree 2.5.368 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fibonacci Heap 3.5.368 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Max Fibonacci Heap 4.5.369 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3 öµ¡¤¢ 6.372 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3 ´¡¤¢ ×þ ý¹µÆ 1.6.373 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-3 ´¡¤¢ ×þ Û¡¢ ¤¢ 2.6.377 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 ´¡¤¢ ×þ ¥ éÁ 3.6.383 . . . . . . . . . . . . . . 2-3 ´¡¤¢ ×þ ¥ éÁ ¢ÂØÜÞä Ûܽ ø þù 4.6.384 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Red-Black ù¨ - ÃõÂì ´¡¤¢ 7.384 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ù¨ - ÃõÂì ´¡¤¢ «¡ 1.7.385 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . üþÀµ ýþÌì ø Óþ¤ã 2.7.386 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ö¤ø¢ 3.7.387 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¤¢ 4.7.389 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . éÁ 5.7.394 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (Disjoin sets)ùõ ýû äÞ¹õ 8.3

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ 4 ÛÊê

97 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .üÆþ÷ õ÷ ýû ©ø¤ á÷ .498 . . . . . . . . . . . . . . . . . . . . (Greedy Algorithms) ÷Êþ ýû ݵþ¤Úó 1.498 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ßÞêû ý¥¨ ù¢ÂÈê ݵþ¤Úó 1.1.4101 . . . . . . . . . . . . . . . . . . . MST ñÞõ ýª ´¡¤¢ ýû ݵþ¤Úó 2.1.4109 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Knapsack üµÈ óî ݵþ¤Úó 3.1.4110 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DIJKSTRA ݵþ¤Úó 4.1.4112 . . . . . . . . . .(timetable or scheduling) ýÀ öõ¥ ýû ݵþ¤Úó 5.1.4117 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (devide and conquer) Ûø ÝÆÖ 2.4117 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ï¤Ã ¢Àä ® 1.2.4119 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . merge sort ݵþ¤Úó 2.2.4

www.Bshams.ir

www.Bshams.ir

Page 7: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

121 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quick Sort ݵþ¤Úó 3.2.4126 . . . . . . . . . . . . . . . . (û ÅþÂõ ® ݵþ¤Úó) ߨµ¨ ݵþ¤Úó 4.2.4128 . . . . . . . . . . . . . . . . . . . . . . Dynamic Programming þ üÆþ÷ õ÷ 3.4128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

(nk

) ±¨½õ 1.3.4130 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . û ñ ö¢Âî ¢Â¡ óbÆõ 2.3.4131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0,1 üµÈ óî óbÆõ 3.3.4131 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Floyd ݵþ¤Úó 4.3.4133 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . û ÅþÂõ ýù¹÷¥ ® 5.3.4135 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ú üþø¢ø¢ ý¹µÆ ´¡¤¢ 6.3.4138 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .íµÈõ µª¤Âþ¥ ßþµð¤Ã 7.3.4140 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .ü÷ú ÖÆõ ý óbÆõ 8.3.4142 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ¢Âð ù¤ø¢ ùÀªøÂê óbÆõ 9.3.4143 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . û ý¥ ´Þ÷¤ 4.4144 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .B &T ( Back Tracking ) 5.4144 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Âþ¥ø nóbÆõ 1.5.4146 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ü÷µÜÞû ¤ø¢ ßµêþ óbÆõ 2.5.4147 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m-coloring óbÆõ 3.5.4148 . . . . . . . . . . . . . . . . . . . . . . . . . . . Branch and Bound (B&B) ×Ø 6.4

û éÂð Çþ 5 ÛÊê

149 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .Exploring graphs û éÂð Çþ .5149 . . . . . . . . . . . . . . . . . . . . . . . . . . . (Depth First Search) DFS ݵþ¤Úó 1.5152 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .µÈ ý¥¨ ù¢ 1.1.5152 . . . . . . . . . . . . . . . . . . . . . . . . . . (Breath First Search) BFS ݵþ¤Úó 2.5153 . . . . . . . . . . . . . . . . . . . . . . . . Topological Sort ý¦ó ý¥¨ °Âõ 3.5154 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Bellman Ford ݵþ¤Úó 4.5155 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DAG ݵþ¤Úó 5.5

www.Bshams.ir

www.Bshams.ir

Page 8: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ 6 ÛÊê

157 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .LOOP INVARIANT1.6173 . . . . . . . . . . . . . . . . . . . . . . . . . (Amortized Analysis) üîúµ¨ Ãó÷ 2.6173 . . . . . . . . . . . . . . . . . . . . . . . . . (Aggregate Analysis) üãÞ¹ Ãó÷ 1.2.6176 . . . . . . . . . . . . . . . . . . . . . . . . (Accounting Method) üÆ ©ø¤ 2.2.6178 . . . . . . . . . . . . . . . . . . . . . . . . . .(Potential Method) ÛÆ÷µ ©ø¤ 3.2.6

www.Bshams.ir

www.Bshams.ir

Page 9: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

õÀÖõ

üÂÏ §¤¢ ýùøà , ´¨ µ êÂð ¤Â ì Þª ¤ µ¡ ¤¢ ö î Ýû î ýùøÃùÀØÈ÷¢ ³õî ü¨Àúõ µª¤ öþ¹È÷¢ ¥ üãÞ Í¨ î Àª üõ ݵþ¤Úóú× cü ¤ê ¤Ãê ôÂ÷ ͨ 1384 ñ¨ ùõ ¤£ ¤¢ í¤ ùÚÈ÷¢ ü¨Àúõ ø üê

. ´¨ ùÀª µªÁð öÀõ ìä ¤µ¡ ¤¢ ø ´¨ ùÀþ¢Âð ßþøÀøý¤ Ø Þ û ùøÃ ß þ ý ú ¤¢ î ü ÷à þà ä üõ Þ ¥ ¢¤¢ ´ÞÆ ì ß þ¤¢ø üê ùÀØÈ÷¢ 1382 ñ¨ ý¢ø¤ø ³õî ü¨Àúõ µª¤ öþ¹È÷¢ , À÷ù¢Þ÷ø ü÷Ìõ¤ ÞÏê û Ý÷¡ æþ¤¢ ü Þ¥ ¥ «Ê¡ , í¤ ùÚÈ÷¢ ü¨Àúõ

. ݪ µª¢ ¤ ÂØÈ ñÞî ö ÇþÂþø ÂÏ¡ ýÀÞ Âû¥

ý¢ Àa¨ ÀÞü¨Àúõ ø üê ùÀØÈ÷¢

í¤ ùÚÈ÷¢1384 ùõ ¤£

www.Bshams.ir

www.Bshams.ir

Page 10: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

1 ÛÊê

ü±÷¹õ ýû¢Þ÷ üêÂãõ

ü±÷¹õ ýû¢Þ÷ .1À þ ø¢ ùÀª µêÂð Ñê þ ø öõ¥ ö üõ ú÷ ͨ î üû¤Ã

. ÝþÞ÷ ÆþÖõ Ýû ¤ ݵþ¤Úó

big-O ¢Þ÷ 1.1:ùÚ÷ Àª f : N −→ R+Âð

O(f(n)) = g:N → R+ |∃c ∈ R+ ,∞∀ n ∈ N g(n) ≤ cf(n)

f(n) =

n3 n<1000

2n2 n≥100

O(n2) = n2, n lg n, f(n), ....

6

-

.............M

f1

f2

f2 ∈ O(f1)

. ´¨ O(f1) ¥ Ýû ¥ ¢ª  À¬ f2 Âð üµ Û±ì Ûت ¤¢

www.Bshams.ir

www.Bshams.ir

Page 11: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

ü±÷¹õ ýû¢Þ÷ üêÂãõ .1 ÛÊê 2

6

-

f1 ∈ O(f2)

f2 ∈ O(f1)

f2

f1

î ýà Å, f2 ∈ O(f1) Ýþ¤¢ ¢ª ® °þ® ×þ ¤¢ f1Âð Ûت ¤¢. ´¨¤¢ Ýúõ , ´Æ÷ c °þ® ´¨ Ýúõ

ý öÂî big-O ,üêÂÊõ Ñê ý f ·õ ¢¤¢ ¤ öÂî ôúÔõ öÞû big-O

ßþ ö ý öõ¥ üþ öÂî î ´¨ ÀÔõ üÞµþ¤Úó Å .´¨ Ñê éÂÊõ.Àª

big − Ω ¢Þ÷ 2.1:ùÚ÷ f : N −→ R+Âð

Ω(f(n)) = g : N → R+ |∃d > 0∞∀ n ∈ N f(n) ≤ dg(n)

Âç Ý÷ üõ ¤ °þ® Âþ¥ À÷¤À÷ üøÔ ÂµØî þ ýøÆõ µØî ¹þ ¤¢:Ýû¢

f(n) < dg(n) =⇒ f(n) ≤ dg(n)

f(n) ≤ dg(n) =⇒ f(n) < d′g(n)

: Ýþ¤¢ ß»Þû

f2(n) ∈ Ω(f1(n))⇐⇒ f1(n) ∈ O(f2(n))

θ ¢Þ÷ 3.1: Ýþ¤¢ùÚ÷ f : N −→ R+Âðθ(f(n)) = O(f(n)) ∩ Ω(f(n))

: ñ·õO(n2) = n2, n2 + 4, nlogn, ...Ω(n2) = 2n2,2n2 +

√n, n3 + n2, n4, n2logn, ...

θ(n2) = n2, n2 + n,2n2, ...

: µØ÷üþ ßþ öÂî Àþ âìø ¤¢,¢Þ÷ ù¢Ôµ¨ Ω ¥ Àþ ݵþ¤Úó ýÀ É¿È ýÂ

. Ýþ¤ø ´¨¢ ö ýÂ

www.Bshams.ir

www.Bshams.ir

Page 12: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

3 SMALL−O¢Þ÷ .4.1

small − o¢Þ÷ 4.1:ùÚ÷ f : N −→ R+Âð

o(f(n)) = g : N → R+ |∀ c > 0∞∀ n ∈ N g(n) ≤ cf(n)

î ´¨ ö ¤¢ ´Þû úÀ÷¤À÷ üøÔ ÂµØî þ ýøÆõ µØî ¹þ ¤¢.Àî ëÀ¬ c °þ® Âû ý¥

: ñ·õ? n ∈ o(2n)þ 2n ∈ o(n): ´¨ ´¨¤¢ ëê ýû ¤±ä ¥ ×þ ôÀî

2n ∈ o(n)⇐⇒ ∀c > 0∞∀ n ∈ N 2n ≤ cn c=1

⇐⇒ F =⇒ 2n /∈ o(n)

n ∈ o(2n)⇐⇒ ∀c > 0∞∀ n ∈ N n ≤ c2n c= 1

3⇐⇒ F =⇒ n /∈ o(2n)

small − ω ¢Þ÷ 5.1:ùÚ÷ f : N −→ R+Âð

ω(f(n)) = g : N → R+ |∀ c > 0∞∀ n ∈ N g(n) ≥ cf(n)

: Àû¢ öÈ÷ :ñ·õω(f(n))

⋂o(f(n)) = ∅

´¨ ¢õ öM1 ×þ d0 > 0 ýÂ ùÚ÷ g(n) ∈ ω(f(n))⋂

o(f(n)) Âð :Û: î

∀n ≥M1 g(n) ≥ d0f(n) (g(n) ∈ ω(f(n)))

:î ´¨ ¢õ ö M2 ×þ c0 = d02ýÂ ñ

∀n ≥M2 g(n) ≤ c0f(n) (g(n) ∈ o(f(n))) =⇒ g(n) ≤ d02

f(n) =⇒

∀n ≥MaxM1, M2 d02

f(n) ≥ d0f(n) =⇒ d0 ≥ 2d0 =⇒ d0 ≤ 0.¢ª üõ ´ ÝØ ßþ Â, ÝþÀ¨¤ Ëì Å

ýÂð ÝÞþÃîõ Ìì 6.11)f(n) + g(n) ∈ O(MAXf(n), g(n))

2)f(n) + g(n) ∈ Θ(MAXf(n), g(n))

: 1 ±f(n) ≤MAXf(n), g(n) , g(n) ≤MAXf(n), g(n) =⇒f(n)+g(n) ≤ 2MAXf(n), g(n) =⇒ f(n)+g(n) ∈ O(MAXf(n), g(n))

www.Bshams.ir

www.Bshams.ir

Page 13: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

ü±÷¹õ ýû¢Þ÷ üêÂãõ .1 ÛÊê 4

: 2 ±MAXf(n), g(n) ≤ f(n) + g(n) =⇒ f(n) + g(n) ∈ Ω(MAXf(n), g(n))f(n) + g(n) ∈ O(MAXf(n), g(n)), f(n) + g(n) ∈ Ω(MAXf(n), g(n))=⇒ f(n) + g(n) ∈ Θ(MAXf(n), g(n))

:ßþÂÞ. log n! ∈ θ(n log n)Àû¢ öÈ÷

:Û: ñø ù¤

(n! = (ne )n√2πn) Ùóµ¨ ñõÂê ¥ ù¢Ôµ¨ ±

n! = (ne )n√2πn =⇒ log n! = log(n

e )n + log√2πn

=⇒ log n! = n log ne + log

√2πn

=⇒ log n! = n log n− log en + log√2πn

=⇒ log n! = n log n + log√2πnen

=⇒ log n! ∈ Θ(n log n)

: ôø¢ ù¤.log n!∈ Ω(n log n) ø log n! ∈ O(nlog n) ÝþÞ÷ ± Àþ ¹þ ¤¢

logn! = logn + log(n−1) + . . . + log1 ≤ logn + logn + . . . + logn︸ ︷︷ ︸n

≤ nlogn

=⇒ logn! ∈ O(nlogn)

log n! = log n + log(n− 1) + . . . + log1 ≥ n2

log n2

=⇒log n! ≥ n

2log n− n

2log2 ≥ 1

4n log n =⇒ logn! ∈ Ω(nlogn)

=⇒ log n! ∈ Θ(n log n)

: ô¨ ù¤: ÀþõÂê ´ì¢ Âþ¥ ýøÆ

(n!)2 = (1× 2× . . .× (n− 1)n)2 ⇒(n!)2 = (1× 2× . . .× (n− 1)n)(n(n− 1)× . . .× 1) =

n∏x=1

x(n− x + 1)

y = −x2 + (n + 1)x

x = n+12

=⇒ ymax = (n+1)2

4

x = 1⇒ y = n, x = n⇒ y = n =⇒ ymin = n

www.Bshams.ir

www.Bshams.ir

Page 14: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

5 Ìì À ± .7.1

n∏

x=1

n ≤ (n!)2 ≤n∏

x=1

(n + 1)2

4=⇒ nn ≤ (n!)2 ≤ (

n + 1

2)2n =⇒

nlogn ≤ 2logn! ≤ 2nlogn + 1

2≤ 2nlogn =⇒ n

2logn ≤ logn! ≤ nlogn

=⇒ log n! ∈ θ(n log n)

Ìì À ± 7.1: Ìì

: Ýþ¤¢ o(f(n)) ýÂo(f(n)) ⊆ O(f(n))\Ω(f(n))

o(f(n)) ⊆ O(f(n))\Θ(f(n))

:ñø ´ÞÆì öûÂü óø g(n) ∈ O(f(n)) Ý û¢ ü õ ö È ÷ g(n) ∈ o(f(n)) Ý þ Þ ÷ ü õ ­Â ê

. ´¨ g(n) ∈ O(f(n)) Ýû¢ üõ öÈ÷ Àµ. g(n) /∈ Ω(f(n))

ß þ ¤¢ ´ ¨ g(n) ∈ o(f(n)) ö ù Ú ÷ ´ ¨ c = 5 î Ý î ü õ ­Â ê´¨ g(n) ∈ O(f(n)) Å g(n) ≤ 5f(n) Ýþ¤¢ n ≥ M1, M1 ×þ ý ¤¬Àª g(n) ∈ Ω(f(n)) Ø þ ­Â ê , g(n) /∈ Ω(f(n)) Ý û¢ ü õ ö È ÷ ñ ¥ ø d0f(n) ≤ g(n), n ≥ M1 Âû ý î M1 ×þÝþ¤¢ d = d0 ×þ ý ùÚ÷n ≥ M2 î ¢¤¢ ¢ø ö M2 ×þ c = d0

2ý Šg(n) ∈ o(f(n)) üêÂÏ

Ëì î d0 ≤ 0Ýþ¤¢ n ≥MAXM1, M2 Âû ý Šg(n) ≤ d02

f(n)Ýþ¤¢. ´¨

(A\B = A\(A ∩ B)):ôø¢ ´ÞÆì öûÂ

o(f(n)) ⊆ O(f(n))\Ω(f(n)) = O(f(n))\(O(f(n))) ∩ Ω(f(n))

=⇒ o(f(n)) ⊆ O(f(n))\θ(f(n))

.¢ª ÛþÀ± ýøÆ À÷ üÞ÷ üÜî ´ó ¤¢ ëê Ìì Àû¢ öÈ÷ : ñ·õ:Û

µª¢ ¤ Âþ¥ â Àî ­Âê, Ýû¢ üõ öÈ÷ ¤ á®õ ßþ ËÖ÷ ñ·õ ¥ ù¢Ôµ¨ : ݪ

www.Bshams.ir

www.Bshams.ir

Page 15: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

ü±÷¹õ ýû¢Þ÷ üêÂãõ .1 ÛÊê 6

g(n)=

12 ¢Âê ýû nn ø¥ ýû n

: Ýþ¤¢M = 12 , n ≥ 13⇒ g(n) ≤ n =⇒ g(n) ∈ O(n)

: Ýþ¤¢ Å , Àª g(n) ∈ Ω(n) Ýî üõ ­Âê ñ

g(n) ∈ Ω(n) ⇔ ∃c > 0∞∀ n g(n) ≥ cn ⇔ ∃c > 0

∞∀ n g(n)

c ≥ n ⇔ F

(ÀµÆ÷ ¤¢ öÂî ¥ ¢Âê ¢Àä) =⇒ g(n) 6∈ Ω(n)

Àª ¤Âì Τ ßþ Àî ­Âê, ÷ þ ´¨ ¤Âì g(n) ∈ o(n) Τ ݱ ñ: Ýþ¤¢ Å

g(n) ∈ o(n)⇐⇒ ∀c > 0∞∀ n g(n) ≤ cn, c = 1

2=⇒ g(n) ≤ n

2⇐⇒ F

=⇒ g(n) 6∈ o(n)

.¢ª ÛþÀ± ýøÆõ À÷ üÞ÷ üÜî ´ó ¤¢ ëê Ìì ¢ª üõ ùÀûÈõ Å

î ü ó ¤¢ À µ Æ û ýÀ ã ø ü ¨ Ø ã ÷ Ωø OÀ û¢ ö È ÷ : ß þÂ Þ . Àª üÞ÷ ü÷¤Ö

: Û: ü¨Øã÷ ´¬¡ ±

f(n) ∈ O(f(n))⇐⇒ ∃c > 0∞∀ n ∈ N f(n) ≤ 1× f(n)

: ýÀã ´¬¡ ± î ü þ ¹ ÷ ¥ À ª f(n) ∈ O(h(n)) ø g(n) ∈ O(f(n)) À î ­Â ê

:ßþÂ g(n) ∈ O(f(n))

g(n) ≤ c1f(n): Ýþ¤¢ n ≥M1 Âû ø M1 > 0×þ ø c1 ≥ 0×þ ýÂÂû ø M2 > 0×þ ø c2 ≥ 0×þ ý f(n) ∈ O(h(n)) ý °Â ßÞû ø

f(n) ≤ c2h(n): Ýþ¤¢ n ≥M2

: Ýþ¤¢ n ≥M Âû ø M = MAXM1, M2 ý ñ

g(n) ≤ c1f(n)=⇒ g(n) ≤ c1f(n) ≤ c1c2h(n) =⇒ g(n) ≤ ch(n)

f(n) ≤ c2h(n)

=⇒ g(n) ∈ O(h(n))

.À÷ª üõ ± °Â ßÞû Ã÷ Ω ý ´¬¡ ø¢ ßþ: ü÷¤Ö ´¬¡ ßµª¢ ôÀä ý ËÖ÷ ñ·õ

www.Bshams.ir

www.Bshams.ir

Page 16: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

7 Ìì À ± .7.1

Àþ ¹µ÷ ¤¢ n2 ∈ O(n) ÝþÞ÷ üõ ­Âê , n2 /∈ O(n)î üó ¤¢ n ∈ O(n2)

:Ýþ¤¢ n ≥M1, M1 ×þ ø c > 0×þn2 ≤ cn⇒ n ≤ c⇒ (.À÷¤À÷Âî ¥ üã±Ï ¢Àä)

. ´¨ ý¥¤ Ýû Τ ×þ f â ôÞ äÞ¹õ ýø¤ θÀû¢ öÈ÷ : ßþÂÞ: Û

: Ýþ¤¢ O, Ω ü¨Øã÷ ´¬¡ ßµª¢ ÂÏ¡

f(n) ∈ O(f(n)) , f(n) ∈ Ω(f(n))⇒ f(n) ∈ θ(f(n))

.Àª üõ ü¨Øã÷ ´¬¡ ý¤¢ θ Å: Ýþ¤¢ Å g(n) ∈ θ(f(n)) Ýî üõ ­Âê Ã÷ ü÷¤Ö ´¬¡ ü¨¤Â ýÂ

g(n) ∈ θ(f(n)) =⇒ g(n) ∈ O(f(n)), g(n) ∈ Ω(f(n)) =⇒ f(n) ∈ Ω(g(n)),

f(n) ∈ O(g(n)) =⇒ f(n) ∈ Ω(g(n)) ∩ Og(n)) =⇒ f(n) ∈ θ(g(n))

.Àª üõÃ÷ ü÷¤Ö ´¬¡ ý¤¢ θ Àû¢ üõ öÈ÷ î

: Ýþ¤¢ O, Ω ýÀã ´¬¡ ßµª¢ ÂÏ¡ ß»Þûf(n) ∈ θ(g(n)) , g(n) ∈ θ(h(n)) =⇒f(n) ∈ O(g(n)) , g(n) ∈ O(h(n)) ⇒ f(n) ∈ O(h(n))

f(n) ∈ Ω(g(n)) , g(n) ∈ Ω(h(n))⇒ f(n) ∈ Ω(h(n))

=⇒ f(n) ∈ θ(h(n))

´¨ ýÀã ø ü÷¤Ö, ü¨Øã÷ ´¬¡ ¨ Âû ý¤¢ θ Àª ùÀûÈõ î ¤Ï öÞû. ´¨ ý¥¤ Ýû Τ ×þ f â ôÞ äÞ¹õ ýø¤ Å

: ݪ µª¢ Âð : ßþÂÞL = limn→∞

f(n)g(n) , f, g : N −→ R+

: ÀþÞ÷ ±.f(n) ∈ o(g(n)) ùÚ÷ L = 0 »÷ (1.g(n) ∈ o(f(n)) ùÚ÷ L =∞ »÷ (2

.g(n) ∈ θ(f(n)) ùÚ÷ 0 < L <∞ »÷ (3: µØ÷

www.Bshams.ir

www.Bshams.ir

Page 17: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

ü±÷¹õ ýû¢Þ÷ üêÂãõ .1 ÛÊê 8

¢¤ õ ¤¢ ü óø ´¨ ý¥¤ Ý û §î ×þ  þ¥ ¢ø¤ üõ ¤Ø ´¨¤¢ θ ¢¤ õ ¤¢ ýøÆ ¢ Þ ÷.Àª üÞ÷ ´¨¤¢ O, o, Ω, ω

: ñ·õ:Àî ¢¤ þ ø ± ¤ Âþ¥ ýûä¢

• f(n) ∈ O(g(n)) =⇒ 2f(n) ∈ O(2g(n))

ÝþÞ÷ üõ ¢¤ ¤ ä¢ ßþ ËÖ÷ ñ·õ : Û

n logn2 ∈ O(logn!

2 ) =⇒ 2n logn2 ∈ O(2logn!

2 ) =⇒ nn ∈ O(n!)

:ÂÚþ¢ ËÖ÷ ñ·õ þ ø ´¨ Ëì î

2 logn2 ∈ O(logn

2) =⇒ 2logn2

2 ∈ O(2logn2 ) =⇒ n2 ∈ O(n)

• f(n) ∈ O(g(n)) =⇒ (f(n))k ∈ O(g(n)k)

:Û Ý÷ üõ ßþ ÝþÂð üõ ÂÑ÷ ¤¢ ×þ ¥ µð¤Ã ¤ gø f û ݵþ¤Úó Ûܽ ¤¢)

(. ´Æ÷ ´¨¤¢ ÝþÂÚ ×þ ¥ µð¤Ã ü÷õ¥ ÂÑ÷ ¥ Âð üóøÝ÷¨Â öf(n) ≤ cg(n) =⇒ (f(n))k ≤ ck(g(n)k) =⇒ (f(n))k ∈ O(g(n)k)

• f(n) ∈ O(f2(n))

f(n) = 1

n =⇒ f2(n) = 1

n2 =⇒ f(n) 6∈ O(f2(n))

www.Bshams.ir

www.Bshams.ir

Page 18: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

2 ÛÊê

üµÈð¥ ýû ݵþ¤Úó

üµÈð¥ ýû ݵþ¤Úóø ¢ãõ .2

üµÈ𥠢ãõ 1.2À þ ×þ µÆø ö ÜÞ Âû î ´¨ ýó¢ãõ üµÈð¥ ýó¢ãõ ×þ ¥ ¤ÑõùÀª ÓþÂã Û±ì ¥ óø ¤ÀÖõ À þ ×þ ý ùøä ø ´¨ ö Û±ì õ ýÜÞ

. ´¨î Ýþ¥¢Âüõ üÖÖ °þ® ùÂçµõ ×þ üµÈ𥠢ãõ Û ´ÞÆì ßþ ¤¢

:Àî üõ ëÀ¬ Âþ¥ üõÞä Ûت ¤¢

a0tn + a1tn−1 + · · ·+ aktn−k = f(n) ai ∈ R, f : N −→ R≥0, k ∈ N

n Âçµõ ×þ ÍÖê ø ´¨ ´ k,ÀµÆûÉ¿Èõ Û±ì ¥ t0, · · · , tk−1 °þ®. Àþð ´ °þ® üµÈð¥ ó¢ãõ ó¢ãõ .Ýþ¤¢

­Âê Àµ ¤¢ .Ýî üõ ù¢Ôµ¨ Ê¿Èõ ó¢ãõ ¥ Þãõ ¢ãõ ßþ Û ýÂó¢ãõ Û ßþ ,f(n) = 0 üãþ Àª ßÚÞû á÷ ¥ üµÈð¥ ó¢ãõ Ýî üõ

:Ýþ¤¢ ¤ Âþ¥ ´ °þ® üµÈð¥

a0tn + a1tn−1 + · · ·+ aktn−k = 0

xi ¤ tiÜÞ Âû.ÝÆþ÷ üõ Âþ¥ ¤¬ ¤ Ê¿Èõ ó¢ãõ ó¢ãõ ßþ Û ýÂ:ßþ .Ýî üõ ÛþÀ±

www.Bshams.ir

www.Bshams.ir

Page 19: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 10

a0xn +a1x

n−1+ · · ·+akxn−k = 0⇒ xn−k(a0xk + a1x

k−1 + · · ·+ ak︸ ︷︷ ︸⇓

) = 0

(ÂÆÔõ) Ê¿Èõ ó¢ãõ. Ýî üõÉ¿Èõ ¤ Ê¿Èõ ýó¢ãõ ýû Èþ¤ ų¨

û Èþ¤ ¢¤õ ¤¢ ¶½ 1.1.2

¤¬ ßþ ¤¢Àª r1, . . . , rk ÃþÞµõ ø¢ ø¢ üÖÖ Èþ¤ ký¤¢ ó¢ãõ(1:´¨ Âþ¥ ôÂê ó¢ãõ

tn = c1(r1)n + c2(r2)

n + . . . + ck(rk)n

Èþ¤ ñ·õ ý ,Àª ý¤ÂØ ü¡Â ñ ßä ¤¢ø üÖÖ ýûÈþ¤ ý¤¢ ó¢ãõ(2Àìê üóø ´¨ (x− rp)m¤µîê ý¤¢ ¤±ä üãþ) Àª m üþµÆ ¥ ý¤ÂØ rp

: ´¨ Âþ¥ ôÂê ó¢ãõ ¤¬ ßþ ¤¢ (´¨(x− rp)m+1 ¤µîê

tn = c1(r1)n + c2(r2)n + . . . + cp0(rp)n + cp1n(rp)n+

. . . + cpm−1nm−1(rp)n + . . . + ct(rt)n

¤øõ¢ Ìì ¥ù¢Ôµ¨ ,ÀªüÖÖ Âè ø üõûõ ýû Èþ¤ ý¤¢ ó¢ãõ Âð(3ö üõ ùÀª µÔð Ê¿Èõ ó¢ãõ üÖÖ ýû Èþ¤ ¢¤õ ¤¢ î ö±ª fÖì¢

.¢Âî ±¨½õ ¤

: ñ·õ:Àî Û¤ Âþ¥ üµÈ𥠢ãõ

g(n) =

n n ≤ 1

5g(n− 1)− 6g(n− 2) else: Û

g(n)− 5g(n− 1) + 6g(n− 2) = 0 =⇒ x2 − 5x + 6 = 0

⇒ x1 = 3, x2 = 2⇒ g(n) = c13n + c22

n

g(0) = 0, g(1) = 1⇒ c1 = 1 , c2 = −1 =⇒ g(n) = 3n − 2n

www.Bshams.ir

www.Bshams.ir

Page 20: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

11 üµÈ𥠢ãõ .1.2

tn =

2tn−1 − tn−2t0 = 1

t1 = 3

: Ûtn − 2tn−1 + tn−2 = 0 =⇒ x2 − 2x + 1 = 0⇒ x1 = x2 = 1

⇒ tn = c1 + c2n t0 = 1 , t1 = 3⇒ c1 = 1, c2 = 2 =⇒ tn = 1+ 2n

tn =

2tn−1 + 1

t0 = 0

t1 = 1

: Ûtn = 2tn−1 + 1 , tn−1 = 2tn−2 + 1⇒ tn − tn−1 = 2tn−1 − 2tn−2

⇒ tn − 3tn−1 + 2tn−2 = 0⇒ x2 − 3x + 2 = 0

⇒ x1 = 1, x2 = 2 , t0 = 0, t1 = 1 =⇒ tn = 2n − 1

:´ °þ® ßÚÞûÂè üµÈ𥠢ãõ Û¤Àî üõ ëÀ¬ Âþ¥ üõÞä Ûت ¤¢ î ´ °þ® ßÚÞûÂè üµÈ𥠢ãõ

: ÀþÂÚ ÂÑ÷ ¤¢

a0tn + a1tn−1 + a2tn−2 + . . . + aktn−k =

bn1p1(n) + bn

2p2(n) + . . . + bn

mpm(n)

( .ÀµÆû ´ ø üÖÖ ¢Àäû ai, bj ø ÀµÆû di¤¢ ¥ ýÜÞ À pi(n) ): ÝÆþ÷ üõ Âþ¥ ¤¬ ¤ Ê¿Èõ ó¢ãõ ¢ãõ ¥ µ¨¢ ßþ ýÂ

(a0xk + a1x

k−1 + · · ·+ ak)(x− b1)d1+1(x− b2)

d2+1 · · · (x− bm)dm+1 = 0

ó¢ãõ ýû Èþ¤ ±¨½õ ¥ Å .Ýî üõ ±¨½õ ¤ ó¢ãõ ýû Èþ¤ ų¨üõÞä ö üõ Àª µÔð ßÚÞû ¢ãõ ¢¤õ ¤¢ »÷ Èõ fÖì¢ üªø¤

.¢Âî ±¨½õ ¤ ó¢ãõ:Ýþ¤¢ ¤ Âþ¥ ýó¢ãõ ñ·õ ýÂ

tn − 7tn−1 + 12tn−2 = 2n + n + 3n(n + 1)

: Ýþ¤ø üõ ´¨À ¤ Ê¿Èõ ýó¢ãõ(x2 − 7x + 12)(x − 2)0+1(x − 1)1+1(x− 3)1+1 = 0

⇒ (x− 3)(x − 4)(x − 2)(x− 1)2(x − 3)2 = 0

www.Bshams.ir

www.Bshams.ir

Page 21: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 12

⇒ r1 = 1, r2 = 1, r3 = 2, r4 = 3, r5 = 3, r6 = 3, r7 = 4

⇒ tn = c1(1)n +c2n(1)n +c3(2)n +c4(3)n +c5n(3)n +c6n2(3)n +c7(4)n

: ñ·õ:Àî Û ¤ Âþ¥ üµÈð¥ ó¢ãõ

t(n) =1 n = 1

2t(n2) + n o.w

:Û. Ýî üõ Û Âþ¥ Âçµõ Âç ¥ ù¢Ôµ¨ ¤ ñ·õ ßþ

n = 2k ⇒ t(n) = t(2k)

t(2k) = 2t(2k

2) + 2k = 2t(2k−1) + 2k

g(k) = t(n)

⇒ g(k) = 2g(k − 1) + 2k ⇒ (x− 2)(x − 2) = 0⇒ r1 = 2, r2 = 2

=⇒ g(k) = c12k + c2k2

k 2k = n =⇒ log2 n = k

t(n) = c1n + c2n logn2

t(1) = c1 = 1 t(2) = 2t(1) + 2 = 4 = 2c1 + 2c2 ⇒ c2 = 1

=⇒ t(n) = n + n logn2

: ñ·õ:Àî Û ¤ Âþ¥ üµÈð¥ ó¢ãõ

T (n) =

1 n = 13

2n = 2

3

2T (n

2)− 1

2T (n

4)− 1

n o.w

:Û: Ýþ¤¢ Âçµõ Âç ¥ ù¢Ôµ¨ ¥

n = 2k =⇒ T (2k) = 3

2T (2k−1)− 1

2T (2k−2)− 1

2k =⇒g(k) = 3

2g(k − 1) − 1

2g(k − 2) − (1

2)k =⇒ (x2 − 3

2x − 1

2)(x − 1

2) = 0 ⇒

r1 = r2 = 1

2, r3 = 1 =⇒ g(k) = c1 + c2(12 )k + c3k(1

2)k =⇒

www.Bshams.ir

www.Bshams.ir

Page 22: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

13 üµÈ𥠢ãõ .1.2

T (n) = c1 + c21

n + c3lg nn ,

c1 + c2 = 1

c1 + c22

+ c32

= 3

2

c1 + c24

+ c32

= 3

2

=⇒ T (n) = 1+ lg nn

.Àî Û ¤ Âþ¥ ó¢ãõ : ñ·õ

t(n) + nt(n− 1) = 2n!t(0) = 1

t(n) + nt(n− 1) = 2n! =⇒ t(n)n! + t(n−1)

(n−1)!= 2

t(n)n! = g(n)

g(n) + g(n− 1) = 2 =⇒ (x− 1)(x + 1) = 0

=⇒ r1 = −1, r2 = 1 =⇒ g(n) = c1(−1)n + c2(1)n

t(n) = −12

n!(−1)n + 3

2n!

: ñ·õ.Àî Û ¤ Âþ¥ ó¢ãõ

T (n) =

a n = 0

b n = 1

1+T (n−1)T (n−2)

o.w

: Û

T (0) = a T (1) = b T (2) = 1+ba T (3) = 1+a+b

ab T (4) = a+1b

T (5) = a T (6) = b T (7) = 1+ba =⇒ T (n) = T (n mod 5) n > 4

: ñ·õ.Àî Û ¤ Âþ¥ ó¢ãõ

www.Bshams.ir

www.Bshams.ir

Page 23: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 14

t(n) =

1

4−t(n−1)n > 1

1 n = 1

:Ût(2) = 1

3, t(3) = 3

11, t(4) = 11

41=⇒ tn = pn

qn

pn+1

qn+1= t(n + 1) = qn

4qn−pn=⇒ qn+1 = 4qn − pn

pn+1 = qn =⇒ pn = qn−1

qn+1 = 4qn − qn−1 =⇒ (x2 − 4x + 1) = 0 =⇒ x = 2±√3

=⇒ qn = c1(2+√3)n + c2(2−

√3)n q2 = 3, q3 = 11

üµÈð¥ ýû ݵþ¤Úó 2.2ù¢ ¤ üþÂÖµ¨ ¤µ¡¨ î ¢¤¢ ¢ø öØõ ßþ üÆþ÷ õ÷ ýû ö¥ ü¡Â ¤¢þ ×þ ý üõÀÖõ Û ù¤ ×þ î ´¨ ö üþÂÖµ¨ ¤µ¡¨ ¥ ¤Ñõ ,Ýî ý¥¨µª¢ üþÂÖµ¨ Τ ×þ ùøä øÀª É¿Èõ Û±ì ¥ óbÆõ ¥ óø ´ã®ø ÀØ÷ üãþ ÀþÞ÷ ͱÂõ ö Û±ìõ ýÜÞ À þ ×þ ¤ ¡ ÜÞ À÷µ î ݪ㨠¤ Û ù¤ ßþ Ý÷µ ¢ª µÆ÷¢ ¡ ýÜÂõ ¥ Û±ì óbÆõ Û ù¤ Âð

.Ýþ ´¨¢ ÜÂõ ßþ ¤¢ Û ù¤ ×þ ø Ýû¢

www.Bshams.ir

www.Bshams.ir

Page 24: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

15 üµÈð¥ ýû ݵþ¤Úó .2.2

:ý÷û ýû  óbÆõ¥ üØþ ýø¤ ,À÷ ùÀª ý¤Áð ù¤Þª 3ø2ø1 ýû ù¤Þª Üõ ¨ Àî ­Âê

î À÷ µêÂð ¤Âì ý¤Ï ô iÜõ ýø¤ ×Æþ¢ n ßþ ,¢¤¢ ¤Âì ×Æþ¢ n û Üõßþ î ´¨ ö éÀû .´¨ µêÂÚ÷ ¤Âì µØî ×Æþ¢ ýø¤ ýµð¤Ã ×Æþ¢ ÃðÂûùÀ÷Þì üØÞî Üõ ¥ ù¢Ôµ¨ ¤î ßþ î ¢Âî ÛÖµõ ô jÜõ ¤ ×Æþ¢ n

¤ Âû ø ¢Âð üÞ÷¤Âì µØî ×Æþ¢ ýø¤ µð¤Ã ×Æþ¢ ÃðÂû ø ¢Âð üõ ¤¬.¢Èõ ¹ ×Æþ¢ ×þ ú

i −→ j i + j + x = 1+ 2+ 3 −→ x = 6− (i + j)

i j 6-(i+j)

void hanoi(int n,int i,int j)

if(n > 0)

hanoi(n-1,i,6-(i+j)) ;

cout i ”→” j ;

hanoi(n-1,6-(i+j),j);

T (0) = 0

T (n) = T (n− 1) + 1+ T (n− 1) =⇒T (n) = 2 T (n− 1) + 1⇒ T (n) = 2n − 1

www.Bshams.ir

www.Bshams.ir

Page 25: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 16

:ßþÂÞöµ÷ ¤ üØÆþ¢ ºû ý÷û  óbÆõ ¤¢ ö ܨø î ÀÆþ üÞµþ¤Úó¢Àã î üµÈð¥ Τ) ¢Âî ÛÖµõ ÅØãó þ ô j Üõ ô i Üõ ¥ fÞÖµÆõ

(.Àî ±¨½õ Àû¢ üõ ¤ ô j Üõ ×Æþ¢ n ñÖµ÷ ý ô¥ ýû ´îÂ: Û

Void Hanoi (int i , int j)

if (n > 0)

Hanoi(n-1, i , j);

cout i ”→ ” 6− (i + j);

Hanoi(n-1, j , i);

cout 6− (i + j) ”→ ” j;

Hanoi(n-1, i , j);

T (0) = 0

T (1) = 2 ⇒ T (n) = 3n − 1T (n) = 3 T (n− 1) + 2

: ñ·õ¤ ¤÷ ßþ ýû ÷¡ ¥ ü¡Â Ýû¡ üõ î Ýþ¤¢ n ñÏ ý¤÷ Àî ­Â꤬ ßþ¤¢ .Àª±÷ Ýû ¤ø¹õ ýÀÔ¨ ÷¡ ¨ ºû î Ýî ýÃõ Ù÷¤ ý¤Ï ¤ Àî üõ ¢¹þ ¤ ¢ÊÖõ ßþ ý ßØÞõ ýû ´ó ôÞ î üµÈð¥ ݵþ¤Úó ¢ÊÖõ ßþ ý ¤ ßØÞõ ¢Àã î üµÈð¥ Τ ß»Þû .Àþ¤ø ´¨¢Ù÷¤ ø À÷ Ù÷¤ ÀÔ¨ ÷¡ n î ´¨ ö ­Âê).Àþ¤ø ´¨À Ã÷ ¤Àû¢ üõ õ

(.Ýî ýÃõ Ù÷¤ Ýû¡ üõ ù¨

www.Bshams.ir

www.Bshams.ir

Page 26: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

17 üµÈð¥ ýû ݵþ¤Úó .2.2

.............a

a[1] a[2] a[n]

a[1]

ù¨

ÀÔ¨

ù¨

ÀÔ¨a[2]

a[2]

ù¨

ÀÔ¨ a[3] ù¨

a[3]a[3]

a[3]

Void Coloring (int n)if (n == 1)

printf(’’); printf(’•’);else if (n == 2)

printf(’’); printf(’•’); printf(’•’); printf(’••’); else if (n == 3)

printf(’••’); printf(’••’); printf(’••’); printf(’•’);printf(’ • ’); printf(’• ’); printf(’• • •’);

else •.Coloring(n-1);

•.Coloring(n-2);

•.Coloring(n-3);

www.Bshams.ir

www.Bshams.ir

Page 27: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 18

a(n) =

2 n = 1

4 n = 2

7 n = 3

1× a(n− 1) + 1× a(n− 2) + 1× a(n− 3) else

: ñ·õÝÞþÃîõûÆþÖõ ¢Àã ÛìÀ Ýû¡ üõ.Ýþ¤¢ ¤µ¡ ¤¢ n ñÏ ý þ¤¢Àã ÛìÀ î Àû¢ ¤ ¤ üµÈð¥ Τ . Ýþ¤ø ´¨À ¤ þ¤ ÝÞ÷ üõ ø

.Àî ±¨½õ ¤ ûÆþÖõ: Û

ö üõ Å ù¢Þ÷ À ¤ þ¤ ÷¡ ø¢ Ý÷ üõ Âþ¥ Ûت ÕÎõÀª ø¥ n Âðø Ýþ¤¢¥÷ ñø ÷¡ø¢ ÝÞ÷ üõ ø ÝÞþÃîõ ö¢¤ø ´¨À ý ÆþÖõ ×þ î ´Ôðø¢ ÝÞ÷ üõ ¤ ¢Àä n-2 ÝÞ÷ üõ ø ñø ¢Àä ø¢ ÝÞþÃîõ ¤ ¢Àä n-2 ÝÞþÃîõ Àþ

. 1´¨ ¥÷ ÆþÖõ ¨ fãÞ Å. Ýî ÆþÖõ ñø ¢Àä

︸ ︷︷ ︸2

︸ ︷︷ ︸n−2

: Ýþ¤¢ Å

T (n) =

1 n = 2

=⇒ T (n) = 3

2n− 2

T (n− 2) + 3 n = 2k

ùÀ ÷ õüì ý ÷¡ n-1 Å ù¢Þ ÷ À ¤ þ¤ ý ÷¡ ×þ Àª ¢Â ê n  ð ø÷¡ n-1 ßþ ý ¤ û ÆþÖõ ¢Àã Û±ì ýΤ ÕÎõ ø ´¨ ø¥ ý¢Àäß üþú÷ ÝÞ÷ üõø ÝÞþÃîõ ö¢Þ÷ À ý Ã÷ ÆþÖõ ø¢ ų¨, Ýþ¤ø üõ ´¨¢(32(n− 1)− 2) + 2fãÞ Å, Ýþ¤¢ ¥÷÷¡ n-1 ÝÞ÷ üõø ÝÞþÃîõ ø ñø ý÷¡

: Ýþ¤¢ Ûî ¤¢ Å. ´¨ ¥÷¢Âê n ý ÆþÖõ

ÆþÖõ ø¢ ø Ýþ¤¢ ÆþÖõ 2T (n2) ùÚ÷ , Ýî ÓÊ÷ ¤ þ¤ Ý÷ üõÀª ø¥ n Âð) 1

öÞû î. Ýþ¤¢ ´ó T (n) = 2T (n2) + 2 Ûî ¤¢ Å . ùøÂð Âû ÝÞ÷ üõ ø ÝÞþÃîõ ýÂ

(.Àû¢ üõ õ ¤ T (n) = 3

2n − 2

www.Bshams.ir

www.Bshams.ir

Page 28: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

19 üµÈð¥ ýû ݵþ¤Úó .2.2

T (n) =

0 n = 1

3

2(n− 1) n = 2k + 1

3

2n− 2 n = 2k

: AVL ´¡¤¢1 ùÂð Âû ´¨¤ ø ² ´¡¤¢ Âþ¥ áÔ¤ 鵡 î üø¢ø¢ ý¹µÆ ´¡¤¢ùÂð ö üõ O(log n) ÆþÖõ ý Š. ´¨ log n ¥´¡¤¢ ßþ áÔ¤ . Àª

. ¢Âî ´þÃþø ¤ û´¨ °Æ ý¤¢ ö ù ð  û î ü ø¢ø¢ ´¡¤¢ : ü ø¢ø¢ ý¹ µÆ ´¡¤¢

. Àª ´¨¤ À÷¥Âê ýøÆõ µØî ² À÷¥Âê Øþ¤Î

: ñ·õõ ¤ 4 áÔ¤ AVL ´¡¤¢ ×þ ýû ùÂð ¢Àã ÛìÀ î üµÈð¥ Τ

? ´¨ ôÀî ÀûÀ

: Û

 þ¥ á Ô ¤ ø n-1 , n á Ô ¤ AVL ´ ¡¤¢ ´ ¨¤ ´ Þ ¨ ´ ¡¤¢  þ¥ á Ô ¤. ´¨ n-2 ² ´Þ¨ ´¡¤¢

T(n-2) T(n-1)T(0) T(1) T(2) T(3) T(n)

T (n) =

1 n = 0

2 n = 1

4 n = 2

T (n− 1) + T (n− 2) + 1 o.w

www.Bshams.ir

www.Bshams.ir

Page 29: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 20

ý Τ T (n) = T (n− 2) + T (n− 1) + 1 ó±÷¢ ø ü÷±ê ó± ÷¢ ß:´¨ ¤Âì Âþ¥ ¤Ê

1 , 1 , 2 , 3 , 5 , 8 , 13 , 21 , 34 , 55

↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓1 , 2 , 4 , 7 , 12 , 20 , 33 , 54

T (n) = f(n + 2) + (−1)

f(n) = f(n− 1) + f(n− 2) f(0) = 1 , f(1) = 1

. Àî Û ¤ Âþ¥ Íþª ü÷±ê ó¢ãõ

f(n) = f(n − 1) + f(n − 2) f(0) = 0, f(1) = 1

x2 − x − 1 = 0 ⇒ r1 = 1+√5

2, r2 = 1−

√5

2

f(n) = c1(1+

√5

2)n + c2(

1−√5

2)n

⇒ f(n) = 1√5(1+

√5

2)n − 1√

5(1−

√5

2)n

: AVL ´¡¤¢ ¤¢ «¡ ýùÂð ´þÃþø ý ÆþÖõ ·îÀ

n ≥ T (h) = f(h + 2)− 1 =⇒ n ≥1√5

(1+√5

2)h+2 − 1 =⇒

n + 1 ≥ 1√5

(1+√5

2)h+2 =⇒ log(n+1)

ϕ ≥ log1√5

ϕ +(h + 2) =⇒

h + 2 ≤ log(n+1)ϕ − log

1√5

ϕ =⇒ h ∈ O(log√5(n+1)

ϕ ) =⇒ h ∈ O(logn2)

þ

h + 2 ≤ log(n+1)ϕ − log

1√5

ϕ = log(n+1)

2× log2ϕ + log

√5

ϕ = 1.44 log(n+1)

2+1.67

=⇒ h ≤ 1.44 log(n+1)

2−0.33 =⇒ h ∈ O(logn

2)

logn2 üãþ ´¡¤¢ áÔ¤ ù¥À÷ ùÂð ×þ ´þÃþø ý ÆþÖõ ·îÀ ßþÂ

. ´¨

www.Bshams.ir

www.Bshams.ir

Page 30: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

21 üµÈð¥ ýû ݵþ¤Úó .2.2

: ñ·õ±¨½õ ÀûÀ õ ¤ ÃþÞµõ ÀÜî n üø¢ø¢ ý¹µÆ ýúµ¡¤¢ ¢Àã î ýΤ

. Àî(c1 < c2 < · · · < cn ÃþÞµõ ø¢ ø¢ ÀÜî n)

ck

c1 < c2 < ... < ck−1 ck+1 < ... < cn

T (k − 1) T (n− k)

T (1) = 1 T (2) = 2

T (n) =∑n

k=1 T (k − 1)× T (n− k) = 1

n+1

(2nn

)(öî ¢Àä)

: ñ·õÀ . Ýî ±¨½õ ¤ A1, A2, · · · , An ÅþÂõ n ÂÌܬ Ýû¡ üõ

? ¢Âî ý¤Áðõ÷ ® ´ú ¤ û ÅþÂõ ßþ ö üõ ÕþÂÏ: Û

T (0) = 0

T (1) = 1 (A)

T (2) = 1 (AB)

T (3) = 2 A(BC), (AB)C

T (4) = 5 A(BCD), (AB)(CD), (ABC)D

⇒ T (4) = T (1).T (3) + T (2)T (2) + T (3).T (1)...

(A1 · · ·Am)︸ ︷︷ ︸m

(Am+1 · · ·An)︸ ︷︷ ︸n−m

T (n) =n−1∑

m=1

T (m)T (n−m) =1

n

(2n− 2n− 1

)

:ßþÂÞ.ÀþÞ÷ ± Àóõ â ¥ ù¢Ôµ¨ ¤ Û±ì ñ·õ ø¢ ý Τ ø¢

:ñ·õ

www.Bshams.ir

www.Bshams.ir

Page 31: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 22

¤¢ ùÀª ÂûÒ ýû ÂÔ¬ ¢Àã î ´¨ ±µãõ ü÷õ¥ n ñÏ 10 ý±õ ¤¢ ýÀî¤ n ñÏ Â±µãõ ýû Àî Ûî ¢Àã î ÀÆþ üµÈð¥ Τ ×þ Àª ø¥ ö

.ÀþÞ÷ ±¨½õ

:Ûn ñÏ Â±µãõ ýûÀî ôÞ ¢Àã = a(n)

n-1 ñÏ Â±µãõ ýûÀî ôÞ ¢Àã = a(n− 1)

(.Àª±÷ ÂÔ¬ ñø ÷¡ î üµó ¤¢)

´ó 9 a(n − 1)

︷ ︸︸ ︷ ︷ ︸︸ ︷1,2,...,9

.´¨ ¢Âê Çþû ÂÔ¬ ¢Àã î n-1 ñÏ üþû µª¤ ôÞ ¢Àã = b(n− 1)

(.Àª ÂÔ¬ ñø ÷¡ î üµó ¤¢)

b(n − 1)

︷ ︸︸ ︷0

=⇒ a(n) = 9a(n− 1) + b(n− 1)

1 2 n − 1

10 10 . . . . . . . . . 10

(n-1) ñÏ û µª¤ ôÞ ¢Àã= a(n-1)+b(n-1)=10n−1

a(n− 1) + b(n− 1) = 10n−1 ⇒ b(n− 1) = 10n−1 − a(n− 1)

=⇒ a(n) = 9a(n− 1) + 10n−1 − a(n− 1) = 8a(n− 1) + 10n−1

: ñ·õ¢¤ø ´¨À Í¡ n ö üõ î ¤ ü÷ ÝÞþÃîõ î ÀÆþ üµÈð¥ Τ

.Àû¢ öÈ÷

www.Bshams.ir

www.Bshams.ir

Page 32: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

23 üµÈð¥ ýû ݵþ¤Úó .2.2

: Û

1

2

1

2 3

4

12

3 4

5 67

T(1)=2

T(2)=4

T(3)=7

T (1) = 2, T (2) = 4, T (3) = 7, T (4) = 11, . . .

ôn Í¡ ö¢Âî ê ® ý Å. ¢Âî ¢¹þ ö üõ ÷ T (n− 1) Í¡ n− 1¹µ ÷ ¤¢ Å ¢ª üõ ê® ÀþÀ ÷ n î ¢Âî âÎì ¤ Û±ì Í¡ n − 1Àþ

.´ª¢ Ýû¡ ÷ T (n) = T (n− 1) + n

T (n) = T (n− 1) + n =⇒ T (n) =n(n + 1)

2+ 1

: ñ·õ¢Àä ßþ ö üõ ÕþÂÏ À Ýþù¢Âî ´êþ¤¢ ¤ n ≥ 2 üã±Ï ¢Àä Àî­Âê

?¢Âî ¥Âê 2 ýøÆõ µð¤Ã üã±Ï ¢Àä áÞ¹õ ¤ üã±Ï

www.Bshams.ir

www.Bshams.ir

Page 33: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 24

: ÛT (2) = 1 : 2

T (3) = 1 : 3

T (4) = 2 : 2+ 2,4

T (5) = 3 : 2+ 3,3+ 2,5

T (6) = 5 : 2+ 2+ 2,2+ 4,3+ 3,4+ 2,6

ê® ¤ " 2+ ' ¤±ä ô k−2 ¢Àä ýû¥Âê Àþ üã±Ï ¢Àä ßõ k ýÂ: Ýî ê® Àø ×þ , ¢Àä ßõ k − 1 ýû¥Âê ñ cø ýûÀ÷ø âÞ ø Ýî

T (5) : 2+ (3), (2+ 1) + 2︸ ︷︷ ︸3+2

, (4+ 1)︸ ︷︷ ︸5

T (6) : 2+(2+2), 2+(4), (2 + 1) + 3︸ ︷︷ ︸3+3

, (3+ 1) + 2︸ ︷︷ ︸4+2

, (5+ 1)︸ ︷︷ ︸6

:Ýþ¤¢ ¹µ÷ ¤¢

T(n)=

1 n = 2

1 n = 3

T (n− 1) + T (n− 2) o.w

: ñ·õ×þ ø¢ þ üóµõ ÂÔ¬ ø¢ î ´¨ ±µãõ ü÷õ¥ 0,1,2 ôì¤ Ûõª n ñÏ ý µª¤¤ n ñÏ Â±µãõ ýû µª¤ ¢Àã î ÀÆþ üµÈð¥ Τ ,Àª µªÀ÷ üóµõ

.Àû¢ öÈ÷:

.n ñÏ Â±µãõ ýûÀî ôÞ : αn

.À÷ª áøª ×þ î n ñÏ Â±µãõ ýûÀî ôÞ : an

.À÷ª áøª ÂÔ¬ î n ñÏ Â±µãõ ýûÀî ôÞ : bn

.À÷ª áøª ø¢ î n ñÏ Â±µãõ ýûÀî ôÞ : cn

αn = an + bn + cn

an = bn−1 + cn−1 , bn = an−1 + cn−1 , cn = an−1 + bn−1 + cn−1

⇒ cn = αn−1 ⇒ cn−1 = αn−2

=⇒ αn = an + bn + cn = 2an−1 + 2bn−1 + 3cn−1 =

www.Bshams.ir

www.Bshams.ir

Page 34: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

25 üµÈð¥ ýû ݵþ¤Úó .2.2

2(an−1 + bn−1 + cn−1) + cn−1 = 2αn−1 + cn−1

=⇒ αn = 2αn−1 + αn−2

: ñ·õéÂÏ À÷ üõ ÍÖê î ´¨ ½Ô¬ ßþ ¤¢ üªõ .Ýþ¤¢ n×m ½Ô¬×þýûÂÆõ ôÞ î ÀÆþ ¤ üµÈð¥ Τ .Àî ´î ´¨¤ éÂÏ þ ø

.Àû¢ ¤ ¤ B ÀÊÖõ A bÀ±õ ¥ ©õ ´î ý ßØÞõ: Û

n

︸ ︷︷ ︸m

A

B6

d

T(n,m-1)

T(n-1,m)-

c

©õ Àª m ñøÀ ýú÷ µ¨ ¢Àã ø n ñøÀ ýûÂΨ ¢Àã Âð Ûت ¤¢T (n, m − 1) ´ó ßþ ¤¢ î ¢¤ÁÚ c ÎÖ ÷¥ À þ þ B ÎÖ ÷ öÀ¨¤ ý  ÂÆõ T (n− 1, m) ´ó ßþ ¤¢ î Àî ¤±ä d ÎÖ÷ ¥ Àþ þ ø ¢¤¢ ¢øÂÆõ

: Ýþ¤¢ ¹µ÷ ¤¢ .¢¤¢ ¢øT (m, n) = 1× T (n, m− 1) + T (n− 1, m)× 1 , T (n,0) = T (0, m) = 0

T (m, n) =(

m + n

n, m

)

:ßþÂÞÝþÞ÷ üõ ÝÆÖ ýøÆõ ´ÞÆì n ¤ á® , á® ýøƵõ ¶Ü·õ ×þ ¤¢Àþ¤ø ´¨¢ üµÈð¥ ýΤ, ÝþÞ÷ üõ Û¬ø Ýû ¤ ú÷ û âÜ® ¥õ ø

.Àû¢ ´¨¢ ¤ ùÀª µ¡¨ ýû á® ý¥µõ ôÞ î: ßþÂÞ

éÂÏ ú î ¢¤¢ ¢ø ½Ô¬ ßþ ¤¢ ý¤õ .Ýþ¤¢ ¤µ¡ ¤¢ n*n ý ½Ô¬üµìø ø ù¢Þ÷ ´î áøª ½Ô¬ ý ¥ ¤õ ßþ.Àî üõ ´î ´¨¤ þ ßþ

www.Bshams.ir

www.Bshams.ir

Page 35: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 26

À÷ üõ î üþúµó ¢Àã .Àî üõ ´î ßþ éÂÏ À¨¤ üõ ÂÎì î?Àþ¤ø ´¨À ¤À¨Â ÛÖõ ýÎÖ÷

: ßþÂÞýû ¶Ü·õ ¤ ö ö üõ ´ó À .Ýþ¤¢ ¤µ¡ ¤¢ À½õ üãÜ® n ×þ

?¢Âî ¥Âê Óܵ¿õ:ßþÂÞ

.À üµÈð¥ ø ýÂþ ©ø¤ ø¢ ¤ ýÌä n äÞ¹õ ×þ ýû äÞ¹õ Âþ¥Âð ÝþÂð üõ ÂÑ÷ ¤¢ ´ ×þ Ìä Âû ý¥ ,ýÂþ ©ø¤ ¤¢ : üþÞû¤

üõ ÂÑ÷ ¤¢ 0 ¤ ö Àª±÷ äÞ¹õ Âþ¥ Ìä Âð ø 1 ¤ ö Àª äÞ¹õ Âþ¥ Ìä.ÝþÂð

0 0 0 0

4

3

1 2 3 4

0 0 0 1

0 0 1 0

¤¢ ø ÝÆþ÷ üõ ¤ø¢ ¤ ýÌä n-1 ýû äÞ¹õ Âþ¥ Ã÷ üµÈ𥠩ø¤ ¤¢.Ýî üõ ê® ¤ Ìä ßõ n ôø¢ Óþ¢¤

:ßþÂÞn2 1 ¢Àä ö ¤¢ î ö üþø¢ âÂõ ø µêÂð ¤ n ¢Àä î ÀÆþ ý õ÷Â

.ÀûÀ õ ¤ À÷ ùÀª ùÀ:ßþÂÞ

.ÀþÞ÷ ý¥¨ ù¢ ¤ tic tac toe ý¥

(Master Theorem) ü¨¨ Ìì 3.2ùÚ÷ f : N → R+ , b > 1 , a ≥ 1 ö ¤¢ î T (n) = a T (n

b )+ f(n) Âð: ´¨ ¤Âì Âþ¥ ¸þµ÷

ù Ú ÷ À ª ¤Â ì ε > 0 × þ ý f(n) ∈ O(nlog ab−ε)  ð (1

www.Bshams.ir

www.Bshams.ir

Page 36: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

27 (MASTER THEOREM) ü¨¨ Ìì .3.2

.T (n) ∈ Θ(nlog ab ) î ¢ª üõ ¹µ÷

. T (n) ∈ Θ(nlog ab (log n)k+1) ùÚ÷ Àª f(n) ∈ Θ(nlog a

b (log n)k) Âð (2

× þ ¥ 0 < δ < 1 , ε > 0 × þ ýÂ ø f(n) ∈ Ω(nlog ab +ε) Â ð (3

. T (n) ∈ Θ(f(n)) ùÚ÷ a f(nb ) < δ f(n) ݪ µª¢ Àã üþ

¤Â ì ý ¹ µ ÷ ¥ ¢Â ð ¤Â ì à ÷ bnb c þ dn

b e , nb ý Â ð µ ± ó)

( . ´¨

.´¨ ´ÞÆì ø¢ Ûõª ±ö  ýû n ýø¤ T(n) â î ù¢¨ ­Âê ×þ ´½¤ Ìì ´ÞÆì ßóøÀûÀõ öÈ÷ ´ÞÆì ßõø¢øÀî üõ Ãó÷ n = 1, b, b2, .. üãþ b > 1¥ ¼½¬ ýûê¬ ø Àî À 㨠üã±Ï ´±·õ ¢Àä Þû À÷ üõ Ãó ÷ ßþ ¤Î î

.¢ø¤ üõ ¤î ÜÿÆõ ÓÖ¨ø Óî ü¨¤Â ý ü®þ¤ ýúØØÝþÞ÷ üõ ù¢¨ ¤ ­Âê ý Ìì ± ý üµìø ݪ °ìÂõ Àþ õ ñ ßþ ¤¢ ¤ T(n) À÷õ üã ñ·õ öä . À÷¨Â ÍÜè ¸þµ÷ ¤ õ Àþ±÷ ý¥¨ ù¢¨ ßþüµ÷Þ® ºû ¤¬ ßþ ¤¢, ´¨ n  ´¨ 2 ¥ üþû ö n üµìø î ÀþÂÚ ÂÑ÷

:¢Þ÷ ÓþÂã ¤¬ ßþ ¤ T(n) â ö üõ Âþ¥ , T(n)∈O(n) î ´Æ÷

T(n)=

n n=1,2,3,..n2 otherwise

. T(n)∈O(n2) î üó ¤¢: ¼½¬ ýû ö ý ±

.´¨Âþ¥ üµÈð¥ ΤÃó÷ ü¨¨ Ìì ±´ÞÆì ßóø

T (n) = aT (nb ) + f(n)

www.Bshams.ir

www.Bshams.ir

Page 37: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 28

b ö¢ ¼ ½¬ üõà ó î ´¨ b > 1¥ ü½½¬ ö n î ­Âê ß þ ´½ üµÈð¥ ý Τ Û ýóbÆõ Ýó ßóø .¢¢Âð üõ ö Ýó ¨ ¤¢ Ãó÷ ßþ.´Æ÷. À î ü õ × î Þ Ú ¨ × þ Û õ ª ¤ ± ä × þ ýøÆ ý ób Æ õ ¤ ¤ îÁ õý ü Ü ± ì Ý óø¢¥ Ý ó ß õ¨ øÀ þ Þ ÷ üõ ß ã ¤ ÞÚ ¨ ýù¢øÀ½õ Ý ó ß õø¢.ÀþÞ÷ üõ ù¢Ôµ¨ , ´¨ b¥ ü½½¬ýû ö n Øþ­Âê ü¨¨ ýÌì ±

: 1Ýóýûö ¥ üÔõ ÷ üã f(n) ø Àª ´ ¢Àä ø¢ b > 1ø a ≥ 1 Àî­Âêüõ ÓþÂã Âþ¥ ¤¬ b ¼½¬ ýû ö ýø¤ ¤ T(n)â .Àª b¥ ü½½¬

. Ýî

T(n)=

θ(1) n=1

aT (nb ) + f(n) n = bi

. ´¨ üµ±·õ ¼½¬ ¢Àä i î: Ýî üõ ´ ñ

T (n) = θ(nlogab ) +

logn−1

b∑

j=0

ajf(n/bj) (1)

: ±ø ´¨f(n) ©¥¤ ý¤¢ ö ýÈ þ¤ î Ý î üõ ù¢ Ô µ¨ üµÈ𥠴¡¤¢ ¥ õßþ ¥ ôÀîÂû .ÀµÆû f(n/b) ©¥¤ ý¤¢ ôÀî Âû î ,Àª üõ À÷¥Âê a ý¤¢Èþ¤ ¥ 2 ܬê ùÂð a2õ Å, ´¨ f(n/b2) ©¥¤ À÷¥Âê aý¤¢ û À÷¥Âêý¤¢ ôÀî Âû î ¢¤¢ ¢ø Èþ¤ ¥ j ܬê ùÂð aj¢Àã üÜî ¤Ï . Ýþ¤¢Âû ø ´¨ T (1) = Θ(1)   ´¡¤¢ ßþ ï Âû ©¥¤.Àª üõ f(nj

b ) ©¥¤Ýû¡ ï nloga

b ¢Àã ø lognb áÔ¤ üµ¡¤¢ Å.¢¤¢ ¤Âì logn

b ÕÞä ¤¢ ïÂ. ´ª¢

www.Bshams.ir

www.Bshams.ir

Page 38: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

29 (MASTER THEOREM) ü¨¨ Ìì .3.2

?

6

lognb

Θ(nlogab )

nlogab

f(n)

? j

a2f(n/b2)f(n/b2)f(n/b2)

Θ(1)Θ(1)

f(n/b) f(n/b) f(n/b)

...................................................................

Θ(1)Θ(1)Θ(1)Θ(1)Θ(1)

a

a a a

a a a a a a a a a

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

...........

-

af(n/b)

f(n)

︸ ︷︷ ︸Θ(1)Θ(1)Θ(1)

ýû ï ©¥¤ ø ´¡¤¢ ¥ ¼Î¨ Âû ©¥¤ ö¢Âî âÞ ¤ (1) Τ Ý÷ üõ õj Û·õ ¼Î¨ Âû ©¥¤ , ´¨ ùÀª ù¢¢ öÈ÷ Ûت ¤¢ î ÷Ú÷Þû. Ýî ±¨½õ öÞû áÞ¹õ ßþÂøÀª üõ ajf(n/bj) ¤¬ ´¨üÜ¡¢ ýû ùÂð ý¤¢ î

: ´¨ Âþ¥ ¤¬ û ¼Î¨ üÜ¡¢ ýû ùÂð

logb n−1∑

j=0

ajf(n/bj)

´¨¢ (1) Τ °Â ßþ . Àª üõ Θ(nlogab )  Ã÷ û ï ôÞ ©¥¤ø

.Àþ üõ¨ üµÈ𥠴¡¤¢ °Æ  Øþ öø¢Þ÷ ù¤ª üÔþÂÒ µØ÷ Àþ ´ÞÆì ßþ ¤¢:Àª Âþ¥ ¢¤õ ¨ ÕÎõ °Â À÷ üõ ü¨¨ ýÌì ¤¢ ùÀª ù¢Â ô÷ ¢¤õüÜ¡¢ ýû ùÂð ø Èþ¤ üãþ , Àª µÆøû ï ©¥¤ ´¡¤¢ Ûî ©¥¤ (1

.Àª µªÀ÷ ü÷À Â. Àª ùÀª Ç¿ ´¡¤¢ Ψ ¤¢ ýøÆõ f±þÂÖ ¤¬ ´¡¤¢ Ûî ©¥¤ (2

üÜ¡¢ ýû ùÂð ø û ï øÀª µª¢ üÚµÆ Èþ¤ ©¥¤ ´¡¤¢ Ûî ©¥¤ (3. Àª µªÀ÷ ü÷À Â

: 2Ýóýûö ¥ üÔõ ÷ üã f(n) ø Àª ´ ¢Àä ø¢ b > 1ø a ≥ 1 Àî­Âê

: ݪ µª¢Âþ¥ ¤¬ ¤ g(n) â ø .Àª b¥ ü½½¬

www.Bshams.ir

www.Bshams.ir

Page 39: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 30

g(n) =logn−1

b∑

j=0

ajf(n/bj) (2): ´ª¢ Ýû¡ ùÚ÷

Ý þ¤¢ , ε > 0 ´ ± · õ ´  þ¢ Ö õ ý , f(n) = O(nlogab −ε) ð(1

. g(n) = O(nlogab )

. g(n) = Θ(nlogab . log n) ùÚ÷ f(n) = Θ(nloga

b )Âð(2

ݪ µª¢ n ≥ b ´  þ¢Öõ ôÞ ø c < 1´  þ¢Öõ ¥ üÌã ý Âð(3.g(n) = Θ(f(n)) ùÚ÷ af(n/b) ≤ cf(n)

:±Ý þ¤¢ ¹ µ ÷ ¤¢ Å f(n) = O(nloga

b −ε) Ý þ¤¢ ñø¢¤ õ ± ý •Àþ üõ ´¨À Âþ¥ Τ (2)Τ ¤¢ ý¤ÁÚþ î f( n

bj ) = O((n/bj)logab −ε)

:

g(n) = O

logn−1

b∑

j=0

aj( n

bj

)logab −ε

(3)

: Ýþ¤¢ ü¨Àû ýû ý¨ ¥ ù¢Ôµ¨ ß»Þû

logn−1

b∑

j=0

aj( n

bj

)logab −ε

= nlogab −ε

logn−1

b∑

j=0

(abε

blogab

)j

= nlogab −ε

logn−1

b∑

j=0

(bε)j

= nlogab −ε

(bε logn

b − 1bε − 1

)

= nlogab −ε

(nε − 1bε − 1

).

¤ ¬ ¤  ¡ ¤ ± ä ö ü õ. À µ Æ û ´ εø b î ý¤ Ï .´ª÷ nloga

b −εO(nε) = O(nlogab )

www.Bshams.ir

www.Bshams.ir

Page 40: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

31 (MASTER THEOREM) ü¨¨ Ìì .3.2

:Àþ üõ ´¨À Âþ¥ Τ (3) Τ ¤¢ ¤±ä ßþ ö¢¢ ¤Âì

g(n) = O(nlogab )

.¢ª üõ ± ñø ¢¤õ °Â ßþÀ

Ýþ¤¢ f(n) = Θ(nlogab ) ýΤ ôø¢ ¢¤õ ý •

f(n/bj) = Θ((n/bj)logab )

:Àþ üõ ´¨À (4)Τ (2)Τ ¤¢ ý¤ÁÚþ ø

g(n) = Θ

logn−1

b∑

j=0

aj( n

bj

)logab

(4)

: Ýþ¤¢ Íø ¤ ý¥¨ ù¢¨ ¥

logn−1

b∑

j=0

aj( n

bj

)logab

= nlogab

logn−1

b∑

j=0

(a

blogab

)j

= nlogab

logn−1

b∑

j=0

1

= nlogab logn

b

: Ýþ¤¢ (4) Τ ¤¢ ¤±ä ßþ ö¢Âî ßÈ÷ î

g(n) = Θ(nlogab logn

b ) =⇒

g(n) = Θ(nlogab log n)

.Àª ´ Ã÷ ôø¢ ´ó î

ýû ö ý î ÝþÂÚ ¹µ÷ Ý÷ üõ (2) Τ ¥ ù¢Ôµ¨ ô¨ ¢¤õ ¤¢ •ý af(n/b) ≤ cf(n) î ­Âê ß þ . g(n) = Ω(f(n)) Ý þ¤¢, b ¼½¬

. f(n/b) ≤ (c/a)f(n) Ýþ¤¢ n ≥ b Âþ¢Öõ ôÞ ø c < 1´ Âþ¢Öõ üÌã

f(n/b) ≤ (c/a)f(n)⇒ f(n/bj) ≤ (c/a)jf(n)⇒ ajf(n/bj) ≤ (cjf(n))

www.Bshams.ir

www.Bshams.ir

Page 41: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 32

: Ýþ¤¢ (2) Τ ¤¢ ý¤Øµ¨¢ üÞî ñ

g(n) =logn−1

b∑

j=0

ajf(n/bj)

≤logn−1

b∑

j=0

cjf(n)

≤ f(n)∞∑

j=0

cj

= f(n)(

1

1− C

)

= O(f(n)).

Ý þ¤¢ , b ¼ ½ ¬ ý û ö ý Š.´ ¨ ´ c ö ¤¢ îß þÀ .g(n) = Θ(f(n)) ß þ g(n) = Ω(f(n)), g(n) = O(f(n))

.Àª ± Ã÷ 2 Ýó ô¨ ¢¤õ °Â

3 Ýó

ýûö ¥ üÔõ÷ üã f(n) ø Àª ´ ¢Àä ø¢ b > 1ø a ≥ 1 Àî ­Âêüõ ÓþÂã Âþ¥ ¤¬ b ¼½¬ ýû ö ýø¤ ¤ T(n)â .Àª b¥ ü½½¬

. Ýî

T(n)=

θ(1) n=1

aT (nb ) + f(n) n = bi

: ´ª¢ Ýû¡ ¤¬ ßþ ¤¢. ´¨ üµ±·õ ¼½¬ ¢Àä i î

ù Ú ÷, ε > 0 ´ Â þ¢ Ö õ ü Ì ã ýÂ f(n) = O(nlogab −ε) Â ð (1

.T (n) = Θ(nlogab )Ýþ¤¢

.T (n) = Θ(nlogab log n)) ùÚ÷ f(n) = Θ(nloga

b )Âð (2

www.Bshams.ir

www.Bshams.ir

Page 42: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

33 (MASTER THEOREM) ü¨¨ Ìì .3.2

üÌã ý  ðø ε > 0 ´  þ¢ Ö õ üÌã ý , f(n) = Ω(nlogab +ε)  ð (3

Ýþ¤¢ ùÚ÷ af(n/b) ≤ cf(n) ݪ µª¢ n ï¤Ã Âþ¢Öõ ø c < 1 ´ Âþ¢Öõ.T (n) = Θ(f(n))

:±:Ýî üõ ù¢Ôµ¨ 1 Ýó ¥ (1)Τ üþ¥ ¤ ý 2 Ýó ¢¤õ ¥ õ

: Ýþ¤¢ ñø ¢¤õ ýÂ

T (n) = Θ(nlogab ) + O(nloga

b ) = Θ(nlogab ),

: 2 ¢¤õ ý ø

T (n) = Θ(nlogab ) + Θ(nloga

b log n) = Θ(nlogab log n),

: 3 ¢¤õ ý ø

T (n) = Θ(nlogab ) + Θ(f(n)) = Θ(f(n)),

:Âþ¥f(n) = Ω(nloga+ε

b )

www.Bshams.ir

www.Bshams.ir

Page 43: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 34

.Àî Û ¤ Âþ¥ ó¢ãõ : ñ·õT(n)=

1 n=13 T (n

2) +√

n else

(Ìì ñø ´ÞÆì §¨ Â): Ûf(n) =

√n = n

1

2 ∈ O(nlog 3

2−ε) a = 3 , b = 2

⇒ T (n) ∈ Θ(nlog 3

2)

.Àî Û ¤ Âþ¥ ó¢ãõ : ñ·õT(n)=

0 n=12T (n

2) + n− 1 else

(Ìì ôø¢ ´ÞÆì §¨ Â): ÛT (n) = 2 T (n

2) + n− 1

f(n) = n− 1 ∈ Θ(n) a = 2 , b = 2

Θ(n) = Θ(nlog 2

2(log n)0) ⇒ T (n) ∈ Θ(n(log n)0+1)

⇒ T (n) ∈ Θ(n log n)

.Àî Û ¤ Âþ¥ ó¢ãõ : ñ·õT (n) =

1 n=13 T (n

2) + n2 else

(Ìì ô¨ ´ÞÆì §¨ Â): Ûf(n) = n2 ∈ Ω(nlog 3

2+ε) a = 3 , b = 2

a f(nb ) = 3 (n

2)2 ≤ δ n2 ⇒ δ = 4

5

⇒ T (n) ∈ Θ(n2)

.Àî Û ¤ Âþ¥ ó¢ãõ : ñ·õT (n) =

c n=12 T (n

2) + log n! else

: Ûf(n) = log n! ∈ Θ(n logn) a = b = 2

Θ(n logn) = Θ(nlog 2

2(logn))

⇒ T (n) ∈ Θ(n (logn)1+1) ⇒ T (n) ∈ Θ(n (logn)2)

www.Bshams.ir

www.Bshams.ir

Page 44: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

35 û ݵþ¤Úó Ãó÷ .4.2

û ݵþ¤Úó Ãó÷ 4.2üþþ Û¬

ø¢ ¤ õ÷ ãÎì ×þ þ ݵþ¤Úó ×þ Âð.Àª üõ üþþ Û¬ , Û¬ ßóø ý ¤ t2 öõ¥ ýÂÚþ¢ ø t1 öõ¥ üØþ î ù¢Þ÷ ý¥¨ ù¢ Óܵ¿õ Ûت¤¢ ýÂb ݵþ¤Úó ý¥¨ ù¢ î üãõ ßþÀ.t1 ∈ θ(t2) ùÚ÷ Àª µª¢ ¥÷

.¢¤À÷ ݵþ¤Úó üð¤Ã ý±Âõ

ý¤Áð °Â Û¬¥÷  ý ¤ t2öõ¥ ýÂÚþ¢ ø t1 öõ¥ üØþ î Àª õ÷Â Ø ø¢ p2, p1Â𤢠,Àª µªÀ÷ Ýû  ü±÷  ºû õ÷Â Ø ø¢ ßþ ö  ùøä ,Àª µª¢

. ´¨ t1 + t2 ÂÂ p1, p2 üóµõ ýÂ ýÂ ô¥ öõ¥ ´ó ßþ

t1 + t2 ∈ θ(maxt1, t2)

×Þ ¤µ¨¢ Û¬ÝÆÖ ÂµØî ýà ¤Ãê ´¿¨ ¼Î¨ ¤¢ î ´¨ ý¤µ¨¢ ×Þ ¤µ¨¢ ÂûüõÀÖõ ¤µ¨¢ ß»Þû ø .´¨ θ(1) ¥ ¤µ¨¢ ßþ ý öõ¥ ,¢ª üÞ÷θ(1) ù¥À÷ ü÷õ¥î Àþ üõ ¢ ×Þ ¤µ¨¢ üûµõ ¢Àã °î ¥

.À÷¤¢ ¥÷

: ü÷õ¥ Ãó÷

:while ÖÜ Ãó÷i← 1

while (i <= m)

p(i)

i← i + 1

öÂî ×þ Ýû¡ üõ ,Àª ݵþ¤Úó ý ý ô¥ öõ¥ L Àî ­Âê1: Ýî üõ ÛÞä °Â ßþ .Ý Ýµþ¤Úó ýÂ

L ≤ O(1) + i← 1 ýÂO((m + 1)× 1) + ÆþÖõ ýÂO(mt) + û p(i) ô¹÷ ýÂO(m) + i← i + 1 ýÂ ýÂ

×þ ¥ µ±ó).p(i) ∈ O(t) üãþ.Àª t, p(i) ÃþÞµõ ýû ý üþ öÂî ×þ Àî ­Âê 1

(Àã üþ

www.Bshams.ir

www.Bshams.ir

Page 45: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 36

O(m) while goto ÛÞä ýÂ⇒ L < O(2+ 3m + mt)⇒ L ∈ O(max1, m, mt)

ôÀî ºû ö üÞ÷ øÀµÆû Ýúõ ýÂð ÝÞþÃîõ ßþ à ¨ Âûî ¢Þ÷ Àþ.¢Âî éÁ ¤

öÂî ×þ i Âû ý ¤¬ ö ¤¢ Àª ¢ þ¥ û p(i) ý ü÷õ¥ üðÀî Âð öõ¥ ¤¬ ö ¤¢ Ýõ ti ¤ üþ öÂî ßþ Âð ,ù¢Âî ±¨½õ¤ p(i) üþ

:´¨ Âþ¥ ¤¬

L ∈ O

(max1, m,

m∑

i=1

ti

)

:for ÖÜ Ãó÷öõ¥ ßþ ,¢ª üõ ý¥¨ù¢ while À÷õ ¤Ãê ´¿¨ ¼Î¨ ¤¢ for ¤µ¨¢ Âû

.´¨ while ÖÜ ýÂ öõ¥ Û·õ for ÖÜ ýÂfor i← 1 to n− 1 do

for j ← i + 1 to n do

write(’*’);

ti =n∑

j=i+1

(1) = n− (i + 1) + 1 = n− i

L ∈n−1∑

i=1

ti =n−1∑

i=1

(n− i) = n(n− 1)− (n− 1)n2

=(n− 1)n

2∈ O(n2)

Âû î , Ûت ¤¢ üܬ ÂÎì ý ýû ù¤µ¨ ¢Àã î ´¨ ßþ Û·õ á®õ ßþ.ÀµÆû n2−n

2 î. Ýþ¤ÞÈ ¤ ÀµÆû O(1) ¥ ôÀî

**

*

**

.........................................

1 2 ................. n12.................n

* *

n2−n2∈ O(n2)

www.Bshams.ir

www.Bshams.ir

Page 46: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

37 ý¥¨ °Âõ ýû ݵþ¤Úó .5.2

ý¥¨ °Âõ ýû ݵþ¤Úó 5.2Selection Sort ü¿µ÷ ý¥¨ °Âõ ݵþ¤Úó 1.5.2

procedure Selection Sort( T [ 1· · ·n ])

fori ← 1 to n-1 do

O(1)

minx← T[i]minj← i

Ω(1)

for j← i+1 to n do

O(1)

if(T[j] < minx)thenminx← T[j]minj← j

Ω(1)

O(1)

T[minj]← T[i]T[i]←minx

Ω(1)

: ݵþ¤Úó öÂî ±¨½õ

L ≤n−1∑i=1

(O(1) +n∑

j=i+1

O(1)) ∈ O(n2)

L >n−1∑i=1

(Ω(1) +n∑

j=i+1

Ω(1)) ∈ Ω(n2)⇒ L ∈ Θ(n2)

.¢¤À÷ û ý¢ø¤ø üϱ¤ Âöõ¥ ý¥¨ù¢ á÷ ßþ¤¢

Bubble Sort ü± ý¥¨ °Âõ ݵþ¤Úó 2.5.2

Procedere Bubble Sort(T[1..n])

for i← 1 to n-1 do

for j ← i+1 to n do

if(T [j] < T [i]) then

swap(T [i], T [j])

°Âõ¤¢ î üó ¤¢ ´¨ n−1 ÈÞû ü¿µ÷ ý¥¨ °Âõ¤¢ û üþ¹¢ÀãöÂî ßþ .´¨ n(n−1)

2´ó ßþÂÀ ¤¢ ø 0 ´ó ßþµú ¤¢ ü± ý¥¨

. ´¨ Ω(1) ö ßþ öÂî ø O(n2) ݵþ¤Úó ßþ ý

www.Bshams.ir

www.Bshams.ir

Page 47: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 38

Insertion Sort ü¤¢ ý¥¨ °Âõ ݵþ¤Úó 3.5.2

Procedere Insertion Sort(T[1..n])

for i← 2 to n do

x← T [i]

j← i-1

while (j > 0 && T [j] > x)

T[j+1] ← T[j]

j −−

T[j+1] ← x

Ω(n) ¥ ݵþ¤Úó ßþ öÂî Àª false ÈÞû while ¯Âª Âð ݵþ¤Úó ßþ ¤¢ü¤¬ Å. Àª üõ

n∑i=2

(O(1) + O(i)) ∈ O(n2) ¤¬ ö ý öÂî ø´ó ßþµú ¤¢ ¤ ݵþ¤Úó ßþ ¤Ñõ ßþÀ. ¢¤¢ üÚµÆ ý¢ø¤ø á÷ î ´¨

. ÝþÞ÷ üõ ü¨¤Â ͨµõ ´ó ø ´ó ßþÂÀ

(Best Case Analysis) ´ó ßþµú Ãó÷

Ìä Âû ¢ø¤ø ´ó ßþ ¤¢ ,Àª °Âõ þ¤ î Àû¢ üõ ¤ ü÷õ¥ ´ó ßþµú¤¢ ¢ª  Àþ±÷ while ÖÜ üãþ .¢ª ¤¢ ´ãìõ öÞû ¤¢ Ìä ö Àþ ÀþÀݵþ¤Úó ý öõ¥ ¹µ÷ ¤¢ ,´¨ O(1) ¥ while ¯Âª ÆþÖõ öõ¥ ´ó ßþßþ ý ßþ öÂî ×þ üêÂÏ ¥ .¢ª üõ  ¤ n-1  þ¥ ¢ Àû¡ O(n) ¥

.Àª üõ θ(n) ¥  öõ¥ ¹µ÷ ¤¢ ,´¨ ù¢ Ω(n) ݵþ¤Úó

(Worst Case Analysis) ´ó ßþÂÀ Ãó÷

ÀþÀ ÌäÂû ¢ø¤ø ¤¬ ßþ ¤¢ Àª ùÀª °Âõ üóøÃ÷ ¤¬ û ù¢¢ Âðwhile ¤µ¨¢ ý öõ¥ Ω(i) ù¥À÷ ¹µ÷ ¤¢ .´¨ ¥÷ ÆþÖõ i (ôi Ìä Û·õ)üêÂÏ ¥ ø ¢ Àû¡ Ω(n2) ݵ þ¤Úó ßþ ý ý ô¥ öõ¥ Å.Ýþ¤¢ ¥ ÷¥ ݵþ¤Úó ý öõ¥ ¹µ÷ ¤¢ ´¨ O(n2) ݵþ¤Úó ý ý üþ ÓÖ¨

.¢ Àû¡ θ(n2)

www.Bshams.ir

www.Bshams.ir

Page 48: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

39 ý¥¨ °Âõ ýû ݵþ¤Úó .5.2

(Average Case Analysis)ͨµõ ´ó Ãó÷

üþú÷ ´ãìõû ÆþÖõ ¢Àã

i i-1 i-2 ..... 1

1 2 3 ..... i

E(x) =∑

x∈X

x× f(x) ü®þ¤ Àõ

.Àµê üõ ÷¡ ×þ ¤¢ x î üóÞµ: f(x) = 1

i

T[1..i] þ¤Âþ¥ ¤¢ °¨õ ´ãìõ ¤¢ ô i ÂÊä ¤¢ ý ô¥ öõ¥ ͨµõ : ci

ci =i∑

k=1

k × 1

i=1

i

i∑

k=1

k =1

i× i(i + 1)

2=

i + 1

2

: ´¨  ý¥¨ °Âõ ݵþ¤Úó ý ý ô¥ öõ¥ ͨµõ ¹µ÷ ¤¢n∑

i=2

ci =n∑

i=2

i + 1

2=1

2(

n∑

i=2

i +n∑

i=2

1) =1

2(n(n + 1)

2−1+ n−1) = θ(n2)

´¨ µú û sort Ö ¥ insertion sort ¤µê¤ ´¨ Ýî û ù¢¢ ¢Àã î üõÚûüÞ÷ øÀµê üõ ëÔ Âþ¢ üÜ¡ ´ó ßþµú ö Àª ¢þ¥ û ù¢¢ ¢Àã üµìø üóø

.Àª °¨õ À÷. ´¨ 1n! ´ó ßþµú î ´¨û ´ó Ûî n!

Pigeon hole Sort ý±î ÷ ý¥¨ °Âõ 4.5.2

u üãþ °Âõ÷ ýþ¤ ÂÊä ßþµð¤Ã ýù¥À÷ ý þ¤ Àµ ý¥¨ °Âõ ßþ ¤¢¤¢ ¤ °Âõ÷ ýþ¤ ¤¢ ÂÊä Âû ü÷øÂê âìø ¤¢ þ¤ ßþ î ,¢ª üõ µêÂð ÂÑ÷ ¤¢üÆþ÷ ¥ °Âõ ¤¬ ¤ óø ýþ¤ þ¤ ßþ ýø¤ ¥ ų¨.¢¤¢ üõ ùÚ÷ ¢¡öÞû üãþ û ü÷øÂê âÞø ´¨û ü÷øÂê  üµ±õ ý¥¨ °Âõ ßþ Å. Àî üõ

. ´¨û ù¢¢ Ûî ¢Àã  u ¬ä áÞ¹õ

www.Bshams.ir

www.Bshams.ir

Page 49: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 40

Procedure pigeon hole sort(T[1..n])

let m = maxT [i] T [i] ∈ Z>0, 1≤ i ≤ n

array u[1..m]

for i← 1 to m do // θ(m)

u[i] ← 0

for i ← 1 to n do // θ(n)

k← T[i]

u[k]++

k← 1

for i← 1 to m do

while u[i] 6= 0 do

T[k]← i

u[i]−−k++

: ݵþ¤Úó Ãó÷ ¤ m+1 ù¥À÷ for ýÖÜ ø ¤

n∑i=1

(u[i] + 1) ù¥À÷ for ÖÜ ¤¢ while

: Ýþ¤¢ ݵþ¤Úó ¥ ´ÞÆì ßþ ý ßþ ,¢¢Âð üõm∑

i=1

(u[i] + 1) =m∑

i=1

u[i] +m∑

i=1

1 = n + m

.Àª üõ θ(n + m)¥ ݵþ¤Úó ßþ ý öõ¥ ßþÂ:ÀþÞ÷ ´ì¢ Âþ¥ ñ·õ

2 1 3 2 1 2 5 3 4 2 5

2 4 2 1 2

11 2 2 2 2 3 3 4 5 5

u

T

0 0 0 0 0u1 2 3 4 5

1 2 3 4 5

m=5

T︸ ︷︷ ︸ ︸ ︷︷ ︸︸ ︷︷ ︸ ︸ ︷︷ ︸1 ø¢ 2 ¤ú 3 ø¢ 5 ø¢?

4 üØþ

°Âõ÷ þ¤

ùÀª °Âõ þ¤

www.Bshams.ir

www.Bshams.ir

Page 50: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

41 ý¥¨ °Âõ ýû ݵþ¤Úó .5.2

Binary Searchüþø¢ø¢ ý¹µÆ 5.5.2

Binary Search (A, temp)left = 0;

right = lenght(A)-1;

while (left< right) do

middle= (left+right) / 2;

if (temp > A[middle])

left= middle + 1;

else

right= middle-1;

return left;öØõ öÀªÀ ¤¬ ¤¢. ÀþÞ÷ üõ ¹µÆ A ýþ¤ ¤¢ ¤ temp ݵþ¤Úó ßþ

.À÷¢Âð üõ  ¤ Àª ´¨ ¤Âì temp î üþ öÀÈ÷ À ¤¬ ¤¢ ø ö:Binary Search ý öõ¥ ±¨½õ

i← left, j ← right, i = 0, j = n− 1.¢ª ´êþ ö ¤¢ temp ´¨ ¤Âì î ´¨ ýþ¤ ñÏ d

d = j − i + 1 = n− 1− 0+ 1 = n k = middle = i+j2

¤Áð ¥ Å ,Àª if ¤µ¨¢ ¥ Û±ì middle, right, left Âþ¢Öõ k, j, i Àî ­ÂêÂþ¢Öõ ý °Â ¤ d, j, iÂþ¢Öõ ø Àû¢ ¤ ´¨ ßØÞõ ´ó ø¢ if ¤µ¨¢ ¥

.ÝþÂð üõ ÂÑ÷ ¤¢ ÀþÀ ýþ¤ Âþ¥ ñÏ ø right, left

• temp ≥ A[middle] ⇒ i = k+1, j = j, d = j− i+1 = j−k = j−( i+j2

) =j−i2

< j−i+12

= d2⇒ d < d

2

• else⇒ j = k − 1, i = i, d = j − i +1 = k −1− i + 1 = i+j2− i = j−i

2<

j−i+12

= d2⇒ d < d

2

.¢¢Âð üõ ÓÊ÷ þ¤ ñÏ ¤ Âû ¤¢ Å

www.Bshams.ir

www.Bshams.ir

Page 51: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 42

: Ýþ¤¢ ø¡ ¯Âª ý ñi ≥ j ⇒ j − i ≤ 0⇒ j − i + 1 ≤ 1⇒ d ≤ 1d0 = n d1 < d0

2= n

2d2 < d1

2= n

4· · ·

dk ≤ 1⇒ n2k ≤ 1⇒ n ≤ 2k ⇒ logn

2 ≤ k

⇒ k = dlogn2e ⇒ O (logn

2) üþ öÂî

Binary Insertion Sort ü¤¢ üþø¢ø¢ ý¥¨ °Âõ 6.5.2

Binary Insertion Sort(A[1...n])

for (i = 1; i < n; i + +)

temp= A[i];

left=1;

right=; i

Binary Search algorithm // for array A , temp=A[i], left=1 , right=i

for (j = i; j > left; j −−)

swap(A[j-1],A[j]);

worst case best case average case

insertion sort

Binary insertion sort

O(n2)

O(n2)

O(n2) O(n2)

O(n2)O(nlog n)

: ´ó ßþµú Ãó÷•

n−1∑i=1

blogi+12c =

n∑i=2

blogi2c ' (n + 1)blogn+1

2c+ 2blog(n+1)c+1 + 2

∈ O(nlogn) or

•n∑

i=2

blogi2c ∈ O

(n∑

i=2

logi2

)∈ O

(∫ n

2logx

2 dx)∈ O(nlogn)

www.Bshams.ir

www.Bshams.ir

Page 52: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

43 ý¥¨ °Âõ ýû ݵþ¤Úó .5.2

Shell Sort ݵþ¤Úó 7.5.2

void Shell-Sort(int gap,int A[1...n])

while((gap/=2)≥1)

for(i=0;i < length(A);i++)

int j=i;

while((j ≥ gap) && (A[j-gap] > A[j]))

swap(A[j - gap],A[j])

j -=gap;

ų¨ , Ý þ ð üõ ÂÑ ÷ ¤¢ þ¤ ñÏ ù¥À ÷ ý gap À µ Ý µ þ¤Ú ó ß þ ¤¢.À÷¢Âð üõ ÆþÖõ Ýû ܬê ßþ ¬ä ø ¢¢Âð üõ ÓÊ÷ ¤±ä ¤ Âû ¤¢ gap ßþ

:ÀþõÂê ´ì¢ ¢¤õ ßþ ¤¢ üó·õ ¤¬ ¤¢ ø À÷ª üõ ÆþÖõ Ýû 4 ܬê ¬ä þ¤ ¨ ¥ Àµ ñ·õ ßþ ¤¢.À÷ª üõ ­ä Ýû 1ø 4 ø Ýû 6 ø 7 ý Å ,À÷¢Âð üõ ¹ Ýû ôøÃóÝû 2 ýܬê ñø ¥ þ¤ ¬ä ù¤ø¢ Àþ ø ùÀª ÓÊ÷ ܬê ñÏ Å³¨Ýû 8 ø 6 ų¨ ,À÷ª üõ ¹ Ýû 1ø 2 Àµ ´ÞÆì ßþ ¤¢, À÷ª ÆþÖõ ¡ üó ø 5 2 °Â ßÞû ø ¢ÂþÁ üÞ÷ ¤¬ üþ¹ ø ùÀª ÆþÖõ´ó ßþ ¤¢ î Ýþ¢Âð üõ ¤¡ ݵþ¤Úó ¥ ø ¢ª üõ µÞî ×þ ¥ ܬê Øþ

. ´¨ ùÀõ ¤¢ ùÀª °Âõ ¤¬ þ¤

www.Bshams.ir

www.Bshams.ir

Page 53: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 44

2 7 4 8 5 6 1 10

Len=8=gap

︸ ︷︷ ︸︸ ︷︷ ︸

︸ ︷︷ ︸︸ ︷︷ ︸

2 6 71 48 5 10

gap=4

gap=2︸ ︷︷ ︸ ︸ ︷︷ ︸ ︸ ︷︷ ︸︸ ︷︷ ︸ ︸ ︷︷ ︸ ︸ ︷︷ ︸

︸ ︷︷ ︸ ︸ ︷︷ ︸︸ ︷︷ ︸ ︸ ︷︷ ︸

︸ ︷︷ ︸︸ ︷︷ ︸

1 2 547 86 10 gap=1︸︷︷︸ ︸︷︷︸

2 6︸︷︷︸ ︸︷︷︸4 7︸︷︷︸ ︸︷︷︸

5 8︸︷︷︸︸︷︷︸4 6 ︸︷︷︸

5 7︸︷︷︸5 6

1 2 4 5 6 7 8 10 gap=1

2

. ¢È÷  ôø¢ while î ´¨ üõÚû öõ¥ ßþµú

best case worst case average case

shell-sort n log n n1.25n1.5

üÞ÷ ýÀ÷ ´Æó ¤ Ýµþ¤Úó ßþ.À÷¤¢ üÚµÆ gap ùÀõ ´¨À ¢Àä. ¢Þ÷ ý¥¨ ù¢ ö

www.Bshams.ir

www.Bshams.ir

Page 54: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

45 ý¥¨ °Âõ ýû ݵþ¤Úó .5.2

Bucket Sort1 ݵþ¤Úó 8.5.2

unsighned const m=max

void Bucket-Sort1(int A[ ],int n)

int buckets[m];

for (int i=0;i<m;i++)

buckets[i]=0;

for(i=0;i< n;i++)

++buckets[A[i]];

for(int j=0,i=0;j< m;j++)

for(int k=buckets[j];k>0;- - k) //m−1∑j=1

buckets[j] = n

A[i++]=j;

O(n+m) ¥ à ÷ ö ý öõ¥ ø ´¨ Pigeon hole sort öÞû ݵþ¤Úó ßþ.Àª üõ

2 3 4 5 1 2 1

⇓0 2 2 1 1 1

⇓1 1 2 2 3 4 5

Bucket Sort2 ݵþ¤Úó 9.5.2

ýû ù¢¢ ý¥¨ °Â õ ýÂ î ´¨ Bucket-Sort ¥ ÂÚ þ¢ üä ÷ Ý µ þ¤Ú ó ß þ. ´¨ °¨õ,À÷ùÀª âìø [0,1) ù¥ ¤¢ î üê¢Ê

Bucket-Sort2(A)

n ← [A]

for i ← 1 to n do

insert A[i] into list B[bnA[i]c]for i ← 0 to n-1 do

sort list B[i] with insertion sort

concatenate the list B[0],B[1],...,B[n-1] together in order

www.Bshams.ir

www.Bshams.ir

Page 55: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 46

.78.17.39.26.72.94.21.12.23.68

12

10

3456789

A B

9

0- ---

--

-

-

-

-

.78.72

.17.12

.39.26.23.21

.68

.94

Bin Sort ݵþ¤Úó 10.5.2

for(int i=0;i<m;i++) //O(m)

bin [i]= -1;

for(int i=0;i < n;i++)

bin[a[i]]=a[i]; //O(n)

j=0;

for(int i=0;i < m;i++)

if(bin[i]!= -1) //O(n+m)

a[j]=b[i];

j++;

ݵþ¤Úó ßþ ¤¢ î ¢Þ÷ Àþ. ´¨ O(m + n) ¥ ݵþ¤Úó ßþ ý öõ¥Àþ ݪ µª¢ Ýû ý¤ÂØ Â¬ä Ýû¿ Âð, Àª À÷ üÞ÷ ý¤ÂØ Â¬ä

. ÝþÂÚ ÂÑ÷ ¤¢ ýÀ÷ ´Æó ×þ þ¤ ý÷¡ Âû ýÂ

3a:

-1 1 2 3 -1 -1 -1 7

1 2 3 7 8a:

bin: 8

7 2 8 1

www.Bshams.ir

www.Bshams.ir

Page 56: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

47 ý¥¨ °Âõ ýû ݵþ¤Úó .5.2

Counting Sort ݵþ¤Úó 11.5.2

counting-sort

for i←0 to k do k is maximum of elements

c[i]←0

for j← 1 to n do

c[a[j]]←c[a[j]]+1;

for i← 2 to k do

c[i] ← c[i]+c[i-1];

for j ← n downto 1 do

b[c[a[j]]] ← a[j];

c[a[j]] ← c[a[j]] -1 ;

.Àª üõ θ(n + k) ¥ ݵþ¤Úó ßþ ý öõ¥¥÷ ÆþÖõ ¢Àã log n! Ûì À ÆþÖõ üµ±õ ý¥¨ °Âõ ݵþ¤Úó Âû : µØ÷

. ¢¤¢ ¥÷ ÆþÖõ dlog n!e ÛìÀ ´ó ßþÂÀ ¤¢. ¢¤¢dlog n!e ∈ Ω(n log n)

ßþ õ ,Àª üõ θ(n log n)¥ ´ ó ß þ À ¤¢ ý¢ø¤ø á ÷ ¥ ÛÖ µÆ õ Å.¢ÂþÁ³ ¤¬ Ã÷ θ(n log n)¥ µÞî ü÷õ¥ ¤¢ À÷ üõ ݵþ¤Úó

Radix sort ݵþ¤Úó 12.5.2

stable á÷ ¥ ݵþ¤Úó ßþ.¢ÂþÁ üÞ÷ ¤¬ ý ÆþÖõ ¬ä ß Ýµþ¤Úó ßþ ¤¢Â¬ä ų¨. ÝþÞ÷ üõ °Âõ öØþ °Â ¤ ¬ä Àµ ©ø¤ ßþ¤¢ .´¨ sort

üõ °Âõ öÚû¢ °Â ¤ ¬ä ñ . ÝþÞ÷ üõ üܬ þ¤ ¢¤ø °Â ¤Ýû¢ üõ õ¢ °Â ßÞû ø ÝþÞ÷ üõ þ¤ ¢¤ø ø ÝþÞ÷ üõ ´Æó ¢¤ø ø ÝþÞ÷·îÀ α(n) î Àª üõ O(nα(n)) ¥ ݵþ¤Úó ßþ ý öõ¥.¢¢Âð °Âõ þ¤

. ´¨ ¢Àä n ß ùÀª ÂûÒ ôì¤ ¢Àã: Àî ´ì¢ Âþ¥ ñ·õ

www.Bshams.ir

www.Bshams.ir

Page 57: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 48

0123456789

25 13 43 124 313 513 5 1 999 96 205

531 1

13 43 31312425 5 20596

999

- -

- - -

- - --

-

-

. ÝþÞ÷ üõ üܬ þ¤ ¢¤ø Âþ¥ °Â ¤ ¬ä ñ531,1,13,43,313,24,25,5,205,96,999

. Ýþ¥¢Â üõ ý¥¨ °Âõ ýõ¢ ø

üµÈ𥠢ãõ ( ö¢Âî Û) ö¢Âî Trace ÛÞä 6.2

,T (n) = T (n5) + T (7n

10) + θ(n)

,T (1) = C

.Àª üõ θ(n) ö Èþ¤ î Ýþ¥¨ üõ ´È𥠴¡¤¢ ×þ ¤Ñõ ßþ ýÂ

θ(n)

O(n5) O(7n

10)

O( n25

) O(7n50

) O(7n50

) O(49n100

)

¤¬ û ´¡¤¢ Âþ¥ Þû üãþ ´Æ÷ ùÀ÷ø ¤ ßþ ö¤Öµõ ´¡¤¢ ´¡¤¢Æ ¤ O Àþ Àª±÷ ö¤Öµõ ´¡¤¢ Âð âìõ ßþ ¤¢ .Àþ üÞ÷ ßþ öÆØþ

. Ýî

www.Bshams.ir

www.Bshams.ir

Page 58: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

49 üµÈ𥠢ãõ ( ö¢Âî Û) ö¢Âî TRACE ÛÞä .6.2

(7

10

)i

n ≤ 1 =⇒ n ≤(10

7

)i

=⇒ logn10

7

≤ i =⇒ i = dlogn10

7

e =⇒

T (n) ≤

dlogn10

7

e∑

i=0

(9

10

)i

n =1−

(9

10

)logn10

7

+1

1− 9

10

51

3 >10

7=⇒ logn

51

3

> logn10

7

=⇒ 3 logn5 > logn

10

7

=⇒

T (n) ≤

dlogn10

7

e∑

i=0

(9

10

)i

n ≤3 logn

5∑

i=0

(9

10

)i

n

.Àî Û ¤ Âþ¥ üµÈð¥ ó¢ãõ

• T (n) = T (n3) + T (2n

3) + θ(n)

θ(n)

θ(n3)

θ(2n9

)θ(n9)

θ(2n3

)

θ(2n9

) θ(4n9

)

(2

3

)i

n ≤ 1 =⇒ n ≤(3

2

)i

=⇒ logn3

2

≤ 1 =⇒ i =⌈logn

3

2

=⇒ T (n) ≤

⌈logn

3

2

i=0

n ≤ O(n logn3

2

)

www.Bshams.ir

www.Bshams.ir

Page 59: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 50

Catalan Number öî ¢Àä  ý¤Áð 7.2

:1ùÂð n üþø¢ø¢ öµ¡¤¢ ¢Àã ±¨½õ

¹þ ¤¢.¢¤À÷ ý¤ø¢ þ ìÏø ´¨ À±Þû î ,¨ü ´¨ üêÂð ´¡¤¢ ×þ. Ýî üõ ü¨¤Â ¤ ¤¢ Èþ¤ üþø¢ø¢ öµ¡¤¢

Ýþ ùÀÈî ùÂþ¢ ö¤ø¢ î ü¨¤ ú÷¤¢ î Ý üõ üþø¢ø¢ ´¡¤¢ø¢ 1 Ûت ¤¢( ¡ª ô÷ ) ñþø¢Â·îÀ §¤ Âû ¥ Øþ Ûó¢ ¤ úµ¡¤¢ ßþ.´¨ Èþ¤ éÂãõ

.Àõ÷ üõ üþø¢ø¢,À÷ùÀª ݨ¤ ßþ ´Þ¨

¥ î ü³ ¡ª îãõ ßþÀÀ÷ °Âõ,¤¢ Èþ¤ üþø¢ø¢ öµ¡¤¢ ßþ «Ê¿ÂÑ÷ ¤¢ Àþüõ ßþ §¤ öÞû¥ îüµ¨¤ ¡ª ¥ øÔµõÀþüõ ßþ §¤ßØÞõ ¤¢Èþ¤ °Âõ üþø¢ø¢ ´¡¤¢ ¸,§¤ ¨ ¢ø ´ó ¤¢.¢ª üõ µêÂð×þ ý¤¢Â¡ üþø¢ø¢ ´¡¤¢ ¤ú,Àª±÷ Ýúõ °ÂÂð) ùÀª ù¢¢ öÈ÷ ø¢ Ûت¤¢

(.À÷¤µ¡¨

n ≥ 0,§¤ n ¯Âõ ¤¢ Èþ¤ °Âõ üþø¢ø¢ öµ¡¤¢ ¢Àã,bn ©¤Þªõ éÀû´¨¢ ý Àª ´¨¢ ¤¢ 0 ≤ i ≤ n ý¥ bi  þ¢ Öõ Ø þ ­Âê . ´¨Âþ¥ ¨ Ûت Û·õ î Ýî üõ ø ¿µ÷ Èþ¤ öä ¤ ü¨¤,bn+1ö¢¤øÈþ¤ °Âõ üþø¢ø¢)ýúµ¡¤¢ Àþ üõ ßþ Èþ¤ ´¨¤ø ² ¥ î üþû¤µ¡¨Âþ¥ ¤ µØî ýúµ¡¤¢ ßþ.´¨ nú÷ ýú¨¤ ¢Àã î ÀµÆû ýµØî (¤¢üú ´¡¤¢ Âþ¥,ßØÞõ ýúµ¡¤¢Âþ¥ ßþ ÜÞ ¥.Àõ÷ üõ ­øÂÔõ ´¡¤¢ ýúµ¡¤¢

b0 = 1 Ýþ¤¢ ö ýÂ î ´¨

ýÀóÞþÂð µÆÆð ®þ¤ µî ¥ µêÂð ± 1

www.Bshams.ir

www.Bshams.ir

Page 60: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

51 CATALAN NUMBER öî ¢Àä  ý¤Áð .7.2

1 Ûت

1 2 3 4 5

2 Ûت

3 Ûت

ýÀ Ö±Ï ´¡¤¢ Âþ¥ ø¢ ßþ ¤¢ ö üõ ¤ §¤ n ÷Ú î Ýî üõ ü¨¤Â ×þ.¢Âî

îÀû¢ üõ ¹µ÷ Âõ ßþ.´¨¤ ´Þ¨ ¤¢ §¤ n,¢¤¢¤Âì ² ´Þ¨ ¤¢ §¤ 0 (1)

www.Bshams.ir

www.Bshams.ir

Page 61: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 52

.À÷b0bnÂÂÀ÷ª üõ ù¢ÂÞª bn+1¤¢ î üþû¤µ¡¨Âþ¥ Þû

´¡¤¢ b1bn−1 î,´¨¤ ´Þ¨¤¢ §¤ n − 1,¢¤¢ ¤Â ì ² ´Þ¨ ¤¢ §¤ 1 (2)

.Àû¢ üõ ´¨¢ §¤ n + 1,¤¢ Èþ¤ °Âõ üþø¢...

´ó ßþ ¤¢ î À÷¤¢ ¤Âì ´¨¤ ´Þ¨ ¤¢ §¤ n− i,² ´Þ¨ ¤¢ §¤ i (i+1)

.´¨ bibn−i ÂÂ bn+1

...

¤¬ ßþ ¤¢,´Æ÷ ´¨¤ ´Þ¨¤¢ ü¨¤ ºû ø ´¨ ² ´Þ¨ ¤¢ §¤ n (n+1)

. ´¨úµ¡¤¢ ¥ bnb0  bn+1

n ≥ 0Âþ¢Öõ Þû ý¥ ,ßþÂ

bn+1 = b0bn + b1bn−1 + b2bn−2 + · · ·+ bn−1b1 + bnb0

ø

∞∑

n=0

bn+1xn+1 =

∞∑

n=0

(b0bn + b1bn−1 + · · ·+ bn−1b1 + bnb0)xn+1 (1)

ùÚ÷ , Àª a0, a1, a2, · · · ó±÷¢ ý Àóaõ â f(x) =∞∑

i=0

aixi Âð î Ý÷¢ üõ

üãþ , ©¢¡ a0, a1, · · · ó±÷¢ Ç» , [f(x)]2

a0a0, a0a1 + a1a0, a0a2 + a1a1 + a2a0, · · ·

, a0an + a1an−1 + a2an−2 + · · ·+ an−1a1 + ana0

b0, b1, b2, · · · Àóaõ â f(x) =∞∑

n=0

bnxnÀî­Âê ×þ .Àî üõ Àó ¤¤¬ ¤ (1) ó¢ãõ .´¨

(f(x) − b0) = x

∞∑

n=0

(b0bn + b1bn−1 + · · ·+ bnb0)xn = x[f(x)]2

www.Bshams.ir

www.Bshams.ir

Page 62: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

53 CATALAN NUMBER öî ¢Àä  ý¤Áð .7.2

. ÝÆþ÷ üõ

: À÷¨¤ üõ Âþ¥ ôø¢ ¤¢ ó¢ãõ ¤ õ ó¢ãõ ßþ

x[f(x)]2 − f(x) + 1 = 0

Å

f(x) =[1±

√1− 4x]

(2x)

õa√1− 4x = (1−4x)1/2 =

(1/2

0

)+(1/2

1

)(−4x)+

(1/2

2

)(−4x)2 + · · ·

: ´¨  n ≥ 1, xn °þ® ö ¤¢ î

(1/2

n

)(−4)n =

(1/2)((1/2) − 1)((1/2) − 2) · · · ((1/2)− n + 1)n!

(−4)n

= (−1)n−1 (1/2)(1/2)(3/2) · · · ((2n− 3)/2)n!

(−4)n

=(−1)2n(1)(3) · · · (2n− 3)

n!

=(−1)2n(n!)(1)(3) · · · (2n− 3)(2n − 1)

(n!)(n!)(2n − 1)

=(−1)(2)(4) · · · (2n)(1)(3) · · · (2n− 1)

(2n− 1)(n!)(n!)=

(−1)(2n− 1)

(2n

n

)

ý üÔõ ýÂþ¢Öõ , ¤¬ ßþ Âè ¤¢ ; Ýî üõ ¿µ÷ ¤ üÔõ ñØþ¢¤ f(x)¤¢Å ; Ýî üõ À û bn

f(x) =1

2x

[1−

[1−

∞∑

n=1

1

(2n− 1)

(2n

n

)xn

]]

¤¢ xn+1 °þ® ÓÊ÷ , f(x) ¤¢ xn °þ®, bn ø∞∑

n=1

1

(2n− 1)

(2n

n

)xn

www.Bshams.ir

www.Bshams.ir

Page 63: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üµÈð¥ ýû ݵþ¤Úó .2 ÛÊê 54

î üÞÆì ,´¨

bn =1

2

[1

2(n + 1)− 1

](2(n + 1)(n + 1)

)=

(2n)!(n + 1)!(n!)

=1

(n + 1)

(2n

n

)

(1894 − 1814) öî ö¦¤ø üØþÄÜ öÀ®þ¤ Æõ î ¤ bn ¢ÀäÛ¡¢ ý ú û¤ ¢À ã ß ã ¤¢ ¤ ú ÷ ö î .À õ ÷ ü õ ö î ¢À ä , À ÷ö î ñø ¢Àä ´Ôû . ´¨ ù¢Â ¤ î x1x2x3 · · ·xn ¤ ± ä ß µªÁ ðà µ ÷Â

.ÀµÆû b6 = 132 ø b5 = 42, b4 = 14, b3 = 5, b2 = 2, b1 = 1, b0 = 1

www.Bshams.ir

www.Bshams.ir

Page 64: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

3 ÛÊê

ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þû

û ù¢¢ öÞµ¡¨ ¥ ü¡Â .3

ù ¡£ Ñ ê ¥ ü µ Þ Æ ì ¤¢ ü µ Æ þ ü ä Ï ÷ ð  û î ü þ ¹ ÷ ¥üÔܵ¿õ ñت Ñê ¤¢ À÷ üõ, ÀµÆ÷ á÷ ×þ ¥ û ù¢¢ fõøÃó Øþ ø ¢¢Âð ýù¢¢ Âû ùøä ø .À÷ª üÈîø üÔܵ¿õ ñت ß»Þû ø À÷ª ù¡£. Àû¢ «Êµ¡ ¢¡ ¤ Ñê ¥ üøÔµõ ñÏ ´¨ ßØÞõ ö üð¤Ã öÃõ üêÂãõ ¤ Óܵ¿õ á÷ Ýþ¤¢ î ýù¢¢ ¤µ¡¨ ݵÆû ¤±¹õ ßþ°îÂõ ø ù¢¨ ýù¢¢ á÷ Ûت ø¢ Ý÷ üõ ¤ ýù¢¢ á÷ üÜî¤Ï . ÝþÞ÷

. ÝþÞ÷ ýÀ µ¨¢üÆþ÷ õ÷  ýû ö¥ î ÀµÆû üþû ù¢¢ á÷ üÞ þ ù¢¨ ý ù¢¢ á÷.ùÂè ø char, bool ,int:À÷õ ,Àû¢ üõ ¤Âì Â¤î ¤µ¡ ¤¢ ø ù¢Þ÷ ÓþÂã ¤ ö÷

õ÷ ¤ ö÷Â¤î ¢¡ ø ¢ª üõ µ¡¨ Åþ÷ õ÷ ͨ °îÂõ ýù¢¢ á÷. ùÂè ø , struct , union : À÷õ.Àî üõ üêÂãõ

fÖÎõ ýû Ñê ¥ ý¢Àã ¥ î ´¨ ù¢¢ öÞµ¡¨ á÷ ßþ ù¢¨ : þ¤:ÀµÆû öÆØþ ñÏ ø á÷ ÂÑ÷ ¥ î Àî üõ ù¢Ôµ¨ Ýû ¤ø¹õ

x : array [’a’..’z’] of integer

int x[26];

www.Bshams.ir

www.Bshams.ir

Page 65: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 56

(Sparse array)§¤³¨ þ¤ 1.3ý¤Áð ¤ÀÖõ ýù½÷ üóø ¢ª ý¤Áð ¤ÀÖõ ´¨ ¤Âì î Ýþ¤¢ ý þ¤ Ýî ­Âêø À÷ª üÞ÷ ý¤Áð ¤ÀÖõ þ¤ ýû ÷¡ ôÞ fõøÃó üãþ , ´¨ §¤³¨ Ûت ý¤Áð ¤ÀÖõ ¤Ñõ ßþ ý .À÷ª üõ ý¤Áð¤ÀÖõ«¡ ýû÷¡ ¥ ü¡Â ÍÖê´Æ÷ ¤Âì ø ´¨ ï¤Ã þ¤ ñÏ ö , ´Æ÷ üÖÎõ ÂÔ¬ ¤ÀÖõ þ¤ ö¢Âîþ¤ ø¢ ¥ Ýþ¤÷ ¤Ñõ ßþ ý . À÷ª üÈîø ùÀþ ¤¢ þ¤ ýû ÷¡ ôÞû þ¤ ßþ ¯±¤ µú í¤¢ ýÂ. ÝþÞ÷ ù¢Ôµ¨ üܬ ýþ¤ ñÏ Ýû üØÞî

:Àî ´ì¢ Âþ¥ ñ·õ

T

a

b

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

1 2 3 4 5 6 7 8

3 11 13

4 8 2 9 U

213j

?

z

, T üãþ üܬ ýþ¤ ý¤Áð ¤ÀÖõ ¤ Âû ¤¢. Ýî üõ ÂÔ¬ ¤ ctr Âçµõ ¤ÀÖõ ÀµÝû¢ üõ ¤Âì T ¥ ý ÷¡ ÅþÀ÷  ¤ a[ctr] ø Ýî üõ ê® ctr Àø ×þßþ . Ýû¢ üõ ¤Âì ctr  ¤ b[ ÅþÀ÷] ß»Þû ø ´¨ ùÀª ý¤Áð¤ÀÖõ î

.¢ÂþÁ üõ ô¹÷ ý¤Áð¤ÀÖõ °Âctr=0 →ctr=ctr+1=1 T[4]=11 → a[ctr]=a[1]=4 b[4]=1

ctr=1 →ctr=ctr+1=2 T[8]=13 → a[ctr]=a[2]=8 b[8]=2

ctr=2 →ctr=ctr+1=3 T[2]=3 → a[ctr]=a[3]=2 b[2]=3

Âþ¥ ¯Âª ø¢ Àþ ÷ þ Ýþ ù¢Âî ý¤Áð ÅþÀ÷ õ ¤ ý ÷¡ Ý÷À Ýû¿ Âð ñ:Àª ¤ÂìÂ

1 ≤ b[i] ≤ ctr , a[b[i]] = i

www.Bshams.ir

www.Bshams.ir

Page 66: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

57 üþø¢ø¢ ´¡¤¢ .2.3

. ´¨ ÂÔ¬ ctr î ´¨ ¼®ø ݪ ù¢ÂØ÷ üû¢ §¤¢ ýà Âðý¤Áð¤ÀÖõ õ ¤ T ô 8 ý÷¡ Û±ì ýû þ¤ ¤¢ Ý÷À Ýû¡ üõ ñ·õ öä

. ÷ þ Ýþ ù¢Âîb[8]=2 , 1≤ b[8]≤ 3 ⇒ ݪ ù¢Âî üû¢ ¤ÀÖõ õ ¤ ÷¡ ßþ ´¨ ßØÞõa[b[8]]=a[2]=8 ⇒ Ýþ ù¢Âî üû¢ ¤ÀÖõ õ ¤ ÷¡ ßþ

üþø¢ø¢ ´¡¤¢ 2.3.¢¤¢ À÷¥Âê ø¢ ·îÀ öùÂð Âû î ´¨ ý¤¢ Èþ¤ ´¡¤¢ üþø¢ø¢ ´¡¤¢

.Àµê üõ ëÔ ÂÔ¬ ¼Î¨ ¤¢ ö ýúð ôÞ î ´¨ ýÂþ ´¡¤¢ ×þ : ´¡¤¢×þ áÔ¤ . ´¨ ï ùÂð ö ¥ ÂÆõ ßþµð¤Ã ñÏ : ´¡¤¢ ¥ ùÂð ×þ áÔ¤

.´¨ Èþ¤ áÔ¤ , ´¡ ¤¢ý³¨ ýúóþ ¢Àã ) Èþ¤ ùÂð ö Ü¬ê ¥ ´Æ¤±ä : (Depth)ùÂð ×þ ÕÞä

. (ùÂð ö ùÀªö áÔ¤ Û®Ô ´¨  ùÂð ö ¼Î¨ ùÂð Âû ý :(Level)ùÂð ×þ ¼Î¨

.ùÂð ö ÕÞä ¥ ´¡¤¢: ñ·õ

a

b f

c d e

×þ áÔ¤

ÂÔ¬ áÔ¤

ÂÔ¬ ͨ

×þ ͨ

ø¢ ͨ

N

ùÂð áÔ¤ ÕÞä ͨ

a 2 0 2b 1 1 1c 0 2 0d 0 2 0e 0 2 0f 0 1 1

ø¢ ý¤¢f Öì¢ ö üÜ¡¢ ýû ùÂð ôÞ ùÂð n üþø¢ø¢ ´¡¤¢ ×þ ¤¢ :ñ·õýû ùÂð ÕÞä áÞ¹õ I(T) ø ´¡¤¢ ýû ï ÕÞä áÞ¹õ E(T).Àª üõÀ÷¥Âê

www.Bshams.ir

www.Bshams.ir

Page 67: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 58

ö üµÈð¥ Τ ùÚ÷ Àª T(n)= E(T)-I(T)Âð .Àª üõ ´¡¤¢ ßþ üÜ¡¢? ´¨ ôÀî

6

?

?

6

hh+1

T(n) T(n+2)

E(T ) = E(T ′)− h + h + 1+ h + 1

I(T ) = I(T ′) + h

⇒ E(T )− I(T ) = E(T ′)− I(T ′) + 2⇒ T (n + 2) = T (n) + 2

ø¢ f Öì¢ þ À÷¥Âê ºû ö ùÂð Âû î ´¨ üþø¢ø¢ ´¡¤¢ : Ûõî üþø¢ø¢ ´¡¤¢.¢¤¢ À÷¥Âê

î Ýõ÷ üõ ü¨¨ Ûõî ´¡¤¢ ¤ üþø¢ø¢ ´¡¤¢ : ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢) ×þ ¼Î¨ ¥ üþûùÂð ÂÚõÀªÀ÷¥Âê ø¢ ý¤¢ f Öì¢ ö üÜ¡¢ ýû ùÂð ôÞüµÆþ À÷¥Âê ö Àª µª¢À÷¥Âê×þ ¼Î¨ ßþ¤¢ ýùÂð Âð .(¡ üØþ ¼Î¨À÷ùÀõ ö ² ´Þ¨ ¤¢ î ö ¼Î¨ Ýû ýû ùÂð ôÞ ùøä ø Àª ²À÷¥Âê¤Âì ´¨¤ ´Þ¨ ¤¢ î ö ¼Î¨ Ýû ýû ùÂð ôÞ ø Àª µª¢ À÷¥Âê ø¢ Àþ fÖì¢Ýû ôÞ Àª µªÀ÷ À÷¥Âê ý ùÂð Âð ß»Þû ,Àª µªÀ÷ À÷¥Âê üµÆþ À÷µêÂð¼Î¨ ¤¢ û ï ôÞ ´¡¤¢ ßþ¤¢ .Àª À÷¥Âê öøÀ Àþ ö ´¨¤ ýû ü½Î¨

. ´¨ ö¥µõ ÈÞû ´¡¤¢ Å Àû¢ üõ ¤ ×þ þ ÂÔ¬: ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢ ¥ ýÂÚþ¢ ÓþÂã

ø ÝþÂÚ ÂÑ÷ ¤¢ û ï éÂÏ Èþ¤ ¥ ü®Âê ¤Ï ¤  üþø¢ø¢ ´¡¤¢ ×þÂð¥ Âð , Ýû¢ ´±Æ÷ ùÂð Âû ¤ ý¢ã¬ ýû ù¤Þª ´¨¤ ² ¥ ¼Î¨Âû ¤¢

www.Bshams.ir

www.Bshams.ir

Page 68: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

59 MAX HEAP ´¡¤¢ .3.3

ü¨¨ Ûõî ¤ Àþ üõ ´¨¢ î üµ¡¤¢ , Ýî éÁ ¤ û ùÂð Àã ý ù¤Þª.Àþð

1

2 3

4

8

5 6 7

9 10 11 12 13 14 15

1

2 3

4 5

ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢

-Àã 6 ¥ éÁ

. ´¨ ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢ ,Ûõî üþø¢ø¢ ´¡¤¢ ¥ ¤Ñõ °µî ü¡Â ¤¢

max heap ´¡¤¢ 3.3°Æ î ù¢¤¡ °Æ ý¢Àä ö ùÂð Âû î ´¨ ü¨¨ Ûõî üþø¢ø¢ ´¡¤¢ÀÜî üóø ´Æ÷ ¢Âê Âʽõ °ÆÂ). ´Æ÷ µØî Ç÷À÷¥Âê °Æ ¥ ¤À. ´¨ þ¤ heap ý¥¨ ù¢ ý ù¢¢ öÞµ¡¨ ßþµú (. ´¨ ¢Âê ÂʽõÝÞþÃîõ ÂÊäÈÞû .ÀµÆû 2i , 2i+1 ýû ÷¡ ¤¢ ô i ÂÊä öÀ÷¥Âê î ý¤Ï,Ã÷ ÝÞõ ÂÊä ö¢Âî À . ´¨ θ(1)¥ ÝÞþÃîõ ö¢Âî À Å , ´¨ þ¤ ¨

.¢Âî × ¤ û ï Àþ ú ö1 · · · bn

2c bn

2c+ 1 · · ·n

︸ ︷︷ ︸dn2e

. (´¨ dn2e û ÆþÖõ ¢Àã)

sift-up ÜÞä.ÀµÆû sift-downø (perculate)sift-up, heap ¤¢ Ýúõ ÜÞä ø¢ý¢Àä µÞî ý¢Àä ¥ ùÂð ×þ °ÆÂ î ¢Âð üõ ¤¬ ø ´¨ ô¥ ü÷õ¥ÂµÞî ý¢Àä ßþÃÚþ ÂµÈ ý¢Àä î ü÷õ¥ sift-down ÜÞäøÀþ Âç µÈ

.¢¢Âð

www.Bshams.ir

www.Bshams.ir

Page 69: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 60

procedure alter − heap (T[1..n],i,v)

T[1..n] is a heap ,the value of T[i] is set to v and the heap

property is re-established we suppose the 1 ≤ i ≤ n

x ← T[i]

T[i] ← v

if v < x then sift-down (T,i)

else percolate (T,i)

.....................................................................

procedure sift− down (T[1..n],i)

this procedure sifts node i down so as to re-establish the

heap property in T[1..n] we suppose that T would be a heap if T[i]

were sufficiently large we also suppose that 1 ≤ i ≤ n

k ← i

repeat

j ← k find the larger of node j

if (2j≤ n and T[2j]> T[k])

k ← 2j

if (2j < n and T[2j+1]> T[k])

k ← 2j+1

exchange T[j] and T[k]

if j == k then the node has arrived at its final position

until j = k //O(logn2)

: ùÚ÷ Àª h, heap áÔ¤ø Àª n , heap ýû ùÂð ¢Àã Àî ­Âê

20 + 21+....+2h−1 < n ≤ 20 + 21+....+2h ⇒ 2h−12−1 < n ≤ 2

h+1−12−1

• n≤ 2h+1-1 =⇒ n+1≤ 2h+1 =⇒ lg(n + 1) ≤ h + 1

⇒ h ≥ lg(n + 1)− 1 =⇒ h=dlg(n + 1)− 1e=blg nc

• n>2h-1⇒ n+1 > 2h ⇒ h < lg n + 1⇒h-1 < lg(n + 1)-1 ≤ h

.´¨ O(logn2) ¥Ýµþ¤Úó öõ¥ Å

www.Bshams.ir

www.Bshams.ir

Page 70: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

61 MAX HEAP ´¡¤¢ .3.3

procedure percolate(T[1..n],i)

we suppose that T would be a heap if T[i] were sufficiently small,

we also suppose that 1≤i≤ n the parametr n is not used herek ← i

repeat

j←k

if ((j>1) && ( T[ j2] < T[k]) )

k← j2

exchange T[j] and T[k]

until j=k; //O(log n)

........................................................

function find−max( T[1..n] )

returns the largest element of the heap T[1..n]return T[1]; //θ(1)

........................................................

procedure delete−max(T[1..n])

Delete the rootT[1]←T[n]

sift-Down(T[1..n-1],1) //O(log n)

ÛÞä ø ¢Âð üõ ¤Âì ÂÊä ßóø ý ÂÊä ßþ¡ .´¨ üÖÎõ éÁ, éÁ.¢ª üõ ô¹÷ sift-Down

procedure insert−Node(T[1..n],v)

T[n+1] ← v

percolate(T[1..n+1],n+1) O(lg n)

: heap ´¡¤¢ ´¡¨Procedure slow −MakeHeap(T[1..n])

this procedure makes the array T[1..n] into a heapfor i ← 2 to n do

percolate(T[1..n],i) // O(n log n)

www.Bshams.ir

www.Bshams.ir

Page 71: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 62

Procedure MakeHeap(T[1..n])

For i← bn2c DownTo 1 Do

SiftDown(T, i) //O(n)

Heap À÷ üõ O(n) ±Âõ n ñÏ ù¿ó¢ þ¤ ×þ ¥ ݵþ¤Úó : Ìì.¢¥Æ: öûÂ

r+1 ·îÀ ®ø r ¼Î¨ ¤¢ ùÂð ×þ ý SiftDown ݵþ¤Úó ¤¢ Repeat ÖÜ´¡¤¢ ßþ áÔ¤ Âð ñ (.©¢¡ Ýû ¤ ×þ ø Àþüõ ßþ ¤ r) ¢¤¢ ǡ þ¥ ñõÂ ê ¥ ô¥ ýû ´î Ûî ¢Àã Ý þÂ Ú ÂÑ ÷ ¤¢ ¤ K = blogn

2c ¤ Heap

:¢Èõ ±¨½õ.For ÖÜ ¤¢ SiftDown ¤¢ Repeat ÖÜ ýû Ç¡Â ¢Àã :t

t ≤ 2× 2k−1 + 3× 2k−2 + . . . + (k + 1)× 20 ⇒

t ≤ −2k + 2k + 2× 2k−1 + 3× 2k−2 + . . . + (k + 1)× 20 ⇒

t < −2k + 2k+1(2−1 + 2× 2−2 + 3× 2−3 + . . .)⇒

t < −2k + 2k+1∞∑

n=1

n(12)n < −2k + 2k+1 × 2⇒ t < 2k(22 − 1)⇒

⇒ t < 3× 2k ⇒ t < 3n⇒ t ∈ O(n) K = blogn2c ⇒ 2k ' n

1

1−x= 1+ x + x2 + . . . ⇒ 1

(1−x)2= 1+ 2x + 3x2 + . . .

⇒ x(1−x)2

= x + 2x2 + 3x3 + . . . ⇒ x(1−x)2

=∞∑

n=1

nxn

⇒∞∑

n=1

n(12)n =

1

2

(1− 1

2)2

= 2

( ýÜÞø¢ ²û) Binomial Heap 4.3

.´¨ ýÜÞø¢ ýû ´¡¤¢ ¥ ÛÚ ×þ Binomial Heap ×þùÂð n2 ýÂÚþ¢ø ùÂð n1 üØþ î. Ýþ¤¢ ¥÷ heap ø¢ ôè¢ heap ×þ ßµ¡¨ ý : )

(.Àª üõ O(n1+ n2 ) heap ø¢ ßþ ôè¢ öõ¥.¢¤¢

www.Bshams.ir

www.Bshams.ir

Page 72: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

63 ( ýÜÞø¢ ²û) BINOMIAL HEAP .4.3

( ý ÜÞø¢ ´¡¤¢ )Binomial Tree 1.4.3

¢¡ Bn−1 Èþ¤ á÷ ßþ ¤¢.¢ª üõ ÓþÂã üµÈ𥠤¬ ´¡¤¢ á÷ ßþ.Àî üõ ê® ´¨¤ À÷¥Âê öä ¤ Bn−1

B0B1 B2 B3

1 1

1

1

1

1

2 3

3

1

n=0Bn=

Bn−1Bn−1¢¡. ÝþÞ÷ üõ ê® ¤

.´¨ (x + y)n ÍÆ °þ® Âþ¥ ;¢ª üõ ùÀõ÷ ýÜÞø¢ ´¡¤¢,´¡¤¢ ßþ

. 2n ´¨  Bn ýû ùÂð ¢Àã •

. 2n−1 ´¨  Bn ýû ï¢Àã •

. ´¨ 2n−1  Bn üÜ¡¢ ýû ùÂð¢Àã •

À÷¤À÷ üìÂê ÕÞä þ ¼Î¨) . (kn

) ´¨  ô k ¼Î¨ ¤¢ Bn ýû ùÂð ¢Àã •( ´¨ ö¤Öµõ ´¡¤¢ Âþ¥

. ´¨ ÂµÈ ÂÚþ¢ ýûùÂðÞû ¥ ùÂð ßþ ¤¢ , ´¨ nÃ÷ Bn Èþ¤ ¤¢ •

Max Binomial Tree 2.4.3

¤À ùbÂð ¢Àä î,Àª ù¢¤¡ °Æ ý¢Àä ýÜÞø¢ ´¡¤¢ ×þ ùÂð Âû Âð.Àþð Max Binamial Tree ×þ ¤ öÀª±÷ Ç÷À÷¥Âê ¥ µØî

www.Bshams.ir

www.Bshams.ir

Page 73: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 64

The Merge Of Max Binomial Trees 3.4.3

ù½÷. Àû¢ üõ ¤ Bn+1 ,Max Binomial Tree B′n ø Max Binomial Tree Bn ø¢

ö È þ¤ °Æ ¢Àä î üµ¡¤¢ , ´¡¤¢ ø¢ Âû ß î ´¨ üÜت merge

.Àª Àû¡ ÂÚþ¢ ´¡¤¢ ´¨¤ À÷¥Âê ´¨ µØî.´¨ ´¨¤ À÷¥Âê min ÂÊä ø ¢¤¢ ¢ø ÆþÖõ ÍÖê . ´¨ θ(1)¥ merge ÛÞä

:ÀþõÂê ´ì¢ Âþ¥ ñ·õ

8

7 6 2

3 1 2

.5

+

9

7 6

4

4

3 2

1

9

7 6 4 8

4 3 2 7 6 2

1 3 1 2

.5

Binomial Heap 4.4.3

. ´¨û Binomial Tree ¥ ý äÞ¹õ H ,Binomial Heap ×þ

www.Bshams.ir

www.Bshams.ir

Page 74: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

65 ( ýÜÞø¢ ²û) BINOMIAL HEAP .4.3

1 6

8

18

14 29

11 17 38

27

12 25

10- - -Head[H]

Binomial-Heap

¤ Âþ¥ «¡ î ÀþÞ÷ üõ ùÀûÈõ ¤ Min Binomial Heap ×þ Ûت ¤¢:¢¤¢

üãþ ,´¨¤¢ ¤ ÝÞõ Heap ´¡¤¢ ×þ «¡ Binomial Tree Âû .11.´¨ ©¤À ÀÜî ýøÆõ µð¤Ã Node Âû ÀÜî

¢¤¢ ¢ø H ¤¢ Binomial Tree ×þ k üÔõ÷ ¼½¬ ¢Àä Âû ý .2,n Binomial Heap ×þ î ´¨ãõ ßþÀ ´¬¡ ßþ .´¨ k ö ý¤¢ î

.ùÀª ÛØÈ Binomial Tree ,blg nc+ 1 ¥ ·îÀ Node

Min Binomial Heap ýø¤ Â ÜÞä 5.4.3

.¢¤À÷ ýÌä ºû ø ´¨ üó¡ î ¢¥¨ üõ Heap ´¡¤¢ ×þ : Make-Heap() •

.Àî üõ ê® H ´¡¤¢ ¤ x , Node : Insert(H, x) •

ÀÜî ßþµÞî î À÷¢Âð üõ H ´¡¤¢ ¥ ý Node ýÂð ù¤ª : Minimum(H) •.Àª µª¢ ¤

Delete ¤ Àª µª¢ ¤ ¤ÀÖõ ßþµÞî î Heap ¥ ýNode : Extract-Min(H) •.À÷¢Âð üõ ¤ Node ¢¡ ø Àî üõ

¤¬ Ýû ø ¢Þ÷ ÓþÂã ÝÞõ Heap ¤¬ ö üõ Ýû ¤û Heap Àª µª¢ 1

.¢¤À÷ ü÷À øÔ û ö ýø¤  ÜÞä ¤¬ Âû ¤¢ ÝÞþÃîõ Heap

www.Bshams.ir

www.Bshams.ir

Page 75: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 66

ýû Node Þ û Ûõ ª î À ÷¢Â ð ü õ ¤ ýHeap ´¡¤¢ : Union(H1, H2) •.¢Â±õ ß ¥ ¤ H2 ø H1 ,Heap ýû ´¡¤¢

î Àû¢ üõ ¤ k ÀþÀ ¤ÀÖõ H ´¡¤¢ ¥ x ,Node : Decrease-Key(H, x, k) •(x > k) .´¨ ö üÜ±ì ¤ÀÖõ ¥ µÞî ÀþÀ ¤ÀÖõ ßþ

.Àî üõ éÁ H ´¡¤¢ ¥ ¤ x ,Node : Delete(H, x) •

Max Binomial Heap 6.4.3

Èþ¤ î ;´¨ ÝÞþÃîõ ý ÜÞ ø¢ öµ¡¤¢ ¥ üÜÚ Max Binomial Heap ×þÇÜê ×þ ùøä ø ÀÜʵõ Ýû üþû Âð ù¤ª ÕþÂÏ ¥ û ´¡¤¢ ßþ ôÞ ýûÛÚ ýû Èþ¤ Âþ¨ ß ö °Æ ¢Àä î ¢¤¢ ¢ø ´¡¤¢ ¥ ü Èþ¤ ¢¥

:Âþ¥ ñ·õ À÷õ.Àª ÝÞþÃîõ

4 9 7

3 2

1

5 6 4

5 2 3

2

........ .....................

üõ ùÀûÈõ ¤ Max Binomial Heap ø¢ merge ÜÞä ¥ ÷Þ ÷ ×þ  þ¥ ¤¢.´¨ Ýî û Èþ¤ ¢Àã Âþ¥,´¨ θ(1)¥Ã÷ ݵþ¤Úó ßþ öõ¥ .ÀþÞ÷

www.Bshams.ir

www.Bshams.ir

Page 76: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

67 FIBONACCI HEAP .5.3

8R

.........6

4 3 4

2 1 2

1

4

+

.......... 9 .............?7

3 2

1

5 6 4

5 2 3

2

8 .........

4

9

3 2

1

.............7

5 6

5

4

2 3

2

6

4 3

2

4

1 2

1

?

.Àî °î ¤ ÀþÀ ø ÝþÀì ýÂÈØþ¢ ø¢û Binomial Heap ͨ: ßþÂÞ

FIBONACCI HEAP 5.3Fibonacci Tree 1.5.3

:¢ª üõ ÓþÂã üµÈ𥠤¬ ´¡¤¢ á÷ ßþ:ÓþÂã

Fn =

Ýî üõ ê® ´¨¤ ´Þ¨ À÷¥Âê öä ¤ Fn−2, Fn−1Èþ¤

n=0

n=1

else

www.Bshams.ir

www.Bshams.ir

Page 77: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 68

.Àî ê® ´¨¤ À÷¥Âê öä ¤ Fn−2,Fn−1 Èþ¤ ´¡¤¢ á÷ ßþ ¤¢

F2: F3 :

F4 :

F0: F1:

Max Fibonacci Tree 2.5.3

°ÆÂ¥ ¤À °Æ ø ´¨ °Æ ý¤¢ öùÂð Âû î ´¨ ü÷±ê ´¡¤¢.ÀªüÞ÷ µØîû À÷¥Âê

: Ýî ý¤Áðù¤Þª °Â ßþ ¤ ü÷±ê ý¨ Âðf0 = 0 , f1 = 1 , f2 = 1 , f3 = 2, ...

´¨  Fn ýû ï ¢Àã ø fn+2 ´¨  Fn ýûùÂð ¢Àã ùÚ÷. (n ≥ 0) fn ´¨  Fn üÜ¡¢ ýûùÂð ¢Àã . fn+1

Fibonacci Heap 3.5.3

öµ¡¤¢ ßþ ýû Èþ¤ î ´¨û Fibonacci Tree¥ üÜÚ Fibonacci Heap ×þ. ÀÜʵõ Ýû ýÂð ù¤ª ÕþÂÏ ¥

Max Fibonacci Heap 4.5.3

Max Binomial Heap ÕÎõ î ´¨ Max Fibonacci Tree ö µ¡¤¢ ¥ üÜÚø ´¨ Fi+2 Û¬ ø ¢ÂÚõ ¤¬ Fi+1 ø Fi ß ö¢Âî Merge ÛÞä üóø ´¨Å .¢Âî ê® Fi+1 ´¨¤ À÷¥Âê öä ¤ Fi Àþ ú÷ ö¢Âî Merge ¤¢ ¹þ ¤¢

www.Bshams.ir

www.Bshams.ir

Page 78: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

69 2-3 öµ¡¤¢ .6.3

ýøÆõ þ µð¤Ã Fi+1 Èþ¤ ¢Àä þ ,Àµê ëÔ ´¨ ßØÞõ ´ó ø¢ ö¢Âî ê® ¥ÛÞä ×þ À þ ¤Ê þ Â è ¤¢ þ ø ´¨ ùÀª ôÞ ¤ î î ´¨ Fi È þ¤ ¢ÀäüÚµÆ Fi öõ¥ Å . ݪ µª¢ Fi ´Þ¨ Fi+1 ´¡¤¢ Èþ¤ ¥ SiftDown

.´¨ ´¡¤¢ áÔ¤ ݵþ¤Úó  ·îÀ ø ¢¤¢Àª¤ Âþ¥ ´¨ âþ¨ üÜ¡ ÅþÀ÷ ´±Æ÷ ü÷±ê ´¡¤¢ ýû ï ÇþÃê ´¨  ø Àî üõ Àª¤ üõ¤ ø ü¡ áÔ¤ üóø ´¨ ¢þ¥ ü÷±ê â.´¨ lg∗ À ¤¢ ø ¢¤À÷ þÃû ¤Æ SiftDown ÛÞä ¹µ÷ ¤¢ Height(Fn) = dn

2e

.ÀûÀ ¤ ü÷±ê ýû ´¡¤¢ î ÀÆþ ý õ÷ : ßþÂÞ

2-3 öµ¡¤¢ 6.3: 2ÓþÂã

.Àª üõ Âþ¥ ýû üðÄþø ý¤¢ î Àª üõ ¹µÆ ´¡¤¢ ×þ 2-3 ´¡¤¢ ×þ

×þ ø ÂÊä ×þ ý¤¢ 2-node ×þ.´¨ 3-node þ 2-node þ üÜ¡¢ ùÂð Âû •.Àª üõ ÂÊä ø¢ ý¤¢ 3-node

.Àª 2-node ×þ öÀ÷¥Âê ùÀû¢ öÈ÷ MiddleChil ø LeftChild Àî­Âê •ôÞ .Àª ö ÀÜî dataL.key ø ùÂð ßþ ÂÊä dataL Àî ­Âê ß»ÞûdataL.key ¥ µÞî ÀÜî ý¤¢ LeftChild Èþ¤ 2-3 ´¡¤¢ Âþ¥ ¤¢ ¬äMiddleChild Èþ¤ 2-3 ´¡¤¢ Âþ¥ ¤¢ ¬ä üõÞ î üó ¤¢ ,ÀµÆû

.Àª üõ dataL.key ¥ µð¤Ã ÀÜî ý¤¢

3-node ×þ ùÀ û¢ ö È ÷ LeftChild ,MiddleChild,RightChild À î ­Â ê •.Àª ùÂð ßþ ÂÊä ø¢ dataL,dataR Àî ­Âê .ÀµÆû

 þ¥ ¤¢ û À Ü î Þ û ß » Þ û ø ù¢ dataL.key < dataR.keyù Ú ÷ þ¥ ¤¢ ý û À Ü î ô Þ dataL.key¥  µ Þ î LeftChild È þ¤ 2-3 ´¡ ¤¢ø dataL.key ¥ µð¤Ã ø dataR.key¥ µÞî MiddleChild Èþ¤ 2-3 ´¡¤¢.ÀµÆû dataR.key ¥ µð¤Ã RightChild Èþ¤ 2-3 ´¡¤¢ Âþ¥ ¤¢ û ÀÜî ôÞ

.À÷¤¢ ¤Âì ¼Î¨ ×þ ¤¢ ü¤¡ ýû ùÂð ôÞ •

FUNDAMENTALS OF DATA STRUCTURES IN C++, µî ¥ µêÂð 2

Ellis Horowitz,Sartaj Sahni,Dinesh Mehta

www.Bshams.ir

www.Bshams.ir

Page 79: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 70

.´¨ ùÀª ¤ 1 Ûت ¤¢ 2-3 ´¡¤¢ ¥ üó·õ

10 20

40

80

A

B C

2-3 ´¡¤¢ ¥ üó·õ 1 Ûت

¤¢ .À÷ª üÞ÷ ù¢¢ ÇþÞ÷ ³õî ¤¢ üØþÃê ø üãìø ¤Ï ü¤¡ ýû ùÂð.¢Âð üõ ¤Âì ÂÔ¬  ü¤¡ ùÂð Âû ¤àµõ À÷¥Âê ù¢¢ Ìä­ä

3h−1ø 2h−1 ß ÂÊä n ø h áÔ¤ 2-3 ´¡¤¢ ×þ ¤¢ ¬ä ßþ ¢ÀãüÜ¡¢ ùÂð Âû î ü÷õ¥ ñø ÷Âî î Àî , °ÜÎõ ßþ ùÀûÈõ ý . ´¨î ü÷õ¥ ôø¢ ÷Âî î üó ¤¢ ¢¢Âð üõ ñÞä , ¢Âð üõ ¤Âì 2-node ×þ ¤¢, ´ã®ø ø¢ ßþ.Àª Àû¡ ñÞä , ¢¢Âð üõ âìø 3-node ×þ ¤¢ üÜ¡¢ ùÂð Âû3-node ø 2-node ý¢Àã ý¤¢ 2-3 ´¡¤¢ ×þ.Àî üõ ¤ ¤ ëê ÷Âî ø¢

.¢ Àû¡

X

X X.........

...........

20

21

2h−1

h = 1

h = 2

h = h

2-node

n = 20 + 21 + · · ·+ 2h−1 ⇒ n = 2h−12−1 = 2h − 1⇒ h =

⌈logn+1

2

www.Bshams.ir

www.Bshams.ir

Page 80: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

71 2-3 öµ¡¤¢ .6.3

............

..........

.............

X X

X X X X X X

2× 30

2× 31

2× 3h−1

h = 1

h = 2

h = h

3-node

n = 2×30 +2×31 + · · ·+2×3h−1 ⇒ n = 2×(3h−1)3−1 = 3h−1⇒ h =⌈

logn+13

: ßþÂ⌈logn+1

3

⌉< h <

⌈logn+1

2

: û §î ¥ ù¢Ôµ¨ 2-3 ´¡¤¢ ×þ ÇþÞ÷

templete<class KeyType >class Two3;//forward declaration

templete< class KeyType >

class Two3Node

friend class Two3 < KeyType >;

private :

Element< KeyType > dataL,dataR;

Two3Node *LeftChild, *MiddleChild, *RightChild;;

templete< class KeyType >

class Two3

public:

Two3(KeyType max,Two3Node< KeyType > *init=0)

:MAXKEY(max), root(init);//constractor

Boolean Insert(const Element< KeyType > &);

www.Bshams.ir

www.Bshams.ir

Page 81: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 72

Boolean Delete (const Element< KeyType > &);

Tow3Node< KeyType > *Search(const Element < KeyType >&);

private:

Tow3Node< KeyType > *root;

KeyType MAXKEY;

;

ø Àª±÷ MAXKEY ÀÜî ý¤¢ ý±µãõ ÂÊä ºû î Ýî üõ ­Âê ¹þ ¤¢ú . ´¨ dataR.key = MAXKEY ý¤¢ 2−node ×þ î Ýîüõ ¢¢¤ÂìÀ÷¥Âê ø¢ MiddleChild ø LeftChild ø ¢ªüõ ù¡£ dataL ¤¢ ùÂð ßþ ÂÊä.¢¢ ´±Æ÷ ù¿ó¢ ¤ÀÖõ Âû ö üõ RightChild ù¢¢ Ìä .Àî üõ ù¤ª ö

2-3 ´¡¤¢ ×þ ý¹µÆ 1.6.3

â ö¢¤ø ´¨¢ ý ¤ üø¢ø¢ ý¹µÆ öµ¡¤¢ ݵþ¤Úó ö üõ ü𢨠.¢¢ ÝÞã Àî üõ ¹µÆ ¤ xÀÜî ÂÊä ýø ùÂð îTow3::Search ý¹µÆýûÀÜî ¤ x ÀÜî ×þ î Àî üõ ù¢Ôµ¨ compare ô÷ üã ¥ ¹µÆ â3,2,1 Âþ¢Öõ °Â â ßþ.Àîüõ ÆþÖõ p À÷õÉ¿Èõ ùÂð ×þ ¤¢ âìø¥ µð¤Ã ,ôø¢ ø ñø ýûÀÜî ß , ñø ÀÜî ¥ µÞî x þ î ßþ µÆ ¤ 4þÖÜ ¤ÂØ ¢Àã.Àû¢ üõ ´Èð , Àª p¤¢ ýûÀÜî ¥ üØþ  þ ôø¢ ÀÜîùÂð n ý¤¢ ´¡¤¢ Âð ßþ . Àª üõ 2-3´¡¤¢ áÔ¤ ¢øÀ½õ for ýû

.¢ Àû¡ O(log n)  Tow3::Search â üðÀ» ùÚ÷ ,Àª

templete< class KeyType >

Tow3Node< KeyType > *Tow3< KeyType >::

Search(const Element< KeyType >& x)

//If the element x is not in the tree,then return 0,Otherwise

//return a pointer to the node that contains this element.

for(Tow3Node< KeyType > *p=root;p;)

www.Bshams.ir

www.Bshams.ir

Page 82: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

73 2-3 öµ¡¤¢ .6.3

switch(p→ compare(x))

case 1 :p=p→ LeftChild;break;

case 2 :p=p→ MiddleChild;break;

case 3 :p=p→RightChild;break;

case 4 :return p ;// x is one of the keys in p

2-3 ´¡¤¢ ×þ Û¡¢ ¤¢ 2.6.3

70 ÂÊä ¤¢ ñ·õ ý .Àª üõ ù¢¨ fµ±Æ÷ 2-3 ´¡¤¢ ×þ Û¡¢ ¤¢ßþ ßµêþ ý ô¥ ý¹µÆ Àµ ¤¢.ÀþÂÚ ÂÑ÷ ¤¢ ¤ 1 Ûت 2-3 ´¡¤¢ Û¡¢ûÀÜî ôÞ Øþ ÂÏ¿ ùÚ÷ Àª ´¡¤¢ ¤¢ f ±ì ÀÜî Âð .Ýû¢üõ ô¹÷ ¤ ÀÜîüÞ÷ ô¹÷ ø ùÀª øÂø ¤ ´Æت ¤¢ ÛÞä ÀµÆû ¢Âê Âʽõ 2-3 ´¡¤¢ ¤¢Û¡¢ ¤ ö Á ó ¢¤À ÷ ¢ø 2-3 ´¡¤¢ ¤¢ 70 ÂÊä ö ñ·õ ßþ ¤¢.¢ÂðÝ÷À , 70 ÂÊä ý¹µÆ ñ¡ ¤¢ ´¨ ô¥ ¤î ßþ ýÂ. Ýî üõ ¤¢ ´¡¤¢´¡¤¢ ¤¢ î ¤ ýÀÜî ùðÂû Àª µª¢ . Ýþª üõ øÂø ¤ ùÂð ôÀî î¢Âê Âʽõ ï ùÂð ×þ ¹µÆ , Ýû¢ ¤Âì ¹µÆ ¢¤õ ¢¤À÷ ¢ø 2-3¢ Ýû¡ õ ö 70 ÂÊä ý¹µÆ üÏ ¤¢ î üð ùÂð .Àª Àû¡ øÂø ¤ÀþÀ ÂÊä, ´¨ ÂÊä ×þ ý¤¢ ú ùÂð ßþ î ¹÷ ¥. ´¨ 80 ÀÜî C ùÂðù¢¢ öÈ÷ (Óó) ´ÞÆì 2 Ûت¤¢ Û¬ ´¡¤¢ .¢Âî ¤¢ ÎÖ÷ ßþ ¤¢ ö üõ ¤

. ´¨ ùÀª¤ ßþ . Ýî ¤¢ ´¡¤¢ ¤¢ 30 ÀÜî x ÂÊä Ýû¡ üõ Àî­Âê ñ´¨ ô¥ Áó ù¢ 3-node ×þ B î ¹÷ ¥ .ÝþÈõ øÂø ¤ B ï ùÂð ¹µÆÂÊä ø¢ ß ¥ î ´¨ ýÂÊä Ûõª D . Ýî ¢¹þ ¤ D ô÷ ýÀþÀ ùÂðÀû¡ ¤Âì B ¤¢ ÀÜî ßþµØî ÂÊä .´¨¤¢ ¤ ÀÜî ßþµð¤Ã xø B ¤¢ ¢õÀû¡ ¤¢ B ¥ A ¤À ùÂ𠤢 D ýÂð ù¤ª ùÂÞû ͨµõ ÀÜî ÂÊä ø ´ª¢

. ´¨ ùÀª ¤ ()´ÞÆì 2 Ûت ¤¢ Û¬ ´¡¤¢.Àª

www.Bshams.ir

www.Bshams.ir

Page 83: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 74

20 40

10 30 70 80

A

B D C

30 ¤¢()

40

10 20 70 80

A

B C

70 ¤¢(Óó)

1 Ûت2-3 ´¡¤¢ öø¤¢ ¤¢-2Ûت

Ûت 2-3 ´¡¤¢ Û¡¢ ¤ 60 ÀÜî xÂÊä ý¤ÁÚþ , ñ·õ ßþ¡ öä üõ ìõ C ùÂ𠤢 60 ý¹µÆ üÏ ¤¢ ï ùÂð .ÀþÂÚ ÂÑ÷ ¤¢ () ´ÞÆì 2ýø ùÂð ßþ .¢¢Âð üõ ¢¹þ E ÀþÀ ùÂð ×þ ´¨ 3-node ×þ C ö.¢¢ÂðÀÜî ßþµØî ýÂÊä ýø Ã÷ CùÂð .(80) ´¨ ÀÜî ßþµð¤Ã ýÂÊä , E ÀþÀ ùÂð ýÂð ù¤ª ùÂÞû (70) ͨµõ ÀÜî ÂÊä.(60) Àû¡´¨ 3-node ×þ A î ¹÷ ¥ f¢À¹õ .¢¢Âð üõ ý¤ÁÚþ C ¥ A ¤À ùÂð Û¡¢.¢ª üõ ¢¹þ 20, 40, 70 ß ¤¢ ÀÜî ßþµð¤Ã ýÂÊä ýø F ÀþÀ ùÂðöä °Â D ø B . ´¨ ÀÜî ßþµØî ýÂÊä ýø A , Û±ì À÷õ F öÀ÷¥Âê öä Ã÷ E ø C °Â ,À÷õ üõ üì A ͨø ø ² öÀ÷¥ÂêG ÀþÀ ùÂð ×þ , ¢¤À÷ ý¤À A ö . À÷ª üõ ý¤ÁÚþ ¤À ùÂð ßþ Û¡¢ù¤ª ùÂÞû 40 ÀÜî ýÂÊä ýø ùÂð ßþ .¢ª üõ ¢¹þ 2-3´¡¤¢ ý¤¢ ÀþÀ 2-3 ´¡¤¢ ,¢ Àû¡ F ü÷õ À÷¥Âê Âð ù¤ª ø A ² À÷¥Âê Âð

.´¨ ùÀª ¤ 3 Ûت

10

20

40

30 60

70

80

A

B D C E

F

G

() ´ÞÆì 2 Ûت2-3 ´¡¤¢ Û¡¢ 60 ¤¢-3Ûت

www.Bshams.ir

www.Bshams.ir

Page 84: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

75 2-3 öµ¡¤¢ .6.3

,Ýî ê® p À÷õ 3-node ×þ Û¡¢ ¤ ýÂÊä ݪ µ¨¡ î öõ¥ Âû. Àþð üõ û ùÂð ÝÆÖ ¤î ßþ î . ¢Âî Ýû¡ ¢¹þ ¤ q À÷õ ýÀþÀ ùÂðüõ Âþ¥ ¤¬ ¤¢ â . ´¨ ùÀª ÝÆÖ ü÷õÂÊä ø q , p p Ýþð üõ

.˻templete< class KeyType >

Boolean Tow3< KeyType >::Insert(const Element< KeyType >& y)

//Insert the element y into the 2-3 tree only if it does not already

// contain an element with the same key.

Tow3Node< KeyType > *p;

Element < KeyType > x=y;

if(x.key>=MAXKEY) return FALSE; //invalid key

if(!root)NewRoot(x,0); return TRUE; //empty 2-3 tree

if(!(p=FindNode(x)))

insertionError();

return FALSE;//key already in 2-3 tree

for(Tow3Node< KeyType > *a=0; ; )

if(p→dataR.key==MAXKEY)// p is a 2-node

p→PutIn(x,a);

return TRUE;

else// p is a 3-node

Tow3Node< KeyType > *olda=a;

a=new (Tow3Node< KeyType >);

x=Split(p,x,olda,a);

if(root==p) //root has been split

NewRoot(x,a);

return TRUE;

else p=p→ parent();

//end of p is a 3-node and for loop

//end of Insert

www.Bshams.ir

www.Bshams.ir

Page 85: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 76

 â ßþ ¥ ôÀî Âû î ý ÔÒø .Àî üõ ù¢Ôµ¨ â ßþÀ ¥ â ßþ:Àª üõ Âþ¥ ¤¬ , À÷¤¢ ùÀúä

(´¨ ùÀª ÂÑ÷ é¬ ü𢨠ý < KeyType > ýÚó µõ¤ ¥ )

: void Tow3::NewRoot(const Element& x,Tow3Node *a) •ü÷õ¥ . Àî Âç Àþ 2-3 ´¡¤¢ Èþ¤ î ¢ª üõ ü÷¡Âê ü÷õ¥ â ßþ(new root) ÀþÀ Èþ¤ öø¤¢ x ¢ÂÔõ ÂÊä ¢¥¨ üõ ¤ Middle Child, a îÀþÀ Èþ¤ ( ² À÷¥Âê) LeftChild ÛþÀ± Ã÷ üÞþÀì Èþ¤ .¢ª üõ ¤¢

.Àª Àû¡

:Tow3Node* Tow3::Find(const Element & x) •´¡¤¢ ×þ ëê â .´¨ (1 õ÷Â) Tow3::Search ùÀª ¬ ¿Æ÷ â ßþ.Àû¢ üõ ¤Âì ¹µÆ ¢¤õ x.key ÀÜî ýÂÊä ¤Ì ý ¤ üú Âè 2-3ßþ Âè ¤¢ .¢ª üõ ù¢¢ ´Èð ÂÔ¬ ¤ÀÖõ ùÚ÷ Àª µª¢ ¢ø ÀÜî ßþ Âðâ .À÷¢Âð üõ  ¤ ¹µÆ ßþ ¤¢ ùÀª ìõ ï ùÂð ýÂð ù¤ª ¤¬FindNode â ͨ î ýÂð ù¤ª ù¡£ ý ý p Âçµõ ¥ Tow3::Insert

ý ù¢¢ öÞµ¡¨ ß»Þû FindNode . Àî üõ ù¢Ôµ¨ , ¢ª üõ ù¢¢ ´ÈðÂßþ . ¢¥¨ üõ ¤¢ ì (Èþ¤) root p ¥ ´È𥠤 õ î Àî üõ ¢¹þ ¤ . Àª p root ÂÆõ ¤¢ ¢õ ýû ùÂð ¥ üµÆó À÷ üõ ý ù¢¢ öÞµ¡¨ùÂð Àóø §Âµ¨¢ , ùÂð ×þ ÝÆÖ ¥ Å Âþ¥ ´¨ ¥÷ ý ù¢¢ öÞµ¡¨ ß

. ´¨ ý¤ø® ùÀª ÝÆÖ

:void InsertionError() •¤¢ ö ¤¢ ´¨ ´¡¤¢ ¥ ýÂÊä ýøÆõ ©ÀÜî ¤ ýÂÊä Ýû¿ üµìø

. ¢Âî Àû¡ ôä ¤ Ρ â ßþ . ¢¢ Àû¡ ¤ üþΡ Ýî

: void Tow3Node::PutIn(const Element& x,Tow3Node *a) •, ´¨ ÂÊä ×þ ý¤¢ fãìø î (this)ùÂð Û¡¢ x ÂÊä ¤¢ ý â ßþ ¥¤¢ ø Ýû¢ üõ ¤Âì x ´¨¤ ´Þ¨ ¤¢ fÖì¢ ¤ a ´¡¤¢ Âþ¥ ¤¢ . Ýî üõ ù¢Ôµ¨üܱì Âþ¢Öõ ùÀª Middle Child ýøÆõ a ùÚ÷ ¢¢Âð dataL  x Âð ¹µ÷x Âð . À÷ª üõ RightChild ø dataR  °Â MiddleChild ø dataL

.Àª Àû¡ RightChild ÛþÀ± a ùÚ÷ ¢¢Âð dataR ÛþÀ±

:Eelement& Tow3::Split(Tow3Node* p,Element& x,Tow3Node *olda,*a) •Âþ¥ ª ÂÊä ø¢ Ûõª Àµ î (p) À÷õ Tow3Node ×þ ýø¤  â ßþ

www.Bshams.ir

www.Bshams.ir

Page 86: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

77 2-3 öµ¡¤¢ .6.3

ýø Àî üõ ù¤ª ö a î ùÀª ¢¹þ üó¡ ùÂð.Àî üõ ÛÞä Àª üõÂÊä .Àª üõ x ø p ¤¢ ¢õ óø ÂÊä ø¢ öõ ¥ ÀÜî ßþµð¤Ã ýÂÊäöÀ÷¥Âê Âð ù¤ª ¨ .Àª üõ p ¤¢ ùÀ÷õ üì ÂÊä ú , ÀÜî ßþµØî ý¤¢¤ À÷ª ÓþÂã a ø p ¤¢ Àþ î ýÀ÷¥Âê ù¢¢ Ìä ¤ú olda Âð ù¤ª ø p üܬ

. À÷¢Âð üõ  ¤ ÷õ ÀÜî ÂÊä â ßþ . Àî üõ ñçª

Ã÷ a ø ¢ª ¤¢ p ¤¢ Àû¡ üõ î ´¨ ýÂÊä ùÀû¢ öÈ÷ x , Insert â ¤¢. ´¨ ùÀª ¢¹þ for ÖÜ ¤ÂØ ßþ¡ ¤¢ üð¥ î ´¨ ý ùÂð ùÀû¢ öÈ÷ üÚµÆ ùÀª é¬ Ûî öõ¥ î Ýî üõ ùÀûÈõ üðÀ» Ûܽ ø þù ýÂÂÊä n 2-3 ´¡¤¢ ×þ Û¡¢ ý¤ÁÚþ ßþ . ¢¤¢ 2-3 ´¡¤¢ ÕÞä

.¢Âð üõ ¤¬ O(log n)  ü÷õ¥ ¤¢

2-3 ´¡¤¢ ×þ ¥ éÁ 3.6.3

Âð . ´Æ÷ ý¤ÁÚþ ¥  ÛØÈõ üõúÔõ à½ó 2-3 ´¡¤¢ ×þ ¥ éÁÂÊä ×þ ùÀª éÁ ùÂð ÛþÀ± ùÚ÷ Àª±÷ ï ùÂð î Ýî éÁ ¤ ýÂÊäñ·õ ý . Ýû¢ üõ ô¹÷ ¤ éÁ ÛÞä ï éÁ ø ´¨ ï ùÂ𠤢 î °¨õéÁ ¤ ¢¤¢ ¤Âì (Óó) ´ÞÆì 4 Ûت Èþ¤ ¤¢ î 50 ÀÜî ÂÊä Ýû¿ Âð60 ÀÜî ýÂÊä þ 20 ÀÜî ýø ýÂÊä ´¨ ßØÞõ ÂÊä ßþ ùÚ÷ ÝîÂÊä ¥ Ý÷ üõ üÜî ´ó ¤¢ . À÷¤¢ ¤Âì ï ùÂ𠤢 úþ ø¢ Âû ø ¢ªËþãâìø ÀÜî ßþµØî ÂÊä þ ø ² ´Þ¨ ¤¢ âìø ´¡¤¢ Âþ¥ ¤¢ ÀÜî ßþµð¤Ã

.Ýî ù¢Ôµ¨ ,¢ª éÁ Àþ î ýÂÊä ´¨¤ ´Þ¨ ´¡¤¢ Âþ¥ ¤¢ýø¤  ¤ ¶½ ßþ . ÝþÂð üõ ÂÑ÷ ¤¢ ¤ ï ùÂð ×þ ¥ éÁ ú ¹µ÷ ¤¢ÍÖê 70 ÀÜî ÂÊä éÁ ý . Ýû¢ üõ õ¢ (Óó) ´ÞÆì 4 Ûت ´¡¤¢¤î ¹µ÷ . Ýû¢ üõ ¤Âì dataR.key ¤¢ ¤ MAXKEY , C ùÂ𠤢 î ´¨ üêîÛت 2-3 ´¡¤¢ ¥ 90 ÀÜî éÁ¡ ý . ´¨ ùÀª ù¢¤ø () 4 Ûت ¤¢Ã ÷ D ù 𠤢 ø Ý î üõ ÛÖ µ õ dataL ¤ dataR ´Æþ üõ () ´ÞÆì 4ßþ ¹µ÷. (dataR.key=MAXKEY) Ýû¢ üõ ¤Âì MAXKEY ¤ dataR.key

. ´¨ ùÀª ¤ ()´ÞÆì 4 Ûت 2-3 ´¡¤¢ ¤¢ ¤î

www.Bshams.ir

www.Bshams.ir

Page 87: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 78

50 80

A

B C D10 20 60 70 90 95

óø2-3 ´¡¤¢(Óó)A

B C D

50 80

10 20 60 90 95

70 ùÂð éÁ ( )

50 80

10 20 60 95

A

B C D

90 ùÂð éÁ()

ø ø Óó ýû ´ÞÆì , 4 Ûت

C ùÂð î ¢ª üõ °õ Âõ ßþ. ÀþÂÚ ÂÑ÷ ¤¢ ¤ 60 ÀÜî ÂÊä éÁ ñüõ ø¤ ßþ ¥ , ´¨ 3-node ×þ B üãþ C ùÂð ² ¢ÃÞû î ¹÷ ¥ . ¢¢Âð üú¤ 50 ÀÜî ø ù¢¢ ñÖµ÷ , A ,¤À ùÂð dataL öØõ ¤ 20 ÀÜî ÂÊä Ý÷´¡¤¢ B ¤¢ dataR.key=MAXKEY ý¤Âì ¥ Àã Ýû¢ ñÖµ÷ C ùÂð ¤À ¥ßþ . ¢¢Âð üõ ÛþÀ± ,ùÀª ¤ () ´ÞÆì 4 Ûت ¤¢ î »÷ ¤¬ 2-3

www.Bshams.ir

www.Bshams.ir

Page 88: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

79 2-3 öµ¡¤¢ .6.3

î üõÚû . ¢ª üõ ùÀõ÷ (rotation) Ç¡Â û ù¢¢ üþ¹ ø ñÖµ÷ ÀþÂê60 éÁ î üõÚû À÷õ . ¢ª üõ üú D ùÂð ,¢¢Âð üõ éÁ 95 ÀÜî ÂÊä2-node ×þ C üãþ ² ´Þ¨ ¢ÃÞû î  Àª üÞ÷ ßØÞõ rotation Àª ô¹÷Ýî üõ éÁ ¤ D ùÂð ø ù¢Âî ÛÖµõ C ² ¢ÃÞû Û¡¢ ¤ 80 ¤ ßþ . ´¨üõ éÁ ùÂð ×þ °î ¤¢.¢ª üõ µ Ô ð (combine) °î À þ ê ß þ .95 ÂÊä éÁ .¢¢Âð üÞ÷ éÁ ýùÂð ÷Ú»ûÇ¡Â ¤¢ î ü¤¬ ¤¢ ¢ª50 ÀÜî ÂÊä éÁ .¢¢Âð üõ () ´ÞÆì 4 Ûت 2-3 ´¡¤¢ üúµõñ .Àª Àû¡ () ´ÞÆì 4 Ûت 2-3 ´¡¤¢ ¤ °õ Ã÷ ´¡¤¢ ßþ ¥B ùÂ𠢪 üõ °õ î ÀþÂÚ ÂÑ÷ ¤¢ ´¡¤¢ ßþ ¥ ¤ 10 ÀÜî ÂÊä éÁ2-node ×þ C üãþ B ´¨¤ ´Þ¨ ¢ÃÞû þ î Ýî üõ ü¨¤Â öî .¢¢Âð üúî »÷ Èõ üÈ¡Â Ý÷ üõ Àª 3-node ×þ C Âð .3-node ×þ þ ´¨ÛÞä ×þ ùÚ÷ Àª 2-node ×þ Âð ø Ýû¢ ô¹÷, ´êÂ𠤬 60 éÁ ýÂéÁ ´ã®ø Èõ , ´¨ 2-node ×þ C ö ¹þ ¤¢ .¢Âð üõ ¤¬ °îÂùÂð ø ùÀª ÛÖµõ B 80 ø 20 ýûÀÜî Â¬ä ¤ ßþ .Ýî üõ ÛÞä 95÷Ú»û ý¤¢ A ùÂð ¤À î Àª üõ °õ óbÆõ ßþ ÀÂû.¢¢Âð üõ éÁ C

Ýþ¢¢ ô¹÷ C ýÂ î »÷ À÷õ ݵÆ÷ üõ ¢±÷ Èþ¤ ¤À Âð .Àª±÷ ýÂÊ䤢 ø(60 ÂÊä éÁ) Ýû¢ ¤Âì ´Æ ø ü¨¤Â ¢¤õ ¤ ö ´¨¤ ø ² ¢ÃÞû ,éÁ ü𢨠, ´¨ Èþ¤ A ö .Àþ¢Âð üõ üú (95ÂÊä éÁ) D ¹µ÷

.(() ´ÞÆì 4 Ûت) Àª Àû¡ ÀþÀ Èþ¤ B ø ùÀª

www.Bshams.ir

www.Bshams.ir

Page 89: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 80

A

B C D

20 80

10 50 95

60 éÁ()A

B C

20

50 8010

95 éÁ()

10

20

80

A

B C

50 éÁ()

20 80B

10 éÁ()

4 Ûت2-3 ´¡¤¢ ×þ ï ùÂð¥ éÁ ÛÂõ

ÂÊä éÁ ¥ Šǵã®ø ö¢Âî ÅØãõ ý ôøÃó ¤¬ ¤¢ ¤ p ùÂð :1 ÜÂõ. Àû¢ Âç ÂÑ÷ ¢¤õ

:2 ÜÂõfor(;p has zero element && p!=root;p=r)

left r be the parent of p and let q be the left or right sibling of p ;

if(q is a 3-node) perform a rotation

else perform a combine;

www.Bshams.ir

www.Bshams.ir

Page 90: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

81 2-3 öµ¡¤¢ .6.3

p ² ´Þ¨ À÷¥Âê . Àª Èþ¤ Àþ p ùÚ÷,¢¤À÷ ýÂÊä p Âð :3 ÜÂõ.¢ª üõ éÁ p ùÂð ø ùÀª Èþ¤ ÛþÀ±

¤À ü÷õ þ ø ´¨¤ , ² À÷¥Âê p î ßþ µÆ Ç¡Â ×þ ý ´ã®ø ¨¤ qùÚ÷ ,Àª r ² ´Þ¨ À÷¥Âê p Âð . Àþ üõ ¢ø ¡þ Àª r üãþ ¢¡ßµêÂð ÂÑ÷ ¤¢ öøÀ î Àª µª¢ . Àî­Âê p ² ´Þ¨ À÷¥Âê öä Ç¡Â ¨ . ´¨ ùÀª ÓþÂã üµ¨¤¢ q , ´¨ 3-nodeþ 2-node ×þ r î ßþÌä î Àû¢ üõ öÈ÷ ? ´õä . ´¨ ùÀª ¤ 5 Ûت ¤¢ ý¤¢Þ÷ ¤¬ üãþ)ÀµÆû û ùÂð öÀ÷¥Âê ùÀû¢ öÈ÷ d ø c,b,a. ¢¤À÷ üµÞû ¢þ¥ ÏÂõ ù¢¢

.( öµ¡¤¢ Âþ¥ ýû Èþ¤

-

r

p q

a b c d

X

Y Z

?

X

r

p qY ?

Z

a b c d

Àª üõ r ² À÷¥Âê p (Óó)

pq

r r

q

Àª üõ r ü÷õ À÷¥Âê p ()

Z

YX

a b c d dcba

? Y ?

X Zp-

a

r

b c cb

a

d de e

r

q p q p

X Y

ZW W Y

X Z

-

Àª üõ r ´¨¤ À÷¥Âê p ()

2-3 ´¡¤¢ ¤¢ Ç¡Â ý Óܵ¿õ ´ã®ø ¨-5 Ûت

www.Bshams.ir

www.Bshams.ir

Page 91: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 82

6 Ûت ¤¢ ´¨ r ² ´Þ¨ À÷¥Âê p î üµìø combine ÜÞä ´ã®ø ø¢. ´¨ ùÀª ù¢¢ öÈ÷

r

p q

x

y

a b c

-

r

px y

a b c

a b c

d

r

p qx

y

z-

d

a b c

p

rz

x y

6 Ûت

( Óó)

( )

¤¬ 2-3 ´¡¤¢ ¤¢ ï ùÂð ×þ éÁ ÛÂõ ¥ ñø ýÜÂõ Àî ±ª:Àª üõ Âþ¥

template < class KeyType >

Two3< KeyType >::DeleteKey(Two3Node< KeyType > *p,

const Element< KeyType >& x)

//Key x.Key is to be deleted from the leaf node p.

if( x.Key==p→dataL.Key) // first element

if(p→dataR.Key!=MAXKEY )

// p is a 3-node

p →dataL = p → dataR;

p → dataR.Key =MAXKEY;

else p →dataL.Key=MAXKEY; // p is a 2-node

else p → dataR.Key =MAXKEY; // delete second element

www.Bshams.ir

www.Bshams.ir

Page 92: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

83 2-3 öµ¡¤¢ .6.3

´¨ r ² À÷¥Âê p üµìø Combineø Rotation ýû ÜÞä Àî ß»Þû:Àª üõ Âþ¥ ¤¬

//Rotation when p is the left child of r and q is the middle child of r.

p → dataL= r → dataL;

p → MiddleChild = q → LeftChild;

r → dataL = q → dataL;

q → dataL = q → dataR;

q → LeftChild = q → MiddleChild;

q → MiddleChild = q → RightChild;

q → dataR.Key = MAXKEY;

...............................................................

//Combine when p is the left child of r and q is the right sibling of p.

p → dataL= r → dataL;

p → dataR= q → dataL;

p → MiddleChild = q → LeftChild;

q → RightChild = q → MiddleChild;

if(r → dataR.Key = MAXKEY)// r was a 2-node

r → dataL.Key = MAXKEY;

else r → dataL= r → dataR;

r → dataR.Key = MAXKEY ;

r → MiddleChild = r → RightChild;

2-3 ´¡¤¢ ×þ ¥ éÁ ¢ÂØÜÞä Ûܽ ø þù 4.6.3

O(1)  ü÷õ¥ ¤¢ üþú Ç¡Â þ °î ¢ÂØÜÞä ×þ î ´¨ É¿Èõ×þ Âð. ¢¢Âð üõ Ûõî éÁ ÛÞä ,¢ª ô¹÷ Ç¡Â ×þ Âð . ¢Âð üõ ô¹÷ßþ . ¢ª üõ ÛÖµõ  ¼Î¨×þ 2-3 ´¡¤¢ ¤¢ p ,¢Â𠤬 °îÂ2-3 ´¡¤¢ áÔ¤¥ À÷Â𠤬 À÷ üõ éÁ ×þ ñ¡ ¤¢ î ü±î ¢Àãü÷õ¥ ÂÊä n 2-3 ´¡¤¢ ×þ ¥ éÁ ÛÞä ¹µ÷ ¤¢ ø ¢Âî Àû¿÷ ¥ø¹

.¢¤¢ ¥÷ O(log n) ÂÂ

www.Bshams.ir

www.Bshams.ir

Page 93: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 84

Red-Black ù¨ - ÃõÂì ´¡¤¢ 7.33:Àª üõ Âþ¥ ¤¬ ù¨-ÃõÂì ´¡¤¢ ×þ

ù¨ - ÃõÂì ´¡¤¢ «¡ 1.7.3

. ´¨ ù¨ þ ø ÃõÂì þ ùÂð Âû •

. ´¨ ù¨ nil ï Âû •

À÷ üÞ÷ ÃõÂì À÷¥Âê,ÃõÂì ùÂð ×þ ¤¢ ) .ÀµÆû ù¨ , ÃõÂì ùÂð ×þ À÷¥Âê ø¢ •(Àª

¢Àã Ûõª ( ÝÖµÆõ À÷¥Âê f õøÃó ÷) À÷¥Âê ï ùÂð ×þ ¥ ù¢¨ ÂÆõ Âû •. ´¨ ù¨ ùÂð ü÷ÆØþ

(Àª üÞ÷ ü¨¨ ¯øª ¥ ¯Âª ßþ). ´¨ ù¨ ´¡¤¢ Èþ¤ •

:Âþ¥ ñ·õ À÷õ

26

17 41

14 21

10 16 19 23

7 12 15 15

3

4730

28 38

35 39

NILNIL

NILNILNILNIL

NILNILNILNIL

NILNIL

NILNIL

NILNIL

NILNILNIL

NILNIL

.Àª üõ ü¨Àì ÀÞ½õ Âµî¢ ùøà ¥ µêÂð ´ÞÆì ßþ °óÎõ 3

www.Bshams.ir

www.Bshams.ir

Page 94: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

85 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3

üþÀµ ýþÌì ø Óþ¤ã 2.7.3

ùÂð ¢Àã ´¨  bh(X)þ Black-Height(x) ÓþÂã  :Black-Height(x)

.4À÷¥Âê ï ×þ x ¥ ù¨ ýû: uncle(x)

if parent[x]=right[parent[parent[x]]] then

uncle[x]:=left[parent[parent[x]]]

else uncle[x]:=right[parent[parent[x]]]

  , ´¨ ü Ü ¡¢ ù ð n ý¤¢ î RB ´¡¤¢ ×þ á Ô ¤  · îÀ : 1 Ì ì. ´¨ 2 log(n+1)

2

ù¿ó¢ Èþ¤ ´¡¤¢ Âþ¥ ×þ î Ýû¢ üõ öÈ÷ Àµ ëê Ìì ± ýÂ: ±áÔ¤ ýø¤  ÂÖµ¨ ¥ ± ý . ´¨ üÜ¡¢ ùÂð 2bh(x) − 1 ý¤¢ ÛìÀ x

.¢ª üõ ù¢Ôµ¨ ´¡¤¢ ¤¢ x üÜ¡¢ ùÂð: DZÂÖµ¨ þ

´¡¤¢ Âþ¥ ßþÂ. ´¨ nil ¹µ÷ ¤¢ ø ï fÞµ x , Àª ÂÔ¬ x áÔ¤ Âð.¢¤¢ üÜ¡¢ ùÂð 20 − 1 = 0 üãþ 2bh(x) − 1 ÛìÀ x Èþ¤

: ü ÂÖµ¨ ôðÀ÷¥Âê ø¢ ý¤¢ x ø Àª üõ ´±·õ ý¢Àä bh(x) . ÀþÂÚ ÂÑ÷ ¤¢ ¤ x üÜ¡¢ ùÂðú÷ Black - Height, ù¨ þ Àª ÃõÂì Ø÷ °Æ  öÀ÷¥Âê ¥ ôÀî Âû. Àª üõx ¢¡ ¥ µÞî üäÔ¤ x À÷¥Âê Âû Ø÷ ´Üä . ¢ Àû¡ bh(x)-1 þ bh(x) ÂÂ×þ Èþ¤ ´¡¤¢ Âþ¥ Âû î ÝþÂÚ ¹µ÷ ÂÖµ¨ ­Âê ¥ ù¢Ôµ¨ Ý÷ üõ ¢¤¢ÛìÀ x bÈþ¤ ´¡¤¢ Âþ¥ ßþÂ. ¢¤¢ üÜ¡¢ ùÂð 2bh(x)−1 − 1 ÛìÀ x À÷¥Âê

. ´ª¢ Àû¡ üÜ¡¢ ùÂð 2bh(x)−1 − 1+ 2bh(x)−1 − 1+ 1 = 2bh(x) − 1¤¢ öøÀ) û ùÂð ¥ üÞ÷ ÛìÀ h áÔ¤ ´¡¤¢ ¤¢ î Ý÷¢ üõ ÂÚþ¢ éÂÏ ¥Âè ¤¢ Âþ¥ . ÀµÆû ù¨ , ï Èþ¤ ¥ ù¢¨ ÂÆõ Âû ýø¤  ( Èþ¤ ßµª¢ ÂÑ÷Black-Height ¹µ÷ ¤¢. Àª Àû¡ËÖ÷ ´¡¤¢ «¡ ¥ 3 ´¬¡ ¤¬ ßþ

.¢ Àû¡ h2ÛìÀ Èþ¤

n ≥ 2h2 − 1 =⇒ 2

h2 ≤ n + 1 =⇒ h ≤ 2 log(n+1)

2

. ´¨ O(log n) ,RB ´¡¤¢ áÔ¤ : ¹µ÷

. Ýþ¤Þª üÞ÷ Â÷ ø ´¨ Âb ü x ¢¡ Ù÷¤ 4

www.Bshams.ir

www.Bshams.ir

Page 95: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 86

ö¤ø¢ 3.7.3

¤±¹õ Íþª üÌã ¤¢ éÁ ø ¤¢ ÜÞä ¥ Àã RB ´¡¤¢«¡ üþ¥ ýÂû Âð ù¤ª ¤µ¡¨ ¤¢ üÂç þ Ýî­ä ¤ û ùÂð ¥ üÌã Ù÷¤ î Àª Ýû¡üõ ÓþÂã ( ¢ÂÚ³ ø ¢ÂÚµ¨¤ ) ö¤ø¢ ÛÞä ø¢ ¤Ñõ ßÞû . ÝþÞ÷ ñÞä×þ «¡ ¤¢ üóت ºû ÛÞä ø¢ ßþ î ´¨ ¼®ø Âþ¥ Ûت . ÝþÞ÷

. ¢Âî Àû¿÷ ¢¹þ üþø¢ø¢ ´¡¤¢À÷¥Âê î ÝþÞ÷ üõ ­Âê ¢ª üõ ô¹÷ ¢ÂÚ³ ö¤ø¢ ×þ î üõÚû : µØ÷

. Àª±÷ nil ÂÑ÷ ¢¤õ ùÂð ´¨¤Âç ö¤ø¢ ×þ  ¤¢ û Âð ù¤ª ú Âþ¥ Àª O(1) ¥ ö¤ø¢ î ´¨ ¼®ø

. À÷õ üõ Âç öøÀ à Âþ¨ ø ÀþÞ÷ üõ

y

x

x

y

β βα

αγ

γ

-Right-Rotate(T,y)

Left-Rotate(T,x)

Left-Rotate(T,x)

1. y ← right[x] // SET y

2. right[x] ← left[y] // Turn y’s left subtree into x’s right subtree

3. if left[y] 6= NIL then

4. p[left[y]] ← x

5. p[y] ← p[x] // Link x’s parent to y

6. if p[x] =Nil then

7. root[T] ← y

8. else if x= left[p[x]]then

9. left[p[x]] ← y

10. else right[p[x]] ←y

11. left[y] ← x // Put x on y’s left

12. p[x]← y

www.Bshams.ir

www.Bshams.ir

Page 96: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

87 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3

¤¢ 4.7.3üõ ÃõÂ ì ¤ x ¤ î ß þ ýÂ Ý þ Þ ÷ üõ ¤¢ ¤ x üø¢ø¢ ´¡¤¢ ¤¢ ¤¢ §¨  Àª ù¨ x ¤À Âð . À÷õ üõ ´ û ùÂð ôÞ ý 5bh î ´¨ ¼®ø , ÝþÞ÷¤¢ . Ýþø ¤ üõ y=uncle[x] å¨ Àª ÃõÂì x ¤À Âð õ À¨¤ üõ öþ ¤¢´¡¤¢ ¯Âõ 4 ´¬¡ ÐÔ ÜÂõ Âû ¤¢ î ´Æþ üܬ ùÀþ ýÀã ´ÞÆìáÔ¤ ý ¤ Àª üõ 3 ´¬¡ ý¤Âì ôÀä ¯Âõ î ¢õ ñت RB

ý ¤ ¤î ßþ ø ÝþÞ÷ ñ¨¤  äÔ¤ ¤ ÛØÈõ ø ÝþÞ÷ Û ´¡¤¢ üÜãêø ¢ª ¤Âì x ¤À ö¢ ù¨ ¯Âª þ ݨ Èþ¤ Ýû¢ õ¢ ¤ÀÖ÷  Ψ¼½Ê ´¨ ÃõÂì x ¤À î ü÷õ¥ ú ´¡¤¢ î Àª üõ ôÜãõ . ݨ úµ÷

.¢¤¢ ¥÷Ǫ ´¨ Parent[Parent[x]] ´¨¤ þ ² À÷¥Âê Parent[x] Ø÷ °Æ Â

:6 ´¨ ö¤Öµõ Âþ¥ ´ó ¨ ÂÚþ¢ ´ó ¨ î Àû¢ üõ ¤ øÔµõ ´ó. ´¨ ÃõÂì y : ñø ´ó

. ´¨ ©¤À ´¨¤ À÷¥Âê x ø ù¨ y : ôø¢ ´ó. ´¨ ©¤À ² À÷¥Âê x ø ù¨ y : ô¨ ´ó

üõ ù¨ ´¡¤¢ Èþ¤ 5 ´¬¡ ÐÔ ý RB-insert ý öþ ¤¢ : µØ÷. ¢ª

C

A D

B

y

β γ

εδ

-A

C

D

β γ

δ ε

y

new x

C

B

A

D

x

α β

γ δ ε

-C

B

A γ

α β

D

δ ε

ñø ´ó

new x

y

Black-Height 5

¢ª üõ ßã y=uncle[x] Ù÷¤ §¨  ßþ 6

www.Bshams.ir

www.Bshams.ir

Page 97: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 88

C

A

β

δ

ε

-ôø¢ ´ó

x

yC

A

B δ

y

x

α β

ε

?B

CA

α βε δ

x

ô¨ ´ó

RB-Insert(T,x)

1. Tree-Insert(T,x)

2. color[x]← RED

3. while x6=root[T] and color[p[x]]=RED do

4. if p[x] =left[p[p[x]]] then

5. y ← right[p[p[x]]]

6. if color[y] =RED then

7. color[p[x]] ← BLACK // Case 1

8. color[y] ← BLACK // Case 1

9. color[p[p[x]]] ← RED // Case 1

10. x ← p[p[x]] // Case 1

11. else if x = right[p[x]] then

12. x ← p[x] // Case 2

13. LEFT-Rotate(T,x) // Case 2

14. color[p[x]] ← BLACK // Case 3

15. color[p[x]] ← RED // Case 3

16. RIGHT-Rotate(T,p[p[x]]) // Case 3

17. else(same as then clause with ”right” and ”left” exchanged)

18. color[root[t]]←BLACK

www.Bshams.ir

www.Bshams.ir

Page 98: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

89 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3

1114

7

2

1

5 8

4

15-case 1

x

11

2

?case 2

7

4

15x

y

7

8

14case 3y

2

7

112

4

15

1

x

x

51

ùÂð ×þ ¤¢

14

15

5

4

11

1

5 8

14

éÁ 5.7.3

ô÷ üµÒÔ ùÂð ×þ RB-Delete ý¥¨ ù¢ ¤¢ ý¥Âõ Íþª ý¥¨ ù¢¨ ýÂî ´¨ üþû Ôóõ öÞû ýø ùÂð ßþ . ÝþÞ÷ üõ ÓþÂã T ´¡¤¢ ý nil[T]

Âþ¨ ø Àª üõ ù¨ DZüª ßþ Ù÷¤ Ôóõ . ¢¤¢ ¢ø ´¡¤¢ üóÞãõ ýû ùÂ𠤢. À÷ÂÚ ù¿ó¢ Âþ¢Öõ À÷ üõ û Ôóõ

üóÞãõ ùÂð ×þ À÷õ nil À÷¥Âê ×þ Ý÷ üõ üµÑê½õ DZ üª ßþ¥ ù¢Ôµ¨ DZ üª ßþ ¯Âõ Parent Ôóõ ù¢Ôµ¨) ÝþÞ÷ ¤µê¤ Àª üõ x ©¤À î ´¡¤¢(. Àª üõ while ÖÜ ý ßóø ø RB-Delete-Fixup ü÷¡ Âê ¤¢ üµÑê½õ

ßþ ¤¢) Ýû¢ ù¤ª nil[T] ¤ nil ýûÂð ù¤ª ôÞ RB ´¡¤¢ ¤¢ Àþ ßþ¤¢ ýù¢Ôµ¨ Ûì ø «¡ ¤ÀÖõ ¥û DZ üª ßþ ÂÒµõ Parent Ôóõ , ÜÂõ

(.¢¤À÷ ¢¡, ¹µÆ üø¢ø¢ ´¡¤¢ ¥ éÁ À÷õ üªø¤ Àµ ÂÊä ×þ éÁ ýÂÝþÞ÷ ´ì¢ Àþ. ÝþÞ÷ üõ ¼½Ê ¤ ´¡¤¢ ų¨ ø éÁ ¤ ÂÑ÷ ¢¤õ ÂÊäý¹µÆ ´¡¤¢ ¤¢ ¢¡ ýµÞû RB ´¡¤¢ ¥ éÁ ¯Âõ ¤µ¨¢ ±ª îüõ ù¤ª nil[T] nil ýûÂð ù¤ª RB ´¡¤¢ ¤¢ ö ´Æ÷ öÆØþ fÖì¢ üø¢ø¢

www.Bshams.ir

www.Bshams.ir

Page 99: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 90

. ¢ª üõ üû¢ ¤ÀÖõ üϪ ºû öøÀ 7 Í¡ ¤¢ Parent[x] Ôóõ ß»Þû ø ÀþÞ÷

. ´êÂð Àû¡ ¤ÀÖõ nil[T].Parent, Àª nil ï ×þ x î Ýû ü¤¬ ¤¢  þ¥16 ¯Î¡ ¤¢ ´¡¤¢ , Àª ù¨ y Ù÷¤ î ü¤¬ ¤¢ , ùÀª Âî£ Âç ø¢  ùøäRB ´¡¤¢ ¤¢ 4 ´¬¡ ¢ª üõ ¼½Ê RB-Delete-Fixup ü÷¡Âê 17 ø

. ¢ª üþ¥ùÂð ö ¢¡ þ ¢ª ü÷¡Âê T ´¡¤¢ ýø¤  z ùÂð RB-Delete Âð : µØ÷¤µ¨¢ ôø¢ ´ó ¤¢ . ¢ª üõ éÁ ö (Successor) ýÀã ÂÊä þ ¢ª üõ éÁ

. Àª Àû¡  Ã÷ Key[z]:=Key[Succ(z)]

. Ýõ÷ üõ y ¤ ùÀª éÁ ùÂð : ¢¢¤Â줱ä y ¥ µªÁ𠤢 î ýÂÆõ ¢ª üõ °õ ö ¥ éÁ , Àª ù¨ y Âðßµê¤ ß ¥ ¶ä ßþ ø Àª µª¢ û ÂÆõ Âþ¨ ¥ µÞî ù¨ ùÂð ×þ , ù¢Âî üõùÂð Ý÷µ Øþ ­Âê ¤ ÛØÈõ ßþ Ý÷ üõ õ . ¢ª üõ ´¡¤¢ ¤¢ 4 ´¬¡×þ ¤ ( ´¨ ù¢ y öÀª éÁ ¥ Û±ì y ùÂð ´¨¤ þ ² À÷¥Âê ´ÖÖ ¤¢ î) x

ùÂð ø¢ ¥ ¤±ä ýãõ x ùÂð ¥ ¤±ä üãþ . ÝþÞ÷ Û , Ýî ù¨ Â ê® ¤x üãþ ©À÷¥Âê ¤ ö Ù÷¤ Ýî üõ éÁ ¤ y ùÂð î ü÷õ¥ ßþ . Àª ù¨¥ ©¢¡) . Àª ùÀª ù¨ ¤ø¢ x ¢¤¢ öØõ î ´¨ ßþ ÛØÈõ ú . ݵ¨Âê üõ

. ¢ª üõ ´¡¤¢ ¤¢ 1 ´¬¡ ßµê¤ ß ¥ ¶ä ßþ ø ( Àª ù¨ ۱촡¤¢ ¤¢  äÔ¤ éÂÏ ¤ üê® ù¨ Ù÷¤ ×þ î ´¨ ßþ õ éÀû

: ݨ Âþ¥ ýû ´ó ¥ üØþ ݵ¨ÂÔ

. ÝþÞ÷ üõ ù¨ ¤ ö õ ´ó ßþ ¤¢ î ÀþÞ÷ ù¤ª ÃõÂì ùÂð ×þ x ( Óó

. ´¡À÷ ¤ø¢ ö üõ ¤ üê® ù¨ , ´ó ßþ ¤¢ î Àî ù¤ª Èþ¤ x (

. ¢Þ÷ ¤ 1 ´¬¡ öµ ¢À¹õ ýÃõ Ù÷¤ ø °¨õ ýû ö¤ø¢ (

4 ´¨ ßØÞõ ݨ ´ã®ø ¨ ¥ üØþ î ÝþÈ÷ Õêõ ÜÂõ ×þ ¤¢ ÂðÀª ´¨¤ þ ² À÷¥Âê x Øþ °Æ  ´ÖÖ ¤¢) Ýþª ø¤ ø ¤ øÔµõ ´ó

: û ¢¢¤Âì (. Àþ üõ ¢ø ö¤Öµõ ø¢ ø¢ ´ã®ø 8

. ¢¤¢ ù¨ °Æ  ø¢ î ´¨ ý ùÂð x ÜÂõ Âû ¤¢ •

. ¢ Àû¡ w=sibling(x) •

ߪø¤ ýµÆî¡ ýû ùÂð ø ÃõÂì ýµÆî¡ ýû ùÂð , ù¨ Ù÷¤ ù ýû ùÂð •. c’,c À÷õ ´¨ ôÜãõ÷ Ù÷¤ ùÂð ÂÚ÷ þÞ÷

www.Bshams.ir

www.Bshams.ir

Page 100: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

91 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3

: ´¨ Âþ¥ ¤¬ Àþ ¢ø ´¨ ßØÞõ î üþû ´ó

( ¢¤¢ ù¨ öÀ÷¥Âê ßþ ) ´¨ ÃõÂì w(1

. ´¨ ù¨ ©À÷¥Âê ø¢ ø w(2

. ´¨ ù¨ ö ´¨¤ À÷¥Âê ø ÃõÂì ö ² À÷¥Âê ø ù¨ w(3

. ´¨ ÃõÂì ö ´¨¤ À÷¥Âê ø ù¨ w(4

B

A D

C Eα β

x

...

...

δ ξγ ε

-case 1D......

B

CA

E

α β γ δ

ε ξx new x

(a)

B

A D

C Eα β

γ δ ε ξ

-(b)

...

...

case 2x

B......

A D

C Eα β

γ δ ε ξ

B......

DA

EC

x w

new x

α β

γ δ ε ξ

-case 3

(c)

B......

A C

D

E

α β γ

δ

ε ξ

new wx

c c

c c

B......

A Dwx(d)

-

D......

B

C

case 4

C E Ac’

E

c c

α

α

β

βγ γδ

δε

ε

ξ

ξ

new x =root[T]

www.Bshams.ir

www.Bshams.ir

Page 101: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 92

ö¤ø¢ ô¹÷ ø ÂÚþÀØþ B ø D ýû ùÂð Ù÷¤ Ëþã 1 ´ó : ñø ´ó (1. ¢ª üõ ÛþÀ± 4 þ 3 þ ø 2 ýû ´ó ¥ üØþ ¢Âð ²

ÃõÂì ´¨ ùÀª ù¢¢ ÇþÞ÷ x Âð ù¤ª î üê® ù¨ Ù÷¤ : ôø¢ ´ó (2ÕþÂÏ ¥ Âð . ¢ª üõ ÛÖµõ  áÔ¤ ×þ B x ö¢¢ ù¤ª ø D ö¢Âî. À¨¤ Àû¡ öþ ÖÜ ´¨ ÃõÂì c ö ݪ ùÀª 2 ´ó ¢¤ø ñø ´ó

ö¤ø¢ ×þ ô¹ ÷ ø D ø C ýû ù ð Ù÷¤ Ëþ ã 3 ´ó : ô¨ ´ó (3. ¢ª üõ ÛþÀ± 4 ´ó ¢ÂÚµ¨¤

­ä ö üõ ¤ ´¨ ùÀª ù¢¢ ÇþÞ÷ x î üê® ù¨ Ù÷¤ 4 ´ó ¤¢ (4¢¥ ÞÎ ó ´¡¤¢ «¡ Ø ÷ öøÀ ¢Â ð ² ö¤ø¢ ×þ ø Ù÷¤ À ö¢Âî

. À¨¤ üõ öþ Ü Âõ ßþ ¤¢ ÖÜ ø ¢Þ÷ éÁ

. ´¨ O(lg n) ¥ Ýû ݵþ¤Úó ßþ öõ¥RB-Delete(T,z)

1. if left[z]=nil[T] or right[z]=nil[T] then

2. y ← z

3. else y ← Tree-Successor(z)

4. if left[y] 6= nil[T] then

5. x ← left[y]

6. else x ← right[y]

7. p[x] ← p[y]

8. if p[y] = nil[t] then

9. root[T] ← x

10. else if y = left [p[y]] then

11. left[p[y]] ← x

12. else right[p[y]]← x

13. if y 6= z then

14. key[z]← key[y]

15. // if y has other fields , copy them , too

16. if color[y] = BLACK then

www.Bshams.ir

www.Bshams.ir

Page 102: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

93 RED-BLACK ù¨ - ÃõÂì ´¡¤¢ .7.3

17. RB-Delete-Fixup(T,x)

18. return y

RB-Delete-Fixup(T,x)

1. while x 6= root[T] and color[x] =BLACK do

2. if( x = left[p[x]]) then

3. w ← right[p[x]]

4. if( color[w]=RED) then

5. color[w]← BLACK //case1

6. color[p[x]]←RED //case1

7. LEFT-Rotate(T,p[x]) //case1

8. w← right[p[x]] //case1

9. if(color[left[w]]=BLACk and color[right[w]]=BLACK) then//case1

10. color[w]=RED //case2

11. x← p[x] //case2

12. else if color[right[w]]=BLACK then

13. color[left[w]] = BLACK //case3

14. color[w]← RED //case3

15. RIGHT-Rotate(T,w) //case3

16. w←right[p[x]] //case3

17. color[w]←color[p[x]] //case4

18. color[p[x]]←BLACK //case4

19. color[right[w]]← BLACK //case4

20. LEFT-Rotate(T,p[x]) //case4

21. x←root[T] //case4

22. else(same as then clause with ”right” and ”left” exchanged)

23. color[x]← BLACK

www.Bshams.ir

www.Bshams.ir

Page 103: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 94

(Disjoin sets)ùõ ýû äÞ¹õ 8.3á÷ ßþÂù¢¨.Àõ÷ üõ ùõ Àª üú ø¢ ö íµª ùðÂû ¤ AøB äÞ¹õ ø¢°Æ nø ...ø2ø1 ýû ù¤Þª î ýÌä näÞ¹õ ý¥¨ ù¢ ý ýù¢¢

.´¨þ¤¥ù¢Ôµ¨À÷ù¢¤¡Ã¹õ ýû µ¨¢ î ¤ nø...ø2ø1 äÞ¹õ¬ä ö üõ ü𢨠þ¤ ×þö ÝÞ÷ üõ ÂÊä ô÷ ¤ äÞ¹õ Âþ¥ Âû ¤Ñõ ßþ ý .¢¢ ÇþÞ÷À÷ùÀª ¥Âêüõ ¤Âì ÝÞ÷ üõ ÂÊä ßÞû  ¤ ¤À ÂÊä ö  ùøä ø ù¢Þ÷ É¿Èõ

. ÝþÞ÷ üõ üû¢¤ÀÖõ ö ýû ÅþÀ÷Âþ¢Öõ ¤ set þ¤ Ã÷ Àµ ¤¢. Ýû¢

set=1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 set

1 2 3 4 5 6 7 8 9 10

1 2 3 4 5 6 7 8 9 10

1=1 , 5 2=2 , 4 , 7 , 10 3=3 , 6 , 8 , 9

1

5

2

4 7 10

3

6 8 9

. Ýû¢ üõ ¤Âì set þ¤ ¤¢ ¤ ©¤À ùÂð ¢Àä ÂÊä Âû ý ų¨set

1 2 3 2 1 3 2 3 3 2

1 2 3 4 5 6 7 8 9 10

function find1(x)

find the lable of the set containing xreturn set[x]

ݵþ¤Úó ßþ. À÷¢Âð üõ ¤ ¢¤¢ ¤Âì ö ¤¢ x î ýäÞ¹õ °Æ find1 â. ´¨ θ(1) ¥

öõ¥.ÀþÞ÷ üõ ôè¢ Ýû ¤ ÀµÆû bø a Ûõª î ýäÞ¹õ ø¢ merge1 â. ´¨ θ(n) ¥ â ßþ

www.Bshams.ir

www.Bshams.ir

Page 104: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

95 (DISJOIN SETS)ùõ ýû äÞ¹õ .8.3

function merge1(a,b)

merge the sets labled a and b i←min(a,b)

j←max(a,b)

fork←1 to n do

if set[k] = j then set[k]← i

merge2 ø find2 â ø ÝþÞ÷ üõ °î ýÂÚþ¢ ¤¬ ¤ äÞ¹õ ø¢ ñ: Ýî üõ ÓþÂã Âþ¥ ¤¬ ¤

function find2(x)

r ←x

while(set[r] 6= r) do

r←set[r]

return r

function merge2(a,b)

if(a<b) then set[b]← a

else set[a]← b

merge2 â ø ´¨üΡ·îÀ áÔ¤ ´ó ßþÂÀ ¤¢Âþ¥ ´¨ O(n) ¥find2 â. ´¨  ú üܱì ݵþ¤Úó ´±Æ÷ î ´¨ θ(1) ¥

ݵþ¤Úó ¤¢ ´¨ µØî ö °ÆÂ î ´¨ ýÀÜî Èþ¤ ÀÜî üÜ±ì ´¡¤¢ ø¢ ¤¢ö öÀª ï¤Ã ¥ø¢Âî ¤î áÔ¤ ýø¤ Àþ Å ´¨ ýÂµÈ öõ¥ ý¤¢ find ôø¢

.¢Âî ýÂðܤ ´þóø ø ÝþÂð üõ ÂÑ÷ ¤¢ üäÔ¤ ´¡¤¢ ¥ ùÂð Âû ý ¤Ñõ ßþ ýÂ

. ÀÜî ö¢ ×î ÷ Ýû¢üõ ¤Âì áÔ¤: ÝþÞ÷ üõ ÓþÂã Âþ¥ ¤¬ ¤ find3 ø merge3 â ¤¬ ßþ ¤¢

function merge3(a,b)

if(height[a] = height[b])

www.Bshams.ir

www.Bshams.ir

Page 105: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û ù¢¢ öÞµ¡¨ ¥ ü¡Â ý¤ø¢þ .3 ÛÊê 96

set[b]← a

height[a] ++

r← a

else

if(height[a]>height[b]) then

set[b]← a

r ← a

else

set[a] ← b

r ← b

return r

function find3(x)

r ← x

while(set[r] 6=r) do

r← set[r]

i←x

while i6= r do

j ← set[i]

set[i] ← r

i ← j

return r

.´¨ÂµÞî Ã÷ log n¥Ýµþ¤Úó ßþ öõ¥

www.Bshams.ir

www.Bshams.ir

Page 106: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

4 ÛÊê

Óܵ¿õ ýû ©ø¤ üêÂãõüÆþ÷ ݵþ¤Úó

üÆþ÷ õ÷ ýû ©ø¤ á÷ .4

ù¤ ª  þ¥ ¢¤ õ ö ü õ ü Æ þ ÷ õ ÷ ý û × Ø á ÷ ¥:¢Þ÷

÷Êþ ×Ø •

Û ø ÝÆÖ ×Ø •

þ üÆþ÷õ÷ ×Ø •

°Öä ´Èð¥ ×Ø •

À ø ¡ª ×Ø •

û ý¥ ´Þ÷¤ ×Ø •

üóÞµ ýû ݵþ¤Úó •

ý¥õ ýû ݵþ¤Úó •

www.Bshams.ir

www.Bshams.ir

Page 107: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 98

(Greedy Algorithms) ÷Êþ ýû ݵþ¤Úó 1.4.ÀµÆû üÆþ÷ ݵþ¤Úó ýû ©ø¤ ßþ ù¢¨ âìø ¤¢ø µ¨¢ ßóø û ݵþ¤Úó ßþ©¥¤  ñ ßä ¤¢ ø ßþ ´¤ ¢ª üõ ü㨠ù¤Þû Û ý ©ø¤ ßþ ¤¢Û ý ©ø¤ ×þ âìø ¤¢ ÷ÊþÂ×Ø.¢ª ¿µ÷ ôð Âû ¤¢ Û ù¤ ßþ©ø¤ ßþ ¤¢ î ´Æ÷ ©ø¤ ßþ ¤¢ ´Þû à µØ÷ õ .´¨ ý¥¨ ú ÛÆõ ´¨ ßØÞõ ÂÊä ßþ ©¥¤  ¿µ÷ î ¢¤À÷ ¢ø á®õ ßþ èÀè¢ ÃðÂû

.¢ª üúµõ ´Æ ß þ ø û ¢ª ¹õ Û ×þ Ø÷ ý:´¨Âþ¥ Control Abstraction ÕÎõ ÷Êþ ݵþ¤Úó ×þ ¤µ¡¨

Fuction Greedy(C):set //solution set

C is a set of condidates

S ← ∅ S ⊆ C is a set of solution ,if it is possible

Greedy loop

While (C 6= ∅ & not Solutions(S))

x ← Select(C)

C ← C \ x

if feasible ( S ∪ x ) then

S ← S ∪ x

if (solution(S)) then return S

else ” there are no solutions.”

î ¤ Âû ¢ª üõ ê® äÞ¹õ ¢ø ¤¬ ¤¢ ´¨ üúÀµ¤¢ S

éÁ C äÞ¹õ ¥ fÀäì Àî üõ ¿µ÷ ¤ C äÞ¹õ ¥ ÂÊä ×þ Select âC äÞ¹õ ¥ ÂÊä ö¢Âî ê® þ î ´Æþ feasible â ÔÒø .¢ª üõsolution , feasible ø Select â óbÆõ á÷ µÆ.¡ þ ´¨ ßØÞõ S äÞ¹õ

. ÀµÆû Âç Ûì

ßÞêû ý¥¨ ù¢ÂÈê ݵþ¤Úó 1.1.4

ý¢ø¤ø õ ÷ ©ø¤ ßþ¤¢ . ´¨ ßÞêû ©ø¤ û Ûþ ê ý¥¨ ù¢ÂÈê ©ø¤ ×þ¤¢ µê¤ ¤î ýû Æþ÷ ¥ ×þ Âû Å÷îÂê ų¨ ¢ª üõ ´êþ¤¢ Æþ÷ Æþ÷û Æþ÷ ü÷øÂê ¥ ù¢Ôµ¨ Ýû¢ üõ ¤Âì üóøÀ ¤¢ ¤ ö ø¢¢Âð üõ ±¨½õ ßµõ

:Ýî üõ Âþ¥ ª üø¢ø¢ ´¡¤¢ ×þ

www.Bshams.ir

www.Bshams.ir

Page 108: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

99 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

ý¤¢ î ý ù ð ø¢ ų¨, Ý þ¥ ¨ ü õ ¤ ´¡¤¢ ¥ ïÂ × þ Æ þ ÷  û ý¥ Ýþ¥¨ üõ ¤À ùÂð ×þ ùÂð ø¢ ö ý ø ù¢Âî °î Ýû ¤ ÀµÆû ýµÞî Å÷îÂêø¢ ß .´¨ ö ùÀ÷¥¨ ùÂð ø¢ ýû Å÷îÂê áÞ¹õ  ¤À ùÂð ßþ Å÷îÂê î Ýû¢ üõ õ¢ ¤ À÷ø ¤ ßþ À÷ ùÀÈ÷ µêÂð ý¥ ñ½ î üþû ùÂð ø ¡ ùÂð û ï ýû Å÷îÂê áÞ¹õ Àþ Èþ¤ Å÷îÂê.Àþ ´¨¢ ´¡¤¢Èþ ¤ÂÑ÷ ¤¢ ×þ þ ÂÔ¬ °Æ ×þ ´¡¤¢ ñþ Âû ý Àª µ¡¨ ´¡¤¢ î ñ ,ÀªÂÔ¬ °Æ  ¤ ² ´Þ¨ ñþ Âû ø ×þ °Æ ¤ ´¨¤ ´Þ¨ ñþÂû. ÝþÂð üõüõ ´î û ï ´Þ¨ Èþ¤ ´Þ¨ ¥ î ýÂÆõ üÏ ¤¢ °Â ßþÀ .Ý÷¥ üõö ÂÒµõ Àî µª¤ ö î Àõ Àû¡ ´¨À ï ÂÒµõ ýÂþ Èþ¤ ×þ, Ýî

. ´¨ ïÂ¥ Ý þ¤¢ ¤ µ ¡ ¤¢ ü þ ± Ô ó é 7000 Û õ ª ü µ õ À î ­Â ê ñ · õ ý 1100, Dé 1800 ,Cé 900, Aé 1200, B é 1800 ¢Àã ßþù¢ÂÈê ý ô¥ ýû ´ ¢Àã ÛìÀ Ýû¡ üõ. Ýþ¤¢ Mé 200ø EéÂ

. Ýþ¤ø ´¨¢ ¤ ßµõ ßþý¥¨

1200 1800 900 1100 1800 200

3000 1100

2200

4000

7000

0

0 0

0

01

1

1

1

1

A=00 B=01 C=1000 E=101 D=11 M=1001

www.Bshams.ir

www.Bshams.ir

Page 109: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 100

ö üõ °Â ßþÀ.¢¤¢ ýµØî Àî , ¢¤¢ ý Å÷îÂê î ýÂÊä´ó ¤¢ µî¤î Âû ñ·õ ßþ ¤¢ .¢¢ ÇþÞ÷ ¤ äÏ Ûî , Ñê ¥ ýµÞî ¤ÀÖõ Âð ý¥¨ ù¢ÂÈê ¥ Å î üó ¤¢,ÀþÞ÷ üõ ñçª ¤ Ñê ¥ ´8 ý¢äñçª ¤ ´ 4·îÀ µî¤î Âû Ýû¢ ¤Âì ¤ ©ÂÒµõ üþø¢ø¢ Àî µî¤î Âû ý

:Àþüõ ´¨¢ Âþ¥ ¤¬ ñ·õ ßþ ¤¢ ùÀª éÂÊõ ýû ´ Ûî.ÀþÞ÷ üõ2 ×1200 +2 ×1800+4×900+3×1100+2×1800+4×200=17300

.Àª üõ 7000×8=56000üãþ ö ý¢ä ´ó ¥ µÞî ¤Æ îý ¤ î ß þ ý , Ý þ Þ ÷ ù¢ÂÈ ê ¤ DBAD µª¤ Ý û¡ üõ ñ · õ ö ä ×þ ñ¢ãõ î Àþ üõ ´¨¢ 11010011 Àî ø ù¢¢¤Âì ¤ ö ñ¢ãõ µî¤îÂûÝ÷À Ýû¡ üõ Ýþ¤¢ ¤ 01001001101Àî ÅØä þø ´¨ X f ·õ µî¤îýÂþ Àî ´¨¤ ² ´Þ¨ ¥ ¤î ßþ ý ,Àª üõ ýµª¤ ñ¢ãõ Àî ßþݨ ÂÑ÷ ¢¤õ µî¤î ù¢Âî ñ±÷¢ ¤ ö ´¡¤¢ Èþ¤ ¥ öõÃÞû ø ùÀ÷¡ ¤

.Àþ üõ ´¨¢ BAME ýµª¤ °Â ßþÀ.Àþ üõ ´¨¢ ¢Âê Âʽõ ¤¬ û Àî ßþ ¥ ôÀî Âû î ´ª¢ Àþ

.Àª üÞ÷ µð¤Ã Àî ¥ ýÀ÷È ÂµØî Àî Âû øÀ ¤¢ ´ó ßþ ¤¢ Ýî Àî ßÞêû ©ø¤ Ýû¡ üõ ¤ µî¤î n î Àî­ÂêÀû¢ üõ ¤ ü÷õ¥ ´ó ßþµð¤Ã . ¢ Àû¡ n-1 Æþ÷ ·îÀ ñÏ öõ¥ ßþÂ. ´¨ ô i-1 1 ÂÊä ¥ ü÷øÂê áÞ¹õ ¥ µð¤Ã ö ü÷øÂê ô i ÂÊä ý î

1 2 4 8

3

7

15 .........................................................

................

www.Bshams.ir

www.Bshams.ir

Page 110: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

101 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

MST ñÞõ ýª ´¡¤¢ ýû ݵþ¤Úó 2.1.4

§¤ äÞ¹õ îÀª ù¢¨ ¤¢ ´ú ÂèÀ±Þû éÂð ×þ G=<N,A> Àî­Âêî ´¨ üµ¡¤¢ éÂð ßþ¥ª´¡¤¢ ×þ¥¤Ñõ.ÀªAö ýúóþ äÞ¹õø N ö´¨ éÂð ßþ ýúóþ ¥ ü¡Â Ûõª ñ ßä ¤¢ üóø ù¢ éÂ𠧤 Þû Ûõª

.( ¤ø¢ ÀìêøÀ±Þû)Àª ´¡¤¢ ¢¡ ùÀõ ´¨À ¤µ¡¨ Øþ¤Î: Ìì

:Àª ¤Âì üþú Âþ¥ ýû ù¤Ãð ¥ ×þ Âû ÂðúøÂð ´¨ ´¡¤¢ T=<V,E>

.(û ñþ ¢Àã q , §¤ ¢Àã p) p=q+1 ,Àª ¤ø¢ Àìê T .1. p=q+1ø À±Þû T .2

.Àª µª¢ ¢ø ÂÆõ ×þÖì¢ ÃþÞµõ §¤ ø¢Âû ß .3.Àª ¤ø¢ Àìê ø À±Þû .4

 ö ñ þ  û î ü µ ¡¤¢)¤¢ ÷ È ÷ ´ ¡¤¢ pp−2 ½ Ô ¬ ¤¢ Î Ö ÷ p .¢Âî ݨ¤ ö üõ( ¢¤¢ °Æ

: ñ·õ´¡¤¢ pp−2 ý¤¢ Kp Ûõî ´¡¤¢ :üÞû¤)?¢¤¢ ª ´¡¤¢ À Âþ¥ éÂð

(.´¨ ª

︸ ︷︷ ︸ ︸ ︷︷ ︸K3 K4

33−2 × 44−2 = 48

ö ýúóþ ¥ ×þ Âû îÀª ¤¢ ö¥ø éÂð ¤îÁõ Íþª G éÂð Âð ñßþ ¥ ÝÞ÷ üõ ýª ´¡¤¢ ×þ ö üõ Àª ù¢¤¡ °Æ  üÔõ÷ ý¢Àä(minimum spaning tree) ÝÞõ ýª ´¡¤¢ ×þ ¥ ¤Ñõ¢Âî ¿µ¨ éÂð

www.Bshams.ir

www.Bshams.ir

Page 111: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 102

áÞ¹õ Øþ¤Î ´¨ ö ýúóþ ¥ ü¡Âø éÂ𠧤 Þû Ûõªî ´¨ üµ¡¤¢. ´¨ Þî ª ýû ´¡¤¢ Âþ¨ ß ¤¢ ö ýúóþ ö¥ø

× þ ý¤¢ f Þ µ ù¢ ¨ ¤¢ ´ ú Â è ¤¢ ö¥ø À ± Þ û é ð  û: À÷µõ Øþ üãþ Àª±÷ ¢Âê Âʽõ À÷ üõ õøÃó î ´¨ ÝÞõ ýª ´¡¤¢

.Àþ ´¨À ª ´¡¤¢ ßþ ¥ Ç: ¢¤¢ ¢ø ÝÞõ ýª ´¡¤¢ ßµêþ ý ݵþ¤Úó À üÜî ¤Ï

Prim , Kruskal, Boruvka ,Sollin

:kruskal ݵþ¤Úó

:¢¥¨ üõ ¤ ñÞõ ýª ´¡¤¢ ×þ Âþ¥ ùª ݵþ¤Úó ßþ¢Àã äÞ¹õ n ų¨ ÀØõ °Âõ ý¢ã¬ °Â ¤ éÂð ýúóþ Àµ¥ äÞ¹õ ¬ä î ´¨ ßþ  ­Âê)¢¥¨ üõ éÂ𠧤 äÞ¹õ ¬俵÷ ñþ n-1 ¢Èõ ¤ÂؤÀì ö greedy ÖÜ ñ( À÷ù¢¤¡ °Æ n 1find â ų¨ Àª µª¢ ¤ ßØÞõ ö¥ø ßþµÞî î ¢ª üõ ¿µ÷ üóþ. À÷ª±¨½õ find(v) ,find (u) Àª e=uv Âð üãþ¢Èõ ü÷¡Âê ñþ ßþ¨ ø¢ ýÂù¢øÃê éÂð ýúóþ äÞ¹õ ¤îÁõ ñþ Àª±÷  ø¢ ßþ Û¬ Âð.À÷ª üõ°î Ýû À÷ ùÀõ ´¨¢ find(v),find(u) ¥ î ý Ôóõ ø¢ ß Ýû ¢Èõ

.¢ª ñþ n-1 Ûõª T Àþ üõ õ¢ ¤ÀÖ÷ À÷ø ¤ ßþÀ÷ª üõ

function kruskal(G=< N,A > : graph,length :A → R+): set of edge

sort A by increasing length

initialize n sets , each set containing an element of N

T← ∅greedy loop

repeat

e←u,v

A← A \ eucomp←find (u)

vcomp←find (v)

www.Bshams.ir

www.Bshams.ir

Page 112: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

103 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

if(vcomp 6= ucomp) then

T←T ∪e

merge(ucomp,vcomp)

until T is containing n-1 elements

return T

:ÀþÂÚ ÂÑ÷ ¤¢ ¤ Âþ¥ éÂð ñ·õ öä

1 2 3

4 5 6

7

1 2

64

3

37

4

54 68 3

3

4

4

1 2

step T connected components

initialization - 12345671 1,2 1,2345672 2,3 1,2,345673 4,5 1,2,34,5674 6,7 1,2,34,56,75 1,4 1,2,3,4,56,76 2,5 reject

7 4,7 1,2,3,4,5,6,7

.n log n Ýþ¤¢ ü÷¡Âê ¤ n Å , ´¨ log n ù¥À÷ merge,find öõ¥ ßþ ¤¢: Ýþ¤¢ üêÂÏ ¥. §¤ ¢Àã n ø ´¨úóþ¢Àã |A| = a

(n− 1) ≤ a ≤ n(n−1)2

⇒ log (n− 1) ≤ log a ≤ log n + log (n− 1)− log2

⇒ log n ≤ log a ≤ 2 log n

.¢ Àû¡ O(a log a)¥ sort öõ¥ Å ´¨logn ¤¢ Ýû log a Å

www.Bshams.ir

www.Bshams.ir

Page 113: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 104

: Prim ݵþ¤Úó

:¢¥¨ üõ ¤ ª ´¡¤¢ Âþ¥ ùª ݵþ¤Úó ßþ¢ÂðüõÂÑ÷ ¤¢ ´¨ G éÂ𠧤 ¥ üØþ Ûõª î ¤ B ô÷ ý äÞ¹õ Àµ´Æ÷ B ¤¢ ö ÂÚþ¢ ¨ ø ´¨ B ¤¢ ú÷ ¨ ×þ î éÂð ýû ñþ ôÞ ß Å³¨ê® B ¤ ÂÚþ¢ §b¤ ų¨,Àª µª¢ ¤ °Æ  ßþµÞî î Àþ üõ ¤ üóþ ,.¢ª éÂ𠧤 üãþ N äÞ¹õ  B ÀûÀõ õ¢ ¤ÀÖ÷ ¤ À÷ø ¤ ßþ.Àî üõý¥¨ ù¢ (üÆþÂõ ) ýÀã ø¢ ýû þ¤ ù¢¢ öÞµ¡¨ ¤ ݵþ¤Úó ßþ ÂðÝî ý¥¨ ù¢ binary heap ×þ Âð õ . ´¨ O(n2) À ¤¢ ô¥ öõ¥ ÝþÞ÷öõ¥ ÝþÞ÷ ý¥¨ ù¢ fibonacci heap Âð ø ´¨ O((a + n)logn) öõ¥Âç ¤  öõ¥ ý ù¢¢ öÞµ¡¨ ø ý¥¨ ù¢Âç Å. ´¨ O(a + nlogn) Â

.Àû¢ üõfunction Prim(G=< N, A >:graph,length:A −→ R+):set of edges

B ←− an arbitary element of NT ←− ∅

while B 6= N do

e ←− u,v such that e is minimum and u∈ B,v∈ N\B

T ←− e ∪ T

B ←− B ∪ v

: ¤ø¹õ ÅþÂõ ÕþÂÏ ¥ ý¥¨ ù¢

function Prim(L[1..n,1..n]):set of edges

1. initialization : only node 1 is in B2.T ←− φ will contain the edges of the minimum spanning tree

3. for i=2 to n do

4. nearest[i] ←− 1

5. mindist[i] ←− L[i,1]

6. greedy loop

7. repeat n-1 times

8. min ←∞

9. for j ←2 to n do

10. if 0≤ mindist[j] < min Then

www.Bshams.ir

www.Bshams.ir

Page 114: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

105 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

11. min ← mindist[j]

12. k ← j

13. T=T ∪ nearest[k],k

14. mindist[k] ← -1add k to B

15. for j ← 2 to n do

16. if L[j,k] < mindist[j] Then

17. mindist[j] ←L[j,k]

18. nearest[j] ←k Return T

: heap PRIM ݵþ¤Úó ý¥¨ ù¢

HEAP-PRIM(G)

1. A ←− φ

2. for each x ∈ V do key[x] ←−∞

3. H ←− Build-heap(key)

4. select arbitrary vertex v

5. S ←− v

6. Decrease-key(H,v,0)

7. Extract-min(H)

8. for each x adjacent to v do

decrease-key(H,x,w(v,x)), π [x] ←− v

9. for i=1 to |V| - 1 do

10. begin

11. Extract-min(H),let v be the vertex

12. A ←− A∪ (v,π[v])

13. S ←− S ∪ v

14. for each x ∈ V-S adjacent to v do

15. if w(x,v) < key[x] Then

16. Decrease-key(H,x,w(x,v)),π[x] ←−v

17. end

18. return A

www.Bshams.ir

www.Bshams.ir

Page 115: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 106

: ݵþ¤Úó Ãó÷öõ¥ ø ö ´ó ø¢ î.¢ª ý¥¨ ù¢ À÷ üõ ¤¬ ø¢ heap ݵþ¤Úó ßþ ¤¢

: ´¨ ùÀª ù¢¢ ª Âþ¥ ¤¢ û ö ý ô¥

:binary-heap ¥ ù¢Ôµ¨ •üõ key[x] óø  þ¢Öõ heap ×þõ ý î Build-heap â ´ó ßþ ¤¢heap ¤ÀÖõ ßþµØî Extract-Min â .¢Âð üõ O(|V |)  ü÷õ¥ , ¢¥¨ö¢¤ø ´¨¢ ´ó ßþ ¤¢ î,¢¥¨ üõ ¤¡ heap ¥ ¤ ö øÀ÷¢Âð üõ  ¤Àþ ų¨,¢¤¢ ¤Âì Èþ¤ ¤¢ ¤ÀÖõ ßþ Âþ¥, ´¨ Θ(1)¥ heap ¤ÀÖõ ßþµØî×þ ù¤ø¢ ø ÝþÞ÷ ö ßþÃÚþ ¤ heap ÂÊä ßþ¡, µª¢Â ¤ ¤ÀÖõ ßþ

.Àª üõ O(log|V |) ¥ ÜÞä ßþ î, Ýî À ´¨¢ heap

üõ ßþÃÚþ ýµØî ¤ÀÖõ ¤ heap ¥ÂÊä ×þ ¤ÀÖõ Decrease-Key âßþ ´ó ßþ ¤¢ î , ÀþÞ÷ üõ ý¥¨¥ ¤ heap ¤µ¡¨ ù¤ø¢ ų¨ ø ÀþÞ÷

.Àª üõ O(log|V |) ¥ Ã÷ ÜÞäO(|E|log|V | + |V |log|V |) = ¥ Ý µ þ¤ Ú ó Û î ö õ¥ ° Â ß þ

.Àª Àû¡ O((|E| + |V |)log|V |)

:fibonacci-heap(amortized) ¥ ù¢Ôµ¨ •Extract-Min â ,¢Âð üõ ¤ O(|V |) öõ¥ öÞû Build-heap â ´ó ßþ ¤¢üõ ¤ O(1) öõ¥ Decrease-Key â õ, ¢Âð üõ ¤ O(log|V |) öõ¥ öÞû Ã÷

.¢Âð.Àª Àû¡ O(|E| + |V |log|V |) ¥ ݵþ¤Úó Ûî öõ¥ ¤¬ ßþ

¤¬ ö ¤¢ , |E| = Θ(|V |) üãþ , Àª §¤³¨ éÂð ×þ ÂÑ÷ ¢¤õ éÂð Âðü÷õ¥ ²û ø¢ Âû Âþ¥ ¢Âî Àû¿÷ õ ü÷À ×Þî fibonacci-heap¥ ù¢Ôµ¨

. ´êÂð Àû¡ ¤ O(|V |log|V |) ÂÂ|E| = Θ(|V |2) üãþ Àª (dense graph) Ýîµõ éÂð ×þ ÂÑ÷ ¢¤õ éÂð Âðfibonacci-¥ ù¢Ôµ¨ öõ¥ ø O(|V |2log|V |) binary-heap ¥ ù¢Ôµ¨ öõ¥ ,

.¢ Àû¡ O(|V |2)ÂÂ heap

.Àª |V | ¥ µð¤Ã |E| î ´¨ µú ü÷õ¥ fibonacci-heap ¥ ù¢Ôµ¨ ßþÂü÷õ¥ ¤ø¹õ ÅþÂõ ܨø ݵþ¤Úó ßþ ý¥¨ ù¢ î ´¨ üó ¤¢ ßþ ø

.¢Âð üõ O(|V |2) ¥

www.Bshams.ir

www.Bshams.ir

Page 116: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

107 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

: Sollin ݵþ¤Úó

üõ ¤Âì ñþ öøÀ ¤ û §b¤ ôÞ Àµ , Ýû¢ üõ ª Âþ¥ ñ·õ ¤ ݵþ¤Úó ßþµØî °Æ Â ÂÑ÷ ¥ î ö ÝþÞ÷ üõ ÆþÖõ áøª ÂÔ¬ §¤ ¥ ų¨ Ý4,3,2︸ ︷︷ ︸

C

ø1,6︸︷︷︸B

,5,0︸︷︷︸A

´¡¤¢ ¨ ¤¬ ßþ ¤¢ Àû¢ üõ ÛØÈ ¤ ñ þ ×þ ´¨

ýû ©¥¤ ý¤¢ ¢ª üõ Ûʵõ C B ´¡¤¢ ¥ î üþû ÂÆõ . ¢ª üõ ÛØÈ©¥¤ ý¤¢ ¢ª üõ Ûʵõ C ø B A ´¡¤¢ î üþû ÂÆõ ø ´¨ 24ø18ø16ø Àî üõ Ûʵõ C ¤ B ´¡¤¢ î ´¨ 16 ÂÆõ ßþµûîÅ ´¨ 25ø28

.´¨ 25 ÂÆõ ßþµûî Ã÷ 28ø25 ß

0 1

5 6 2

4 3

-

0

5

4

6

1

2

3

10

28

14 16

2425

22

1218

1410

25

22

12

16

algorithm Sollin(G)

begin

Fo=(v,k);

i=0;

while there is more than one tree Fj do

for each tree Tj in forest Fj do

choose the minimum weighted edge (u,v) joining some

vertix u in Tj to a vertix v in some other tree Tk in forest Fj

from the otherforest Fj+i by joining all Tj and Tk of Fj with tree

converesponding select edge

i++;

end;

www.Bshams.ir

www.Bshams.ir

Page 117: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 108

: Boruvka ݵþ¤Úó

Boruvka( G = (V, E) , w )

initialize each vertex to be its own component ;

A = ; //A holds edges of the MST

do

for ( each component C )

find the lightest edge (u,v) with u in C and v not in C ;

add u, v to A ( unless it is already there ) ;

apply DFS to graph H = (V, A) , to compute the new components

while (there are 2 or more components) ;

return A ; // return final MST edges

BORUVKA(V,E):

F = ( V , ∅ )

while F has more than one component

choose leader using DFS

FIND-SAFE-EDGES(V , E)

for each leader v add safe ( v ) to F

FIND-SAFE-EDGES(V, E):

for each leader v

safe(v)←∞

for each edge (u,v)∈ E

u← leader(u)

v ← leader(v)

if u 6= v

if (w(u,v) < w( safe( u ))

safe ( u)← (u, v)

if (w (u,v) < w(safe(v ))

safe ( v)← (u, v)

www.Bshams.ir

www.Bshams.ir

Page 118: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

109 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

: Knapsack üµÈ óî ݵþ¤Úó 3.1.4

ßþ Ýû¡ üõ.Àî ÛÞ½ À÷ üõ ¤ W ö¥ø î Ýþ¤¢ üµÈ óî î Àî ­Âê, i DZüª À÷õ û DZüª ¥ ×þ Âû Àî ­Âê .Ýî 1,2, ..., nýû DZüª ¤ óîßþÂµÈ üµÈ óî ö¢Âî  ýÂ î ´Æ÷ éÀû .Àª vi©¥¤ ø wi ö¥ø ý¤¢ø Àø ÂÔ¬ þ Àø ×þ üª Âû ¥ ö üõ ¤Ñõ ßþ ý Ýþ ´¨¢ ßØÞõ ©¥¤

:¹µ÷ ¤¢ .¢Âî ¿µ÷ Àø ¥ ýÂÆî þ∑

xiwi ≤W , xi ∈ [0,1]

. ݨ max [∑

xivi] Ýû¡ üõ õ øÀ÷¤¢ ÝÖµÆõ ´±Æ÷ ©¥¤ û ¿µ÷üóøÃ÷ ´Â ¤ ú÷ ų¨. Ýþ¤ø üõ ´¨À DZª ôÞ ý ¤ vi

wi´±Æ÷ Àµ

¤Âì óî ¤¢ ø Ýî üõ ¿µ÷ ¤ DZª üØþ üØþ ´Æó ¨ ¥ ßþ Ýî üõ °Âõ üãþ Ýþ¥À óî Û¡¢ Ûõî ¤Ï ¤ ý üª Ý÷µ÷ î ü . Ýû¢ üõ¥ ÂµÈ weight üãþ Ýþ µ¿þ¤ üµÈ óî Û¡¢ ¤¢ î üª ö¥ø üª ö ¿µ÷

.¢ª W

üõ ¿µ÷ x[k] = W−weightW [k] ù¥À÷ ô k üª üãþ üª ßþ ý ¤¬ ßþ ¤¢

ú÷ ©¥¤ ø .À¨¤ Àû¡ W óî Û¡¢ ãÎì ö¥ø üª ßþ ¿µ÷ .¢ªý¥¨ °ÂõÎÖê Âþ¥ ´¨ O(n log n)¥ Ã÷ ݵþ¤Úó ßþ öõ¥ .Àª Àû¡ max Ã÷

. Ýþ¤¢function Knapsack(w[1..n],v[1..n],W):array[1..n]

for i←1 to n do

x[i]←0

weight← 0

gready loop

while (weight<W) do

i← the best remaining object

if(weight+w[i]≤W )then

x[i]←1

weight←weight+w[i]

else

x[i]← (W−weight)w[i]

weight ← W

return x

www.Bshams.ir

www.Bshams.ir

Page 119: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 110

: DIJKSTRA ݵþ¤Úó 4.1.4

Ýþ¤¢ ¤µ¡ ¤¢ ¤¢ ´ú üêÂð Àî­Âê .´¨ üþ ÂÆõ ݵþ¤Úó ݵþ¤Úó ßþßþµûî ñÏ Ýû¡ üõ .´¨ ù¢¤¡ °Æ üÔõ÷ ý¢Àä ö ñþ Âû î¤Ñõ ßþ ý . Ýþ¤ø ´¨¢ §¤ Âþ¨ ¤ â±õ §b¤ ô÷ ü¨b¤ ¥ ÂÆõ

.ÝþÂð üõ ÂÑ÷ ¤¢ ݵþ¤Úó ý¢ø¤ø öä ¤ éÂð ö¥ø ÅþÂõfunction Dijkstra(L[1..n,1..n]):array D[2..n]

C←−2,..,n s=N\C exists only implicityfor i ←− 2 to n

D[i]←− L[1,i]

repeat n-2 times

v←− some element of C minimizing D[v]

C←− C\vfor each w∈ C do

D[w]←− min(D[w], D[v]+L[v,w])

return D

Lij =

weight of edge (i,j)∈ E0 i=j∞ else

: ñ·õ

1

2

34

5 R

W

=

50

U

3

10

10

100

5

30

50

20-

step v C D

initilization - 2,3,4,5 [50,30,100,10]

1 5 2,3,4 [50,30,20,10]

2 4 2,3 [40,30,20,10]

3 3 2 [35,30,20,10]

www.Bshams.ir

www.Bshams.ir

Page 120: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

111 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

µª¢ ¤ ÂÆõ Øþ ý Š.Àû¢ üõ ¤ ñþ Âû ¥ ¤±ä þÃû ú ݵþ¤Úó ßþÝû¡Å ÝþÃþ ö ¤¢ ¤ ý¤±ä ýû ùÂð ݪ µª¢ ÂÚþ¢ ý þ¤ Àþ ݪ

: ´ª¢function Dijkstra(L[1..n,1..n]):array D[2..n] , array P[2..n]

C←−2,..,ns=N\C exists only implicityfor i ←− 2 to n

D[i]←− L[1,i]

P[i]←0

repeat n-2 times

v←− some element of C minimizing D[v]

C←− C\v

for each w∈ C do

if ( D[w]>D[v]+L[v,w] ) then

D[w]←− D[v]+L[v,w]

P[w]←− v

return D , P

: ü÷õ¥ Ûܽ: ´¨ ÂÂ î ´¨Â ÛÂõ ¢Àã ¥ ü±þ® öõ¥

(n− 2) + (n− 3) + . . . + 2+ 1 =(n− 1)(n− 2)

2∈ θ(n2)

:ÂÆõ ö¢Âî À: Ýþ¤¢ Û±ì ñ·õ ý .Ýþ¤ø üõ ´¨¢ P þ¤ ýø¤ ¥ ¤ ÂÆõ

3 0 5 02 3 4 5

P

üõ ÝÖµÆõ §b¤ ö 1 §b¤ ¥ î ÀµÆû üãõ ßþÀ ÀµÆû ÂÔ¬ î üþû þ¤¢4 §b¤ f ·õ,ÂÔ¬ Âè ýû þ¤¢ õ. ´¨ ÂÆõ ßþ ùî ¢¡ ÂÆõ ßþø Ýþø ¤ýþ¤¢ õ ø Ýþø ¤ 5 Àµ Àþ 4 ßµê¤ ý Š´¨ 5 ýø 4 ýþ¤¢ ö,. Ýþø ¤ üõ 4 ų¨ ø 5 1 ¥ Àµ4 ßµê¤ ý Š´¨ ÂÔ¬ ýø ¢¡ 5 ø O(a+nlogn) ¥ Fibonacci-heap ý¥ ¨ ù¢ Ý µ þ¤ Ú ó ß þ ý ö õ¥

.´¨ O((a+n)logn) ¥Binary-heap

www.Bshams.ir

www.Bshams.ir

Page 121: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 112

(timetable or scheduling) ýÀ öõ¥ ýû ݵþ¤Úó 5.1.4

¤±ä öõ¥ ý¥¨ ú þ ø Ûõä ݵƨ ö ü·±õ ¤¢ Ýúõ ¤Æ ¶±õ ¥ üØþ´¨ ¤î À ß server ×þ öõ¥ ÝÆÖ ôúÔõ ýÀ öõ¥. ýÀ öõ¥ ¥ ´¨ÂÑ÷ ¢¤õ éÀû Ý÷µ À÷Âð üõ Åþø¨ öþµÈõ ôÞ Ø÷ ßä ¤¢ î ý¤Ï ùª ×þ ´¨ Ó¬ ¤¢ öþµÈõ öõ¥ ö¢Âî minimum éÀû Âð. Ýþ ´¨¢ Ã÷

. Ýî ÛÞä ÂÚþ¢ ùª ´¨ ¥µõ þ ¢¨ ßþÂµÈ ö¢¤ø ´¨À éÀû Âð øÀª üõ ´¿¨ ÛÆõ ¥ µ¨¢ ×þ ýÀ öõ¥ ÛÆõ üÞµþ¤Úó ¶½ Àþ¢ ¥

.Ý ÜÿÆõ á÷ °¨õ ü ö Íþª îüõ ÝÆÖ (with deadline) ¤¢ ´Üúõ ø (simple) ù¢¨ µ¨¢ ø¢ ýÀ öõ¥

.¢ª

ù¢¨ ýÀ öõ¥

n ñ·õ ý ýµÈõ üÊ¿Èõ ¢Àã Àû¡ üõ î Ýþ¤¢ server ×þ ÀþÞ÷­Âê ­Âê. Àª üõÉ¿Èõ Û±ì ¥ ýµÈõ Âû Åþø¨ öõ¥ .Àû¢ Åþø¨ ýµÈõÂû ¤¢ ø ¢¤¢ ¥÷ ¤ ti(1 ≤ i ≤ n) ù¥À÷ üÆþø¨ öõ¥ ôi ýµÈõ î ´¨ ßþü±Â ݱ Ýû¡ üõ. Àû¢ Åþø¨ ýµÈõ ×þ À÷ üõ server öõ¥ÂÑ÷ ÎÖ÷ ¥ ݵƨ ¤¢ ùÀª ý³¨ öõ¥ Ýû¢ Åþø¨ öþµÈõ ßþ ö üõöõ¥ ͨµõ öþµÈõ ùÚ÷ ¥ Øþ üãþ . ¢¢Âð ÞîÅþø¨ ´êþ¤¢ ý öþµÈõ

.Àª ÝÞ÷ üõ û ö ý ùÀª ÓÜTi = t1 + t2 + ... + ti−1 + ti: ôi ýµÈõ ¤Ñµ÷ öõ¥

T =∑ Ti

n : Åþø¨ ´êþ¤¢ ý ¤Ñµ÷ öõ¥ ͨµõ. ¢ª Þî∑T ´¨ üêî ø ô¥ T öÀª Þî ýÂ

: Ýþ¥¢Â üõ Âþ¥ ñ·õ Ýþ¤ø ´¨À Ýû¡ üõ î üÞµþ¤Úó µú í¤¢ ýÂ, 5 ñø ýµÈõ ý öõ¥. Àû¢ üõ Åþø¨ ýµÈõ 3 server ßþ ÀþÞ÷ ­Âê

.À÷ÂÚ Åþø¨ À÷ üõ ´ó 6 ýµÈõ 3 ßþ î ´¨ 3 ô¨ ø 10 ôø¢1,2,3 =⇒ T = 5+ (5+ 10) + (5+ 10+ 3)

1,3,2 =⇒ T = 5+ (5+ 3) + (5+ 3+ 10)

2,1,3 =⇒ T = 10+ (10+ 5) + (10+ 5+ 3)

2,3,1 =⇒ T = 10+ (10+ 3) + (10+ 3+ 5)

3,1,2 =⇒ T = 3+ (3+ 5) + (3+ 5+ 10)√

3,2,1 =⇒ T = 3+ (3+ 10) + (3+ 10+ 5)

www.Bshams.ir

www.Bshams.ir

Page 122: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

113 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

ý¢ã¬ °Â Åþø¨ öõ¥ °Æ  ¤ öþµÈõ Åþø¨ ý ݵƨ ßþ ¤¢¤ À÷ø ¤ ßþ ø Ýû¢ üõ Åþø¨ ú÷ ´Æó ýÀµ ¥ °Â ø ÝþÞ÷ üõ °Âõý¥¨ °Âõ öõ¥ ú ö .À÷ÂÚ ¤ öÈÆþø¨ û¤î ôÞ Ýû¢ üõ õ¢ ¤ÀÖ÷

. ´¨ O(n log n) ¥ Ýþ¤¢ ¤

(Scheduling with deedline)¤¢ ´Üúõ ýÀ öõ¥

ø À÷¤¢ ¥÷  ý öõ¥ Àø ×þ ×þ Âû î Ýþ¤¢ üþ ¤î n ÀþÞ÷ ­Âêù¥À÷ ý¢¨ ô i ¤î . ¢ª ô¹÷ À÷ üõ ¤î ×þ ÍÖê (T=1,2,...)öõ¥ Âû ¤¢Àª ö ´Üúõ î di ýøÆõ µÞî öõ¥ ¤¢ ¤ ¤î ßþ Âð úø Âð À÷¨¤ üõ gi ≥ 0Åþø¨ öþµÈõ ßþ Àþ ý½÷ Ý÷À Ýû¡ üõ .Àª ùÀ¨¤ ôÞ

. Ýþ ü¨Âµ¨¢ ¢¨ ßþÂµÈ ¢¢: ñ·õ

ª û ö deedlineø ¢¨ öÃõ °Â î Ýþ¤¢ ýµÈõ ¤ú î Àî­Âê: ´¨ Âþ¥

i 1 2 3 4gi 50 10 15 30di 2 1 2 1sequence profit sequence profit

1 50 2,1 602 10 2,3 253 15 3,1 654 30 4,1 80−→ optimum

1,3 65 4,3 45

fisible þ ü÷Àª ó±÷¢

äÞ¹õ Âû ßþ . ¢Âî  ¤ ú÷ °Â Ý÷µ Âð Ýð fisible ¤ ý ó±÷¢ó±÷¢ õ ´¨ fisible , 2,1äÞ¹õ ñ·õ ý .´¨ fisible ó±÷¢ ×þ ý¤¢ fisible

. Àª üÞ÷ fisible , 1,2

°ÜÎõ ´ Ü î ¥ î ö öøÀ ø Àª Ûçª k ¥ ý äÞ¹õ j À þ Þ ÷ ­Âê¤ ¬ ø À ÷ ù¢¤ ¡ ° Æ Â 1,2, ..., k û¤ î î À î ­Â ê ¢ ª Ý î, 1, ..., k Âð úø Âð ´¨ fisible , j ¤¬ ßþ ¤¢. Àª d1 ≤ d2 ≤ ... ≤ dk

. ˻ fisible

www.Bshams.ir

www.Bshams.ir

Page 123: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 114

°Â À÷¨¤ üõ î ý¢¨ §¨Â ¤ û Ûçª Àµ ¢¨ ßþÂµÈ öÀ¨¤ ý¢¨ ßþÂµÈ û ö deedline ßµ¡À÷ Õþã ų¨ ø Ýî üõ °Âõ üóøÃ÷

. Ýþ üõ ´¨¢Function sequence(d[0..n]):k , array[1..k]

array j[0..n]

The schedule is constructed step by step in the array j ,the variable k

say how many jobs are already in the scheduled[0]←j[0]←0 sentinelsk← j[1]←1job 1 is always choosengready loopfor i ← 2 to n do decreasing order of g

r ← k

while d[j[r]]>MAX(d[i],r) do r ← r-1

if d[i]> r then

for m ← k step -1 to r+1 do j[m+1]←j[m]

j[r+1]←i

k ← k+1

return k,j[1..k]

: Ýþ¤¢ ñ·õ ýÂi 1 2 3 4 5 6gi 20 15 10 7 5 3di 3 1 1 3 1 3

3

Initialization: 1

1 3

Try 2: 2 1

↑Try 3: unchanged

1 3 3

www.Bshams.ir

www.Bshams.ir

Page 124: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

115 (GREEDY ALGORITHMS) ÷Êþ ýû ݵþ¤Úó .1.4

Try 4: 2 1 4

Try 5: unchanged

Try 6: unchanged

=⇒ optimal sequence: 2 , 1 , 4 value=42

. ´¨ O(n2)¥ ݵþ¤Úó ßþ ý öõ¥: Disjoin Set ¥ ù¢Ôµ¨ ýÀ öõ¥ ôø¢ ݵþ¤Úó

üõ ô¹÷ ¤ ýÀ öõ¥ óbÆõ ùõ äÞ¹õ ù¢¢ öÞµ¡¨ §¨  ݵþ¤Úó ßþmerge â ø Àþ üõ ¤ ´¡¤¢ ýÈþ¤ find â Àª ùÀûÈõ f ±ì î ¤Ï öÞû, Àû¢´¨ µÞî ©ÀÜî î ö ø Àî üõ °î Ýû ¤ É¿Èõ ýû Èþ¤ ´¡¤¢ ø¢

.Àª Àû¡ ÂÚþ¢ ýÈþ¤ À÷¥ÂêFunction sequence2(d[1..n]):k,array[1..k]

array j ,F[0..n]

initialization

for i ← 0 to n do

j[i] ← 0

F[i]← i

initialize set [i]

gready loop

for i ← 1 to n do decreasing order of g

k ← find(min(n,d[i]))

m ← F[k]

if m 6= 0 then

j[m] ←i , l← find(m-1)

F[k]←F[l]

merge(k,l)

k ← 0

for i ←1 to n do

if j[i]>0 then k←k+1 , j[k]←j[i]

return k,j[1..k]

www.Bshams.ir

www.Bshams.ir

Page 125: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 116

. ´¨ Èþ¤ ö î ¢ª üõÉ¿Èõ Àª ©¢¡ ýÂÊä ¤À Âð: Ýþ¤¢ Û±ì ñ·õ ýÂ

Initilize : L=min(6, max(d,1))= 3

0 1 2 3 4 5 6F= 0 1 2 3 4 5 6

Try 1: d1=3 , assign task 1 to position 3

0 1 2

3

M

F= 0 1 2

Try 2: d2=1 assign task 2 to position 1

0

1

2

3K K

F=0 2

Try 3: d3=1 no free position available since the F value is 0

Try 4: d4=3 assign task 4 to position 2

0

1 2

3

o

]

F= 0

Try 5: d5=1 no free position available

Try 6: d6=3 no free position available

=⇒ optimal sequence: 2 , 1 , 4 value=42

. ´¨ O(nlogn)¥ ݵþ¤Úó ßþ ý öõ¥

www.Bshams.ir

www.Bshams.ir

Page 126: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

117 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4

(devide and conquer) Ûø ÝÆÖ 2.4¤µ¡¨×þ ¥ ù¢Ôµ¨ üܬ óbÆõ ö ¤¢ î ´¨ üÆþ÷ õ÷ ×Ø D & C

ßþ ÀµÆû üܬ óbÆõ ±ª fÖì¢ î¢ª üõ ÝÆÖ üþûóbÆõ Âþ¥ üµÈð¥óbÆõ Âþ¥ Û .ÀµÆû üܬ óbÆõ ¥  ù¢¨ þ µØî ù¥À÷ ÂÑ÷¥ î øÔ¤¢ ×þ ö üõ Ýû ú÷ °îÂø ùÀª ù¢¨ ø ×î üêî ù¥À÷ ýû

.´êþ ´¨¢ üܬ óbÆõ ý öØõ ¤¬:´¨ Âþ¥ ÕÎõ D& Cݵþ¤Úó ×þ üÜî ¤µ¡¨

function DC(x)

if x is sufficiently small or simple then return adhoc(x);

decompose x into smaller instances x1, x2, ..., xl;

for i←1 to l do yi ←DC(xi);

recombine the yi’s to obtain a solution y for x;

return y;

ï¤Ã ¢Àä ® 1.2.4

¤Ï Ý þÞ÷ ® Ýû ¤¢ ´¨ üÞì¤ n µð¤Ã ¢Àä î ¤ ¢Àä ø¢ Ýû¿ Âð?Àµê üõ üìÔ , Ýî ÛÞä Âþ¥ ¤¬ Âð ñ .Àª üõ O(n2) ¥ ñÞãõ

981× 1234 = ( 9︸︷︷︸w

×102 + 81︸︷︷︸x

)× ( 12︸︷︷︸y

×102 + 34︸︷︷︸z

) =

(w × 102 + x)(y × 102 + z) = wy × 104 + (wz + xy)× 102 + xz

: Ýþ¤¢ Å. À÷ª âÞ Ýû Àþ n2¢Àä ¤ú Ýû ¥

T (n) ≤ 4T (n2) + θ(n)⇒ T (n) ∈ O(n2)

µú ¤ öõ¥ î ´¨ O(n2) ¥Ã÷ ݵþ¤Úó ßþ ÀþõÂê üõ Ñõ î ¤Î÷Þû.Àª üÞ÷ µú ÈÞû D&C ¹µ÷ ¤¢ Àî üÞ÷

(wz + xy) = (w + x)(y + z)︸ ︷︷ ︸r

− wy︸︷︷︸p

− xz︸︷︷︸q

= r − p− q

⇒ wy×104 + (wz + xy)×102 + xz = p×104 + (r− p− q)×102+ q

www.Bshams.ir

www.Bshams.ir

Page 127: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 118

⇒ T (n) ≤ 3T (n2) + θ(n) =⇒ T (n) ∈ O(nlog3

2)

¤¢ ´¨ n2¥ üÂÌõ Å Ýþ¤¢ âÞ n

2+1 þ n

2üÞì¤ n

2¢Àä ø¢ âÞ ýÂ

.´¨ θ(n) ¥ ¹µ÷

: ݵþ¤Úólarge-integer prod(large-integer u , large-integer v)

large-integer x,y,w,z,r,p,q

int m , n

n=Maximum(number of digits in u , number of digits in v )

if(u==0 || v==0)

return 0

else if(n≤ threshold )

return u×v obtained in usual way

else

m=bn2c

x=u divide 10m ;

y= u rem 10m

w=v divide 10m ;

z= v rem 10m

r=prod(x+y,w+z)

p=prod(x,w)

q=prod(y,z)

return p×102m + (r-p-q)×10m+q

www.Bshams.ir

www.Bshams.ir

Page 128: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

119 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4

merge sort ݵþ¤Úó 2.2.4

procedure merge-sort (T[1..n])

if n is sufficiently small then insertion sort(T[1..n])

else//arrayu[1 . . . bn

2c+ 1], array v[1 . . . dn

2e+ 1]

u[1 . . . bn2c]← T [1 . . . bn

2c]

v[1 . . . dn2e]← T [1+ bn

2c . . . n]

merge− sort(u[1 . . . bn2c])

merge− sort(v[1 . . . dn2e])

merge(u,v,T)insertion sort¥ Å ´¨ ¢þ¥ ö¢ °Âõ ñÞµ Àª ×î î üµó ¤¢

.¢Èõ ù¢Ôµ¨procedure merge(u[1..m+1],v[1..n+1],T[1..m+n])i,j← 1

u[m+1]=v[n+1] ←∞for k← 1 to m+n Do

if u[i]<v[j]

T[k]←u[i]

i++

else

T[k]←v[j]

j++

www.Bshams.ir

www.Bshams.ir

Page 129: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 120

: ñ·õ: ÝþÞ÷ üõ °Âõ ©ø¤ ßþ ¤ Âþ¥ ýþ¤

1 2 3 4 5 6 7 8 9 10 11

31 3 10 54 7 17 12 43 48 8 2

31 3 10 54 7 17 12 43 48 8 2

31 3 10 54 7 17 12 43 48 8 2

3 31 10 7 54 17 12 43 48 82

3 31 10 ∞ 7 54∞ 17 ∞ 1243 ∞ 48 ∞ 2 8 ∞

3 31 ∞ 7 10 54 ∞ 12 17 43 ∞ 2 8 48 ∞

3 7 10 31 54 ∞ 2 8 12 17 43 48 ∞

2 3 7 8 10 12 17 31 43 48 54

: ݵþ¤Úó Ãó÷

T (n) = T (dn2e) + T (bn

2c) + θ(n)

T (n) = 2T (n2) + θ(n)

=⇒ T (n) ∈ O(nlogn)

¤ ± ä ¤ if u[i] < v[j] ¤ ± ä  ð õ À ª ü Þ ÷ stable Ý µ þ¤ Ú ó ß þüÞ÷ inplace ݵþ¤Úó ßþ ß»Þû .¢ Àû¡ stable Ýî ÛþÀ± if u[i] ≤ v[j]

.ÀþÞ÷ üõ ù¢Ôµ¨ üØÞî ýÑê ¥ Âþ¥ Àª

www.Bshams.ir

www.Bshams.ir

Page 130: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

121 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4

Quick Sort ݵþ¤Úó 3.2.4

Procedure pivot(T[1. . .n] , var L)

permutes the elements in array T[i . . .j] and return a value L such that

at the end,i ≤L ≤ j, T [k] < p for all i ≤k < L, T[L]=p and

T[k] > p for all L<k≤j , where p is the initial value of T[i]

p←T[i]

k←i , L←j+1

repeat k←k+1 until T[k] > p or k ≥ j

repeat L←L-1 until T[L] ≤ p

while(k < L) do

swap(T[L],T[k])

repeat k ←k+1 until T[k] > p

repeat L ←L-1 until T[L] ≤ p

swap(T[i],T[L])

procedure quicksort (T[i. . .j])

sorts subarray T[i. . .j] into nondecreasing order

if (j - i) is sufficiently small then sort with insertion-sort(T)

else

pivot(T[i . . . j],L)

quicksort(T[i . . . L -1])

quicksort(T[L+1 . . . j])

: ñ·õi j

5 1 17 4 48 7 3 9 8 5 25

1 2 3 4 5 6 7 8 9 10 11

p=T[i]=5

k ← i

L← j+1

www.Bshams.ir

www.Bshams.ir

Page 131: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 122

5 1 17 4 48 7 3 9 8 5 25

↑ ↑k L

5 1 5 4 48 7 3 9 8 17 25

↑ ↑k L

5 1 5 4 3 7 48 9 8 17 25

↑ ↑L k

.¢ª üõ ­ä p ô LÂÊä ý Å¢µêÂÜ L¥ k

3 1 5 4 5 7 48 9 8 17 25

︸ ︷︷ ︸ ⇑ ︸ ︷︷ ︸

:ݵþ¤Úó ý öõ¥ ±¨½õ

: ´ó ßþÂÀ¤¢Ãó ÷ •Å ¢Âî ´î þ¤ ¡ ýÂÚþ¢ ø ñø üØþ éÂÏ ø¢ ¥ Àþ pivot ¤¢ î¹÷¥

. ´¨ θ(n) ¥ ÈÞû

T(n)=T(n-1)+θ(n)=⇒ T(n)=θ(n2)

T(n)=c n≤ n0

÷¡ ¤¢ þ ø ¢¡ ý¤¢ þ ¤ Âû ¤¢ pivot î Àµê üõ ëÔ ü÷õ¥ ´ó ßþÂÀû ù¢¢ þ Ø÷ üãþ ¢Âð ¤Âì , ´Æ÷ üÜãê Û½õ i î (n-i+1) üãþ ö¤Öµõ

.Àª ùÀª °Âõ üóøÃ÷ þ ø À÷ ý¢ã¬

: ´ó ßþµú ¤¢ ݵþ¤Úó Ãó ÷ •Àª ü÷õ ¯Ö÷ ¤¢ pivot î Àµê üõ ëÔ üõÚû ´ó ßþµú ݵþ¤Úó ßþ¤¢

: ´¨  ݵþ¤Úó ý öõ¥ ¤¬ ßþ ¤¢ ,

T(n)' 2T (n2) + θ(n)⇒ T (n) = θ(n log n)

www.Bshams.ir

www.Bshams.ir

Page 132: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

123 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4

: ñ·õ×þ ¤ þ¤ ñø ÂÊä 2

√n+1 , quick sort ݵþ¤Úó ¥ ýÀþÀ ý ÷𠤢

¤ ÷õ ÂÊä ų¨ , ÝþÞ÷ üõ °Âõ insertion sort À÷õ üõÀÖõ ݵþ¤Úó ¥ Ýµþ¤Úó ßþ ý öõ¥ ´ó ßþ À ¤¢ , ÝþÂð üõ ÂÑ÷ ¤¢ pivot öä

?Àþ üõ ´¨¢ üµÈð¥ Τ:Û

÷õ ÂÊä =2√

n + 1+ 1

2=√

n + 1

µ¨¢ ø¢ Å À÷Þ üì ¢¡ ý ¤¢ ÂÊä ßþ î ´Æ÷ ö õ¥ ßþÂÀ Å.Àã √n+2 ¥ ôø¢ µ¨¢ ø ¢Àä √n µ¨¢ ×þ , Ýþ¤¢ ÂÊä

´ ¨ O((2√

n + 1)2) ∈ O(n) Ý û insertion ý¥ ¨ ° Â õ ýÂ ô¥ ö õ¥.

T(n-(√

n+2)) θ(n)

T(n)≤ T (√

n) +︷ ︸︸ ︷T (n−

√n) +

︷ ︸︸ ︷θ(n) + O(n)

: ͨµõ ´ó ¤¢ ݵþ¤Úó Ãó ÷ •k−1︷ ︸︸ ︷1 . . . k

n−k︷ ︸︸ ︷(k + 1) . . . n

T (n) = T (k − 1) + T (n− (k + 1) + 1) + θ(n) =

1

n

n∑k=1

(T (k − 1) + T (n − k)) + θ(n) = 1

n

n∑k=1

T (k − 1) + 1

n

n∑k=1

T (n −

k) + θ(n) = 1

n

n−1∑k=0

T (k) + 1

n

n−1∑k=0

T (k′) + θ(n) = 2

n

n−1∑k=0

T (k) + θ(n) =

2

n (T (0) + T (1)) + 2

n

n−1∑k=2

T (k) + θ(n) = 2

n × a + 2

n

n−1∑k=2

T (k) + θ(n)

www.Bshams.ir

www.Bshams.ir

Page 133: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 124

θ(n lg n) ͨ µ õ ´ ó ¤¢ ö õ¥ î Ý û¢ üõ öÈ ÷ ü® þ¤ ýÂ Ö µ ¨ ñü êÂ Ï ¥ .´ ¨ 1 Ý µ þ¤ Ú ó ö õ¥ À ª n=2 ð î ´ ¨ ¼ ®ø .´ ¨ü Àî­Âê ñ. ´¨ ¤Âì ñø ôð Å, ´¨ θ(n lg n) = θ(2 lg2) = 2

ùÚ÷, ´¨ θ(k lg k) ô¥ öõ¥ k < nÂû

T (n) =2

n× a +

2

n

n−1∑

k=2

T (k) + θ(n) =2

na +

2

n

n−1∑

k=2

θ(klogk) + θ(n)

→ T (n) =2

n× a + θ((

2

n)

n−1∑

k=2

(klogk)) + θ(n)

=2

n× a + θ(

2

n

∫ n−1

2

xlogxdx) + θ(n)

→ T (n) = θ(nlogn)

:ßþÂÞ´¨¢ ¤ ÂÊä ßþµØî ßõ k î Àû¢ Âç ý¤Ï ¤ quick sort ݵþ¤Úó

. Ýþ¤ø:ßþÂÞ

.Àþ¤ø ´¨¢ quick sort ¤¢ Âç ×þ ¥ ù¢Ôµ¨ ¤ û ÷õ ö¢Âî À

:Ýþ¤ø ´¨À Âþ¥ ùª ¤ ¢Àä ßþµØî ßõ k Ýû¡ üõ ñµ¨¢ ×þ ·îÀ . Ýî üõ ÝÆÖ üþ 5 ýûµ¨¢ (bn/5c) ¤ ÂÊä n Àµî Ýþ¤¢ ùøÂð (dn/5e) ßþ Àª µª¢ ÂÊä 5 ¥ µÞî ý¢Àã ´¨ ßØÞõ

.´¨ ÂÊä n mod 5 ý¤¢ û µ¨¢ ¥ üØþ ·îÀݵþ¤Úó ¥ ù¢Ôµ¨ ¤ ýÌä 5 ýû µ¨¢ ¥ ×þ Âû ý÷õ ÂÊä ų¨ø¥ µ¨¢ ×þ Â¬ä ¢Àã Âð ´¨ ¼®ø . ÝþÞ÷ üõ ±¨½õ insertion sort

üµÈð¥ â ×þ ¥ ù¢Ôµ¨ . Ýî üõ ­Âê µØî ÂÊä ¤ ÷õ ÂÊä Àªã¨ ¿Æ÷ ×þ ¥ ù¢Ôµ¨ ,Ýþ¤ø üõ ´¨À ¤ ¬ä ýû ÷õ ÷õ select ôi î Àî ­Âê ßþ . Ýî üõ ÝÆÖ x üãþ û ÷õ ÷õ ñ ¤ pivotµêþý Ç¿ ¤¢ Â¬ä ¢Àã n− i Å Àª ÝÆÖ ÎÖ÷ ßþ Ç¿ Â¬ä ¢Àãý üµÈ𥠤¬ select ¥ Àª i ýøÆõ µØî k Âð . Àª ÝÆÖ ÎÖ÷

www.Bshams.ir

www.Bshams.ir

Page 134: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

125 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4

k− i ¤¬ ßþ Âè ¤¢ø Ýî üõ ù¢Ôµ¨ üþ Ç¿ ¤¢ Þî ÂÊä ßõ k ßµêþ.ÝþÞ÷ üõ À µð¤Ã Ç¿ ¤¢ ¤ Þî ÂÊä ßõ

• • • • •

• • • • • •

• • x •

• •

• •

x ¥ µð¤Ã Â¬ä ¢Àã ÛìÀ: 3(12dn5e − 2) ≥ 3n

10− 6

x ¥ µØî Â¬ä ¢Àã ·îÀ: n− (3n10− 6) = 7n

10+ 6

üþ5 ýûµ¨¢ ý¥¨ °Âõ ýÂ î ¢ª Âî£ Àþ ݵþ¤Úó öõ¥ ü¨¤Â ýÂÅ Ýþ¤¢ µ¨¢ dn/5e ö ø ´¨ O(1) ¥ î ¢ª üõ ù¢Ôµ¨ insertion sort ¥¤¢ .´¨ T (dn/5e) Å Àþ ´¨Àû÷õ ÷õ Àþ ÂÚþ¢ üêÂÏ ¥ø ´¨ O(n) ¥3n10− 6 þ 7n

10+ 6 ýûµ¨¢ ¥ üØþ ¤¢ ÂÊä ßõ k î ´¨ ßØÞõ ´ó ßþÂÀ

: Ýþ¤¢ Ûî ¤¢ Ýî üõ ±¨½õ ¤ µð¤Ã µ¨¢ öõ¥ Àû¢ ¤

T (n) = T (dn/5e) + T (7n/10+ 6) + O(n)

T (n) ∈ O(n)

ýÂ¬ä ¢Àã ·îÀ 2(n/5)− 1 Ýþ¤¢ ÂÚþ¢ ö¥ ùÀª ¤ üÞµþ¤Úó ¤¢.Àª û ÷õ ÷õ éÂÏ ø¢ ¤¢ À÷ üõ î ´¨

:Àª û ÷õ ÷õ éÂÏ ×þ ¤¢ À÷ üõ î ýÂ¬ä ¢Àã ·îÀ

1

2((n− 1)− 2(n

5− 1)) + 2(n

5− 1) = 7n

10− 3

2

=⇒ T (n) ≤ T (dn5e) + T (7n

10− 3

2) + O(n)

www.Bshams.ir

www.Bshams.ir

Page 135: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 126

(û ÅþÂõ ® ݵþ¤Úó) ߨµ¨ ݵþ¤Úó 4.2.4

üªø¤ Ýû¡ üõ , 2 ¥ ü÷ b ±Âõ ¥ Ýþ¤¢ ¤µ¡ ¤¢ ÅþÂõ ø¢ Àî ­ÂêöÈ÷ ߨµ¨ .Ýî ±¨½õ ¤ û ÅþÂõ ® Û¬üóÞãõ ® ¥  âþ¨¥÷ θ(n3) bù¥À÷ ü÷õ¥ ý¢ä ´ó ¤¢ î ¤ û ÅþÂõ ® ö üõ î ¢¢

.¢¢ Çûî θ(nlog72) ñ¢ãõ ü÷õ¥ , ¢¤¢

ÅþÂõ ø¢ ® ´Æ÷ û ÅþÂõ ö¢Âî îÜ ß¨Âµ¨ ¤Ñõ ßþ ýÂ.Àû¢ Çûî ® 7 ¢¤¢ ¥÷ ® 8 ý¢ä ´ó ¤¢ î ¤ 2× 2

:Âþ¥ ñ·õ À÷õ

C =

c11 c12 c13 c14c21 c22 c23 c24c31 c32 c33 c34c41 c42 c43 c44

=

(c′11

c′12

c′21

c′22

)

: ÝþÞ÷ ® Ýû ¤¢ ¤ Bø A, n× n ÅþÂõ ø¢ Ýû¡ üõ ñ

A =(

an2

× n2

11a12

a21 a22

)

n×n

B =(

b11 b12b21 b22

)

n×n

, C = A×B

m1 = (a21 + a22 − a11)(b22 − b12 + b11)

m2 = a11b11

m3 = a12b21

m4 = (a11 − a21)(b22 − b12)

m5 = (a21 + a22)(b12 − b11)

m6 = (a12 − a21 + a11 − a22)b22m7 = a22(b11 + b22 − b12 − b21)

:Àþ üõ ´¨¢ Âþ¥ ¤¬ C ÅþÂõ(m2 + m3 m1 + m2 + m5 + m6

m1 + m2 + m4 −m7 m1 + m2 + m4 + m5

)

. Ýþ¤¢ ¥÷ n2× n

2ýû ÅþÂõ ý âÞ ÛÞä 18ø ® ÛÞä 7 ßþÂ

: ´ª¢ Ýû¡ ÅT (n) = 7T (n

2) + 18

(n2

)2

18(

n2

)2 ∈ O(nlog72−ε) =⇒ T (n) ∈ O(nlog7

2 )

. Ýþ¢Þ÷ ù¢Ôµ¨ O ¥ θ ý À÷ª ÂÔ¬ û þ¤¢ ¥ üÌã ´¨ ßØÞõ ö

www.Bshams.ir

www.Bshams.ir

Page 136: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

127 (DEVIDE AND CONQUER) Ûø ÝÆÖ .2.4

:ßþÂÞÛìÀ.Ýû¢ ô¹÷ ¤ 24 ±Âõ ¥ ÅþÂõ ø¢ ® ߨµ¨ ©ø¤ Ýû¡ üõ

?´¨ ¤ÀÖ Â® ¢ÀãT (24) = 7T (12) = 72T (6) = 73T (3) = 73 × 33

: ñ·õ¤ an b ±¨½õ ý ô¥ ýû ® ¢Àã ßþµÞî î ¤ üÞµþ¤Úó Ýû¡ üõ

. Ýþ¤ø ´¨¢ Àû¢ üõ õ

an =

(an2 )

2 ø¥ na× an−1 ¢Âê na n = 1

: Ýþ¤¢ ßþ . ÝþÂð üõ û ® ¢Àã  ¤ T(n) : Û

T (n) =

T (n2) + 1 ø¥ n

T (n− 1) + 1 ¢Âê n0 n = 1

⇒ T (n) =

T (bn2c) + 1 ø¥ n

T (n− 1) + 1 = T (n−12

) + 2 = T (bn2c) + 2 ¢Âê n

0 n = 1

⇒ T (n) = T (bn2c) + θ(1) , θ(1) = θ(nlog21(logn)0)

⇒ T (n) = θ(logn)

www.Bshams.ir

www.Bshams.ir

Page 137: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 128

Dynamic Programming þ üÆþ÷ õ÷ 3.4 ¤ üܬ óbÆõ ö ¤¢ î ´¨û ݵþ¤Úó ßµª÷ ©ø¤ ×þ þ üÆþ÷ õ÷Âή×þ óbÆõ ý Àµ ¤¢ üãþ ÝþÞ÷ üõ Û üµÈð¥ ñõÂê ×þ ¥ ù¢Ôµ¨óbÆõ Àµ ¤¢ î Ýþ¤¢ ö  ü㨠Ñê ×þ ¥ ù¢Ôµ¨ ų¨ .Ýþ üõ üµÈ𥤢 ¤ óbÆõ Û Â üõÀÖõ ýû Û °î ų¨ Ýî Û óø Âþ¢Öõ ý ¤ý ü¿¨ î Ýû¢ üõ õ¢ ¹÷ ¤ À÷ø ¤ ßþ . ÝþÞ÷ üõ ñ±÷¢  ´óÛ ù¤ À÷µ î ´¨ ùÀþ¢Âð áÀ ¹÷ ¥ DP ©ø¤ . Ýþ ´¨¢ üܬ óbÆõ

.ÀþÞ÷ éÁ ¤ Àþ ¢ø D&C ©ø¤ ¤¢ ´¨ ßØÞõ î ¤ ý¤ÂØ ýû. ´¨ Bottom - Up üÜ ù¤ Û ù¤ ßþ ¤¢

:(

nk

)±¨½õ 1.3.4

(nk

)=1 k = 0 or k = n(n−1

k

)+(n−1k−1)

else

(5

2

)

(4

2

)(4

1

)

(3

0

) (3

1

) (3

1

) (3

2

)

?1

.......

.................... (

2

1

) (2

2

)

(1

1

) (1

0

)

? ?

?

1 1

1

ݵþ¤Úó ßþ ý ô¥ öõ¥ ÛìÀ üãþ ´¨ µÞî (nk) ¥ üØþû âÞ ¢Àã

.´¨ Ω((nk

))

T(n,k)=0 k = 0 or k = nT (n− 1, k) + T (n− 1, k − 1) + 1 else

www.Bshams.ir

www.Bshams.ir

Page 138: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

129 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

g(n, k) = T (n, k) + 1:­Âê

g(n,k)=1 k = 0 or k = ng(n− 1, k) + g(n− 1, k − 1) else

g(n, k) = T (n− 1, k) + T (n− 1, k − 1) + 1+ 1 = (T (n− 1, k) + 1) +

(T (n− 1, k − 1) + 1) = g(n− 1, k) + g(n− 1, k − 1)⇒ g(n, k) =(nk

)

⇒ T (n, k) =(nk

)− 1

: Ýþ¤¢ üÜî¤Ï

T(n,k)=1− l k = 0 or k = nT (n− 1, k) + T (n− 1, k − 1) + l else

. ´¨ T (n, k) =(nk

)− l üµÈð¥ ó¢ãõ 1− l ≥ 0 ýÂ

ÛÞä Âþ¥ ÕþÂÏ ×õþ¢ üÆþ÷ õ÷ ¥ ù¢Ôµ¨ °î ßþ ±¨½õ ýÂ:Ýî üõ

:Ý÷¢ üõ ø ÝþÂð üõ ÂÑ÷ ¤¢ c ô÷ ý¤¢Â

c[n,k]=c[n-1,k-1]+c[n-1,k]

. Ýû¢ ÛØÈ ¤ Âþ¥ ñøÀ ´¨ üêî Åc 0 1 2 . . . . k-1 k0 1

1 1 → 1↓

2 1 → 2 → 1↓ ↓

3 1 → 3 → 3. .. .. .. .. .

n-1 1 c[n-1,k-1] → c[n-1,k]↓

n 1 c[n,k]

. Ýþ¤¢ öµ¨ k ø ÂΨ n Âþ¥ , ¢ Àû¡ θ(nk) ¥ ±¨½õ öõ¥ Å

www.Bshams.ir

www.Bshams.ir

Page 139: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 130

û ñ ö¢Âî ¢Â¡ óbÆõ 2.3.4

­Âê .Ýî ¢Â¡ ýÀø dn,. . . d2,d1 ýû ب ͨ ¤ ñ Àø N Ýû¡ üõ Ý÷À Ýû¡ üõ . ´¨ ¢õ üêî ù¥À÷ ب Âû ¥ î ´¨ ßþ Âû ب ¢Àã ßþµÞî ¥ î ý¤Ï Ýî ¢Â¡ ¤ ñ Àø N ßþ Ý÷ üõ ü±Â

.Ýî ù¢Ôµ¨¢Â¡ ý ô¥ ب ¢Àã ÛìÀ ¤ c[i,j] Ýî üõ ÓþÂã óbÆõ ßþ Û ýÂ

. ýÀø di , . . . , d1ýû ب ͨ ñ Àø j ö¢Âî

c[i,j]=

0 j=0∞ i=1 , j < d11+c[1 , j-d1] i=1 , j ≥ d1c[i-1 , j] i > 1 , j < di

min c[i-1 , j],1+c[i , j - di] i >1 , j ≥ di

:¢¢Âð üõ ¢Â¡ Âþ¥ ¤¬ ñ Àø 8 ñ·õ öä amount 0 1 2 3 4 5 6 7 8d1=1 0 1 2 3 4 5 6 7 8d2=4 0 1 2 3 1 2 3 4 2d3=6 0 1 2 3 1 2 1 2 2

:ݵþ¤ÚóFunction coins(N,n)

array d[1..n] specifies the coin,in example there are 1,4,6 units

array d[1..n]

array C[0..n,0..N]

for i←1 to n do

C[i,0]←0

for i←1 to n do

for j ←1 to N do

if(i=1 and j<d[1]) then C[i,j]←∞

else if(i=1 and j≥ d[1]) then C[i,j]← 1+C[1,j-d[1]]

else if(i>1 and j<d[i])then C[i,j]← C[i-1,j]

else C[i,j]← minC[i-1,j],1+C[i,j-d[i]]

. Ýþ¤¢ öµ¨ N+1øÂΨ n Âþ¥ ,´¨ θ((N + 1)n) ¥ öõ¥

www.Bshams.ir

www.Bshams.ir

Page 140: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

131 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

0,1 üµÈ óî óbÆõ 3.3.4

¤ ö Ýû¡ üõ . Àî ÛÞ½ À÷ üõ ¤ W ö¥ø î Ýþ¤¢ üµÈ óî Àî­Âêö ö¢Âî  ýÂ.Àª üõ vi ö ©¥¤ø wi ô i üª ö¥ø .Ýî  1,2,. . . n ýªÀþ ßþ .(Ýþ¤À÷ ýÂÆî ´ó)¢ÂØ÷ þ ¢Âî ¿µ÷ ¤ üª ö ö üõ ¤ Âû

.xi ∈ 0,1 ö ¤¢ î ݪ µª¢ ¤ max(∑

xivi) ø∑

xiwi ≤W

Ûì ö¥ø üµÈ óî ×þ î üª¥¤ ·îÀ v[i,j] Ýî üõ ÓþÂãÛ ýÂ: Ýþ¤¢ ßþ .Àª µª¢ 1,2,. . . i ýª À÷ üõ j ÛÞ½

V[i,j]=

0 j=0,∀ i−∞ or 0 i=1 , 0<j < w1

V1 i=1 , j ≥ w1

V[i-1,j] i > 1 ,0< j < wi

max V[i-1,j],Vi+V[i-1,j-wi] i >1 , j ≥ wi

:ÀþÞ÷ ´ì¢ Âþ¥ ñ·õ

weight unit 0 1 2 3 4 5 6 7 8 9 10 11w1=1 v1=1 0 1 1 1 1 1 1 1 1 1 1 1w2=2 v2=6 0 1 6 7 7 7 7 7 7 7 7 7w3=5 v3=6 0 1 6 7 7 18 19 24 25 25 25 25w4=6 v4=22 0 1 6 7 7 18 22 24 28 29 29 40w5=7 v5=28 0 1 6 7 7 18 22 28 29 34 35 40

. ´¨ θ((W + 1)n) ¥ öõ¥ ¢ª üõ ùÀûÈõ î ¤Ï öÞû

: Floyd ݵþ¤Úó 4.3.4

¤¢ ´ú éÂð ×þ ¥ ÃþÞµõ §¤ ø¢ Âû ß ÂÆõ ßþ ùî þÃû ݵþ¤Úó ßþ.Àî üõ ±¨½õ ´¨ üÔõ÷ ö ñþ Âû ö¥ø î ¤ ¤¢ ö¥ø

Function Floyd (L[1..n,1..n]):array D[1..n,1..n]

D←L

for k ← 1 to n do

for i ← 1 to n do

for j ← 1 to n do

D[i,j] ← min(D[i, j], D[i, k] + D[k, j])

return D

www.Bshams.ir

www.Bshams.ir

Page 141: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 132

P üØÞî þ¤ ¥ ö üõ ÂÆõ ßµêÂð ýÂ. ´¨ θ(n3) ¥ ݵþ¤Úó ßþ öõ¥:¢Þ÷ ù¢Ôµ¨

Function Floyd (L[1..n,1..n]):array D[1..n,1..n],array P[1..n,1..n]

D←L

P← ∅for k ← 1 to n do

for i ← 1 to n do

for j ← 1 to n do

if D[i,j] > D[i,k]+D[k,j]

D[i,j] ← D[i,k]+D[k,j]

P[i,j] ← k

return D , P

:ÀþÞ÷ ´ì¢ Âþ¥ ñ·õ

1

2

4

3

I

-

15

530

505

15

515

D0 = L =

0 5 ∞ ∞50 0 15 5

30 ∞ 0 15

15 ∞ 5 0

D1 =

0 5 ∞ ∞50 0 15 5

30 35 0 15

15 20 5 0

D2 =

0 5 20 10

50 0 15 5

30 35 0 15

15 20 5 0

D3 =

0 5 20 10

45 0 15 5

30 35 0 15

15 20 5 0

D4 =

0 5 15 10

20 0 10 5

30 35 0 15

15 20 5 0

P =

0 0 4 2

4 0 4 0

0 1 0 0

0 1 0 0

?Àî ¢¹þ À÷ üõ üÜØÈõ Àª üÔõ éÂð ýû ñþ ö¥ø Âð : ßþÂÞ? ÀþÞ÷ ü¨¤Â Dijkstra ݵþ¤Úó ¢¤õ ¤¢ ¤ ßþÂÞ : ßþÂÞ

www.Bshams.ir

www.Bshams.ir

Page 142: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

133 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

(chained matrix multiplication) ûÅþÂõ ýù¹÷¥ ® 5.3.4

üõ di−1 × di ±Âõ ¥Ai ÅþÂõ Âû.ÀµÆû­øÂÔõ A1, A2, ..., An ÅþÂõ n

® ßþ Øþ¤Ï ÝþÞ÷ ±¨½õ¤ A=A1A2.....An Û¬ Ýû¡ üõ .Àª÷ð Àþ û ÅþÂõ ¤î ßþ ý ´¨ üúþÀ .Àµê ëÔ ßØÞõ öõ¥ ßþµÞî ¤¢

.¢ª Þî ú÷ ýú® ¢Àã î À÷ª ý¤Áðõ÷ ý® ¢Àã ÛìÀ mij îÝþ¥¨ üõ ö ¤ M=(mij)n∗nÅþÂõ ¤Ñõ ßþ ýÂ

.Àª AiAi+1.....Aj ® ±¨½õ ý ô¥mii = 0 Ai±¨½õ ¤¢ô¥ ® ¢Àãmii+1 = di−1didi+1 AiAi+1±¨½õ ¤¢ô¥ ® ¢Àã

: Ýþ¤¢ ¤ Âþ¥ Íø ¤ û ÅþÂõ ® ¤¢ Ý÷¢ üõA = (aij)p×q B = (bij)q×r C = (cij)p×r = AB

⇒ cij=q∑

k=1

aikbkj

for i=1 to p do

for j=1 to r do ∈ θ(pqr)

for k=1 to q do

cij = cij + aikbkj

: Ýþ¤¢ ßþÂ

( AiAi+1...Ak)(Ak+1...Aj)

mij =

0 i=jmini≤k≤j−1mik + mk+1,j + di−1dkdj j>i , i=1,2,.....n-1

: Ýþ¤¢ Âþ¥ Âçµõ Âç

j=i+s ⇒

mi,i+s =

0 s=0 , i=1,...,n

mini≤k≤i+s−1mik + mk+1,i+s + di−1dkdi+s i=1,2,.....n-s ,1≤ s ≤n-1

www.Bshams.ir

www.Bshams.ir

Page 143: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 134

: ݵþ¤Úóint minmult(int n,const int d[ ],index p[ ][ ])

index i,j,k,diagonal;

int M[1..n][1..n]

for (i=1;i ≤ n;i++)

M[i][[i]=0;

for (diagonal=1;diagonal ≤ n-1;diagonal++)

for (i=1;i ≤ n-diagonal;i++)

j ← i+diagonal

m[i][j] = mini≤k≤j−1m[i][k] + m[k + 1][j] + d[i− 1]d[k]d[j]

p[i][j]=a value of k that gave the minimum

return M[1][n];

: ´¨ Âþ¥ ¤¬ ݵþ¤Úó ý öõ¥

n−1∑

s=1

s(n− s) = Θ(n3)

.Àþ¤ø ´¨À ¤ û ® ¢Àã ÛìÀ Âþ¥ ýû ÅþÂõ ¤¢: ñ·õA1 = A13×5 A2 = B5×89 A3 = C89×3 A4 = D3×34

s=0 =⇒

m11 = 0

m22 = 0

m33 = 0

m44 = 0

s=1 =⇒

m12 = d0d1d2 = 13× 5× 89 = 5785

m23 = d1d2d3 = 5× 89× 3 = 1335

m34 = d2d3d4 = 89× 3× 34 = 9078

s=2 =⇒

m13 = m11 + m23 + 13× 5× 3, m12 + m33 + 13× 89× 3= min1530,9256 = 1530

m24 = 1845

www.Bshams.ir

www.Bshams.ir

Page 144: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

135 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

s=3 =⇒

m14 = minm11 + m24 + d0d1d4, m12 + m34 + d0d2d4, m13+

m44 + d0d3d4=2856

ú üþø¢ø¢ ý¹µÆ ´¡¤¢ 6.3.4

´¡¤¢ ×þ ýø¤ ¤ ÀÜî n ßþ Ýû¡ üõ î Ýþ¤¢ ¤µ¡ ¤¢ ÀÜî n î Àî ­Âêý üãõ ñÞµ ý¤¢ û ÀÜî ßþ ¥ ×þ Âû .Ýû¢ ¤Âì üþø¢ø¢ ý¹µÆ¢Âê Âʽõ ÀÜî) .À÷ ùÀª °Âõ ý¢ã¬ °Â û ÀÜî .Àª üõ ü¨Âµ¨¢´¨ ¼®ø .Àª üõ pi ô i ÀÜî ü¨Âµ¨¢ ñÞµ î ´¨ ßþ  ­Âê( ´¨×þ ¤ ÀÜî n ßþ ü±Â î ÝþÞ÷ ü¨¤Â Ýû¡ üõ .

n∑i=1

pi = 1 îÝÞ÷ üõ û ùÂð ü¨Âµ¨¢ þÃû ͨµõ ÝþÞ÷ ÛþÀ± üþø¢ø¢ ý¹µÆ ´¡¤¢

.ÀªÕÎõ ú÷ ü¨Âµ¨¢ ñÞµ ø û ÀÜî ù¤Þª ñøÀ î Àî ­Âê ñ·õ ýÂ

:Àª Âþ¥node 6 12 18 20 27 34 35

probability 0.2 0.25 0.05 0.1 0.05 0.3 0.05

üõ. ´¨ Âþ¥ Ûت ´ª¢ üþø¢ø¢ ý¹µÆ ´¡¤¢ ×þ ö üõ î ü¥ üØþ¢Àã üê¢Ê Âçµõ Å. Ý ¤ û ùÂð áÞ¹õ ü¨Âµ¨¢ þÃû ͨµõ Ýû¡

.Àª üõ ü¨Âµ¨¢ ý û ÆþÖõ

34

12 35

6 20

18 27

1×0.3+2×0.25+2×0.05+3×0.2+3×0.1+4×0.05+4×0.05= 2.2

www.Bshams.ir

www.Bshams.ir

Page 145: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 136

ñ , Àª üõn∑

i=1

pi(depth(ci) + 1) ÂÂû ùÂð ôÞ ü¨Âµ¨¢ þÃû ͨµõ.Àõ Àû¡ ´¨¢ ýÂÚþ¢ ¤ÀÖõ Àª Âþ¥ ¤¬ ´¡¤¢ Âð

12

6 20

18 34

27 35

1×0.25+2×0.2+2×0.1+3×0.05+3×0.3+4×0.05+4×0.05= 2.3

: ÜÿÆõ Û ý ×õþ¢ ù¤.Àª ci, ci+1, . . . , cjýûùÂð ü¨Âµ¨¢ ý þÃû ÛìÀ cijÀî­Âê

.´¨ Èþ¤ ¤¢ î Ýþ¤¢ ùÂð ×þ . ´¨ óbÆõ c1nßþÂ

ck

ci < . . . < ck−1 ck+1 < . . . < cj

1)i = j ⇒ cii = pi

2)j > i ⇒ ci < . . . < ck−1 < ck < ck+1 < . . . < cj

´¨¤ ´Þ¨ ý þÃû ø ´¨ ci,k−1 ck ² ´Þ¨ ýûÈþ¤ ý þÃû ck öÀ ÷¥Â ê ôÞ ¥ ñÞ µ ×þ Ýþ¤¢ ¤ ck Èþ¤ î üµ ìø Å .´¨ ck+1,j

. ´¨ pk Ã÷ Èþ¤ ¢¡ ý .¢ª üõ ê® áÞ¹õ

ci,k−1+ck+1,j +pk +pi + ...+pk−1+pk+1+ . . .+pj = cik−1+ck+1j +j∑

t=i

pt

www.Bshams.ir

www.Bshams.ir

Page 146: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

137 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

⇒ cij = mini≤k≤j(cik−1 + ck+1j) +j∑

t=i

pt

: Ýþ¤¢ Å j = s + i ÝþÞ÷ üõ ÓþÂã

ci,i+s =

pi s = 0, i = 1, ..., n

mini≤k≤i+sci,k−1 + ck+1,i+s+i+s∑t=i

pt 1 ≤ s ≤ n− 1

,1 ≤ i ≤ n− s

.´¨ û ÅþÂõ ý ù¹÷¥ ® ±ª õ÷ ßþ Àî.

n−1∑s=1

(n− s)(s + 1) = θ(n3): Ýþ¤¢ Ã÷  öõ¥ ý ø: ñ·õ

:Ýþ¤¢ ¤µ¡ ¤¢ ¤ Âþ¥ ÀÜî 4 Àî ­Âê

Don Isabelle Rulph Wally

key[1] key[2] key[3] key[4]

p1 = 3

8p2 = 3

8p3 = 1

8p4 = 1

8

C 11

2

2

3

3 4

4

3

8

9

811

8

7

4

3

8

5

8

1

8

3

81

8

1

P 11 1 1

2

22 2

2 2 2

3

3 33

4

4 4

Isabelle

Don Rulph

Wally

. ´¨ ÂÆõ ÅþÂõ P

www.Bshams.ir

www.Bshams.ir

Page 147: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 138

íµÈõ µª¤Âþ¥ ßþµð¤Ã 7.3.4

Ý û ¡ ü õ .À ª µ ª¤ ø¢ Y = y1y2 . . . yn, X = x1x2 . . . xn À î ­Â ê,µª¤ ×þ ¥ µª¤ Âþ¥ ×þ ¥ ¤Ñõ.Ý ¤ ø¢ ßþ ß íµÈõ µª¤ Âþ¥ ßþµð¤Ã.Àª ùÀõ ´¨À µª¤ ö ¥ é À þ ×þ þ ºû éÁ ¥ î ´¨ ý µª¤

:×õþ¢ Û.Yj = y1y2 . . . yj ,Xi = x1x2 . . . xi ÝþÞ÷ üõ ÓþÂã

LCS=Longest Common Subsequence

LCS[Xi, Yj ] =

0 i = 0 or j = 0

1+ LCS[Xi−1, Yj−1] xi = yj , i 6= 0, j 6= 0

MaxLCS[Xi−1, Yj ], LCS[Xi, Yj−1]xi 6= yj , i 6= 0, j 6= 0

LCS-length(X,Y)

1 m← length(X)

2 n← length(Y)

3 for i← 1 to m do

4 c[i,0]← 0

5 for j←0 to n do

6 c[0,j]←0

7 for i←1 to m do

8 for j←1 to n do

9 if (xi = yj) then

10 c[i,j] ←− c[i-1,j-1]+ 1

11 b[i,j] ←− ” ”

12 else if (c[i-1,j] ≥ c[i,j-1]) then

13 c[i,j] ←− c[i-1,j]

14 b[i,j] ←− ” ↑ ”

15 else

16 c[i,j] ←− c[i,j-1]

17 b[i,j] ←− ”← ”

18 return c and b //θ(nm)

www.Bshams.ir

www.Bshams.ir

Page 148: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

139 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

Print-LCS(b,X,i,j)

1 if i=0 or j=0 then

2 return

3 if b[i,j]=”” then

4 Print-LCS(b,X,i-1,j-1)

5 Print xi

6 if b[i,j]=”↑ ” then

7 Print-LCS(b,X,i-1,j)

8 else Print-LCS(b,X,i,j-1) //O(n + m)

Âþ¥ ö¢¤ø ´¨¢ ýÂ.Àª üÞ÷ ¢Âê Âʽõ ßþ î ¢Þ÷ Àþ.ÝþÞ÷ ñ±÷¢ ¤ û ÇÜê ´ú Àþ íµÈõ µª¤

: ñ·õ

X=ABCBDAB Y=BDCABA LCS=BCBA

j 0 1 2 3 4 5 6

i yj B D C A B A

0 xi 0 0 0 0 0 0 0

1 A 0 ↑0

↑0

↑0

1

←1

1

2 B 0 1

←1

←1

↑1

2

←2

3 C 0 ↑1

↑1

2

←2

↑2

↑2

4 B 0 1

↑1

↑2

↑2

3

←3

5 D 0 ↑1

2

↑2

↑2

↑3

↑3

6 A 0 ↑1

↑2

↑2

3

↑3

4

7 B 0 1

↑2

↑2

↑3

4

↑4

www.Bshams.ir

www.Bshams.ir

Page 149: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 140

ü÷ú ÖÆõ ý óbÆõ 8.3.4

ö ¤¢ Àþ ´¨¢ ý¥ø n Ý ø¢ ¥ üØþ Àû¢ üõ ÖÆõ ¤ÀÖ÷ B ø A Ý ø¢ø¢ ßþ î ´¨ üúþÀ .Àþ ù¤ ÖÆõ Àã ýÜÂõ À÷ üõ Ý ßþ ¤¬.(¢¤À÷ ¢ø ýøÆ ´ó ) Àª µª¢ ý¥ 2n− 1 ·îÀ ø n ÛìÀ Àþ ÝÀª q  B ¢Â ¹µ÷ ¤¢ A ´Æت ñÞµ ø p ý¥ Âû ¤¢ A Ý ¢Â ñÞµ Âð»÷ ¢Âð üõ ¤¬ ÂÚþ¢ ý¥ ¥ ÛÖµÆõ Ûت ý¥ Âû î Ýî­Âê øý¥ø j B Ý ø ý¥ø i A Ý Øþ  ¯øÂÈõ Àª A ¢Â ñÞµ p(i, j)

.Àª µª¢ ¥÷: ´¨ Âþ¥ üµÈð¥ Ûت p(i, j) üóÞµ ý Τ •

p(i, j) = p ∗ p(i− 1, j) + q ∗ p(i, j − 1) , i ≥ 1, j ≥ 1p(0, j) = 1 ∀j ≥ 1p(i,0) = 0 ∀i ≥ 1

: Devide and conquer ©ø¤ Û •

function p(i,j)

if i=0 then return 1

else if j=0 then return 0

else return p*p(i-1,j)+q*p(i,j-1)

;

ý Τ ø Ý ¤ p(n, n) ý ±¨½õ ý ô¥ ýû âÞ ¢Àã Ýû¡ üõ ñ: Ýþ¤¢ û âÞ ¢Àã ý ¤ Âþ¥ üµÈð¥

g(i, j) = g(i− 1, j) + g(i, j − 1) + 1

g(i,0) = g(0, j) = 0

:Àþ üõ ¤¢ Âþ¥ ¤¬ ý Τ h(i + j, j) = g(i, j) Âaçµõ Âç

h(i + j, j) = h(i + j − 1, j) + h(i + j − 1, j − 1) + 1

h(i + 0,0) = h(0+ j, j) = 0

.¢ Àû¡ (i+jj

)− 1 µê¤ ¤î ýû âÞ ¢Àã ñب ñõÂê ¥ ù¢Ôµ¨

¢Àã  ø¢ ü¨¤Â ¢¤õ üµÈð¥ ý Τ ¤¢ û ® ¢Àã î Ý÷¢ üõ õ

www.Bshams.ir

www.Bshams.ir

Page 150: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

141 DYNAMIC PROGRAMMING þ üÆþ÷ õ÷ .3.4

üõ ô¹÷ ® 2(2nn

)− 2 ¢Àã p(n, n) ý ±¨½õ ý Š. ´¨û âÞ

üõ 4n

2n+1¥ µð¤Ã î, ´¨ Ω(2n

n

) À ¤¢ ü÷õ¥ ý¤¢ Àî ¹µ÷ ¤¢ ø .¢ª. ´Æ÷ Àõ¤î ©ø¤ ßþ ¥ ù¢Ôµ¨ Å. Àª

: Dynamic programming ©ø¤ Û •

function series(n,p)

array p[0..n,0..n]

q = 1 - p

fill from topleft to diagonal

for s = 1 to n do

p[0,s] = 1 , p[s,0] = 0

for k = 1 to s - 1 do

p[k,s - k] = p * p[k - 1,s - k] + q * p[k,s - k - 1]

fill from below diagonal to bottomright

for s = 1 to n do

for k = 0 to n - s do

p[s + k,n - k] = p * p[s + k - 1,n - k] + q * p[s + k,n - k - 1]

return p[ n , n ];

. ´¨ Û±ì ©ø¤ ¥  ú ¤Æ î Àª θ(n2)¥ ü÷õ¥ üðÀ» °Â ßþ

1

0

0

0

1

p p+pq

p2p3 + pq + pq2

0

n 0

1

2

0

3

0 1 2 n3

1

4

......................

...................................

................................................

www.Bshams.ir

www.Bshams.ir

Page 151: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 142

¢Âð ù¤ø¢ ùÀªøÂê óbÆõ 9.3.4

î ý¤Ï ¢¢Âð ø ¢ø Âúª n Àû¡ üõ ¢Âð ù¤ø¢ ùÀªøÂê ×þ Àî­ÂêÉ¿Èõ þÃû ÂÆõ ×þ ÂÚþ¢ Âúª Âû ¥ üãþ Àª µª¢ ¤ ÂÆõ þÃû ßþµÞî

.¢¤¢ ¢ø

üõ öÈ÷ W ýÀã ø¢ þ¤ ͨ ¤ §¤ n ¤¢ ´ú éÂð ¹þ ¤¢ :Ûminlenght. ´¨ j ø i §¤ ß ñ þ ñÏ ùÀû¢ öÈ ÷ W[i][j] ¤Ê÷ ¤¢ Ýû¢ø ´¨ n 1 ¥ ö ýûÂΨ î ´¨ ýÀã ø¢ þ¤ P , ´¨ ú ¤ ùÀû¢ öÈ÷ÅþÀ÷ P[i][A] . ´¨ ùÀª ý¤Áð ÅþÀ÷ V − v1 ýû äÞ¹õ Âþ¥ ͨ ö öµ¨A §¤ Þû ¥ î ´¨ v1 vi ¥ ÂÆõ ßþ ùî ýø¤ vi ¥ Å §¤ ߵƿ÷

. ¢¤Áð üõ ¤±Øþ fÖì¢void travel(int n,const number W,index P,number & minlenght)

index i,j,k;

number D[1..n][subset of V-v1];

for (i=2 ;i ≤ n;i++)

D[i][∅]=W[i][1];

for(k=1;k≤n-2;k++)

for(all subset A ⊆ V -v1contaning k vertices)

for (i such that i6=1 and vi is not in A)

D[i][A]=minj:vj∈A(W[i][j]+D[j][A-vj);

P[i][A]=value of j that gave the minimum ;

D[1][V-v1]=min2≤j≤n(W[1][j]+D[j][V-v1, vj])

P[1][V-v1]=value of j that gave the minimum;

minleght=D[1][V-v1];

www.Bshams.ir

www.Bshams.ir

Page 152: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

143 û ý¥ ´Þ÷¤ .4.4

û ý¥ ´Þ÷¤ 4.4ÂÊä n ß ¤ ÂÊä ßþµð¤Ã ßõø¢ üãÎì ݵþ¤Úó ×þ ¥ ù¢Ôµ¨ Ýû¡ üõ©ø¤ ßþ ¤¢. ´¨ ùÀª ý¤¢Â Úó üêÁ ýû ô ©ø¤ ¥ ´Þ÷¤ ©ø¤ Ý

:¢ª üõ ÛÞä Âþ¥ ùª û Ý öõÂúì ö¢¤ø ´¨À ýÂÖÆõ Ýû Ý ø¢ Âû ų¨ ùÀª ÝÆÖ üþ 2 ýû µ¨¢ ¢õ ýû Ýý¤Ãð  À÷ø ¤ ßþ ų¨ Àþ ù¤ Àã ¤ø¢ À÷ üõ û Ý ßþ öõÂúì Àû¢ üõ

.¢ª É¿Èõ û öõÂúì öõÂúì Ø÷ Àþ üõ õ¢ ýÀã ´Þ÷¤:ñ·õ

19 20 14 9 12 5 13 8

20 14 12 13

20 13

20

¢Àã .´¨ dlg ne áÔ ¤ Àª± ÷ 2 ö ¥ üÂÌõ Â¬ä ¢Àã Âð ¹ þ ¤¢.´¨ 2h − n −∞ ¬ä

n = 2k :

lg n∑

i=1

n

2i=

n2(1− (1

2)lg n)

1− 1

2

= n(1− 1

n) = n− 1

Àª±÷ 2 ¥ ü÷ öª¢Àã î ý¬ä ÝÞþÃîõ ö¢¤ø ´¨À ý ©ø¤ ßþ´¨À ý õ ¢¤À÷ üóÞãõ ©ø¤ üìÂê î,¢¤¢ ¥÷ ÆþÖõ n-1 öÞû Ã÷

. ´¨ °¨õ ÂÊä ßþµð¤Ã ßõø¢ ö¢¤øÈþ¤ ýû ùÀ÷¥ ß ¤¢ ¤ ÝÞÆîõ Àþ ÂÊä ßþµð¤Ã ßõø¢ ö¢¤ø ´¨À ýÂ.Ýþ¤¢ Èþ¤ ùÀ÷¥ ÂÊä, ´¡¤¢ áÔ¤ ù¥À÷ Å . ÝþÞ÷ À( 20 üãþ)n-1+dlgne-1=n+dlgne-2 Û î ¤¢ Å . ´¨ dlg ne -1 û Æ þ Ö õ ¢À ã Å

. Ýþ¤¢ ÆþÖõ

www.Bshams.ir

www.Bshams.ir

Page 153: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 144

ö¢¤ø ´¨À ý ÆþÖõ ¢Àã ÛìÀ ÆþÖõ ¢Àã ßþ Àû¢ öÈ÷ : ßþÂÞ. ´¨ ÂÊä ßþµð¤Ã ßõø¢

B &T ( Back Tracking ) 5.4¥ ÜÿÆõ ×þ Û ý ö ¤¢ î ´¨ üÆþ÷ õ÷ ×Ø ¢Âð °Öä ´Èð¥ýÌê ¥ ÎÖ÷ Âû üãþ. ¢¢Âð üõ ù¢Ôµ¨(¤¢ ´ú ´¡¤¢) ¤¢ ´ú éÂð ×þüõ ÂÑ÷ ¤¢ ¤¢ ´ú ´¡¤¢ þ éÂð ×þ ¥ ñþ ×þ þ ø §¤ ×þ ÂÒµõ ¤ ÜÿÆõÂþ¥ µØ÷ üµÆþ î ´Æ÷ ´¨ Ýúõ B&T ÛÆõ Û ¢¤õ ¤¢ î »÷ . ÝþÂð

Promissing â : ¡ª ¤µîê : Óó . ¢ª öä §b¤ ×þ ¥ ö üõ î üþû ùÂð ¢Àã ·îÀ üãþ ¡ª ¤µîê þ î Àî üõ ü¨¤Â î ´¨ üã promissing â ø ´ª¢ ü¨Âµ¨¢ À÷¥Âêüãþ ¡ ùÂð ¿µ÷ öØõ ¥ ¤Ñõ . ¡ þ ´¨ (fisible) ü÷Àª ¡ ùÂð ¿µ÷ßþ ´þÃõ . ¡ þ Àõ Àû¡ ¢ø üÜ¡À þ Ëì ùÂð ßþ ¿µ÷ Øþ

. ´¨û ´ó ôÞ ö¢¢ ©ø¤

Âþ¥ø nóÆõ 1.5.4

ý¤Ï Ýû¢ ¤Âì ¤ Âþ¥ø n ,n×n ¸÷ÂΪ ½Ô¬×þ ¤¢ Ýû¡ üõ î Àî ­ÂêÛ¡À î ¢ª × Àþ ¹þ ¤¢ .À þÞ ÷ ÀþÀú ¤ ÂÚþÀØþ ýÂþ¥ø ø¢ ºû î[k,col[k]] ÷¡ ¤¢ ôk Âþ¥ø . ´¨ [i,col[i]] ÷¡ ¤¢i Âþ¥ø . ÀµÔ÷ ëÔ ô kø ôiÂþ¥ø

:Àû¢ ¤ Âþ¥ ´ó ø¢ k < i ýÂ Àþ Å .´¨col[i]6= col[k], |col[i]− col[k]| 6= i-k

bool promssing (index i) index k;

bool switch;

k=1;

switch=true;

while(k < i && switch)if (col[i]==col[k] ‖ abs(col[i]-col[k])==i-k)

switch=false;

k++;//end of whilereturn switch;

.´¨n ¡ª ¤µîê Å Ýþ¤¢ öµ¨ n¡ª Âû¤¢ :¡ª ¤µîê

www.Bshams.ir

www.Bshams.ir

Page 154: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

145 B &T ( BACK TRACKING ) .5.4

void queens (index i)

index j;

if (promissing (i))

if (i==n)

cout<< col[1] through col[n];

else

for(j=1;j <= n;j++)

col[i+1]=j;

queens(i+1);

.ÀþÞ÷ ÛÞ½¤ W ö¥ø À÷ üõ î Ýþ¤¢ üµÈ óî ×þ î Àî­Âê : ñ·õ¤¢.´¨ wi ö¥ø ý¤¢ üª Âû.Ýî  n, ...,2,1 ª ¤ óî ßþ Ýû¡ üõî Àª ý ÷ð Àþ ö¢Âî  ù½÷.ÝþÞ÷ ¿µ÷ Ý÷µõ ¤ üª ºû þ ×þ ¹þßØÞõ ýúµó ôÞ Ýû¡ üõ .Àª w  À÷ª üõ ¿µ÷ î üþª ö¥ø fÖì¢

.Ý ¤w1 = 3, w2 = 4, w3 = 5 ª ö¥ø ø 13 üµÈ óî ö¥ø î Àî ­Âê

Â𠢪 üõ ê® üª ö Àª ×þ ñþ °Æ Âð ´¡¤¢ ßþ ¤¢ .Àª w4 = 6 ø¤¢ Âþ¥ ´¨ 2 ¡ª ¤µîê .´¨ ÕÞä ñø ´¡¤¢ ßþ. ¢ÈÞ÷ ê® Àª ÂÔ¬

.Ýþ¤¢ À÷¥Âêø¢ ùÂðÂû

0

3 0

7 3 4

412 7

13 7

8 3 9

0

0

0

00

0

0

0

1

1

1

1

1 1

1

√×

× × × ×

×

×

w1

w2

w3

www.Bshams.ir

www.Bshams.ir

Page 155: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 146

weightk =k−1∑i=1

xiwi , totalk =n∑

i=k

wi

void sum-of-subset(index i,int weight,int total)

if (promissing(i))

if(weight==W)

cout<<x[1] through x[n];

else

x[i+1]←− 1

sum-of-subset(i+1,weight+w[i+1],total-w[i+1]);

x[i+1]←− 0

sum-of-subset(i+1,weight,total-w[i+1]);

bool promissing(index i)

return

((weight + total ≥W )&&((weight == W )||(weight + w[i +1] ≤W ))

ü÷µÜÞû ¤ø¢ ßµêþ óbÆõ 2.5.4

void hamiltonian(index i)

index j;

if(promissing(i))

if(i==n-1)

cout vindex[0] through vindex[n-1];

else

for(j = 2 ;j ≤n ; j++)

vindex[i+1] = j ;

hamiltonian(i+1);

www.Bshams.ir

www.Bshams.ir

Page 156: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

147 B &T ( BACK TRACKING ) .5.4

bool promissing(index i)index j;

bool switch;

if (i==n-1 && !w[vindex[n-1]][vindex[0]])

switch=false;

else if (i > 0 && !w[vindex[i-1]][vindex[i]])

switch=false;

else switch=true;

j=1;

while(j <i && switch)if(vindex[i]==vindex[j])

switch=false;

j=j+1;

return switch;

m-coloring óbÆõ 3.5.4

ýÃõ Ù÷¤ ö Ù÷¤ m ¤ Àªüõ §b¤ n Ûõª î éÂð ×þ §¤ Ýû¡üõ.Àª±÷ Ù÷ÂÞû ý¤ø¹õ §b¤ ø¢ ºû î Ýî

. ´¨ m ¡ª ¤µîê óbÆõ ßþ ¤¢void m-coloring (index i)

int color;

if (promissing(i))

if (i == n)

cout << vcolor[1] through vcolor[n]

else

for (color = 1; color <= m; color++) volor[i+1] = color;

m-coloring(i+1);

www.Bshams.ir

www.Bshams.ir

Page 157: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

üÆþ÷ ݵþ¤Úó Óܵ¿õ ýû ©ø¤ üêÂãõ .4 ÛÊê 148

bool promissing (index i) index j;

bool switch = true;

j = 1;

while (j < i && switch) if (W[i][j] && vcolor[i] == vcolor[j])

switch = false;

j++; return switch;

Branch and Bound (B&B) ×Ø 6.4

Back Tracking ©ø¤ ü÷øÂê ´û±ª î ´¨û ݵþ¤Úó ý¥¨ù¢ ×Ø ×þ¤¢ ùÂð Âû ý (óø ¤ÀÖõ) Bound ×þ B&B ©ø¤ ý¥¨ù¢ ¤¢ f Þãõ .¢¤¢Ýî ùÂð Âû ¿µ÷ ø ÂÆõ Âû ¿µ÷ ý üµÆþ ¹µ÷ ¤¢ ,¢ªüõ µêÂð ÂÑ÷ÂÑ÷ ¤¢ î Àª ýÀ÷ ¥ ÂµÈ ÀÊÖõ ùÂð ùÂð ßþ ¥ öÀ¨¤ b þÃû Âð îý f ± óè .¢ªüõ §Âû ÂÆõ ö âìø ¤¢ .ÝþÂÚ÷ ÂÑ÷ ¤¢ ¤ ÂÆõ ö ,ÝþµêÂð

.¢¢Âðüõ ù¢Ôµ¨ BFS ¤µ¡¨ ¥ ©ø¤ ßþ ý¥¨ù¢

www.Bshams.ir

www.Bshams.ir

Page 158: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

5 ÛÊê

û éÂð Çþ

Exploring graphs û éÂð Çþ .5

(Depth First Search) DFS ݵþ¤Úó 1.5procedure DF-Search(G=< N,A > )

for each v ∈ N do mark[v] ← not-visited

for each v ∈ N do

if mark[v] 6= visited then

DFS(v)

procedure DFS(v)

Node v has not previously been visited

mark[v] ← visited

for each node w adjacent to v do

if mark[w] 6= visited then

DFS(w)

www.Bshams.ir

www.Bshams.ir

Page 159: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û éÂð Çþ .5 ÛÊê 150

: Ýþ¤¢ ñ·õ öä

1

32

5 6

4

7 8

1

2

3

6

5

4

7

8

1. DFS(1) =⇒ mark[1]=visited , mark[2] 6= visited

2. DFS(2)

3. DFS(3)

4. DFS(6)

5. DFS(5)→ .À÷ùÀª visit ¤ø¹õ ýû¢÷ Þû ¹þ

6. DFS(4)

7. DFS(7)

8. DFS(8)

: ñ·õö õ¥ ¤¢ î ¢¤¢ ¢ ø DF-Search Ý µ þ¤ Ú ó ¥ ý¥ ¨ ù¢ À û¢ ö È ÷

. ´¨úóþ ¢Àã A ø §¤ ¢Àã N î .¢ª üõ ý¥¨ ù¢ θ(|N |+ |A|)

www.Bshams.ir

www.Bshams.ir

Page 160: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

151 (DEPTH FIRST SEARCH) DFS ݵþ¤Úó .1.5

:Ûöõ¥ öÞû Öì¢ Ýµþ¤Úó ý¥¨ ù¢ î ¢Þ÷ öÈ÷ ÂÏ¡ Àþ ¾¨ ¤¢

.¢Þ÷ ù¢Ôµ¨ ´Æó ý¥¨ ù¢ ¥ ö üõ ø ¢¤¢ ¥÷ ùÀª Âî£ î ´¨ ßØÞõ ¤¢ ´ú éÂð ×þ ¤¢ ´¨ ¢úÈõ Âþ¥ ñ·õ ¤¢ î ¤Î÷Þû´¨ ¼®ø Àª À±Þû Âè éÂð »÷.¢ÂîÇþÞ ¤ §¤ ôÞ öµ÷ §b¤ ×þ

.¢ª ü÷¡Âê DF-Search ñø¤ üµÆþ éÂð ýû Ôóbõ ¢Àã ù¥À÷ î

1

2 3 4

7 85 6

6

-

6 6I

w

I

R

R

6?

1

2

3

4

8

76

5

?

~

?

??

q

o

-

K

1. DFS(1)

2. DFS(2)

3. DFS(3)

4. DFS(4)

5. DFS(8)

6. DFS(7)

7. DFS(5)

8. DFS(6)

www.Bshams.ir

www.Bshams.ir

Page 161: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û éÂð Çþ .5 ÛÊê 152

µÈ ý¥¨ ù¢ 1.1.5

Procedure DFS2(v)

p ←empty-stack

Mark[v]←visited

push v on to p

while p is not empty do

while there exites a node w adjacent to top(p)

such that mark[w]6=visited do

mark[w]← visited

push w on to pw is the new top(p)pop(p)

(Breath First Search) BFS ݵþ¤Úó 2.5procedure BF-Search(G)

for each v ∈ N do Mark[v]← not-visited

for each v ∈ N do

if Mark[v] 6= visited then

BFS(v)

procedure BFS(v)

Q← empty-queue

mark[v] ← visited

enqueue v into Q

While Q is not empty do

u ← first(Q)

dequeue u from Q

for each node w adjacent to u do

if Mark[w] 6= visited then

Mark[w] ←− visited

enqueue w into Q

ö¢Âî visit à ÷ û ñþ ôÞ Â þ¥ ´¨ O(|N | + |A|) ¥ µÞî ݵþ¤Úó öõ¥.À÷¤À÷

www.Bshams.ir

www.Bshams.ir

Page 162: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

153 TOPOLOGICAL SORT ý¦ó ý¥¨ °Âõ .3.5

: Ýþ¤¢ ñø ñ·õ ý ÷Þ÷ öä

node visited Q

1. 1 61,2,3,4︸ ︷︷ ︸2. 2 62,3,4,5,6︸︷︷︸3. 3 63,4,5,6

4. 4 64,5,6,7,8︸︷︷︸5. 5 65,6,7,8

6. 6 66,7,8

7. 7 67,8

8. 8 68

Topological Sort ý¦ó ý¥¨ °Âõ 3.5üóþ  °Öä ÂÜ §b¤ ¥) ´¨ ¤ø¢ Àìê ø ¤¢ ´ú î Ýþ¤¢ üêÂð Àî­Âê î ´¨ ö éÂð ßþ §¤ ý¥¨ °Âõ ý ©ø¤ ×þ ¤¬ ßþ ¤¢ ( Ýþ¤À÷

: Ýî ÛÞä Âþ¥ ùª´¨ ÕÞä ñø ÇþÞ) .´¨ ÂÔ¬ ö ý¢ø¤ø ¤¢ î Ýþ üõ ¤ ü¨b¤ ÀµÛʵõ ýû ñþ ôÞ ø §b¤ ö ų¨ ù¢Þ÷ ¿µ÷ ¤ §b¤ ö ( ê® ¯Âª õ¤ÀÖ÷ ¤ À÷ø ¤ ßþ . ÝûÀõ õ¢ ¤ Õ¨ þø ¤ f¢À¹õ . Ýî üõ éÁ ¤ ö ¥ µêÂð ©ø¤ ßþ î ´¨ üúþÀ . À÷ª ù¢Þ éÂ𠧤 ôÞ ÝûÀõ õ¢öõ¥ ¹µ÷ ¤¢. ÂµÈ ùÀî ¢øÀ½õ Íþª õ , ´¨ ö Èõ fÖì¢ ø DFS ©ø¤.´¨ θ(1) ¥ ùÀî ¢øÀ½õ Íþª öõ¥ Âþ¥ ´¨ θ(|N |+ |A|) À ¤¢ ö ýÂ

¥ Óܵ¿õ üø¡ À ø Àª üÞ÷ ¢Âê Âʽõ î ´ª¢ Àþ: Ýþ¤¢ ñ·õ öä . ݪ µª¢ Ý÷ üõ ݵþ¤Úó ßþ

1

3

2

6

4

5* -

s -

j

3?

:Àª ¤¬ ßþ À÷ üõ û üø¡ ¥ üØþ ñ·õ ßþ ýÂ1,3,2,4,6,5

www.Bshams.ir

www.Bshams.ir

Page 163: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û éÂð Çþ .5 ÛÊê 154

Bellman Ford ݵþ¤Úó 4.5

Bellmanݵþ¤Úó ¢ª ù¢Ôµ¨ üþÂÆõ ý À÷ üõ î üþû ݵþ¤Úó ¥ üØþÀ÷µõ ö ýúóþ °ÆÂ î ¤¢ ´ú éÂð ×þ ý ݵþ¤Úó ßþ . ´¨ Ford

¤Ø §¤ Âþ¨ â±õ ùÂð ô÷ üûÂð ¥ ÂÆõ ßþµûî ßµêþ ´ú Àª üÔõüÔõ ö¥ø ý¤ø¢ î Àî ¤î ´¨¤¢ À÷ üõ ü÷õ¥ ݵþ¤Úó ßþ µ±ó . ¢ø ¤ üõ

.Àª µªÀ÷. Àª üõ â±õ §¤ s ø G=< V, E > ø éÂ𠧤 äÞ¹õ V[G]

INITILIZE − SINGLE − SOURCE(G, s)

1. for each vertex v ∈ V [G] do

2. d[v]←∞3. π[v]← NIL

4. d[s]← 0

RELAX(u, v, w)

1. if d[v] >d[u]+w[u,v] then

2. d[v]← d[u] + w[u, v]

3. π[v]← u

BELLMAN − FORD(G,w,s)

1. INITIALIZE-SINGLE-SOURCE(G,s)

2. for i← 1 to (|V [G]|-1) do

3. for each edge (u, v) ∈ E(G) do

4. RELAX(u,v,w)

5. for each edge (u, v) ∈ E(G)

6. if d[v] > d[u]+w(u,v) then

7. return FALSE

8. return TRUE //θ(|V ||E|)

: Ýþ¤¢ ñ·õ öä

www.Bshams.ir

www.Bshams.ir

Page 164: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

155 DAG ݵþ¤Úó .5.5

∞ ∞

∞ ∞

0s

x

y z

r

3

?j

-

6

R

^

I

y

6

7

5

-28

9

2 7-4

-30

6

7

>

s ?-

6

R

y

R

Y

s

6

7

y z9

-42

8

r

5

-2-3

7

x

(a) (b)

0

6 4

7 2

s

7

w-?

6

i

^

I

s

y 97

286

-2

z

-4

-37

5r x

(c)

0

7 2

423

s

R

I

^

?-

6s

y z9

72y

86

r5

-2

x

7-3

-4

(d)

0

2 4

-27

3

q

R

I

?-

6y

w

s

y 9 z

28

6

7

-2

-4-3 7

xr5

(e)

DAG ݵþ¤Úó 5.5éÂð ×þ ¤¢ §¤ × × É¿Èõ ùÂð ×þ ¥ ÂÆõ ßþ ùî ݵþ¤Úó ßþ

.Àû¢ üõ õ ¤ ¤ø¢ Àìê ¤¢ ´úDAG-Shortest-Path(G,w,s)

1. Topologically sort the vertics of G

2. initialize-single-source(G,s)

3. for each vertex u,taken in Topologically sorted order do

for each vertex v∈Adj[u] do

RELAX(u,v,w)

www.Bshams.ir

www.Bshams.ir

Page 165: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

û éÂð Çþ .5 ÛÊê 156

ý¥¨ °Âõ ´Üä öõ¥ ø ´¨ ¤ø¹õ ´Æó ݵþ¤Úó ßþ ý¥¨ ù¢:Àî ´ì¢ Âþ¥ ñ·õ .´¨ θ(|V |+ |E|) ñØþ¦ó

∞ 0 ∞ ∞ ∞ ∞- - - - -*

~ s

> >

r s t x y z5

3

2

6

7 -1

4

2

-2

1

∞ 0 ∞ ∞ ∞ ∞r s

- - - - -s ~

3 *

32

4

5 2

6 1t x zy

7 -1 -2

∞ 0 2 6 ∞ ∞-s

- - - ->

~

r s5

3

2

6t x

1y z

4

2

7 -1 -2

∞ 0 2 6 6 4- s

* >

- - - -s

r s5

3

2

6t x

7 -1

1

-2y z

42

∞ 0 2 6 5 3- - -j

- -j

3 >

5 2

3

6 1

7 -1 -2

42

r s t x y z

∞ 0 2 6 5 3- - -s

- -s

* * 3

r5

s6

2 7t

3 42

-1 -2yx1

z

∞ - 0 - 25r

3

t

6

6 5 4-72x

-1

1y

-2z

- -s

333 42

s ~

www.Bshams.ir

www.Bshams.ir

Page 166: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

6 ÛÊê

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷

LOOP INVARIANT 1.6? ´Æ LOOP INVARIANT

. ´¨ üÜØÈõ ¤Æ ¤î Àµê üõ üìÔ ÖÜ Âû¤¢ Ý÷À õ î ßþ,À÷ÂþÁ üõ öþ ÂÑ÷ ¢¤õ éÀû öÀ¨¤ öøÀ î üþû ÖÜ þ öþ ü ýû ÖÜLoop Invariant ßþ õ¥ ßþ ¤¢.ÀµÆû ³õî üÆþ÷ õ÷ ¤¢ ¸þ¤ ÛØÈõ ×þ

.Àî üõ ×Þî õ î ´¨´¨¤¢ ݵþ¤Úó ×þ þ Ý÷À ÝþÞ÷ üõ ù¢Ôµ¨ û Loop Invariant ¥ õ âìø ¤¢

.¡ þ Àî üõ ¤îû Âçµõ ß Î¤ î ´¨ µó õÂê ¤±ä À üûð þ ×þ Loop Invariant

ß»Þû ø ÖÜ Û¡¢ öõ¥ Âû ,ÖÜ ý ¥ Û±ì î Àî üõ ö ¤õ ýõ÷ ¤¢.À÷õ üõ üì ´¨¤¢ ÖÜ ýúµ÷ ¤¢

ø LOOP INVARINT óø Ý û Ô õ î ´ ¨ ö  ü ã ¨ ´ Þ Æ ì ß þ ¤¢ñ·õ À Ã÷ úµ÷ ¤¢ ø ¢ª ù¢¢ ¼® Âʵ¿õ üÜ¡ ¤¬ ö ¥ ù¢Ôµ¨ ¥ÂÏ

. ´¨ ùÀª ù¢¤ø ö ¥ ù¢Ôµ¨ ¥ Óܵ¿õ

ùÀ û È õ ¤ Loop Invariant ¥ ù¢ Ô µ ¨ ü Ü î ý Ú ó × þ ´ Þ Æ ì ß þ ¤¢

www.Bshams.ir

www.Bshams.ir

Page 167: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 158

:ÀþÞ÷ üõ...

// the Loop Invariant must be true here

while ( TEST CONDITION ) //top of the loop

...

//bottom of the loop

//the Loop Invariant must be true here

// Termination + Loop Invariant ⇒ Goal

...

üÞ÷ ýÂç Loop Invariant üµ¨¤¢ Àî Âç ÖÜ ¤¢ û Âçµõ Âþ¢Öõ î üµìø¤±ä î ¢Þ÷ µØ÷ ßþ Àþ Loop Invariant ö¢Þ÷ É¿Èõ ý .Àîõ À÷õ üõ üì ´¨¤¢ ø ´ ÖÜ ¤ÂØ Âû ¥ Àã ø Û±ì î À÷¤¢ ¢ø ý¤Æ î ßþ  Ýúõ ö ¥ ø ´¨ ͱ Âõ ÖÜ ¤î î ´¨ Loop Invarint ü¤±äö ¥ ¤Ñµ÷ ¢¤õ ø ù¿ó¢ ¹µ÷ ¤ õ Loop Invariant üµ¨¤¢ ÖÜ ßµêþ öþ

: ÝþÞ÷ üõ É¿Èõ ¤ ά À ´ÞÆì ßþ ¤¢ .À÷¨¤ üõ ÖÜ.Àª ´¨¤¢ ÖÜ ý ¥ Û±ì Àþ î ´¨ ýà ö:Pre-condition

À÷õ üõ üì ´¨¤¢ ÖÜ Ûõî ý ¥ Àã î ´¨ ýà ö :Post-condition

¹µ÷ öÞû î Àþ üõ ´¨¢ Loop Invariant ¤¢ ÖÜ ¥ ø¡ ¯Âª ý¥ ø.´¨ ÖÜ ¥ ¤Ñµ÷ ¢¤õ

¥ ø¡ âìø ¤¢ ø Àî üõ ñÂµî ¤ ÖÜ ýÂ î ´¨ üϪ :Loop Variant

.ÀþÞ÷ üõ ñÂµî ¤ ÖÜ ýõ¢ þÖÜ

: Ýû¢ ¤Âì ¢¤õ ¤ Âþ¥ Ø÷ Àþ ÖÜ ×þ ¤î ö¢Âî × ýÂ

. ´¨ ´¨¤¢ ¢ª ¥è ÖÜ Øþ ¥ Û±ì Pre-condition Ýþª ßÿÞÎõ 1

.´¨ ´¨¤¢ Pre-condition ý Loop Invariant Ýû¢ öÈ÷ 2

.¢¤À÷ Loop Invariant üµ¨¤¢  ü±÷  Loop Variant ý Ýû¢ öÈ÷ 3

.´¨ ´¨¤¢ ÖÜ ý Âû¥ Àã Loop Invariant Ýû¢ öÈ÷ 4

www.Bshams.ir

www.Bshams.ir

Page 168: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

159 LOOP INVARIANT .1.6

ü µ ¨¤¢  ´ ó¢ Loop Invariant Ö Ü ö þ ¢Â ¹ õ Ý û¢ ö È ÷ 5.¢¤¢ Post-condition

.Àû¢ üõ Çûî þ ÇþÃê¤ Loop Variant ÖÜ ¤ÂØ Âû Ýû¢ öÈ÷ 6

×þ ¥ Û±ì loop Invariant ÂðÝû¢ öÈ÷ Àþ ô¤ú ¢¤õ üµ¨¤¢ ö¢¢ öÈ÷ ýÂ.À÷õ üõ ´¨¤¢ Ã÷ ýÀã ¤ÂØ ¥ Û±ì ´¨ ´¨¤¢ ÖÜ ¤ÂØ

î ´ ¨ ß þ ö ø Ý þ Þ ÷ ü ± ó µ Ø ÷ À þ ´ Þ Æ ì ß þ ¤¢þ 2 ¢¤õ ö¢¢ öÈ÷ âìø ¤¢. ´¨ ü®þ¤ ýÂÖµ¨ Èõ 14 ÛÂõ ýÂøÔ ßþ Ýþ ù¢Þ ¤ ÂÖµ¨ ýû ôð 4 ¢¤õ ö¢¢ öÈ÷ ø Ýþ ù¢ú÷ ¤ ÂÖµ¨ âìø ¤¢. ݪ µª¢ ¢øÀ½õ ýÂÖµ¨ á÷ ×þ õ î ¢ª üõ ¶ä 5 ¢¤õ î

.¢¢Âð üõ Óìµõ ÂÖµ¨ ÖÜ ßµêþ öþ: Ýû¢ üõ öÈ÷ ¤ ëê ÛÂõ ô¹÷ ñ·õ À Âî£ ñ

:ÀþÞ÷ üõ ±¨½õ ¤ n 1 ¥ ¼½¬ ¢Àä áÞ¹õ î üÞµþ¤Úó(1

1. int sum=0;

2. int k=0;

3. while(k < n)

4. k++;

5. sum+=k;

6. ........................................................................................................

precondition : sum = 0, k = 0

postcondition : sum =n∑

i=1

i

loop invariant : sumk =k∑

i=1

i

INITIALIZATION:

www.Bshams.ir

www.Bshams.ir

Page 169: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 160

´¨ ´¨¤¢ precondition ý loop invariant ¢¢Âð üõ ùÀûÈõ î ¤Ï öÞû:

k = 0⇒ sum =0∑

i=1

i = 0 = sum

MAINTENANCE:

Àª ´¨¤¢ ÖÜ ¤ÂØ ¥ ô j ÜÂõ ý loop invariant ÂðÝû¢ üõ öÈ÷ ñ: ´¨ ´¨¤¢ Ã÷ ÖÜ ¤ÂØ ¥ ô j+1 ÜÂõ ýÂ

sumj =kj+1∑j=1

j , kj+1 = kj + 1

sumj+1 = sumj + kj+1 = (kj∑

j=1

j) + kj+1 = (kj∑

j=1

j) + kj + 1 =kj+1∑j=1

j

TERMINATION:

¤±ä loop invariant ö ý¥ î ÝþÞ÷ üõ × ¤ ÖÜ ¥ ø¡ ¯Âª ñý¥ îÀª üõ k = n ÖÜ ¥ ø¡ ¯Âª.Àû¢ üõ õ ¤ postcondition

: Ýþ¤¢ ö

sum =n∑

i=1

i ≡ postcondition

:ÀþÞ÷ üõ ±¨½õ ¤ ÂÔ¬ ¥ µð¤Ãø ¼½¬ ý¢Àä Ûþ¤µîê î üÞµþ¤Úó(2

1. int factorial(n)

2. i =1;

3. fact =1;

4. while(i ! = n)

5. i++;

6. fact=fact×i;

7. return fact;

8.

.............................................................................................................

precondition : n ≥ 1

www.Bshams.ir

www.Bshams.ir

Page 170: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

161 LOOP INVARIANT .1.6

loop invariant : fact = i !

postcondition : fact = n !

........................................................................................

INITIALIZATION:

i = 1⇒ fact = 1! = 1⇒ fact = i !

MAINTENANCE:

fact′ = j′! , j = j′ + 1 , fact = fact′ × j

⇒ fact = j′!× j = j′ × (j′ + 1) = (j′ + 1)! = j!⇒ fact = j!

TERMINATION:

i = n , fact = i!⇒ fact = n! ≡ postcondition

¤ precondition ¯Âª ´Þû ö ¤¢ î ´¨ üÞµþ¤Úó, ݵþ¤Úó ßþ : µØ÷ÝþÂÚ ÂÔ¬  ¤ nø µêÂÚ÷ ÂÑ÷ ¤¢ ¤ n ≥ 1Ϫ Âð Âþ¥,Àû¢ üõ öÈ÷ ü¡

.À÷¨¤ Àû¿÷ ù¿ó¢ ¹µ÷ ¤ õ øÀª Àû¡ ¤ÂØ ¤ ´þú÷ ü ÖÜ

¤ ÂÔ¬ ¥ µð¤Ã ¼½¬ ¢Àä ø¢ ß íµÈõ Üä ôÆÖõ ßþµð¤Ã î üÞµþ¤Úó(3:À÷¢Âð üõ Â

1. int gcd(int m ,int n)

2. int mprime = m;

3. int nprime = n;

4. while(mprime ! =nprime)

5. if(mprime > nprime)

6. mprime - = nprime;

7. else

8. nprime - = mprime;

9. return mprime;

10. .....................................................................................................

precondition : m, n ∈ Z+

www.Bshams.ir

www.Bshams.ir

Page 171: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 162

loop invariant : gcd[m, n] = gcd[mprime, nprime]

postcondition : gcd[m, n] = mprime

...........................................................................

INITIALIZATION:

mprime = m nprime = n⇒ gcd[m, n] = gcd[mprime, nprime]

MAINTENANCE:

gcd[m, n] = gcd[mprimei, nprimei]

• if(mprimei > nprimei) :

mprimei+1 = mprimei − nprimei, nprimei+1 = nprimei

⇒ gcd[mprimei+1, nprimei+1] = gcd[mprimei−nprimei, nprimei] =

gcd[mprimei, nprimei] = gcd[m, n]

• else :

nprimei+1 = nprimei −mprimei, mprimei+1 = mprimei

⇒ gcd[mprimei+1, nprimei+1] = gcd[mprimei, nprimei−mprimei] =

gcd[mprimei, nprimei] = gcd[m, n]

TERMINATION:

mprime = nprime⇒ gcd[m, n] = gcd[mprime, nprime] =

gcd[mprime, mprime] = mprime ≡ postcondition

:ÀþÞ÷ üõ ±¨½õ ¤ en ¤Ü ÍÆ ñø ýÜÞ k î üÞµþ¤Úó(41. double TaylorExp(double n ,int k)

www.Bshams.ir

www.Bshams.ir

Page 172: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

163 LOOP INVARIANT .1.6

2. double result =1;

3. int count =0;

4. int denom=1;

5. while (count<k)

6. count ++;

7. denom×=count;

8. result+=pow(n,count)/denom;

9.

10. return result;

11. ......................................................................................................

precondition : n ∈ Z k ∈ N, k > 0

loop invariant : result = 1+ n + n2

2!+ · · ·+ ncount

count! , denom = count!

postcondition : 1+ n + n2

2!+ · · ·+ nK

K! = result

...............................................................

INITIALIZATION:

count = 0, denom = 1, result = 1⇒ n0

0!= 1 = result

MAINTENANCE:

resulti = 1+ n + n2

2!+ · · ·+ ncounti

counti!, denomi = counti!

⇒ denomi+1 = denomi×counti+1 = (counti!)×counti+1 = (counti+1)!,

resulti+1 = resulti + ncounti+1

(counti+1)!= 1+ n + n2

2!+ · · ·+ ncounti

counti!+ n

counti+1

(counti+1)!

TERMINATION:

count = k ⇒ result = 1+ n + n2

2!+ · · ·+ nK

K! ≡ postcondition

www.Bshams.ir

www.Bshams.ir

Page 173: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 164

ô¹÷ ¤ üã±Ï ¢Àä ø¢ âÞ Âþ¥ ݵþ¤ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (5:Àû¢ üõ

function add(y,z)

comment return y + z, where y,z ∈ N

1. x := 0 ; c := 0 ; d := 1 ;

2. while(y > 0 ) ∨ (z > 0 ) ∨ (c > 0 )do

3. a := y mod 2;

b :=z mod 2;

4. ifa ⊕ b ⊕ c then x : = x+d ;

5. c := (a ∧ b) ∨ (b ∧ c) ∨ (a ∧ c);

6. d :=2 d; y := b y /2 c;

z:=b z /2 c;

7. return(x)

.......................................................................................................

loop invariant : (yj + zj + cj )dj + xj = y0 + z0

: Ýþ¤¢ ÖÜ áøª ¥ Û±ì ÝþÂÚ ÂÑ÷ ¤¢ z0ø y0 ¤ óø z ø yÂðx0 = 0, c0 = 0, d0 = 1⇒(yj + zj + cj)dj + xj = (y0 + z0 + 0)× 1+ 0 = y0 + z0

: üãþ ´¨ ¤Âì ô j ýÜÂõ ý loop invariant ÝþÞ÷ üõ ­Âê ñ(yj + zj + cj)dj + xj = y0 + z0

: Ýþ¤¢ ÖÜ ñø¤ Õ±Ï ß»Þûaj+1 = yj mod 2 , bj+1 = zj mod 2

yj+1 = byj/ 2 c , zj+1 = bzj /2c , dj+1=2×dj

¥ÜÂõ ßþ ¤¢ î cj+1 ¢ª üõ ùÀûÈõ ݹ Í¡ ¤¢ î ¤Ï öÞû ß»Þûø bj+1ø aj+1 ¥ ø¢ î ´¨ ×þ üµìø ú Àþ üõ ´¨¢ cj ø bj+1ø aj+1

: ´ª÷ Âþ¥ ¤¬ ¤ cj+1 ö üõ Å,Àª ×þ cj

www.Bshams.ir

www.Bshams.ir

Page 174: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

165 LOOP INVARIANT .1.6

cj+1 = b(aj+1 + bj+1 + cj) / 2 c

¢ø ¤ xj+1ø ùÀª âÞ dj xj üµìø ô¤ú Í¡ ÕÎõ Ýû ¤¬ ßÞû ¤¬ ¤ xj+1 ö üõ Å Àª ×þ aj+1 ⊕ bj+1 ⊕ cj ¤±ä î À÷¤ø üõ

:¢Þ÷ ÓþÂã Âþ¥

xj+1 = xj + dj((aj+1 + bj+1 + cj) mod 2)

ø Ýõ ÷ üõ (*) Τ ¤ ö î ÂÚþ¢ Ýúõ Τ ×þ ¥ ÷ ± õ¢ýÂ: Ýþ¤¢ Ã÷ ´¨ Âþ¥ ¤¬

2b n /2c + ( n mod 2)= n ∀n ∈ N (*)

: Ýþ¤¢ø µª÷ ¤ loop invariant ýøÆ ñø éÂÏ ñ

(yj+1 + zj+1 + cj+1)dj+1 + xj+1 =

(byj/2c+ bzj/2c+ b(yj mod 2+ zj mod 2+ cj)/2c)× 2dj + xj+

dj ((yj mod 2+ zj mod 2+ cj) mod 2) = (byj/2c+ bzj/2c)× 2dj

+xj + (b(yj mod 2+ zj mod 2+ cj)/2c)× 2dj+

dj ((yj mod 2+ zj mod 2+ cj) mod 2) (∗) (byj/2c+ bzj/2c)× 2dj

+xj + dj (yj mod 2+ zj mod 2+ cj) = byj/2c × 2dj+

dj (yj mod 2) + bzj/2c × 2dj + dj (zj mod 2) + cj × dj + xj(∗)

(yj + zj + cj) dj + xj = y0 + z0

¤ÂØ k ¥ Àã Âð,Àî üõ À Þ¡ ÖÜ î ÝþÂð üõ ÂÑ÷ ¤¢ ¤ ü÷õ¥ ñ: Ýþ¤¢ loop invarint Õ±Ï Àþ Þ¡ ÖÜ

(yk + zk + ck)dk + xk = y0 + z0

Àþ üõ Çûî bz/2cø by/2c Âþ¢Öõ ¤ÂØ Âû ¤¢ zø y ¤ Âû ö ß»Þû: Ýþ¤¢ ¤ÂØ ßõ k ¥ Àã üãþ ÖÜ ¥ ø¡ öõ¥

yk = zk = ck = 0⇒ xk = y0 + z0

www.Bshams.ir

www.Bshams.ir

Page 175: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 166

ùÀ÷¢Âð  î ý x ¤ÀÖõ À¨¤ üõ öþ ݵþ¤Úó üµìø î ¢ª üõ ùÀûÈõ Å. ´¨õ ýóø zø y áÞ¹õ  ¢ª üõ

ô¹÷ ¤ üã±Ï ¢Àä ø¢ ® Âþ¥ ݵþ¤ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (6:Àû¢ üõ

function multiply(y,z)

comment return y z , where y , z ∈ N

1. x :=0

2. while (z >0)do

3. x :=x + y × (z mod 2);

4. y := 2 y; z :=b z/2 c;

5. return(x)

........................................................................................................

loop invariant : xj + yj × zj = y0 × z0

x0 = 0 Àµ ¤¢ , ÝþÂð üõÂÑ÷ ¤¢ z0ø y0 ¤ zø y óø Âþ¢Öõ Û±ì ñ·õ ÕÎõ: Ýþ¤¢ ø ù¢

x0 = 0⇒ xj + yj × zj = x0 + y0 × z0 = y0 × z0

: üãþ ´¨ ¤Âì ô j ýÜÂõ ý loop invariant ÝþÞ÷ üõ ­Âê ñxj + yj × zj = y0 × z0

: Ýþ¤¢ ÖÜ ñø¤ Õ±Ï ß»Þûxj+1 = xj + yj(zj mod 2) yj+1 = 2 yj zj+1 = bzj/2c

: Ýþ¤¢ Åxj+1 + yj+1 × zj+1 = xj + yj(zj mod 2)+2yj(bzj/2c) =

xj + yj((zj mod 2)+2bzj/2 c))(∗)=

xj + yj × zj = y0 × z0

www.Bshams.ir

www.Bshams.ir

Page 176: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

167 LOOP INVARIANT .1.6

k ¤¢ ëÔ ßþ Âð î Àª Àû¡ ÂÔ¬  z ¤ÀÖõ Àþ üõ öþ ÖÜ î úµ÷ ¤¢ø: Ýþ¤¢ Àû¢ ¤ ÖÜ ¤ÂØ ßõ

zk = 0, xk +yk× zk = y0z0 ⇒ xk +yk× zk = xk +yk×0 = xk = y0× z0

ùÀ÷¢Âð î ý x ¤ÀÖõ À¨¤ üõ öþ ݵ þ¤Úó üµìø î Àª ùÀûÈõ Åø ÜÎõ ¹µ÷ öÞû ßþ ø ¢ Àû¡ z ø y ýóø Âþ¢Öõ ® ¢ª üõ

. ´¨õ ¤Ñµ÷ ¢¤õ

ùÀ÷õ üì ø ´ÞÆì ¤¡ Âþ¥ ݵþ¤ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (7:À÷¢Âð üõ  ¤ üã±Ï ¢Àä ø¢ ÝÆÖ

function divide(y,z)

comment return q, r ∈ Nsuch that y = qz+r

and r < z , where y , z ∈ N

1. r :=y; q :=0; w :=z;

2. while w ≤y do w :=2 w;

3. while w > z do

4. q :=2 q; w := b w /2 c ;

5. if w ≤ r then

6. r :=r - w; q :=q+1;

7. return (q , r)

.......................................................................................................

loop invariant : qjwj + rj = y0, rj < wj

r = y0 ø q = 0 ÖÜ ¢ø¤ø ¥ Û±ì, ÝþÂð üõ ÂÑ÷ ¤¢ ¤¢ y0 ¤ yýóø ¤ÀÖõ: Ýþ¤¢ Å ´¨

r = y0 , q = 0⇒ qjwj + rj = 0+ y0 = y0

: üãþ,Àª ¤Âì ô j ýÜÂõ ý loop invariant Ýî üõ ­Âê ñ

www.Bshams.ir

www.Bshams.ir

Page 177: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 168

qjwj + rj = y0, rj < wj

ÖÜ ø¢ ýø¤ ý¤Àì ´¨ ô¥ ýÀã ¤ÂØ ¤¢ û Âçµõ ´ã®ø ßã ý ñÖÜ ¤¢, ݵêÂð ÂÑ÷ ¤¢ z  ¤ w ñø ÖÜ áøª ¥ Û±ì,ÝþÞ÷ Ûõ ݵþ¤Úóýúµ÷ ¤¢ Å, ÀþÞ÷ üõ  ø¢ ¤ w ´¨ ¤Âì w ≤ y ¯Âª î üãìõ ñøüõ ø¥ ý¢Àä ß»Þûø ´¨ µð¤Ã y ¥î Àþ üõ ´¨¢ ýw ÖÜ ßþw ´¨ w > z î üãìõ ÖÜ ßþ ¤¢, Ýþª üõ ôø¢ ÖÜ ¢¤ø ñ,Àª ø¥ ý¢Àä bw/2c ù¤Þû î ´¨ ¼®ø,¢¢Âð üõ ±¨½õ ö Óî ø ùÀª ÓÊ÷ø¥ z Âð, ݵêÂð ÂÑ÷ ¤¢ w = zõ Âõ ýÀµ ¤¢ î ´¨ ÂÏ¡ ßþ ßþ ø ´¨¤ Âû ø À÷õ üõ üì ø¥ Ã÷ öÀª  ø¢ ¤ Âû ø ù¢ ø¥ Ã÷ w ÀªÀª ¢Âê z¤ÀÖõ Âð ñ, ÝþÂÚ ùÀþ¢÷ ¤ Óî ´õä Ý÷ üõ Ã÷ öÀª ÓÊ÷ w ßþ Ã÷ ôø¢ ÖÜ ¤¢ õ , Ýþ¤¢ ¤µ¡ ¤¢ üø¥ ý w ñø ÖÜ ýúµ÷ ¥ Àãý¢Âê ¤ÀÖõ Àû¿ Âð ø ¢¢Âð üõ ±¨½õ ö Óîø ùÀª ÓÊ÷ ¤ Âû ùÀõ ´¨¢ÖÜ ý¤Â젯ª î ´¨ üó ¤¢ ßþ ø ¢ Àû¡ z ¢¡  Àª µª¢.Àª üõ w/2  bw/2c ¤ÀÖõ ÖÜ ßþ ¤¢ ¤ÂØ ¤ Âû ¤¢ Å, ´¨ w > z

qj+1 = 2qj , wj+1 = bwj/2c : Ýþ¤¢ ô j + 1 ¤ÂØ ¤¢ ñ: ÝþÞ÷ ü¨¤Â ¤ ´ó ø¢ Àþ ñ

: Ýþ¤¢ Àª±÷ ¤Âì ݹ Í¡ ¯Âª Âð (a)

wj+1 > rj ⇒

1 : rj+1 = rj , qj+1wj+1 + rj+1 =

2qjbwj/2c+ rj = 2qj(wj/2) + rj = qjwj + rj = y0

2 : wj+1 > rj ⇒ rj < wj+1 , rj+1 = rj

⇒ rj+1 < wj+1

: Ýþ¤¢ Àª ¤Âì ݹ Í¡ ¯Âª Âð (b)

www.Bshams.ir

www.Bshams.ir

Page 178: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

169 LOOP INVARIANT .1.6

wj+1 < rj ⇒

1 : rj+1 = rj − wj+1 = rj − bwj/2c, qj+1 =

qj+1 + 1 = 2qj + 1⇒ qj+1wj+1 + rj+1 =

(2qj + 1)bwj/2c+ rj − bwj/2c =

qjwj + bwj/2c+ rj − bwj/2c = y0

2 : wj+1 < rj , rj+1 = rj − wj+1 (1)

öû ¥ ¤î ßþ ýÂ, rj+1 < wj+1 ÝþÞ÷ ± Àþ (1) ßµª¢ ñ: Ýþ¤¢ Å rj+1 ≥ wj+1 ÝþÞ÷ üõ ­Âê ø ù¢Þ÷ ù¢Ôµ¨ ÓÜ¡

rj − wj+1 ≥ wj+1 ⇒ rj ≥ 2wj+1 ⇒ rj ≥ 2bwj/2c ⇒ rj ≥ wj

ýÜÂõ ý loop invariant ö¢ ¤Âì öÞû î õ ­Âê ¹µ÷ ßþ îôø¢ ´ÞÆì °Â ßþ , rj+1 < wj+1: Ýþ¤¢ ø µª¢ Ëì ¢ ô j

. ´¨ ¤Âì Ã÷ ô j+1 ýÜÂõ ý Ã÷ loop invariant

öþ ¤ÂØ k ¥ Àã ݵþ¤Úóø ùÀª ¤¡ ôø¢ ýÖÜ ¥ üµìø Ã÷ úµ÷ ¤¢.wk = z0 Ýþ¤¢ À¨¤ üõ

ݵþ¤Úó Å qkz0 + rk = y0 , rk < z0 : Ýþ¤¢ loop invariant Õ±Ï Å.À÷¢Âð õ ý ¤ ¼½¬ ¢Àä ø¢ ÝÆÖ ýùÀ÷õ üìø ´ÞÆì ¤¡

ö ¤ üÖÖ ý¢Àä Âþ¥ ݵþ¤ÚóÀû¢ öÈ÷ loop invariant ¥ ù¢Ôµ¨ (8:À÷¨¤ üõ üã±Ï ý¢Àä

function power(y,z)

comment return yz, where y ∈ R,z ∈ N

1. x :=1;

2. while z > 0 do

3. if z is odd then x := x.y;

4. z :=bz /2 c;

5. y :=y2;

6. return (x)

www.Bshams.ir

www.Bshams.ir

Page 179: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 170

loop invariant : xj yjzj = y0

z0

loop Õ±Ïø ù¢ x0 = 1 Àµ ¤¢ , ÝþÂð üõÂÑ÷ ¤¢ z0ø y0 ¤ zø y óø Âþ¢Öõ: Ýþ¤¢ invariant

xjyjzj = y0

z0

j+1 ÜÂõ ý ÖÜ ñø ¤ Õ±Ï ø ô j ÜÂõ ý loop invariant §¨  ñ: Ýþ¤¢ ô

xjyjzj = y0

z0 ,

Àª ¢Âê z Âð ⇒ xj+1 = xjyj , zj+1 = bzj/2c, yj+1 = yj2

Àª ø¥ z Âð ⇒ xj+1 = xj , zj+1 = bzj/2c, yj+1 = yj2

: Ýþ¤¢ Å

Àª ¢Âê z Âð : xj+1yj+1zj+1 = xjyj × (yj)

2×bzj/2c =

xjyj × (yj)2×(zj−1)/2 = xjyj

zj = y0z0

Àª ø¥ z Âð : xj+1yj+1zj+1 = xj × (yj)

2×bzj/2c =

xj × (yj)2×(zj)/2 = xjyj

zj = y0z0

ô k ÜÂõ À÷õ ÜÂõ ×þ ¤¢ î À¨¤ üõ öþ üãìõ ÖÜ Ã÷ ¤î ýúµ÷ ¤¢: Ýþ¤¢ Å z=0ݪ µª¢

xk × ykzk = y0

z0 , zk = 0⇒ xk = y0z0

ö óø y ¢ª üõ ù¢¢ Ûþ½ õ ݵþ¤Úó ýúµ÷ ¤¢ î ý x °Â ßþÀ.¢¢ õ ¤ ÜÎõ ý¹µ÷ Ã÷ ݵþ¤Úó ßþ Å, ´¨ óø z

www.Bshams.ir

www.Bshams.ir

Page 180: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

171 LOOP INVARIANT .1.6

þ¤ ¤¢ ¢ õ  þ¢ Ö õ  þ¥ Ý µ þ¤Ú óÀ û¢ öÈ ÷ loop invariant ¥ ù¢ Ô µ ¨ (9:ÀþÞ÷ üõ âÞ ÂÚþÀØþ ¤ A[1 · · ·n]

function sum(A)

comment return∑n

i=1 A[i]

1. s :=0;

2. for i := 1 ton do

3. s :=s+A[i]

4. return (s)

.....................................................................................................

loop invariant : sj =j∑

i=1

A[i ]

loop Õ±Ï Ã ÷ õ ø ´¨ ÂÔ¬  þ¤ ¬ä áÞ¹õ ÖÜ ¢ø¤ø ¥ Û±ì: Ýþ¤¢ invariant

j = 0⇒ s = s0 =0∑

i=1

A[i] = 0

ýÜÂõ ýÂ, Àª ¤Âì ô j ýÜÂõ ý loop invarint Ýî üõ ­Âê ñ: Ýþ¤¢ ô j+1

sj+1 = sj + A[j + 1] = (j∑

i=1

A[i]) + A[j + 1] =j+1∑

i=1

A[i]

: Ýþ¤¢ Ã÷ ÖÜ ¥ ø¡ ôÚû ¤¢

j = n⇒ s = sn =n∑

i=1

A[i]

. ´¨ ݵþ¤Úó ¥ õ ¤Ñµ÷ ¢¤õ ý¹µ÷ öÞû î

www.Bshams.ir

www.Bshams.ir

Page 181: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 172

ý Ü Þ À ¤À Ö õ þ¥ Ý µ þ¤ Ú óÀ û¢ ö È ÷ loop invariant ¥ ù¢ Ô µ ¨ (10Àî üõ ±¨½õ Horner ©ø¤ ¥ ù¢Ôµ¨ ¤ anxn + an−1x

n−1 + · · · a1x + a0

:À÷ùÀª ù¡£ A[0..n] þ¤ ¤¢ °þ® ö ¤¢ î

A[i] = ai for all 0 ≤ i ≤ n

function Horner(A , n)

comment return∑n

i=0 A[i].xi

1. v := 0

2. for i := n downto 0 do

3. v := A[i]+v.x

4. return (v)

..................................................................................................

loop invariant : vj =n∑

i=j

A[i ]x i−j

Áó, ÀþÞ÷ üõ ù¢Ôµ¨ üÈûî for ýÖÜ ¥ ݵ þ¤Úó ßþ î ¢Þ÷ Àþ Ýþ¤¢ ÖÜ ¢ø¤ø ¥ Û±ì ø µêÂð ÂÑ÷ ¤¢ ¤¬ ¤ loop invariant õ

: Ýþ¤¢ loop invariant Õ±Ï Å j=n+1

j = n + 1⇒ v =n∑

i=n+1

A[i]xi−(n+1) = 0

: Ýþ¤¢ ýÀã ýÜÂõ ¤¢, Àª ¤Âì ô j ýÜÂõ ýÂloop invariantÂð ñ

vj = A[j] + vj+1.x⇒ vj+1 = vj−A[j]x =

n∑i=j

A[i]xi−j−A[j]

x =

n∑i=j+1

A[i]xi−j

x =

n∑i=j+1

A[i]xi−j−1 =n∑

i=j+1

A[i]xi−(j+1)

öÞû î j = 0⇒ v =n∑

i=0

A[i]xi : Ýþ¤¢ ø ùÀª j = 0 ÖÜ ¥ ø¡ ôÚû ¤¢. ´¨õ¤Ñµ÷ ¢¤õ ý¹µ÷

www.Bshams.ir

www.Bshams.ir

Page 182: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

173 (AMORTIZED ANALYSIS) üîúµ¨ Ãó÷ .2.6

(Amortized Analysis) üîúµ¨ Ãó÷ 2.6Ãó÷ ¤¢ . ´¨ üîúµ¨ Ãó÷ , ÜÞä ¥ äÞ¹õ ×þ Ãó÷ ýúªø¤ ¥ üØþÜÞä ôÞ ýø¤ ý ù¢¢ öÞµ¡¨ ÜÞä ¥ äÞ¹õ×þ ý öõ¥ üîúµ¨Ýî üõ ù¢Ôµ¨ µØ÷ ßþ ö¢¢ öÈ÷ ý ©ø¤ ßþ ¥ . ¢ª üõ ßت¨ ùÀª ÂþÃû äÞ¹õ ×þ öø¤¢ ÛÞä ×þ Âð üµ ´¨ ×î ÛÞä Âû ͨµõ þÃû îÃó÷ õ Ýî üõ ´±½¬ ͨµõ ø ßÚ÷õ ¢¤õ ¤¢ õ Âð . Àª µª¢ ý¢þ¥üÞ÷ Ûõª ¤ ý¤õ ýû ©ø¤ ø ¢¤¢ øÔ ßÚ÷õ ´ó ¤¢ Ãó÷ üîúµ¨´÷Þ® ¤ ´ó ßþÂÀ ¤¢ ÛÞä Âû ͨµõ ý öõ¥ üîúµ¨ Ãó÷ ×þ . ¢ª

. Àî üõ

üîúµ¨ Ãó÷ á÷

À ¤ ± ä ü î ú µ ¨ à ó ÷ ý û ©ø¤ ß þ ¢Â ¤ î  ¥ ©ø¤ ¨:¥

(Aggregate Analysis) üãÞ¹ Ãó÷ •

(Acconting Method) üÆ ©ø¤ •

(Potential Method) ÛÆ÷µ ©ø¤ •

(Aggregate Analysis) üãÞ¹ Ãó÷ 1.2.6

¤¢ ÜÞä n ¥ äÞ¹õ ×þ,û n ôÞ ý¥ Ýû¢ üõ öÈ÷ üãÞ¹ Ãó÷ ¤¢Í¨µõ þÃû , ´ó ßþÂÀ ¤¢ ßþ  . ¢Âð üõ ¤ T (n) fäÞ¹õ, ´ó ßþÂÀý ͨµõ þÃû ßþ î Àî . ´¨ T (n)

n ÜÞä Âû üîúµ¨ þÃû þ¢õ äÞ¹õ ¤¢ ÜÞä ¥ á÷ ßþÀ î üµìø üµ , ´¨ 뢬 ÜÞä ÂûÜÞä ¤ üøÔµõ ͨµõ ýû þÃû ´¨ ßØÞõ ýÀã ©ø¤ ø¢ ¤¢ õ . ÀµÆû¤ ýÀã ©ø¤ ø¢ ´ì¢ õ ´¨ ù¢¨ Âð ©ø¤ ßþ . Ýû¢ ´±Æ÷ Óܵ¿õ ýûÂû «Ê¿õ üîúµ¨ þÃû ×þ ÛÆ÷µ ø üÆ ýû ©ø¤ ÛÞä ¤¢ . ¢¤À÷

. Àû¢ üõ «Êµ¡ ÛÞä

www.Bshams.ir

www.Bshams.ir

Page 183: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 174

. Ýî üõ Ãó÷ ¤ 1 µÈ ù¢¢ öÞµ¡¨ , üãÞ¹ Ãó÷ ¥ ñ·õ ßóø ¤¢ : 1 ñ·õ¢¤ø ¤ x ÂÊä : push(S, x) :¥ ´Æ¤±ä ÀµÆû O(1) ¥ î µÈ üܬ ÛÞä ø¢

.ÀØõ S µÈ.À÷¢Âð üõ ¤ ö , µª¢Â ¤ S µÈ ÂÊä ßþ : pop(S)

üõ­Âê À÷ª üõ  O(1) öõ¥ ¤¢ û ÜÞä ßþ ¥ ôÀî Âû î üþ¹÷ ¥push ÜÞä n ¥ äÞ¹õ×þ üþú÷ þÃû ßþ . Àª 1 ôÀî Âû þÃû Ýî

. ´¨ n , pop øý ¥ ¤ ÂÊä k î Ýî üõ ê® µÈ ¤ multipop(S, k) ÛÞä ×þ õ ñüõ üó¡ ¤ ö , Àª µª¢ ÂÊä k ¥ µÞî , S µÈ Âðþ ø . ¢¤Àõ S µÈ

. ÀîµÈ ¤¢ ýÂÊä ºû Âð ¢Âð üõ TRUE ¤ÀÖõ Stack-Empty â Âþ¥ Àî ±ª ¤¢

. À÷¢Âð üõ ¤ FALSE ¤ÀÖõ ¤¬ ßþ Âè ¤¢ , Àª±÷ ¢õ

Multipop(S, k)

1. while not Stack-Empty(S) and k 6= 0

2. do pop(S)

3. k ← k − 1

µÈ ×þ ýø¤ ¤ multipop ø pop ø push ÜÞä n ¥ äÞ¹õ ×þ ¹þ ¤¢µÈ Ãþ¨ Âð ´ó ßþÂÀ ¤¢ äÞ¹õ ßþ¤¢ , Ýî üõÃó÷ ´Æó¡ Àµ ¤¢ îý öõ¥ ´ó ßþÂÀ ¤¢ . ´¨ O(n) ¥ multipop ÛÞä þÃû Àª n ·îÀ

. ¢ª üõ O(n2) Ûî þÃû ßþ ´¨ O(n) ¥ µÈ ¤¢ ÜÞä ÂûßþÂÀ ¤¢ þÃû ùÀõ ´¨¢ ¹µ÷ õ ´¨ ´¨¤¢ Ûܽ ßþ ÂðäÞ¹õ Ý÷µõ üãÞ¹ Ãó÷ ©ø¤ ¥ ù¢Ôµ¨ . ´Æ÷ Ýؽõ ´óÛÞä Âð , ´ÖÖ ¤¢ . Ýþ¤ø ´¨À µú üþ öÂî ×þ ÜÞä n Ûõªø push ÜÞä n ¥ äÞ¹õ Âû õ ¢Â üõ ý¢ þ¥ þÃû üþú multipop

. ¢¤¢ ¤ O(n) þÃû ,  ·îÀ üó¡ ýÀµ ¤¢ µÈ ×þ ýø¤ multipop ø pop

µª¢Â µÈ ¥ ¤±Øþ À÷ üõ ÍÖê µÈ ¢ø¤ø ¤ Âû ý¥ ÂÊä Âû ö×þ ýø¤ , (multipop ßµêÂð ÂÑ÷ ¤¢ ) pop â ü÷¡Âê ¢Àã , ßþ . ¢ª . ´¨ n    ·îÀ î ´¨ push â ü÷¡Âê ¢Àã üú Âè µÈ

stack 1

www.Bshams.ir

www.Bshams.ir

Page 184: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

175 (AMORTIZED ANALYSIS) üîúµ¨ Ãó÷ .2.6

. ¢Âð üõ ¤ O(n) Ûî öõ¥ multipop ø pop , push n ¥ äÞ¹õ Âû , n Âû ý¥þÃû , üãÞ¹ Ãó÷ ¤¢ . ´¨ O(n)

n = O(1) ÛÞä Âû ßت¨ þ ßÚ÷õ þÃûßþ ¤¢ ßþ . ´¨ ÛÞä ö ͨµõ þÃû öÞû âìø ¤¢ ÛÞä Âû ý üîúµ¨

. ´¨ O(1) µÈ ÛÞä 3 Âû üîúµ¨ þÃû ñ·õýû ©ø¤ ¥ õ Ýþ ù¢Âî ±¨½õ ¤ ͨµõ þÃû õ Âð î ¢ª üõ Àîb ù¤ø¢

. Ýþ ù¢ÂØ÷ ù¢Ôµ¨ ý¤õ. ´¨ 2üÈþÃê k-bit üþø¢ø¢ ùÀ÷¤Þª óbÆõ ©ø¤ ßþ ¥ ÂÚþ¢ ñ·õ : 2 ñ·õüþø¢ø¢ ¢Àä . ´¨ ùÀ÷¤Þª öä length[A]=k ñÏ A[0..k − 1] þ¤ ×þ¤¢ ©¥¤ ßþÂµÈ ø A[0] ¤¢ ©¥¤ ßþµÞî ý¤¢ ¢ª üõ ù¡£ ùÀ÷¤Þª ¤¢ î x

: ¢Âð üõ ¤¬ Âþ¥ â ͨ ÇþÃê ÛÞä .´¨ A[k − 1]

INCREMENT(A)

1: i← 0

2: while i < length[A] and A[i] = 1

3: do A[i]← 0

4: i← i + 1

5: if i < length[A]

6: then A[i]← 1

1 û ´ Þû î ü÷õ¥ ) ´ó ßþÂÀ ¤¢ üþú INCREMENT ýÂßþÂÀ ¤¢ INCREMENT ÛÞä n ¥ µª¤ ×þ ßþ ¢Âð üõ ¤ Θ(k) öõ¥(Àª

. ¢Âð üõ ¤ O(nk) öõ¥ , ´¨ ÂÔ¬ Àµ ¤¢ î ùÀ÷¤Þª ×þ ýø¤ ´óöÂî Ý ÷ üõ Àî üÞ÷  ç û ´ Þû ü÷¡Âê Âû ¤¢ î ßþ ÜÞä n ¥ µª¤ ×þ ý ´ó ßþÂÀ ¤¢ î ý¤Ï Ýû¢ ¤ ýµÖì¢A[1] , Àî üõ Âç â ü÷¡Âê ¤ Âû ¤¢ A[0] . ¢ª O(n) ¥ INCREMENT

. Àî üõ Âç ¤ bn4c Âû A[2] ø Àî üõ Âç ¤ bn

2c Âû â ý ¤ n ¤¢

. Àî üõ Âç ¤ b n2i c Âû , A[i] ´ , i = 0,1,2, · · · , blogn

2c ý , üÜî ¤Ï . Àî üÞ÷ Âç ÃðÂû A[i] ´ , i > blogn

2c ýÂ

Incrementing a Binary Counter 2

www.Bshams.ir

www.Bshams.ir

Page 185: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 176

: ´¨  äÞ¹õ ¤¢ û Âç Ûî ¢Àãblg nc∑

i=0

b n

2ic < n

∞∑

i=0

1

2i= 2n

. ¢ª üõ O(2n)n = O(1) ÜÞä Âû ͨµõ þÃû ßþÂ

(Accounting Method) üÆ ©ø¤ 2.2.6

üøÔµõ ýû þÃû Óܵ¿õ ýû ÜÞä , üîúµ¨ Ãó÷ ¥ üÆ ©ø¤ ¤¢þ µÞî ÛÞä üãìø þÃû ¥ ´¨ ßØÞõ üû𠦤ª ßþ î ¢ª üõ ù¢¢ «Êµ¡þÃû ¤ ¢ª üõ ù¡£ ÛÞä ×þ ýø¤ ¦¤ª öä î ý þÃû .Àª µÈ, Àª ÛÞä üãìø þÃû ¥ ÂµÈ üîúµ¨ þÃû î üõÚû . Ýþð íúµ¨üõ µêÂð ÂÑ÷ ¤¢ ù¢¢ öÞµ¡¨ ¤¢ «Ê¡ ÛÞä ö ¤±µä öä 鵡þÃû î üþû ÜÞä ý ýÀã ýû ´¡¢Â ¤¢ fÀã À÷ üõ ¤±µä . ¢ª¤Æ üãÞ¹ ©ø¤ ©ø¤ ßþ . ¢ª ù¢Ôµ¨ ´¨ üãìø þÃû ¥ µÞî öÈîúµ¨

. ´¨ øÔµõ¥ Ýû¡ üõ õ Âð . ¢ª É¿Èõ ´ìÀ ÜÞä Âû üîúµ¨ þÃû Àþ Àµ×î ÜÞä Âû ´ó ßþÂÀ ¤¢ ͨµõ þÃû Øþ ± ý üîúµ¨ ©ø¤Ûî üãìø þÃû ý üþ öÂî ×þ üÜî üîúµ¨ þÃû Àþ Ýî ù¢Ôµ¨ , ´¨

. ÀªÉ¿Èõ Ci ¤ ô i ÛÞä üîúµ¨ þÃû ø Ci ¤ ô i ÛÞä üãìø þÃû Âð

: Ýþ¤¢ , Ýîn∑

i=1

Ci ≥n∑

i=1

Ci

üîúµ¨ ø üãìø þÃû ß éµ¡ ù¢¢ öÞµ¡¨ ¤¢ ùÀª ù¡£ üþú÷ ¤±µä. ´¨

n∑

i=1

Ci −n∑

i=1

Ci

þÃû ùÚ÷ Àª üÔõ üþú÷ ¤±µä Âð . Àª üÔõ Âè ÈÞû Àþ ¤ÀÖõ ßþÛî üîúµ¨ þÃû ¹µ÷ ¤¢ ø ¢Âð üõ ¤Âì Ûî üãìø þÃû Âþ¥ üþú÷ üîúµ¨üþú÷ ¤±µä ݪ °ìÂõ Àþ ßþ . ¢ Àû¿÷ üãìø þÃû ý öÂî ×þ

www.Bshams.ir

www.Bshams.ir

Page 186: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

177 (AMORTIZED ANALYSIS) üîúµ¨ Ãó÷ .2.6

. ¢È÷ üÔõ ù¢¢ öÞµ¡¨ ¤¢ÜÞä üãìø þÃû î Ýî üõ ý¤ø¢¢þ ÀþÂÚ ÂÑ÷ ¤¢ ¤ µÈ ñ·õ :1 ñ·õ

: ´¨ Âþ¥ ¤¬

Push : 1

Pop : 2

Multipop : 3

. Àª Âþ¥ ¤Ê ÛÞä Âû ý üîúµ¨ Âþ¢Öõ Àî ­Âê

Push : 2

Pop : 0

Multipop : 0

â üîúµ¨ þÃû õ ´¨ Âçµõ multipop üãìø þÃû Âð Àî ¥ ( üãìø þÃû ù¥À÷ ) Àø 1 Ýî üõ µÈ ¢¤ø ¤ ÂÊä ×þ üµìø ´¨ ÂÔ¬ù¡£ üb ª ¤¢ ùÀ÷õ üì Àø ×þ ø Ýþ¥¢Â üõ ¤î ßþ ô¹÷ ý üîúµ¨ þÃû

. ¢ª üõâ üµìø . ´¨ µÈ ¥ üb ª ßµª¢Â þÃû âìø ¤¢ üb ª ýø¤ ùÀª ù¡£ ¤±µä ßþ¢ª üõ ßõ ùÀª ù¡£ ¤±µä ßþ ¥ ÂÊä ßµª¢Â þÃû ¢ª üõ ü÷¡Âê pop

¤ üb ª ýø¤ multipop þ pop ÛÞä ô¹÷ ý üêî ¤±µä ÈÞû õ ßþ  .. ¢ª üÞ÷ üÔõ ùð ºû ¤±µä ´¨ µÈ ¤¢ ýÂÊä î ü÷õ¥ . Ýþ¤¢

î ´¨ O(n) íúµ¨ þÃû multipop ø pop ø push ÛÞä n ¥ äÞ¹õ Âû ýÂ. ´Æû Ã÷ üãìø þÃû ý öÂî

öõ¥ î ÝþÀþ¢ f ±ì . Ýî üõ ü¨¤Â ¤ üÈþÃê üþø¢ø¢ ùÀ÷¤Þª ñ·õ :2 ñ·õüîúµ¨ þÃû . Àî üõ Âç î ´¨ üþû ´ ¢Àã °¨µõ â ßþ ý¢ª üõ 1 ´ ×þ î üõÚû . ÝþÂð üõ ÂÑ÷ ¤¢ 2 ¤ ×þ ÂÔ¬ ¥ ×þ ÂçÂç ÂÔ¬ ¤ ´ î ü÷õ¥ ý ¤±µä ÂÚþ¢ Àø ø ¢ª üõ ´¡¢Â Àø ×þù¡£ ¤±µä Àø ×þ ùÀ÷¤Þª ¤¢ 1 Âû ,  ¥ ü÷õ¥ Âû ¤¢ . ¢ª üõ ù¡£ Ýû¢ÀþÀ ¤±µä ý¥÷ ø ´¨ ¢õ ô¥ ¤±µä , ö ö¢Âî ÂÔ¬ ý ßþ ¢¤¢Ã÷ üþú÷ ¤±µä Å ´Æ÷ üÔõ ùð ºû ùÀ÷¤Þª ¤¢ û ×þ ¢Àã ö ø ´Æ÷þÃû ý öÂî î ´¨ O(n) ßت¨ þÃû ßþ . ¢ª üÞ÷ üÔõ ùð ºû

. ´¨ üãìø

www.Bshams.ir

www.Bshams.ir

Page 187: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 178

(Potential Method) ÛÆ÷µ ©ø¤ 3.2.6

î ÂÚþ¢ ýû ©ø¤ é¡ Â î ´¨ ÛÆ÷µ ©ø¤ , üت¨ Ãó÷ ©ø¤ ßõ¨ýø¤ ÛÆ÷µ ©ø¤ , À÷¢Âî üõ ¤î ù¢¢ öÞµ¡¨×þ ¤¢ É¿Èõ üb ª ×þ ýø¤üê® ¤ÀÖõ î ´Æþ üÆ ©ø¤ ö ëÂê . Àî üõ ¤î Ûõî û ù¢¢ öÞµ¡¨

. ¢ª üõ ÓþÂã ÛÆ÷µ ý¦Â÷ öä ¹þ ¤¢ ¢¨ öÞû þ ùÀª ù¡£ý Àª óø ù¢¢ öÞµ¡¨ D0 ø Àª n 1 ¥ ù¢¢ öÞµ¡¨ ýû ¢Àã Âð

: Ýî üõ ÓþÂã i = 1,2, · · · , n ÂûCi =ô iÜÞä ô¹÷ üãìø öõ¥Di = ô i ÜÞä ô¹÷ ¥ Àã ù¢¢ öÞµ¡¨Φ =(Potential Function)¢Â üõ üÖÖ ¢Àä ¤ Di ù¢¢ öÞµ¡¨ Âû î ÛÆ÷µ âΦ : Di → RealNumber

C ′i = Ci + Φ(Di)−Φ(Di−1) ô i ÜÂõ ¤¢ üت¨ þÃû

:ÜÞä n ý Ûî üîúµ¨ þÃû

n∑i=1

Ci =n∑

i=1

[Ci + Φ(Di)−Φ(Di−1)] =n∑

i=1

Ci +n∑

i=1

Φ(Di)−Φ(Di−1)

=n∑

i=1

Ci + Φ(Dn)−Φ(D0)

ý üþ öÂî Ûî üîúµ¨ þÃû ßþ Φ(Dn) > Φ(D0) Ýî ­ÂêÂð. ¢ª ô¹÷ ´¨ ßØÞõ ÜÞä À Ý÷¢ üÞ÷ õ ö . ´¨ Ûî üãìø þÃû

: i Âû ýÂ Ýî ­Âê Âð ßþÂΦ(Di) ≥ Φ(D0)Φ(D0) = 0

⇒ Φ(Di) ≥ 0

´¨  ÛÆ÷µ Âç ßþ . ´¨ üÔõ Âè â ×þ ÛÆ÷µ â üãþ:

Φ(Di)−Φ(0) > 0 for all i

. ´¨ µÆø ÛÆ÷µ â ¿µ÷ ¹þ ¤¢ ùÀõ ´¨À üîúµ¨ þÃûßþ . ´ª¢ Ýû¡ Óܵ¿õ üîúµ¨ ýû þÃû Óܵ¿õ ýûÛÆ÷µ â ý¥

. ´¨ ÛÆ÷µ â ßþµú ¿µ÷ ÛÆ÷µ ©ø¤ ¤¢ õ ¤î ßþµÞúõ

www.Bshams.ir

www.Bshams.ir

Page 188: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

179 (AMORTIZED ANALYSIS) üîúµ¨ Ãó÷ .2.6

: Ýî üõ ÓþÂã . Ýî üõ ü¨¤Â ¤ µÈ ñ·õ : 1 ñ·õΦ(Di) = µÈ Û¡¢ Â¬ä ¢ÀãD0 = üó¡ µÈΦ(D0) = 0

Å ¢ ª ü Þ ÷ ü Ô õ ù ð º û þ¤ × þ Û ¡¢ Â ¬ ä ö Φ(Di) ≥ 0 = Φ(D0)

Àª µª¢ ÂÊä s µÈ , i− 1 ÜÂõ ¤¢ Ýî üõ ­ÂêΦ(Di−1) = s

:¢ª  ô i ÜÂõ¤¢ push ÂðΦ(Di)−Φ(Di−1) = (s + 1)− s = 1

Ci = Ci + Φ(Di)− φ(Di−1) = 1+ 1 = 2→ O(1)

:¢ª ô¹÷ ô i ÜÂõ ¤¢ pop â ÂðΦ(Di)−Φ(Di−1) = (s− 1)− s = −1Ci = Ci + Φ(Di)− φ(Di−1) = 1− 1 = 0→ O(1)

:¢ª  multipop â Âðk′ = min(s, k) Φ(Di)−Φ(Di−1) = (s− k′)− s = −k′

Ci = Ci + Φ(Di)− φ(Di−1) = k′ − k′ = 0→ O(1)

. ´¨ O(n) ¥ Ûî üîúµ¨ þÃû ßþÂ

: Ýþ¤¢ üþø¢ø¢ ùÀ÷¤Þª ¤¢ :2 ñ·õΦ(Di) = bi ô i ÜÂõ ¤¢ û ×þ ¢Àã

î ´¨ ¼®øΦ(Di) ≥ 0ti = ô i ÜÂõ ¤¢ À÷ª üõ ÛþÀ± ÂÔ¬ î üþû ×þ ¢Àã

Ci = ti + 1

www.Bshams.ir

www.Bshams.ir

Page 189: grsotudeh.irgrsotudeh.ir/pardazesh-movazi/کتابهای پردازش موازی/Algorithm...Ý Â a ó ßÞ Â ó Ü a ó ÝÆ °ó Îõ ´¨Âúê õÀÖõ ü±÷ ¹õ ý û¢ Þ÷

¤Þ¨ ø¢ ¤  Âʵ¿õ üûÚ÷ .6 ÛÊê 180

if bi = 0⇒ bi−1 = k = ti

if bi > 0⇒ bi = bi−1 − ti + 1

⇒ bi ≤ bi−1 − ti + 1

Φ(Di)−Φ(Di−1) ≤ bi−1 − ti + 1− bi−1 = −ti + 1

C ′i = Ci + Φ(Di)−Φ(Di−1) ≤ ti + 1− ti + 1 = 2⇒ C ′

i ≤ 2

n∑i=1

C ′i ≤ 2n→ O(n)

www.Bshams.ir

www.Bshams.ir