(۱۸ شهریور ۱۳۹۲ ۰۱:۲۵ ق.ظ)SnowBlind نوشته شده توسط: سلام به همه
من یه سوال واسم پیش اومده بود و اون اینکه یه رابطه به فرمT(n)=2T(n2)nlogn میتونیم با قضیه مستر حل کنیم؟
و سوال دون اینکه ما میتونیم این رابطه رو با قضیه مستر حل کنیم؟ T(n)=4T(n2)n2log2 n، اگه جواب به این سوال مثبته، پس چرا اینو نمیشه حل کرد؟ T(n)=2T(n2)nlog n
با سلام خدمت شما دوست عزیز
در پاسخ کلی به سوالتون فکر میکنم خودتون هم فهمیدید با قضیه مستر نمیشه مرتبه زمانی هر تابع بازگشتی رو بدست آورد ولی اینکه کجا نمیشه ازش استفاده کرد رو میشه به راحتی متوجه شد قضیه مستر بین حالتهای ۱و۲ و ۲و۳ دارای ۲ شکاف که وقتی تابعی تو یکی از این شکافها افتاد دیگه از مستر نمیشه استفاده کرد روش فهمیدنش به این شکله که اگر تابع بازگشت به فرم
T(n)=aT(n/b)f(n) باشه و وقتی
n^\log _{b}^{a}\textrm{} رو تشکیل دادی و از
f(n) کوچیکتر شد نمیتوند بگید قطعا حالت ۳ اتفاق افتاده بلکه باید بصورت چند جمله ای
f(n) از
n^\log _{b}^{a}\textrm{} بزرگتر باشه یعنی اگر
f(n)/n^\log _{b}^{a}\textrm{} رو بدست بیاری باید حاصلش بشه
nξ مشروط به اینکه
ξ>0اگه چنین چیزی برقرار نباشه شما تو شکاف بین حالت ۲ و ۳ مستر گیر کردی و نمیتونی از مستر استفاده کنی همین حالت هم واسه شکاف بین ۱و۲ منتهی اون کسری که حاصلش
nξ رو باید برعکس بسازی و بررسی کنی
تمام مثالهای که تو سوالت مطرح کردی طبق چیزی که گفتم بین شکاف ۲و۳ گیر میکنه و نمیشه از مستر استفاده کرد البته یه تبصره کوچیک برای توابع خاصی که
f(n) اونا لگاریتمی و توی شکاف ۲ و ۳ گیر میکنن وجود داره که بازم میشه از مستر استفاده کرد به عنوان نمونه بجز مثال اولی که گفتید یعنی
T(n)=2T(n/2)nlogn اون دوتای دیگه رو با اینکه بین شکاف ۲و ۳ میفتن میشه با اون تبصره که گفتم حل کرد
توضیحات بیشتر رو میتونید تو کتاب ساختمان داده یا طراحی پوران یا کتاب کورمن مطالعه بفرمایید