مشاهده - سید محمد بیدکی

Download Report

Transcript مشاهده - سید محمد بیدکی

‫درس طراحی الگوریتم ها‬
‫محاسبه هزینه الگوریتم ها‬
‫مدرس‪ :‬سید محمد بیدکی‬
‫زمستان ‪1391‬‬
‫تحلیل کارایی‬
‫‪ ‬پیچیدگی مکانی ‪space complexity‬‬
‫‪ ‬مقدار فضایی از حافظه که برنامه برای اجرا نیاز خواهد داشت‪.‬‬
‫‪ ‬پیچیدگی زمانی ‪time complexity‬‬
‫‪ ‬زمانی که طول می کشد برنامه اجرا شود و خروجی را تولید کند‪.‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪2‬‬
‫پیچیدگی مکانی‬
‫‪ ‬انواع متغیرها‬
‫‪ ‬متغیرهای اولیه )… ‪(int, float, char,‬‬
‫‪ ‬متغیرهای غیر اولیه (ترکیبی از متغیرهای اولیه هستند‪ :‬آرایه‪ ،‬ساختار و ‪)...‬‬
‫‪ ‬معیار فضا‪ :‬هر متغیر اولیه یک واحد مکانی را اشغال می کند‪.‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪3‬‬
‫مثال‬
‫‪ ‬محاسبه پیچیدگی مکانی الگوریتم زیر‬
‫نام‬
‫نوع‬
‫فضا‬
‫‪a‬‬
‫غیر اولیه‬
‫‪n‬‬
‫‪n‬‬
‫اولیه‬
‫‪1‬‬
‫‪s‬‬
‫اولیه‬
‫‪1‬‬
‫‪i‬‬
‫اولیه‬
‫‪1‬‬
‫جمع‬
‫‪n+3‬‬
‫{ )‪sum_element(a[], n‬‬
‫‪s=0‬‬
‫‪for i=1 to n‬‬
‫]‪s = s + a[i‬‬
‫‪return s‬‬
‫}‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪1‬‬
‫‪2‬‬
‫‪3‬‬
‫‪4‬‬
‫‪5‬‬
‫‪6‬‬
‫‪4‬‬
‫پیچیدگی زمانی ]‪[1‬‬
‫‪ ‬الگوریتم های غیربازگشتی و متوالی‬
‫‪ ‬معیار زمان‪ :‬هر دستورالعمل اجرایی یک واحد زمانی طول می کشد‪.‬‬
‫مثال‪:‬‬
‫‪a=4‬‬
‫‪b=a+3‬‬
‫)‪c = sin(b) * 3.14 / cos (a*2‬‬
‫{ )‪Sum ( a , b‬‬
‫‪1‬‬
‫‪c=a+b‬‬
‫‪1‬‬
‫‪return c‬‬
‫‪Tn = 2‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫}‬
‫‪5‬‬
‫الگوریتم های غیر بازگشتی‬
‫‪ ‬هزینه حلقه ها‬
‫‪ ‬باید تعداد دفعات تکرار دستورات حلقه را محاسبه کرد‪.‬‬
‫‪1‬‬
‫‪s=0‬‬
‫‪i=1‬‬
‫]‪s= s + a[1‬‬
‫‪ n‬مرتبه‬
‫‪i=2‬‬
‫]‪s = s + a[2‬‬
‫…‬
‫‪i=n‬‬
‫]‪s = s + a[n‬‬
‫‪1‬‬
‫‪i = n+1‬‬
‫‪1‬‬
‫‪return s‬‬
‫‪tn = 2n + 3‬‬
‫{ )‪sum_element(a[], n‬‬
‫‪1‬‬
‫‪s=0‬‬
‫‪2‬‬
‫‪for i=1 to n‬‬
‫‪3‬‬
‫‪4‬‬
‫]‪s = s + a[i‬‬
‫‪5‬‬
‫‪return s‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫}‬
‫‪6‬‬
‫‪6‬‬
‫هزینه حلقه ‪for‬‬
‫‪‬محاسبه هزینه حلقه ‪ for‬که اندازه گام آن ‪ 1‬می باشد‪.‬‬
‫{ ‪for i=1 to n‬‬
‫‪statement1‬‬
‫…‬
‫‪statementn‬‬
‫}‬
‫‪ 1‬‬
‫‪n‬‬
‫)‪ (1  n‬‬
‫‪i 1‬‬
‫مرحله آخر حلقه‬
‫دستورات بدنه‬
‫شمارنده حلقه‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪7‬‬
for ‫هزینه حلقه‬
loop
b–a+1
for i=a to b
for i=1 to n step p
for (i=1; i <= n; i *= 2)
8
#iteration
(n – 1) / p + 1
k
n  2 p  p  lg n
k  p  1  k  lg n  1
‫ بیدکی‬:‫ مدرس‬-‫ محاسبه هزینه الگوریتم ها‬- ‫ پیوست دوم‬- ‫درس طراحی الگوریتم ها‬
‫تمرین در کالس‬
‫محاسبه پیچیدگی مکانی و زمانی الگوریتم جمع دو‬
‫ماتریس ‪m*n‬‬
‫? = ‪Sp‬‬
‫? = ‪Tn‬‬
‫{ )‪1 add_matrix(a[][ ], b[][ ], c[][ ], m, n‬‬
‫‪2‬‬
‫‪for i=1 to m‬‬
‫‪for j=1 to n‬‬
‫]‪c[i, j] = a[i,j] + b[i,j‬‬
‫‪3‬‬
‫‪4‬‬
‫} ‪5‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪9‬‬
‫پیچیدگی زمانی ]‪[2‬‬
‫‪ ‬الگوریتم های بازگشتی‬
‫‪ ‬تعیین رابطه بازگشتی و شرط پایان‬
‫‪ ‬رابطه بازگشتی‪ :‬یک تساوی یا نامساوی است که یک تابع را بر حسب مقدار آن روی‬
‫ورودیهای کوچکتر توصیف می کند‪.‬‬
‫‪ ‬پیچیدگی زمانی‪ :‬از روی متن تابع بدست می آید‪ .‬رابطه بازگشتی باید بسط‬
‫داده شود تا به فرم غیر بازگشتی درآید‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫روش استقراء‬
‫روش جایگزینی‬
‫روش استفاده از معادله مشخصه‬
‫روش تغییر متغیر‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪10‬‬
‫مثال‬
‫محاسبه جمله ‪n‬ام دنباله فیبوناچی‬
‫‪n2‬‬
‫محاسبه فاکتوریل عدد ‪n‬‬
‫‪a0  a1  1‬‬
‫‪‬‬
‫‪an  an 1  an  2‬‬
‫{ )‪1 fib (n‬‬
‫‪2‬‬
‫)‪if (n == 0 or n == 1‬‬
‫‪3‬‬
‫‪return 1‬‬
‫)‪return fib (n-1) + fib(n-2‬‬
‫‪4‬‬
‫‪n0‬‬
‫‪n0‬‬
‫!)‪n * (n  1‬‬
‫‪n! ‬‬
‫‪1‬‬
‫{ )‪1 fact (n‬‬
‫‪2‬‬
‫)‪if (n == 0‬‬
‫‪return 1‬‬
‫)‪return n * fact(n-1‬‬
‫} ‪5‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪3‬‬
‫‪4‬‬
‫} ‪5‬‬
‫‪11‬‬
‫روش استقراء‬
‫‪ ‬ایجاد یک حدس اولیه برای تابع بازگشتی‬
‫‪ ‬هدف‪ :‬اثبات درستی حدس با استفاده از استقراء‬
‫‪ ‬استقراء سه مرحله دارد‪:‬‬
‫‪ ‬مبنای استقراء‪ :‬حدس برای شرط اولیه برقرار است‬
‫‪ ‬فرض استقراء‪ :‬فرض می شود که حدس به ازای ‪ n‬صحیح است‪.‬‬
‫‪ ‬گام استقراء‪ :‬باید اثبات شود که حدس برای جمله ‪ n+1‬ام نیز برقرار می‬
‫باشد‪.‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪12‬‬
‫مثال استقراء ]‪[1‬‬
‫‪n 1‬‬
‫‪1‬‬
‫‪‬‬
‫‪T ( n)   n‬‬
‫‪p‬‬
‫‪T‬‬
‫(‬
‫)‬
‫‪‬‬
‫‪1‬‬
‫‪n‬‬
‫‪‬‬
‫‪1‬‬
‫‪,‬‬
‫‪n‬‬
‫‪‬‬
‫‪2‬‬
‫‪‬‬
‫‪ 2‬‬
‫‪‬چند جمله را محاسبه می کنیم‪:‬‬
‫‪T(1) = 1‬‬
‫‪T(2) = T(1) + 1 = 1+1 = 2‬‬
‫‪T(4) = T(2) + 1 = 2+1 = 3‬‬
‫‪T(8) = T(4) + 1 = 3+1 = 4‬‬
‫‪T(16) = T(8) + 1 = 4+1 = 5‬‬
‫مبنای استقراء‪:‬‬
‫برای ‪:n=1‬‬
‫فرض استقراء‪:‬‬
‫‪T(1) = lg 1 + 1 = 1‬‬
‫برای مقادیری از ‪ n‬داریم‪:‬‬
‫‪T(n) = lg n +1‬‬
‫گام استقراء‪:‬‬
‫چون استقرا برای توانهای دو است‪:‬‬
‫‪2p+1 =2n then Tn+1 = T2n‬‬
‫باید نشان دهیم‪:‬‬
‫‪T(2n) = lg (2n) + 1‬‬
‫‪T(n) = T(n/2) + 1 then‬‬
‫حدس می زنیم که‪:‬‬
‫‪T(n) = lg n +1‬‬
‫‪‬حال باید حدس خود را اثبات کنیم‪ :‬استقراء‬
‫‪‬‬
‫‪T(2n) = T(n) + 1‬‬
‫‪T(2n) = lg n + 1 + 1 =lg n + lg 2‬‬
‫‪+ 1 = lg (n*2) + 1 = lg 2n + 1‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪13‬‬
‫مثال استقراء ]‪[2‬‬
‫‪n0‬‬
‫‪1‬‬
‫‪T ( n)  ‬‬
‫‪n * T (n  1) n  0‬‬
‫حدس خود را با استقراء ثابت می کنیم‪:‬‬
‫مبنای استقراء‪:‬‬
‫برای ‪:n=0‬‬
‫فرض استقراء‪:‬‬
‫برای مقادیری از ‪ n‬داریم‪:‬‬
‫گام استقراء‪:‬‬
‫باید نشان دهیم‪:‬‬
‫‪‬چند جمله را محاسبه می کنیم‪:‬‬
‫‪T(0) = 1‬‬
‫‪T(1) = 1*T(0) = 1*1 = 1‬‬
‫‪T(2) = 2*T(1) = 2*1 = 2‬‬
‫‪T(3) = 3*T(2) = 3*2 = 6‬‬
‫‪T(4) = 4*T(3) = 4*6 = 24‬‬
‫!‪T(k) = K*T(k-1) = k‬‬
‫‪T(0) = 0! = 1‬‬
‫!‪T(n) = n‬‬
‫!)‪T(n+1) = (n+1‬‬
‫‪T(n) = n* T(n-1) then‬‬
‫‪T(n+1) = (n+1) * T(n) ‬‬
‫حدس می زنیم که‪:‬‬
‫!‪T(n) = n‬‬
‫! )‪T(n+1) = (n + 1)* n! = (n+1‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪14‬‬
‫روش جایگزینی‬
‫‪T(n) = T(n-1) + 5‬‬
‫‪= T(n-2) + 5 + 5‬‬
‫‪n 1‬‬
‫‪n 1‬‬
‫‪2‬‬
‫‪T ( n)  ‬‬
‫‪T (n  1)  5‬‬
‫‪= T(n-3) + 5 + 5 + 5‬‬
‫‪=T(n-4) + 5 + 5 + 5 + 5‬‬
‫‪T(n) = T(n-1) + 5‬‬
‫…‬
‫‪T(n-1) = T(n-2) + 5‬‬
‫‪=T(n-k) + 5k‬‬
‫باید به )‪T(1‬برسیم بنابراین‪:‬‬
‫‪T(n-2) = T(n-3) +5‬‬
‫‪T (n  k )  T (1) ‬‬
‫‪n  k  1  k  n 1‬‬
‫…‬
‫‪T(n-k) = T(n-k-1)+5‬‬
‫با جایگذاری مقدار ‪ k‬داریم‪:‬‬
‫‪T (n)  T (n  k )  5k‬‬
‫…‬
‫‪T(1) = 2‬‬
‫‪T (n)  T (1)  5(n  1)  2  5n  5  5n  3‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪15‬‬
‫تمرین در کالس‬
‫پیچیدگی تابع زیر را بدست آورید‪:‬‬
‫‪n 1‬‬
‫‪n 1‬‬
‫‪3‬‬
‫‪T ( n)  ‬‬
‫)‪4T (n  1‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪16‬‬
‫روش استفاده از معادله مشخصه‬
‫‪ ‬این روش برای دسته بزرگی از رابطه های بازگشتی خطی‪ ،‬قابل‬
‫استفاده است‪.‬‬
‫‪ ‬خطی بودن یعنی اینکه در معادله بازگشتی‪ ،‬هر جمله ‪ ti‬با توان اول خود‬
‫ظاهر شود مثالً جمالتی مثل ‪ t2i‬یا ‪ tn-itn-j‬یا )‪ tc(n-i‬که در آن ‪ c‬یک مقدار‬
‫ثابت و غیر صفر است (مثل ‪ tn/2‬و )‪ ،)t3(n-4‬مشاهده نمی شود‪.‬‬
‫‪ ‬حل رابطه های بازگشتی خطی در دو دسته کلی بیان می شود‪:‬‬
‫‪ .1‬بازگشتی خطی همگن‬
‫‪ .2‬بازگشتی خطی ناهمگن‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪17‬‬
‫‪ -1‬حل بازگشتی های خطی همگن‬
‫‪ ‬تعریف‪ :‬بازگشتی زیر را درنظر بگیرید که در آن ‪ k‬و ‪ai‬ها ثابتند‪:‬‬
‫‪a0tn+a1tn-1+…+aktn-k = 0‬‬
‫این بازگشتی‪ ،‬معادله خطی همگن با ضرایب ثابت از مرتبه ‪k‬اُم نام‬
‫دارد‪.‬‬
‫‪ ‬یک بازگشتی خطی همگن از مرتبه ‪k‬اُم‪ ،‬نیازمند ‪ k‬شرط اولیه می‬
‫باشد‪.‬‬
‫دنباله فیبوناچی‬
‫‪tn = tn-1 + tn-2‬‬
‫‪t0 = 0‬‬
‫‪t1 = 1‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪18‬‬
‫‪ -1‬حل بازگشتی های خطی همگن ‪...‬‬
‫‪ ‬معادله مشخصه مربوط به معادله بازگشتی‬
‫‪a0tn+a1tn-1+…+aktn-k = 0‬‬
‫اگر قرار دهیم ‪ ،tn= prn‬به صورت زیر خواهد بود‪:‬‬
‫‪a0rk+a1rk-1+…+akr0 = 0‬‬
‫‪ ‬اگر بتوانیم ‪ k‬تا ریشه برای معادله مشخصه فوق پیدا کنیم‪ ،‬جوابی به‬
‫فرم زیر‪:‬‬
‫‪an = c1r1n+c2r2n+…+ckrkn‬‬
‫در معادله بازگشتی صدق خواهد کرد و ضرایب ‪ ck‬از شرایط اولیه‬
‫محاسبه می شوند‪.‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪19‬‬
‫مثال (دنباله فیبوناچی)‬
‫‪tn = tn-1 + tn-2‬‬
‫‪t0 = 0‬‬
‫‪t1 = 1‬‬
‫‪: r2 - r – 1 = 0 => r1 = (1+√5)/2 , r2 =(1-√5)/2‬معادله مشخصه‬
‫‪n‬‬
‫‪n‬‬
‫‪1 1 5 ‬‬
‫‪1 1 5 ‬‬
‫‪t n  5  2   5  2 ‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪20‬‬
‫‪ -1‬حل بازگشتی های خطی همگن ‪...‬‬
‫‪ ‬قضیه‪ :‬فرض کنید ‪ r‬یک ریشه ‪-m‬گانه معادله مشخصه یک بازگشتی‬
‫خطی همگن باشد‪ ،‬قسمتی از جواب بازگشتی که مربوط به این ریشه‬
‫می باشد به صورت زیر در حل بازگشتی اعمال می شود‪:‬‬
‫‪(c0+c1n+c2n2+…+cm-1nm-1)rn‬‬
‫در معادله بازگشتی صدق خواهد کرد و ضرایب ‪ ck‬از شرایط اولیه‬
‫محاسبه می شوند‪.‬‬
‫‪ ‬مثال‬
‫‪an = 6an-1 – 9an-2‬‬
‫‪a0 = 0‬‬
‫‪a1 = 1‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪21‬‬
‫‪ -2‬حل بازگشتی های خطی ناهمگن‬
‫‪ ‬تعریف‪ :‬بازگشتی زیر را درنظر بگیرید که در آن ‪ k‬و ‪ai‬ها ثابت و‬
‫)‪ f(n‬تابعی غیر صفر می باشد‪:‬‬
‫)‪a0tn+a1tn-1+…+aktn-k = f(n‬‬
‫این بازگشتی‪ ،‬معادله خطی ناهمگن با ضرایب ثابت از مرتبه ‪k‬اُم نام‬
‫دارد‪.‬‬
‫‪ ‬حل بازگشتی های خطی ناهمگن را در حالتی خاص که )‪ f(n‬یک‬
‫چندجمله ای باشد در ادامه شرح می دهیم‪.‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪22‬‬
‫‪ -2‬حل بازگشتی های خطی ناهمگن ‪...‬‬
‫‪ ‬قضیه‪ :‬بازگشتی ناهمگن زیر را درنظر بگیرید‪:‬‬
‫)‪a0tn+a1tn-1+…+aktn-k = bnp(n‬‬
‫این شکل از بازگشتی‪ ،‬می تواند به بازگشتی همگنی تبدیل شود که‬
‫معادله مشخصه آن به صورت زیر است‪:‬‬
‫‪(a0rk+a1rk-1+…+akr0 )(r – b)d+1 = 0‬‬
‫که ‪ d‬برابر با درجه )‪ p(n‬است‪.‬‬
‫‪‬اگر بیش از یک جمله مانند )‪ bnp(n‬در سمت راست وجود داشته‬
‫باشد‪ ،‬هر یک از آنها در معادله مشخصه ظاهر می شود‪.‬‬
‫حل بازگشتی‪:‬‬
‫‪an = anh + anp‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪23‬‬
‫مثال‬
‫‪for n>1‬‬
‫)‪tn – 3tn-1 = 4n(2n+1‬‬
‫‪t0 = 0 , t1 = 12‬‬
‫‪: (r-3)(r-4)1+1 = 0‬معادله مشخصه‬
‫‪: tn = c13n + c24n + c3n4n‬حل بازگشتی‬
‫‪=> tn = 20(3n) - 20(4n) + 8n4n‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪24‬‬
‫روش تغییر متغیر‬
‫‪ ‬با تغییر متغیر می توان رابطه بازگشتی را به یک رابطه ساده تر برای حل تبدیل‬
‫کرد‪.‬‬
‫‪T ( n)  T ( n )  1‬‬
‫با روش جایگذاری حل می شود‪:‬‬
‫‪S(1) = c → S(m) = c + lg m‬‬
‫‪n = 2m‬‬
‫‪T(2m) = T(2m/2) + 1‬‬
‫در نهایت داریم‪:‬‬
‫‪m = lg n → T(n) = c + lg lg n‬‬
‫)‪T(2m) = S(m‬‬
‫‪S(m) = S(m/2) + 1‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪25‬‬
‫تمرین در خانه‬
‫‪ .1‬پیچیدگی توابع زیر را به روشهای خواسته شده‪ ،‬بدست آورید‪:‬‬
‫روش جایگزینی‬
‫استقرا با حدس اولیه‪:‬‬
‫)‪tn= n/(n+1‬‬
‫روش معادله مشخصه‬
‫روش تغییر متغیر‬
‫‪T (1)  1‬‬
‫‪n 1‬‬
‫‪1‬‬
‫‪a ) T ( n)  ‬‬
‫‪T (n  1)  n n  1‬‬
‫‪1‬‬
‫‪n 1‬‬
‫‪ 2‬‬
‫‪b) T ( n)  ‬‬
‫‪T (n  1)  1‬‬
‫‪n 1‬‬
‫‪‬‬
‫)‪n(n  1‬‬
‫‪n‬‬
‫‪2‬‬
‫‪5 - 6‬‬
‫‪ - 5n  7‬‬
‫‪ t n1 t n 2 n‬‬
‫‪c) T (n)  0‬‬
‫‪n0‬‬
‫‪1‬‬
‫‪n 1‬‬
‫‪‬‬
‫‪d ) T ( n)  2T ( n )  lg n‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪26‬‬
‫تمرین در خانه‬
‫‪ .2‬تحلیل کنید که برای جمع دو ماتریس ‪ m*n‬روش ستونی بهتر است یا سطری؟‬
‫راهنمایی‪ :‬ابتدا الگوریتم هر دو روش را بنویسید و سپس با محاسبه هزینه‪ ،‬آنها را تحلیل‬
‫کنید‪.‬‬
‫‪ .3‬هزینه زمانی و مکانی الگوریتم ضرب ماتریس ها را بدست آورید‪.‬‬
‫‪A m*p * Bp*n‬‬
‫درس طراحی الگوریتم ها ‪ -‬پیوست دوم ‪ -‬محاسبه هزینه الگوریتم ها‪ -‬مدرس‪ :‬بیدکی‬
‫‪27‬‬