(۲۳ شهریور ۱۳۹۲ ۰۵:۴۹ ب.ظ)Soodabezare نوشته شده توسط: سلام من که اینجا یه شاگردم ولی جسارتا جواب میدم
هر دورو می تونی از طریق قضیه master به دست بیاری
با توجه به اینکه n به توان log 7 در مبنای ۸ مرتبه بیشتری از n داره اولی میشه n به توان log 7 در مبنای ۸
برای دومی از ۲ داخل پرانتز صرف نظر می کنی با توجه به اینکه مرتبه n به توان log 1 خطی میشه پس مرتبه logn بیشتره و اون میشه جواب
امیدوارم واضح گفته باشم
سلام :-)
Soodabezare عزیز، اولی رو اشتباه حل کردین و دومی هم مستر رو نمیشه براش استفاده کرد :-)
(۲۳ شهریور ۱۳۹۲ ۰۵:۳۸ ب.ظ)zerocool_ir نوشته شده توسط: با سلام
اساتید گرامی میشه لطفا راهنمایی کنید این دوتا پیچیدگی زمانی چطور بدست می آید ؟
ممنون میشم اگر توضیح بدهید ...
T(7N/8)+8N
T(N+2) + logN
با تشکر پیشاپیش
در مورد اولی، قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش که در اینجا a = 1 و b = 8/7 هستش. طبق قضیه اصلی (همون مستر) باید این دو تابع مقایسه بشن (البته اینجا شهودی بررسی میکنیم):
nlogba=nlog871=n0=1
و
f(n)=8n
چون (f(n سرعت رشدش بیشتر از ۱ هستش، پس جواب میشه
T(n)=Θ(8n)=Θ(n)
در مورد دومی، چون قضیه مستر برای روابط به شکل (T(n) = aT(n/b) + f(n هستش و اینجا به کار نمیاد. احتمالاً منظورتون T(n-2) + logN هستش، چون اون چیزی که شما نوشتین هیچوقت به شرط پایه نمیرسه. با همین فرض صورت سؤال شما به صورت زیر میشه:
T(n)=T(n−2)log(n)
برای حل این رابطه میتونیم بسطش بدیم:
T(n)=T(n−2)log(n)=(T(n−4)log(n−2))log(n)=((T(n−6)log(n−4))log(n−2))log(n)=...=T(0)log(2)log(4)log(6)log(8)...log(n−2)log(n)
به جای پایه (همون
T(0)) هر عدد ثابتی میتونه باشه. ما اینجا برای راحتی عدد ۰ رو فرض میکنیم. با این جایگذاری داریم:
T(n)=∑n2i=1log(2i)
با حل این رابطه داریم:
T(n)=∑n2i=1log(2i)=log((n)(n−2)(n−4)...(4)(2))=log(2n2×(n2)!)=log(2n2)log((n2)!)=n2Θ(n2log(n2))=Θ(n)Θ(n⋅log(n))=Θ(n⋅logn)
بنابراین جواب رابطهی دوم میشه
T(n)=Θ(n⋅logn)
در مورد اولی یک راه سادهتر و شهودیتر هم هست برای فکر کردن بهش. در هر مرحله تعداد عناصر ما ۷/۸ برابر میشه. بنابراین تعداد عملیات ما (همون بخش غیر بازگشتی رابطه) میشه:
تعداد عملیات مرحله اول:
8n
تعداد عملیات مرحله دوم:
8×(78)n
تعداد عملیات مرحله سوم:
8×(78)2n
تعداد عملیات مرحله چهارم:
8×(78)3n
و...
بنابراین تعداد کل عملیات ما میشه مجموع یک سری هندسی بینهایت با ضریب q = 7/8 و جملهی اولیهی a = 8n که نتیجهاش برابره با:
T(n)=a1−q=8n1−78=64n=Θ(n)