380 likes | 551 Views
Foundations of algorithms Presented By: H.Amerehie. فصل اول: کارایی ، تحلیل و مرتبه الگوریتم ها. 3 از 35. الگوریتم 1-1: جست و جوی ترتیبی. Presented By:H.Amerehie. 4 از 35. تحلیل پیچیدگی زمانی جست و جوی ترتیبی در حالت میانگین. 5 از 35.
E N D
Foundations of algorithms Presented By: H.Amerehie
فصل اول: کارایی ، تحلیل و مرتبه الگوریتم ها Presented By:H.Amerehie
3 از 35 الگوریتم 1-1: جست و جوی ترتیبی Presented By:H.Amerehie
4 از 35 تحلیل پیچیدگی زمانی جست و جوی ترتیبی در حالت میانگین Presented By:H.Amerehie
5 از 35 تحلیل پیچیدگی زمانی جست و جوی ترتیبی در حالت میانگین Presented By:H.Amerehie
6 از 35 الگوریتم 2-1:محاسبه مجموع عناصر آرایه Presented By:H.Amerehie
7 از 35 تحلیل پیچیدگی زمانی محاسبه مجموع عناصر آرایه Presented By:H.Amerehie
8 از 35 الگوریتم 3-1:مرتب سازی تعویضی مسئله: n کلید را به ترتیب غیر نزولی مرتب سازی کنید. Presented By:H.Amerehie
9 از 35 تحلیل پیچیدگی زمانی مرتب سازی تعویضی Presented By:H.Amerehie
10 از 35 الگوریتم 4-1: ضرب ماتریس ها Presented By:H.Amerehie
11 از 35 تحلیل پیچیدگی زمانی ضرب ماتریس ها Presented By:H.Amerehie
12 از 35 Big O • F(n)=O(g(n)) Ǝ C , n0>0 : ∀n>=n0 f(n)<= C g(n) O(g(n)) : شامل مجموعه ای از توابع پیچیدگی مانند f(n)می باشد که برای هریک از آنها حداقل یک ثابت حقیقی مثبت مانند c و یک عدد صحیح غیر منفی مانند N وجود دارد به طوری که برای هر n>=Nداشته باشیم : f(n)<=c*g(n) C*g(n) F(n) Presented By:H.Amerehie
13 از 35 Ω • F(n)=Ω(g(n)) Ǝ C , n0>0 : ∀n>=n0 f(n)>= C g(n) Ω(g(n)) : شامل مجموعه ای از توابع پیچیدگی مانند f(n)می باشد که برای هریک از آنها حداقل یک ثابت حقیقی مثبت مانند c و یک عدد صحیح غیر منفی مانند N وجود دارد به طوری که برای هر n>=Nداشته باشیم : f(n)>=c*g(n) - اگرΩ(g(n)) f(n) ، می گوییم که f(n) از امگای g(n)می باشد. - امگا یک حد پایین مجانبی بر روی یک تابع قرار می دهد - تعریف شهودی :f(n) حداقل به بدی g(n) است. F(n) C*g(n) Presented By:H.Amerehie
14 از 35 θ • F(n)=θ (g(n)) Ǝ c,d, n0>0 : ∀n>=n0c g(n)<=f(n)<=d g(n) θ(g(n)) : شامل مجموعه ای از توابع پیچیدگی مانند f(n)می باشد که برای هریک از آنها ثابت های حقیقی مثبت مانند c و d ویک عدد صحیح غیر منفی مانند N وجود دارد به طوری که برای هر n>=Nداشته باشیم : c*g(n) <= f(n) <= d*g(n) d*g(n) F(n) C*g(n) Presented By:H.Amerehie
15 از 35 مرتبه اجرایی توابع بازگشتی عمل اصلی : تعداد صدا زدن تابع به صورت بازگشتی روش حل : ابتدا تابع را به فرم توابع ریاضی بازگشتی در آورده وسپس به کمک اصول معادلات بازگشتی آن ها را حل می کنیم . 1 . ترسیم درخت بازگشتی 2 . روش جایگذاری 3 . برهان خلف 4 . روش استقرای ریاضی Presented By:H.Amerehie
16 از 35 الگوریتم 5-1 : الگوریتم بازگشتی محاسبه فاکتوریل int fact (int n) { if (n==1) return 1; Return (n* fact(n-1)); } Presented By:H.Amerehie
17 از 35 مرتبه اجرایی الگوریتم بازگشتی محاسبه فاکتوریل T(n)=1 n=1 اگر T(n)=T(n-1)+C در غیر این صورت T(n) = O(n) Presented By:H.Amerehie
18 از 35 الگوریتم 6-1 : الگوریتم بازگشتی محاسبه سری فیبوناچی Presented By:H.Amerehie
19 از 35 مرتبه اجرایی الگوریتم بازگشتی محاسبه سری فیبوناچی Presented By:H.Amerehie
20 از 35 الگوریتم 7-1 : الگوریتم بازگشتی برج هانوی void Hanoi (intn,A,B,C) { if (n==1) Move a disk from A to C; else { Hanoi(n-1,A,C,B); move a disk from A to C; Hanoi(n-1,B,A,C); } } Presented By:H.Amerehie
21 از 35 مرتبه اجرایی الگوریتم بازگشتی برج هانوی T (n) = 1 n=1اگر اگرn>1 T(n-1)+T(n-1)+1 T(n)=O( 2n ) Presented By:H.Amerehie
22 از 35 حل روابط بازگشتی ساده با روش جایگذاری برای دسته ای از مسائل ساده که در آن ها T(n)، فقط بستگی به T(n-1) دارد. مثال T(n)=nT(n-1) T(1)=1 Presented By:H.Amerehie
23 از 35 روابط بازگشتی همگن تعریف : رابطه زیر را یک رابطه بازگشتی همگن خطی از درجه kبا ضرایب ثابت می نامیم . T(n) = C1T(n-1) + C2T(n-2) + …. + CkT(n-k) که C1، C2،....،Ckاعداد ثابت حقیقی بوده و Ck<>0 باشد . Presented By:H.Amerehie
24 از 35 حل روابط بازگشتی همگن حل روابط بازگشتی همگن مرتبه اول عموما روابط بازگشتی درجه اول با روش جایگذاری به سادگی حل می شوند . مثال T(n) = CT(n-1) حل روابط بازگشتی همگن مرتبه دوم با ضرایب ثابت فرم کلی این روابط به صورت زیر است : CnT(n) + Cn-1T(n-1) + Cn-2T(n-2) = 0 معادله مشخصه : Cnr2 + Cn-1r + Cn-2= 0 Presented By:H.Amerehie
25 از 35 حل روابط بازگشتی همگن با حل معادله درجه دوم فوق یکی از سه حالت زیر پیش می آید : 1 . دو جواب حقیقی و مجزای r1و r2داریم، جواب رابطه بازگشتی به فرم زیر خواهد بود: T(n) = C1r1n + C2r2n 2 . یک ریشه حقیقی مضاعف r1 داریم ، جواب رابطه بازگشتی به فرم زیر خواهد بود: T(n) = C1r1n + C2nr1n 3 .ریشه های مختلط r1و r2را داریم ، جواب رابطه بازگشتی به فرم زیر خواهد بود: T(n) = C1r1n + C2r2n Presented By:H.Amerehie
26 از 35 حل روابط بازگشتی همگن مثال 1 : T(n) = T(n-1) + 2T(n-2) مقادیر اولیه : T(0) = 2 T(1) = 7 مثال 2 : T(n+2) = 4T(n+1) – 4T(n) مقادیر اولیه : T(0) = 1 T(1) = 3 Presented By:H.Amerehie
27 از 35 روابط بازگشتیناهمگن فرم کلی این روابط به صورت زیر است : T(n) = C1T(n-1) + C2T(n-2) + …. + CkT(n-k) + f(n) یکی از روش های حل معادله فوق استفاده از جواب عمومی (Un ) و جواب خصوصی ( Pn ) است. مثال T(n) = 3T(n-1) + 5 * 7n مقادیر اولیه T(0) = 39/4 Presented By:H.Amerehie
28 از 35 روابط بازگشتیناهمگن قاعده اول : اگر در رابطه بازگشتی ناهمگن ، f(n) = kqnباشد (k یک ثابت معلوم است ) و q یک ریشه معادله مشخصه نباشد آنگاه جواب خاص را به صورت Pn= Cqnمی گیریم وبا جایگذاری آن در رابطه بازگشتی ناهمگن ، مقدار C را بدست می آوریم . نکته : اگر در معادله ناهمگن q یک ریشه ساده معادله مشخصه باشد جواب خاص را به صورت Cnqnدر نظر می گیریم . مثال : T(n)=3T(n-1) + 5 * 3n مقدار اولیه T(0)=2 Presented By:H.Amerehie
29 از 35 روابط بازگشتیناهمگن قاعده دوم : اگر در رابطه بازگشتی ناهمگن ، f(n) = knqباشد (k یک ثابت معلوم است ) وعددیک ، ریشه معادله مشخصه نباشد آنگاه جواب خاص به صورت زیر است : Pn = C0 + C1n + C2n2 + … + Cqnq نکته : اگر عدد یک، ریشه ساده معادله مشخصه باشد جواب خاص را به صورت زیراست. Pn= C0n + C1n2 + … + Cqnq+1 مثال T(n) = 3T(n-1) - 2T(n-2) + n4 Presented By:H.Amerehie
30 از 35 روابط بازگشتیناهمگن قاعده سوم : اگر در رابطه بازگشتی ناهمگن f(n) = k باشد ( یعنی عدد ثابتی باشد ) در واقع حالت خاصی از قاعده دوم بوده و Pn = C می باشد که با جایگذاری در رابطه بازگشتی ناهمگن مقدار C بدست می آید. مثال : T(n+1) = 2T(n) + 1 مقدار اولیه T(0)=0 Presented By:H.Amerehie
31 از 35 روابط بازگشتیناهمگن قاعده چهارم : اگر f(n)ترکیب خطی از قواعد اول، دوم و سوم باشد جواب خاص نیز به فرم ترکیب خطی آن ها خواهد بود. مثال : T(n)=T(n-1) + 4n + 2n Presented By:H.Amerehie
32 از 35 روابط بازگشتی اگر فرم کلی یک رابطه بازگشتی به صورت زیر باشد : T(n) = aT(n-k) + b در حل رابطه داریم : اگر : a<>1 T(n) = O( an/k ) اگر: a = 1 T(n) = O( n) مثال : T(n) = 3T(n-2) Presented By:H.Amerehie
33 از 35 روابط بازگشتی از مدل تقسیم و غلبه حالت 1 : T(n) = aT(n/b)θ (n logba) (a<>1) T(n) = 1θ (logbn) (a = 1) مثال : T(n) = T(n/2) Presented By:H.Amerehie
34 از 35 روابط بازگشتی از مدل تقسیم و غلبه حالت 2 : T(n) = aT(n/b)+ cnkθ (n logba) (a>bk) T(n) = cθ (nklog2n) (a=bk) θ (nk) (a<bk) مثال : T(n) = 2T(n/2) + 1 T(n) = 3T(n/3) + n2 Presented By:H.Amerehie
35 از 35 روابط بازگشتی از مدل تقسیم و غلبه حالت 3 : O (n logba) ( n logba> O(f(n)) ) T(n) = aT(n/b)+ cf(n) O (f(n)) ( n logba< O(f(n)) ) log n * O(f(n)) (a=b) مثال : T(n) = 4T(n/2) + log n T(n) = 2T(n/2) + n log n Presented By:H.Amerehie