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

تابع بازگشتی - Shokoufe.S - 04 مرداد ۱۳۹۱ ۰۶:۰۹ ب.ظ

سلام
من از تابع بازگشتی های زیر مشکل دارم ممنون میشم هر کسی که بلده واسم توضیح بده.Blush

t(n)=3t(n/3+5)+n/2

t(n)=t(n-1)+2lgn

تابع بازگشتی - Jooybari - 05 مرداد ۱۳۹۱ ۰۳:۳۶ ق.ظ

سلام. سوال اول چون مقدار n بزرگ فرض میشه و دنباله هم لگاریتمیه، میتونید بنویسید t(n)=3t(n/3)+n/2. مشکلی پیش نمیاد. بجای (t(n/ 3^1000 باید بنویسیم (t(n/ 3^1000+7.5. جوابشم از روی درخت بازگشت و یا روش های دیگه بدست میاد. میشه n/2+3*n/6+9*n/27+... که میشه از مرتبه nlgn.
سوال دوم رو میشه اینجوری نوشت:
t(n)=t(n-1)+2lgn
(t(n-1)=2t(n-2)+2lg(n-1
...
t(2)=2t(1)+2lg1
نتیجه میگیریم:
t(n)=2lgn+2lg(n-1)+2lg(n-2)+...+2lg2
میدونیم lgn=lg(n/2)+1 و n تا جمله داریم. پس از مرتبه nlgn میشه.

RE: تابع بازگشتی - Shokoufe.S - 05 مرداد ۱۳۹۱ ۰۵:۱۳ ب.ظ

(۰۵ مرداد ۱۳۹۱ ۰۳:۳۶ ق.ظ)Jooybari نوشته شده توسط:  سلام. سوال اول چون مقدار n بزرگ فرض میشه و دنباله هم لگاریتمیه، میتونید بنویسید t(n)=3t(n/3)+n/2. مشکلی پیش نمیاد. بجای (t(n/ 3^1000 باید بنویسیم (t(n/ 3^1000+7.5. جوابشم از روی درخت بازگشت و یا روش های دیگه بدست میاد. میشه n/2+3*n/6+9*n/27+... که میشه از مرتبه nlgn.
سوال دوم رو میشه اینجوری نوشت:
t(n)=t(n-1)+2lgn
(t(n-1)=2t(n-2)+2lg(n-1
...
t(2)=2t(1)+2lg1
نتیجه میگیریم:
t(n)=2lgn+2lg(n-1)+2lg(n-2)+...+2lg2
میدونیم lgn=lg(n/2)+1 و n تا جمله داریم. پس از مرتبه nlgn میشه.
اگه اولی از مستر حل بشه میشه
f(n)=n/2 و n^log3 با پایه ۳ که میشه n
n از n/2 بزرگتره و جواب میشه از مرتبه n
اگه بخوام جوابم مثل شما بشه باید n=n/2 در نظر بگیرم که جوابم در اونصورت nlogn میشه!!
کجارو دارم غلط میگم که جوابم اشتباه بدست میاد؟Huh

واسه دومی هم میشه یکم در مورد اینکه lgn=lg(n/2)+1 رو چه طور به حل ربط دادید یه کم بیشتر توضیح بدید؟
خیلی ممنون Blush

تابع بازگشتی - Jooybari - 05 مرداد ۱۳۹۱ ۰۸:۳۸ ب.ظ

سوال ۱ حالت خاص قضیه مستره. توی این حالت مستر جواب نمیده.

سوال ۲ مجموع n/2 جمله اول میشه:

[tex]n\lg n\geq\lg n \lg(n-1) ... \lg(n/2)\geq (\lg n-1)\times \frac{n}{2}=\frac{n\lg n}{2}-\frac{n}{2}\in \theta(n\times\lg n)[/tex]

نصف دیگه جملات که از این مقدار کمترن.