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

مرتبه زمانی بازگشتی - ana9940 - 02 دى ۱۳۹۳ ۰۲:۰۷ ب.ظ

کسی میتونه بگه چرا مرتبه زمانی این سوال از nlogn هست؟؟

[tex]T(n)\: =\: \frac{2}{n}\sum^{n-1}_{k=0^{ }}T(k)\: \: n[/tex]

واسه راهنمایی گفته شده که طرفین رو در n ضرب کنیم و سپس T(n-1) رو پیدا کرده و از T(n) کم کنیم ولی من با این راه به جواب n میرسم!!!

راه حلم توی ضمیمه هست. البته آخرش رو شانسی گفتم میشه n

RE: مرتبه زمانی بازگشتی - Mohammad-A - 04 دى ۱۳۹۳ ۰۶:۵۶ ب.ظ

سلام.
فکر میکنم خط چهارم راه حلتون درست نیست. به علاوه اینکه توجه کنید حتی اگر به همین جواب آخر هم می‌رسیدید، مرتبه‌ی جواب از n نمیشد و از مرتبه‌ی [tex]O(n^2)[/tex] میشد.

فکر میکنم راه حل سؤال به این شکل هست:

[tex]nT(n)=2\sum_{k=0}^{n-1}T(k) n[/tex]

[tex](n-1)T(n-1)=2\sum_{k=0}^{n-2}T(k) n-1[/tex]

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

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

[tex]T(n)=\frac{n 1}{n}T(n-1) \frac{1}{n}[/tex]

بعد از این برای پیدا کردن مرتبه، میشه از جایگذاری مکرر کمک گرفت:

[tex]T(n)=\frac{n 1}{n}(\frac{n}{n-1}(\frac{n-1}{n-2}...(\frac{n-n 2}{n-n 1})) \frac{1}{n})[/tex]

همانطور که می‌بینید، در این ضرب‌های مکرر، صورت و مخرج‌های پی‌درپی با هم ساده میشن، در نهایت فکر میکنم چیزی که می‌مونه اینطور میشه:
[tex]2(n 1)logn \in O(nlogn)[/tex]

چون [tex]\frac{1}{n}[/tex] در نهایت مرتبه‌ی logn داره و در جایگذاری مکرر هم دیدیم که یک مرتبه‌ی در logn ضرب خواهد شد.