1 / 68

طراحی الگوریتم

طراحی الگوریتم. By M.Shahgholi Shahgholi_a@hotmail.com. جلسه اول. فصل اول پیچیدگی زمانی و مرتبه اجرایی - پیچیدگی زمانی .تحلیل پیچیدگی زمانی برای حالات بهترین بدترین و متوسط - مرتبه اجرایی

tiara
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. طراحی الگوریتم By M.Shahgholi Shahgholi_a@hotmail.com

  2. جلسه اول فصل اول پیچیدگی زمانی و مرتبه اجرایی - پیچیدگی زمانی .تحلیل پیچیدگی زمانی برای حالات بهترین بدترین و متوسط - مرتبه اجرایی 0,Ω,ϴ,ᵒ,ᵚ .نمادها - مرتبه اجرایی توابع بازگشتی

  3. پیچیدگی زمانی Time Complexity ارزیابی الگوریتم حافظه ی مصرفی (Trun زمان مصرفی( زمان اجرای برنامه زیاد زمان اجرای یک الگوریتم با افزایش اندازه ی ورودی میشود و با تعداد دفعاتی که عملیات اصلی انجام می شود تناسب دارد.

  4. مثال 1. Float sum (float list [], int n) { float s=0; int i ; for ( i=0; i<n; i++) s=s+list[i]; Return s; } تحلیل پیچیدگی زمانی یک الگوریتم عبارت از تعیین تعداد دفعاتی است T(n)که عمل اصلی به ازاء هر مقدار از اندازه ورودی انجام می شود. ورودی یا تعداد عناصر آرایه عمل اصلی بار اجرا میشود N

  5. تعداد کل مراحل برنامه رامحاسبه کنید. Float sum (float list [], int n) { float s=0; int i ; for ( i=0; i<n; i++) s=s+list[i]; Return s; } 0 0 1 0 n+1 n 1 0

  6. مثال 3: دستور اصلی در تکه برنامه زیر چند بار اجرا میشود؟ تعداد کل گامهای برنامه چقدر است؟ For i=1 to m do for j=1 to n do x:= x+1; برای تعداد گام از آخر به اول حرکت میکنیم

  7. مثال 4. دستور اصلی در تکه برنامه زیر چند بار اجرا میشود؟ For j:=1 to n do for j=1 to j do x:=x+1; J i اجرای دستور اصلی 1 1 1 . . . N 1,2,..,n n N(n+1) 2

  8. مرتبه اجرایی الگوریتم (o) به جای محاسبات دقیق ما به ابزاری نیاز داریم که زمان اجرای الگوریتم ها را به صورت حدودی و طبق بندی شده نشان می دهد. این بحث تا حدی شبیه بحث هم ارزی در مسائل حد ریاضیات است. Lim 5n^2 + 4n – 3 ........ 5n^2 T(n) = 5 n – 4 ............ N...........o(n) 6n^2 – 3n + 2..........o(n^2)

  9. مثال 7: مرتبه ی اجرایی برنامه های زیر را بدست آورید: X:=x+1; o(1) For i =1 to n do o(n) x=x+1; For i=1 to n do o(n^2) For j:= to n do x:=x+1;

  10. مثال 8: تعداد دقیق اجرا شدن دستور اصلی و مرتبه ی اجرایی آن را در تکه برنامه زیر بدست آورید؟ For i=1 to n do for j:=i to n do write (‘ok’); n(n+1) o(n^2) 2 مثال 9 مرتبه اجرایی.... For i=5 to 13 do write(‘ok);

  11. مثال 10:مرتبه اجرایی برنامه زیر چیست؟ N=32 X:=0; i x i:=n; 32 1 While (i<1) do begin 16 2 x:=x+1; 8 3 i:=i div 2; 4 4 End; 2 5 1 5=log32 n=32 x:=x=1 >>>> 5

  12. While >> counter n......1 >> i:=i div k; • O (logn) • >> contr 1...n >> i:=i*k; o(1) ثابت O(logn) لگاریتمی O(n) خطی O(n^2)مرتبه 2 O(2^n)توانی O(n!)فاکتوریل

  13. مثال 11: الگوریتمی با مرتبه زمانی در کامپیوتری در مدت زمان 1 ثانیه اجرا میشود. همان الگوریتم روی کامپیوتر دیگری با سرعت 100 برابر در چه مدت زمانی اجرا خواهد شد. t2 * v2 t1 v1 O(nlogn)

  14. 0,Ω,ϴنمادهای حد بالا 0 Ω حد پایین ϴ حد متوسط مثال 12: F(n)= 5n^3 +2n f(n)=Ω(n) f(n)= Ω(n^2) f(n)= Ω(n^3)

  15. مرتبه ی اجرایی توابع بازگشتی مثال12 : مرتبه ی اجرایی الگوریتم بازگشتی محاسبه ی فاکتور یل را بدست آورید: Int fact (int n) { If (n == 1) return 1; return (n* fact (n-1)); } Fact (4) 4* fact(3) 3* fact (2) t(n) = o (n) 2* fact (1)

  16. تست در تکه برنامه زیر عمل اصلی چند بار اجرا میشود؟ For(int i=0 ; i<n-1 ; ++i) for (int i = 0; i <n-1 ; i++) { /* process a */ } • n/2 2) (n^2) / 4 3)(n+1)/2 4) (n+1)^2 4

  17. I i< 4-1 تعداد اجرا n=4 0 (0<4) 1 n+1 • (1<3) 1 2 • (2<2) - n+1 n+1 (n+1)^2 2 2 4

  18. مقدار محاسبه شده برای را تععین کنید total Total:=0; For i:=1 to n do Begin k:=n; while ( k<>1) begin k:=k dive 2; total:= total + 1; end; end; 1) n(logn-1) 2) n log n 3) n(log n+1) 4) log n+1

  19. N=4 I K k<>1 total 1 4 t 1 2 t 2 1 f • 4 t 3 2 t 4 1 f • 4 t 5 2 t 6 1 f • 4 t 7 2 t 8 1 f

  20. جلسه 2 در برنامه زیر تعداد دفعات تکرار دستور العمل شماره 3 برابر است با .... • For (k=0; k<=n-1;k++) • For (i=; i<n-k;i++) • a[i][i+k]=k; n(n-1) (4 n^2 (3 n(n+1)(2 n^2(1 2 2 2

  21. K تغییرات i تغییرات 0 1,2,3,...n 1 1,2,3,...n-1 2 1,2,3...n-2 . . N-1 1 تعداد اجرا خط 3 = 1+2+3+4+ ...+n = n(n+1) 2

  22. کدام گزینه تعداد مراحل زیر را به درستی بیان میکند؟ void sum (int m, int n, float s[][]) { int i,j; for (j=0; j<m;j++) { s[n-1][j]=0; for (i=0; i<n-1; i++) s[n-1][j]+=s[i][j]; } } 2m+2n(1 mn^2+(m^2)n(2 m(2n+1)+1(3 m(2n+1)-1(4

  23. for (j=0; j<m;j++) m+1 { s[n-1][j]=0; m*(1 for (i=0; i<n-1; i++) n s[n-1][j]+=s[i][j]; n-1) } تعداد کل مراحل اجرا = m+1+m(1+n+n-1)=m+1+2mn=m(2n+1)=1

  24. مرتبه بزرگی قطعه کد زیر چیست؟ k=0; For i:=1 to n do begin for j:=1 to m do k:k+1; j:=1; While j<n do begin k:=k+1; j:=2*j; end; End; ϴ(nm+nlogn) (4 ϴ(nm+n^2)(3 ϴ(nm)(2 ϴ(n^2)(1

  25. for j:=1 to m do k:k+1; j:=1; M بار While j<n do begin For i:=1 to n do begin k:=k+1; n بار j:=2*j; end; log n بار n(m+logn)= nm+ n logn

  26. پیجیدگی زمانی الگوریتم زیر کدام است؟ Sum=0 For(i=0; i<n;i++) For(j=0;j<i;j++) For(k=0;k<3;k++) sum++; o(n^2)(4 o(nlogn)(3 o(n)(2 o(n^3)(1

  27. پیچیدگی زمانی الگوریتم زیر کدام است؟ n=m For i:= 1 to n do for j:= 1 to m do for k:=1 to j do a:a+3; O(n^2)(4 o(n^3)(3 o(n+1)/2(2 o(m(m+1))/2(1

  28. For i:= 1 to n do for j:= 1 to m do (nm(m+1))/2 for k:=1 to j do m(m+1)/2 a:a+3; m+1 (N^2(n+1))/2

  29. زمان اجرای الگوریتم به صورت زیر کدام است 1 n=1 F(n)= n+f(n-1) n>= 2 O(n^2)(4 o(nlogn)(3 o(n^( 2/3)(2 o(n)(1

  30. F(5) 5+f(4) 4+f(3) 1+...+n 3+f(2) 2+f(1) 1

  31. مرتبه اجرایی الگوریتم زیر کدام است؟ Int f(int n) { If (n==1) return 1; else return f(n-1)+f(n-1)=1; } O{2^(n/2))(4 o(nlogn)(3 o(2^n)(2 o(n)(1

  32. F f(n-1), f(n-1) N=4 f(4) f(3) f(3) f(2) f(2) f(2) f(2) f(1) f(1) f(1) f(1) f(1) f(1) f(1 تابع مذکور به ازای 2 سه بار به ازای 3 ،7 بار به ازای 4 پانزده بار خودش را صدا می زند و لذا از مرتبه ی استo(2^n)

  33. Quiz 1 1)جواب صحیح کمترین تکرار از بین گزینه ها ی 1،2،3،4 میباشد. الف)1 ب)2 ج)3 د)4 2) زمان بدترین حالت در الگوریتم زیر چیست؟ Procedure iskey(s,n,key) for i:= 1 to n-1 do for j:=i+1 to n do if si + sj = key then return(1) else return(0) End iskey ϴ(logn) (4 ϴ(n^2) (3 ϴ(1)(2 ϴ(n) (1

  34. فصل دوم مفهوم روابط بازگشتی حل روابط بازگشتی حل روابط بازگشتی ساده باروش جایگذاری تقسیم بندی روابط بازگشتی روابط بازگشتی درجه اول روابط بازگشتی همگن مرتبه دوم با ضرایب ثابت حل تقریبی روابط بازگشتی روابط بازگشتی از مدل تقسیم و غلبه

  35. دنباله مقادیر an,...,a3,a2,a1,a0 را در نظر بگیرید. اگر جمله عمومی این دنباله در ارتباط با بعضی از اعضای این دنباله در دسترس باشد اغلب می توان با دانستن مقادیر ابتدایی مناسب دنباله ، هر جمله دلخواه از دنباله را محاسبه کرد. به رابطه بر حسب مقادیر قبلی دنباله ، رابطه بازگشتی می گویند.an

  36. مثال 1 در را بطه ی بازگشتی زیر مقادیر A2 تا A5 را بدست اورید؟ n a 1 =1 a2=2*a1=2*1=2 . a3= 3 *a2=3*2=6 a4= 4*a3=4*6=24 , a5= 5 * a4= 5*24=120

  37. مثال 2 اگر حداکثر تعداد نواحی که با رسم تعدادی خط راست متقاطع در صفحه بوجود می آیند را با نشان دهیم ، رابطه ای بازگشتی برای به دست آورید. توجه کنید که هیچ دوخطی موازی نبوده و همچنین هیچ سه خطی از یک نقطه نمی گذرند. Rn Rn

  38. R3 = R2+3 R4=R3+4 حدس میزنیم Rn= R(n-1)+n (n>=2)

  39. مثال 3 مسئله استاندارد برج های هانوی : این مسئله را در درس ساختمان داده خوانده اید که می خواهیم دیسک با قطره های متمایز را از روی میله به میله و به کمک میله انتقال دهیم. در این جابجایی دو محدودیت داریم ، یکی آنکه در هر بار انتقال فقط یک دیسک را میتوان منتقل ساخت و دوم اینکه یک دیسک با قطر بزرگتر نباید روی دیسک با قطر کوچکتر قرار گیرد. N A B C

  40. a n-1 1ابتدا دیسک را با رعایت دو شرط گفته شده از میله به انتقال میدهیم 2 سپس دیسک آخررا از میله به می بریم. 3 دیسک موجود در میله را با رعایت دو شرط گفته شده از میله به منتقل می کنیم. H1=1 Hn=Hn-1 +1+Hn-1= 2Hn-1+1 b c a N-1 c b

  41. حل روابط بازگشتی ساده با روش جایگذاری An برای یک دسته از مسائل ساده مثل حالتی که فقط به بستگی دارد میتوان از روش جایگذاری، روابط بازگشتی را حل کرد. رابطه بازگشتی را با شرط اولیه حل کنید. A2=2A1=2*(1)=2! A3=3A2=3*(2*1)=3! A4=4A3=4*(3*2*1)=4! An= n! An-1 A1=1 An= nAn-1

  42. تقسیم بندی روابط بازگشتی • رابطه ی زیر یک رابطه ی بازگشتی همگن خطی از درجه یا مرتبه k می نامیم . an=C1an-1+C2an-2+...+Ckan-k حطی بودن رابطه فوق از آن جهت است که طرف راست مجموعی از مضرب هایی از جملات قبلی دنباله است. همگن بودن رابه فوق از آن جهت است که هیچ جمله ای که در آن aj نباشد را ندارد.

  43. رابطه ی an=3an-1 یک رابطه بازگشتی خطی، همگن از درجه 1 می باشد. رابطه ی 7+an=5an-1 رابطه خطی درجه 1 است ولی همگن نیست چرا که جمله 7 وابسته به ai نمی باشد. رابطه ی^2+n2 an=5an-1+3an-خطی نیست چرا که جمله an-2 به توان 2 رسیده است همچنین همگن نیست زیرا که جمله n در سمت راست آن وجود دارد.

  44. شکل کلی روابط بازگشتی خطی نا همگن از درجه k با ضرایب ثابت به صورت زیر است: an = c 1 a n-1 +c 2 a n-2 +....+ck a n-k +f(n) یک تابع بر حسب N = 0اعداد ثابت حقیقی رابطه ی باز گشتی خطی از درجه1 و نا همگن a n – a n-1 = 3n^2

  45. حل روابط بازگشتی درجه اول رابطه a n = 2a n-1 +1 که در آن N>=1 و a1=1 را حل کنید. a2= 2a1+1=2*1+1=3=4-1=2^2 - 1 a3= 2a2+1=2*3+1=7=8-1=2^3-1 a4= 2a3+1=2*7+1=16-1=2^4 -1 ............ an= 2an-1+1= 2^n - 1

  46. حل روابط بازگشتی همگن مرتبه دوم با ضرایب ثابت cn a n + c n-1 a n-1 + c n-2 a n-2 = 0 c n r^2 + c n-1 r + c n-2 =0 :1 دوجواب حقیقی و مجازی r1 , r2 a n = c 1 r 1^n + c 2 r 2^n 2: اگر معادله یک ریشه حقیقی مضاعف r1 a n = c 1 r 1 ^n + c 2 nr 1 ^n 3: ریشه های مختلط r1 , r2 را داشته باشد جواب حالت 1

  47. روابط بازگشتی از مدل تقسیم و غلبه T(n)= aT(n/b) T(n)=1 مثلا برای a=4 , b=5 , n=25 تعداد صدا زدن ها به شکل زیر است: T(25) T(5) T(5) T(5) T(5) T(1)T(1)T(1)T(1)

  48. ارتفاع درخت شکل فوق برابر 2 است یعنی Log 5 25= 2 که در حالت کلی log b n میشود . هر گره به a انشعاب تقسیم میشود. تعداد کل صدا زدن ها در درخت درجه a به ارتفاع h =1+a+a^2 +....+a^h 1*(a^h+1 – 1) a=1 a-1 4 ^ 1+log 5 25 -1= 4^3 - 1 = 63 = 21 4-1 3 3

  49. قضایای اصلی قضیه 1 a=1T (n)= aT(n/b) 0(a^ log b n )= o(nlogba) T (1)= 1 0( log b n) a=1 قضیه 2 a ,b, k اعداد مثبت a>=1 , b>1 هستند

More Related