تالار گفتمان مانشت
پیچیدگی زمانی این تابع بازگشتی ؟ - نسخه‌ی قابل چاپ

پیچیدگی زمانی این تابع بازگشتی ؟ - sipser - 26 خرداد ۱۳۹۳ ۰۸:۱۸ ب.ظ

پیچیدگی این تابع:

RE: پیچیدگی زمانی این تابع بازگشتی ؟ - Morris - 26 خرداد ۱۳۹۳ ۰۸:۵۰ ب.ظ

تابع بازگشتی پیچیدگی زمانی این تابع به صورت زیر است :


[tex]T(n)=T(n-1) 1[/tex]
[tex]T(1)=1[/tex]

مرتبه این تابع هم برابر است :



[tex]\theta(n)[/tex]

RE: پیچیدگی زمانی این تابع بازگشتی ؟ - sipser - 27 خرداد ۱۳۹۳ ۱۰:۴۹ ب.ظ

چطور T(n)=T(n-1)+1 رو به دست آوردید راه حلش چی هست؟ با سپاس

RE: پیچیدگی زمانی این تابع بازگشتی ؟ - fatemeh69 - 27 خرداد ۱۳۹۳ ۱۱:۰۹ ب.ظ

با نگاه کردن به تابع داده شده می بینیم که اگر n==1 بود که m را بر می گرداند در غیر این صورت تابع f را با مقدار n-1 صدا می زند.
در واقع وقتی f(n,m) را اجرا می کنید در ابتدا یک مقایسه انجام می شود و سپس در مورد ادامه مسیر تصمیم می گیرد خب همین مقایسه یک واحد پیچیدگی دارد. اگه n==1 نبود باید رفت f(m, n-1) رو اجرا کرد پس در حالتی که n==1 نباشد پیچیدگی f(m,n) با پیچیدگی f(n, m-1) برابر است.
با توجه به این که در این تابع m هیچ کاره است متوجه می شویم که پیچیدگی تنهابه n بستگی دارد پس پیچیدگی تابعی از n است. اگر فرض کنیم که پیچیدگی f(m,n) را با T(n) نشان دهیم و فرض کنیمکه n==1 نباشد پس باید اول یک مقایسه انجام دهیم و بعد می دانیم که در شرط n==1 صدق نمی کند و باید f(m,n-1) را صدا کنیم. پس t(n) برابر می شود با پیچیدگی چک کردن شر که برابر است با ۱ و پیچیدگی اجرای f(m,n-1) که برابر است با T(n-1) پس می توان نوشت:
T(n)=T(n-1)+1
و اگر هم n==1 باشد پیچیدگی تنها یک مقاسه ی if و برگشتن مقدار m است پس T(1)=1
حالا چطور رابطه ی T(n)=T(n-1)+1 را حل کنیم:
راحت ترین روش جایگذاری است:
T(1)=1
T(2)=T(1)+1=1+1=2
T(3)=T(2)+1=2+1=3
..
.
T(n)=T(n-1)+1=n-1+1=n.