1 / 61

طراحي الگوريتم ها

طراحي الگوريتم ها. Computer algorithms. برنامه ریزی پویا. فصل ششم روش برنامه ریزی پویا در طراحی الگوریتم. Computer algorithms. مساله ضریب چند جمله ای مساله فلوید مساله فروشنده دورگرد مساله درختهای جستجوی دودویی بهینه مساله کوله پشتی صفر و یک. Week 9. برنامه نویسی پویا ،

yul
Download Presentation

طراحي الگوريتم ها

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. طراحي الگوريتم ها Computer algorithms برنامه ریزی پویا

  2. فصل ششم روش برنامه ریزی پویا در طراحی الگوریتم

  3. Computer algorithms • مساله ضریب چند جمله ای • مساله فلوید • مساله فروشنده دورگرد • مساله درختهای جستجوی دودویی بهینه • مساله کوله پشتی صفر و یک Week 9

  4. برنامه نویسی پویا، • نمونه به نمونه های کوچکتر تقسیم می شود • مشابه روش تقسیم و حل است • با این تفاوت نسبت به تقسیم وحل که: نخست نمونه های کوچک تر را حل می کنیم ، نتایج را ذخیره می کنیم و بعدا هر گاه به یکی از آن ها نیاز پیدا شد، به جای محاسبه دوباره کافی است آن را بازیابی کنیم.

  5. نمایی • روش بالا به پایین

  6. در مسائل بهینه سازی اگر مسئله را به روش تقسیم وحل و یا با روش بررسی تمام حالات انجام دهیم پیچیدگی نمایی و حتی در بعضی از مسائل بدتر از نمایی(n!) خواهد بود ولی با یافتن راه حل برنامه ریزی پویا زمان به n2 یا n3 تقلیل میکند اما در عوض باید از یک آرایه کمکی استفاده کرد

  7. سه مولفه اصلی روش DP • رابطه بازگشتی موجود در مساله(به کمک این رابطه مقداری برای راه حل بهینه تعریف میکنیم) • ارائه یک ویژگی بازگشتی برای حل نمونه ای از مسئله • محاسبات جدولی • ردیابی جواب(برای چاپ راه حل بهینه)

  8. F8 F9 F7 F10 F7 F8 F6 مساله فیبوناتچی استفاده از جدول برای کاهش میزان محاسبات مجدد

  9. مساله فیبوناتچی به روش برنامه نویسی پویا آرایه ذخیره نتایج

  10. مساله ضریب دوجمله ای

  11. روش تقسیم و حل مساله ضریب دوجمله ای

  12. محاسبه C(5,2)

  13. روش برنامه نویسی پویا مساله ضریب دوجمله ای

  14. مساله ضریب دوجمله ای • آرایه B +

  15. مساله ضریب دوجمله ای

  16. پیچیدگی زمان مساله ضریب دوجمله ای

  17. مساله ضرب زنجیره ای از ماتریس ها

  18. مساله ضرب زنجیره ای از ماتریس ها • پیچیدگی روش معمولی که بررسی تمام حالات است نمایی می باشد • tn: تعداد ترتیب های مختلف ضرب n ماتریس

  19. ایده بهینه سازی مساله

  20. تعریف ماتریس M

  21. مثال برای مقدار M[i][j] • رابطه بهینه سازی کلی:

  22. رابطه کلی بر اساس ماتریس M

  23. انجام محاسبات به صورت قطری • مثال: برای شش ماتریس اسلاید قبل

  24. ادامه اسلاید قبل: نحوه محاسبه 64

  25. ادامه اسلاید قبل: نحوه محاسبه 132

  26. N: تعداد ماتریس ها d: معرف ابعاد ماتریس ها از آرایه P برای نمایش خروجی مطلوب استفاده می شود int minimult ( int n, constint 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] = minimum (M[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]; } برای محاسبه Min نیاز به یک حلقه for به اندازه تعداد diagonal داریم

  27. آرایه P برای مثال ضرب 6 ماتریس الگوریتم چاپ ترتیب بهینه void order ( index i, index j) { if ( i == j) cout << “A” << i ; else { k = P [i] [j]; cout << “(“; order ( i , k); order ( k +1 , j ); cout << “)”; } }

  28. الگوریتم فلوید: یافتن کوتاهترین مسیرها • گراف مسیرها جهت دار و وزن دار است

  29. الگوریتم فلوید: یافتن کوتاهترین مسیرها بدتر از حالت نمایی

  30. تعریف دو ماتریس • W ماتریس وزنها • D ماتریس نمایش دهنده کوتاهترین مسیر

  31. 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  32. بررسی وضعیت گره 2 تا گره های دیگر از طریق گره 1 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  33. بررسی وضعیت گره 2 تا گره,3 4 از طریق گره 1 D0[2,3]= 3 D0[2,1]+D0 [1,3]=9+∞=∞ D0[2,4]= 2 D0[2,1]+D0[1,4]=9+1 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  34. بررسی وضعیت گره 2 تا گره 5 از طریق گره 1 D0[2,5]= ∞ D0[2,1]+D0[1,5]=9+5=14 D1 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  35. بررسی وضعیت گره های دیگر ( به جز یک ) تا گره های دیگر از طریق گره 1 D1 14 4 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4 4

  36. بررسی وضعیت گره های دیگر ( به جز یک و دو) تا گره های دیگر از طریق گره 2 D2 14 4 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  37. بررسی وضعیت گره 3 تا گره های دیگر از طریق گره 2 D1[3,4]= 4 D1[3,2]+D1[2,4]=3+4=7 D1[3,5]= ∞ D1[3,2]+D1[2,5]= ∞+14= ∞ D2 14 4 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  38. بررسی وضعیت گره 3 تا گره های دیگر از طریق گره 2 D1[3,4]= 4 D1[3,2]+D1[2,4]=3+4=7 D1[3,5]= 4 D1[3,2]+D1[2,5]= ∞+14= ∞ D2 14 4 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  39. بررسی وضعیت گره 4 تا گره های دیگر از طریق گره 2 D1[4,1]= ∞ D1[4,2]+D1[2,1]= ∞+9= ∞ D1[4,3]= 2 D1[4,2]+D1[2,3]= 2 +5= 7 D1[4,5]= 3 D1[4,2]+D1[2,5]= ∞+14= ∞ D2 14 4 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  40. بررسی وضعیت گره 5 تا گره های دیگر از طریق گره 2 D1[5,1]= 3 D1[5,2]+D1[2,1]=4+9= 13 D1[5,3]= ∞ D1[5,2]+D1[2,3]= 4+3= 7 D1[4,5]= 3 D1[4,2]+D1[2,5]= ∞+14= ∞ D2 14 4 1 1 2 3 9 5 5 2 3 1 2 3 4 3 4

  41. الگوریتم همان D که جواب نهایی مساله است

  42. الگوریتم مسیر از vi تا vj از vk عبور نمیکند

  43. الگوریتم

  44. مثال از الگوریتم

  45. شمای ساده الگوریتم فلوید

  46. الگوریتم فلوید

  47. مساله درخت جستجوی بهینه • هدف الگوریتم شناسایی بهترین درخت جستجوی بهینه برای n عنصر اگر برای هر عنصر احتمال pi برای جستجو شدن داشته باشیم • اگر pi ها با هم برابر باشد بهترین حالت وقتی است که درخت متعادل باشد

  48. مثال درخت جستجو درخت متعادل

More Related