1 / 65

فصل سوم ( ادامه )

درس طراحی الگوریتم ها. فصل سوم ( ادامه ). روش برنامه نویسی پویا Dynamic Programming. مدرس: سید محمد بیدکی. بهار 1392. درخت های جست وجوی دودویی. تعداد درخت های دودویی با n کلید. تعریف یک درخت دودویی از مجموعه مرتبی از عناصر (کلیدها) حاصل می شود به گونه ای که: هر گره حاوی یک کلید است.

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. درس طراحی الگوریتم ها فصل سوم ( ادامه ) روش برنامه نویسی پویا Dynamic Programming مدرس: سید محمد بیدکی بهار 1392

  2. درخت های جست وجوی دودویی تعداد درخت های دودویی با n کلید • تعریف • یک درخت دودویی از مجموعه مرتبی از عناصر (کلیدها) حاصل می شود به گونه ای که: • هر گره حاوی یک کلید است. • کلیدهای موجود در زیردرخت چپ یک گره، کوچکتر یا مساوی کلید آن گره است. • کلیدهای موجود در زیردرخت راست یک گره، بزرگتر یا مساوی کلید آن گره است. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  3. درخت بهینه • عمق (سطح) یک گره • تعداد یالهای موجود در مسیر منحصربه فرد از ریشه به آن گره. • عمق یک درخت • حداکثر عمق تمامی گره های موجود در آن درخت. • درخت متوازن • اگر عمق دو زیردرخت از هر گره، بیش از یک واحد اختلاف نداشته باشد. • درخت جستجوی دودویی بهنیه • درختیست که در آن کلیدها به نحوی قرار گرفته باشند که زمان متوسط برای مکان یابی یک کلید در آن کمینه است. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  4. زمان متوسط مکان یابی کلید • زمان جستجو • تعداد مقایسه های انجام شده برای مکان یابی یک کلید depth(key) + 1 • متوسط زمان جستجو • که در آن: • n تعداد کلیدها • pi احتمال آنکه keyi کلید مورد جستجو باشد • ci تعداد مقایسه مورد نیاز برای یافتن keyi می باشد. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  5. مثال 3(0.7) + 2(0.2) + 1(0.1) = 2.6 2(0.7) + 3(0.2) + 1(0.1) = 2.1 2(0.7) + 1(0.2) + 2(0.1) = 1.8 1(0.7) + 3(0.2) + 2(0.1) = 1.5 1(0.7) + 2(0.2) + 3(0.1) = 1.4 p1 = 0.7 p2 = 0.2 p3 = 0.1 درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  6. ایجاد جدول زمان متوسط جستجو در درخت بهینه شامل کلیدهای keyi تا keyj = A[i][j] A[i][i] = pi • اصل بهینگی برقرار می باشد. • هر زیردرخت از یک درخت جستجوی دودویی بهینه، برای کلیدهای موجود در آن زیر درخت، بهینه است. • برای حل به روش برنامه سازی پویا، باید زمان متوسط جستجو در هر زیردرخت را ذخیره کنیم. • زمان متوسط برای جست و جوی کلیدها در درختی که شامل کلیدهای keyi تا keyj می باشد: • قرار می دهیم: درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  7. مثال K2 K3 K3 K2 فرض کنید سه کلید و احتمالات مرتبط با آنها را داریم: P1=0.7, P2=0.2, P3=0.1 برای تعیین A[2][3] دو درخت ممکن خواهیم داشت: 1(P2) + 2(P3) = 0.4 2(P2) + 1(P3) = 0.5 => A[2][3] = 0.4 درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  8. تعیین رابطه بازگشتی به ازای هر کلید یک مقایسه اضافی در ریشه وجود دارد فرض کنید درخت K، درختیست بهینه که ریشه آن کلید K است: keyk زمان جستجوی میانگین در این زیردرخت A[1][k-1] است زمان جستجوی میانگین در این زیردرخت A[k+1][n] است key1 … keyk-1 Keyk+1 … keyn زمان متوسط جستجو در درخت K: A[1][k-1] + p1 + … + pk-1 + pk + pk+1 + … + pn + A[k+1][n] زمان میانگین در زیردرخت چپ زمان اضافی مقایسه در ریشه زمان اضافی مقایسه در ریشه زمان میانگین در زیردرخت راست زمان میانگین جستجو برای ریشه چون یکی از n درخت باید بهینه باشد، زمان جستجوی درخت بهینه برابر است با: درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  9. رابطه بازگشتی • سطرهای ماتریس A از 1 تا n+1 و ستون های آن از 0 تا n اندیس گذاری می شوند. • برای ساخت درخت و دانستن کلیدهای ریشه نیاز به یک ماتریس R با همین ابعاد داریم. • ماتریس ها مانند ضرب زنجیره ای ماتریس ها به صورت قطری پر می شوند. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  10. الگوریتم تعیین درخت جستجوی دودویی بهینه تحلیل پیچیدگی زمانی الگوریتم مشابه الگوریتم ضرب زنجیره ای ماتریسها: Void optSearchTree( int n, const float p[], float &minavg, index R[][]) { index i, j, k, diagonal; float A[1..n+1][0..n]; for (i=1; i<=n; i++){ A[i][i-1] = 0; A[i][i] = p[i]; R[i][i-1]=0; R[i][i] = i; } A[n+1][n] = 0; R[n+1][n] = 0; for (diagonal=1; diagonal<= n-1; diagonal++) for(i =1; i<=n-diagonal; i++){ j = i+diagonal; A[i][j] = min (A[i][k-1] + A[k+1][j]) + SUM(p[i] ... P[j]) // i ≤ k ≤ j R[i][j] = a value of k that gave the minimum; } minavg = A[1][n]; } درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  11. ساخت درخت جستجوی دودویی بهینه درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی Node_pointertree(index i, j){ index k; Node_pointer p; k=R[i][j]; if (k==0) return NULL; else { p = new nodetype; p -> key = Key[k]; P -> left = tree(i, k-1); p -> right = tree(k+1, j); return p; } }

  12. مثال A[2][3] = k=2: A[2][1] + A[3][3] + p2 + p3 = 0 + 1/8 + 3/8 + 1/8 = 5/8 k=3: A[2][2] + A[4][3] + p2 + p3 = 3/8 + 0 + 3/8 + 1/8 = 7/8 درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  13. کوله پشتی صفر و یک • تعداد n کالا با وزن و ارزش معین وجود دارد. • شیi، i=1,2,…,n دارای وزن wi و ارزش pi است. • یک کوله پشتی با ظرفیت وزنی W موجود است. • هدف: • کوله پشتی را به گونه ای پرکنیم که ارزش اشیا انتخاب شده حداکثر شود. • در کوله پشتی صفرویک هر کالا یا انتخاب می شود یا اصلا انتخاب نمی گردد. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  14. W= 20 مثال wi pi Items 3 2 4 3 5 4 8 5 کوله پشتی با ظرفیت 20 10 9 وزن ارزش درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  15. الگوریتم brute-force • با وجود داشتن n کالا در کل 2n حالت مختلف از ترکیب آنها وجود دارد. • مرتبه الگوریتم o(2n) است. • آیا می توان بهتر از این حل کرد؟ • بله – با استفاده از روش برنامه نویسی پویا • زیرمسئله در این مسئله چیست؟ درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  16. فرمولبندی مسئله Sn = {x1 , x2 , … , xn } • اگر اشیا از 1 تا n برچسب گذاری شوند پس مسئله یافتن جواب بهینه برای مجموعه تصمیمات زیر است. که xi تصمیم مبنی بر وجود یا عدم وجود شیئ i در کوله پشتی است. • مجموعه ای از تصمیمات بهینه است که ماکزیمم کند مقدار را به شرطی که • با داشتن مجموعه بهینه ای از k شیء اول بررسی کنیم امکان اضافه کردن شیء جدیدی وجود دارد یا خیر. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  17. حل گام به گام بازگشتی • در هر مرحله تکلیف یک شیئ مشخص می شود. اگر از xn شروع کنیم • اگر xn=1 باشد آنگاه ارزش کوله به اندازه pn اضافه و ظرفیت کوله به اندازه wn کاسته می شود و باید مسئله را برای n-1 شیئ و ظرفیت W-wi باقیمانده حل کرد. • اگر اگر xn=0 باشد آنگاه باید مسئله را برای n-1 شیئ و ظرفیت W حل کرد. • یعنی از دو گزینه انتخاب یا عدم انتخاب شیئ n اُم، هر کدام که بهینه باشد برگزیده خواهد شد. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  18. رابطه بازگشتی • اگر wkبیشتر از وزن زیرمسئله باشد پس جواب شامل شیء k نمی شود. • اگر وزن آن کمتر یا مساوی با وزن زیرمسئله باشد، می تواند در جواب باشد و مجموعه با ارزش بیشتر انتخاب می شود. B[w][k] سود بهینه حاصل از انتخاب k قطعه اول، تحت این محدودیت که وزن کل از w تجاوز نکند. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  19. الگوریتم به روش برنامه نویسی پویا for w = 0 to W B[w][0] = 0 for i = 0 to n B[0][ i] = 0 for i = 1 to n for w = 1 to W if wi <= W // item i can be part of the solution if pi + B[w-wi][i-1] > B[w][i-1] B[w][i] = pi + B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  20. مثال i 0 1 2 3 4 W 0 0 1 0 n = 4 تعداد اشیا W = 5 ظرفیت کوله پشتی 2 0 3 0 4 0 5 0 for w = 0 to W B[w][0] = 0 درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  21. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 1 0 n = 4 تعداد اشیا W = 5 ظرفیت کوله پشتی 2 0 3 0 4 0 5 0 for i = 0 to n B[0][ i] = 0 درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  22. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=1 pi=3 wi=2 w=1 w-wi =-1 1 0 0 2 0 3 0 4 0 5 0 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1]// wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  23. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=1 pi=3 wi=2 w=2 w-wi =0 1 0 0 2 0 3 3 0 4 0 5 0 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  24. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=1 pi=3 wi=2 w=3 w-wi=1 1 0 0 2 0 3 3 0 3 4 0 5 0 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  25. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=1 pi=3 wi=2 w=4 w-wi=2 1 0 0 2 0 3 3 0 3 4 0 3 5 0 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  26. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=1 pi=3 wi=2 w=5 w-wi=2 1 0 0 2 0 3 3 0 3 4 0 3 5 0 3 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  27. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=2 pi=4 wi=3 w=1 w-wi=-2 1 0 0 0 2 0 3 3 0 3 4 0 3 5 0 3 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1]// wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  28. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=2 pi=4 wi=3 w=2 w-wi=-1 1 0 0 0 2 0 3 3 3 0 3 4 0 3 5 0 3 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1]// wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  29. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=2 pi=4 wi=3 w=3 w-wi=0 1 0 0 0 2 0 3 3 3 0 3 4 4 0 3 5 0 3 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  30. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=2 pi=4 wi=3 w=4 w-wi=1 1 0 0 0 2 0 3 3 3 0 3 4 4 0 3 4 5 0 3 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  31. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=2 pi=4 wi=3 w=5 w-wi=2 1 0 0 0 2 0 3 3 3 0 3 4 4 0 3 4 5 0 3 7 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  32. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=3 pi=5 wi=4 w=1..3 1 0 0 0 0 0 2 0 3 3 3 3 0 3 4 4 4 0 3 4 5 0 3 7 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1]// wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  33. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=3 pi=5 wi=4 w=4 w- wi=0 1 0 0 0 0 0 2 0 3 3 3 3 0 3 4 4 4 0 3 4 5 5 0 3 7 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] elseB[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  34. مثال i 0 1 2 3 4 W 0 0 0 0 0 0 Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) i=3 pi=5 wi=4 w=5 w- wi=1 1 0 0 0 0 0 2 0 3 3 3 3 0 3 4 4 4 0 3 4 5 5 0 3 7 7 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  35. مثال i 0 1 2 3 4 W Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) 0 0 0 0 0 0 i=4 pi=6 wi=5 w=1..4 1 0 0 0 0 0 0 2 0 3 3 3 3 3 0 3 4 4 4 4 0 3 4 5 5 5 0 3 7 7 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1]// wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  36. مثال i 0 1 2 3 4 W Items: 1: (2,3) 2: (3,4) 3: (4,5) 4: (5,6) 0 0 0 0 0 0 i=4 bi=6 wi=5 w=5 1 0 0 0 0 0 0 2 0 3 3 3 3 3 0 3 4 4 4 4 0 3 4 5 5 5 0 3 7 7 7 if wi <= w // item i can be part of the solution if pi+ B[w-wi][i-1] > B[w][i-1] B[w][i] = pi+ B[w- wi][i-1] else B[w][i] = B[w][i-1] else B[w][i] = B[w][i-1] // wi > w درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  37. طولانی ترین زیررشته مشترک (LCS) • در مسائل بیولوژیک، اغلب به دنبال مقایسه DNA دو موجود متفاوت هستند. • یک DNA را می توان با رشته ای شامل حروف زیر نشان داد: • {A, C, G, T} • هدف: تعیین میزان شباهت دو DNA می باشد. • یافتن زیردنبالهای که حروف آن با یک ترتیب مشابه اما نه لزوماً پیوسته در هر دو رشته موجود باشد. درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  38. زیر رشته (توالی یا دنباله) مشترک S1 = ACCGGTCGAGTGCGCGGAAGCCGGCCGAA S2 = GTCGTTCGGAATGCCGTTGCTCTGTAAA S3 = GTCGTCGGAAGCCGGCCGAA مثال درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  39. مسئله longest common subsequence x: A B C B D A B y: B D C A B A BCBA = LCS(x,y) • مسئله یافتن یکی از طولانی ترین زیرتوالی های مشترک بین دو رشته زیر می باشد: • x[1.. m] • y[1..n] درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  40. الگوریتم Brute-force • بررسی اینکه آیا زیررشته های x[1..m] زیررشته y[1..n] هم هستند یا خیر • تحلیل پیچدگی زمانی • یافتن زیررشته ها: o(2m) • بررسی زیررشته ها: o(n) برای هر زیررشته • هزینه الگوریتم: o(n 2m) از درجه نمایی درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  41. برنامه نویسی پویا • C[i,j] = |LCS(x[1..i], y[1..j])| • C[m,n] = |LCS(x,y)| • تعریف: طول یک رشته را با |s| نمایش می دهیم. • راه حل: توجه به پیشوندهای x و y • یافتن طولانی ترین زیررشته مشترک بین پیشوندها درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  42. رابطه بازگشتی درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  43. روش divide and conquer • بدترین حالت زمانی است که x[i] ≠ y[j] درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  44. درخت بازگشت m+n درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  45. درخت بازگشت Dynamic Programming درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  46. الگوریتم به روش برنامه نویسی پویا LCS-Length(X, Y) 1. m = length(X) // get the # of symbols in X 2. n = length(Y) // get the # of symbols in Y 3. for i = 1 to m c[i,0] = 0 // special case: Y0 4. for j = 1 to n c[0,j] = 0 // special case: X0 5. for i = 1 to m // for all Xi 6. for j = 1 to n // for all Yj 7. if ( Xi == Yj ) 8. c[i,j] = c[i-1,j-1] + 1 9. else c[i,j] = max( c[i-1,j], c[i,j-1] ) 10. return c درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  47. مثال j 0 1 2 3 4 5 i Yj B D C A B Xi 0 A 1 B 2 3 C 4 B X = ABCB; m = |X| = 4 Y = BDCAB; n = |Y| = 5 Allocate array c[5, 6] درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  48. مثال j 0 1 2 3 4 5 i Yj B D C A B Xi 0 0 0 0 0 0 0 A 1 0 B 2 0 3 C 0 4 B 0 x: ABCB y: BDCAB for i = 1 to m c[i,0] = 0 for j = 1 to n c[0,j] = 0 درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  49. مثال j 0 1 2 3 4 5 i Yj B D C A B Xi 0 0 0 0 0 0 0 A 1 0 0 B 2 0 3 C 0 4 B 0 x: ABCB y: BDCAB if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] ) درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

  50. مثال j 0 1 2 3 4 5 i Yj B D C A B Xi 0 0 0 0 0 0 0 A 1 0 0 0 0 B 2 0 3 C 0 4 B 0 if ( Xi == Yj ) c[i,j] = c[i-1,j-1] + 1 else c[i,j] = max( c[i-1,j], c[i,j-1] ) x: ABCB y: BDCAB درس طراحی الگوریتمها - فصل سوم: روش برنامه نویسی پویا - مدرس: بیدکی

More Related