سوال مرتبه اجرایی - نسخهی قابل چاپ |
سوال مرتبه اجرایی - meiiika - 19 اردیبهشت ۱۳۹۲ ۰۳:۲۲ ب.ظ
الگوریتم زیر را در بهتربن و بدترین حالت محاسبه کنید K=0 For i= 0 to n do For j=1 to T[i] do K=k+t[j] [/code] و مرتبه اجرایی این برنامه Sum=0 FOR i=1 To N do For j=1 to I*2 do If(j mod i=0) then For k :=1 to j do Sum := Sum+1 |
RE: سوال مرتبه اجرایی - Mohammad WR10 - 19 اردیبهشت ۱۳۹۲ ۰۶:۳۵ ب.ظ
(۱۹ اردیبهشت ۱۳۹۲ ۰۳:۲۲ ب.ظ)meiiika نوشته شده توسط: الگوریتم زیر را در بهتربن و بدترین حالت محاسبه کنید واسه اولی نمیدونم T[i] چنده ولی احتمالا همون N^2 هست. |
سوال مرتبه اجرایی - Jooybari - 19 اردیبهشت ۱۳۹۲ ۰۸:۴۴ ب.ظ
سلام. برای سوال دوم شرط داخل حلقه دوم فقط به ازای j=i و j=2i برقراره. پس حلقه داخلی ۳ برابر مقدار هر i تکرار میشه. پیچیدگیش میشه [tex]T(n)=3(1 2 3 ... n)\in \theta (n^2)[/tex] |
RE: سوال مرتبه اجرایی - azad_ahmadi - 19 اردیبهشت ۱۳۹۲ ۰۹:۳۰ ب.ظ
(۱۹ اردیبهشت ۱۳۹۲ ۰۳:۲۲ ب.ظ)meiiika نوشته شده توسط: الگوریتم زیر را در بهتربن و بدترین حالت محاسبه کنید بهترین حالت زمانی هست که به ازای هر i، [tex]T[i] = 0[/tex] باشه. یعنی حلقه دومی اصلا اجرا نشه. در این صورت زمان اجرای کد برابر هست با حلقه اولی که میشه همون [tex]\Theta(n)[/tex] . بدترین حالت زمانی هست که برای هر i ، [tex]T[i] = n[/tex] باشه که در این صورت برای هر i، حلقه دومی از ۱ تا n تکرار میشه. در این صورت هزینه زمانی برابر هست با [tex]\Theta(n^{2})[/tex] . |
سوال مرتبه اجرایی - Jooybari - 19 اردیبهشت ۱۳۹۲ ۱۰:۵۲ ب.ظ
خوب بازه ای برای T تعریف نشده. شاید تا n نباشه. احتمالاً یه چیزی از صورت سوال حذف شده. درضمن سوال اول مقدار رو میخاد نه پیچیدگی رو. هر بار مقدار [T[j رو به حاصل اضافه میکنه. با فرض اینکه تابع T یک جایگشت از اعداد ۰ تا n هست سوال رو حل میکنم. حلقه داخلی به اندازه مقدار تابع T تکرار میشه. یعنی از ۰ بار تا n بار با ترتیب نامشخص. حاصل k درنهایت برابر [tex]\sum_{i=1}^n(n 1-i)T[i][/tex] میشه. (اولین مقدار از آرایه در تابع داخلی استفاده نمیشه.) پس در بیشترین حالت وقتیه که اعداد دنباله باشه [tex]0,n,n-1,n-2,...,1[/tex] و کمترین حالت میشه [tex]n,0,1,2,3,...,n-1[/tex]. پس بیشترین حالت میشه [tex]\sum_{i=1}^n(n 1-i)^2=\sum_{i=1}^ni^2[/tex] و کمترین حالتش میشه [tex]\sum_{i=1}^n(i-1)(n 1-i)=\sum_{i=0}^{n-1}i(n-i)[/tex]. |