سلام .
این دو تا سوالی که در ادامه پرسیدی سوال های جالبی هستن که دوستان با تحلیلشون هم یه جور دست گرمی هستش و هم میتونن نتایج جالب و جدیدی رو کسب کنن.
سوال اول
T(n)=2T(n−1)logn
که فک کنم
من در آوردی بوده 
چون من ندیدم همچین T رو توی تست ها و تمرینها فقط یه جایی این سوال رو دیدم اونم توی مقاله ی خارجی بود که یه الگوریتم ابداعی روی Max-Heap داشت که T الگوریتم همین میشد ولی در کل جالبه و البته دارای ابهام .
اول به این مسئله زیر که امیر جان خودتم به درستی حلش کردی نگاهی بندازیم چون در ادامه به دردمون میخوره
T(n)=T(n−1)logn⇒
T(n−2)log(n−1)logn.....=...log(n−1)logn=log(n!)=θ(nlogn)
طبق قضیه ای که توی کتاب CLRS بهش اشاره شده با استفاده از تقریب استرلینگ(کتاب الگوریتم محاسبات دانشگاه MIT این تقریب رو کامل توضیح داده) میتونیم بگیم که چون تفاوت لگاریتم ها اونقدری نیست که در تابع اثر بزاره و ما چون داریم به صورت حدی نیز کار میکنیم پس میتونیم در واقع فرض کنیم که همه ی لگاریتم ها همون logn هستند که میشه n تا logn که باعث میشه تساوی
logn!=θ(nlogn) درست باشه.
حالا این دوستمون که گفتن جواب
2nlogn تقریبا با اثباتی که در زیر میارم و با توجه به نکته ی بالا درست گفتن ولی در ادامه میبینیم که اینم شاید جواب درست نباشه
اثبات اول
درخت بازگشت :
اگر بخوایم از طریق درخت بازگشت حل کنیم هزینه هر سطح درخت به صورت زیر محاسبه میشه :
log(n)2log(n−1)4log(n−2)8log(n−3)16log(n−4).....
خب حالا جمع کردن این هزینه ها یه کم کار سختیه چون لگاریتم ها با هم متفاوت هستن . ولی اگر از همون قضیه تقریب استرلینگ استفاده کنیم میتونیم فرض کنیم که مسئله به صورت زیر جمع میشه :
log(n)2log(n−1)4log(n−2)8log(n−3)16log(n−4).....⇒
2n−1(logn)⇒2nlogn−logn=θ(2nlogn)
همون طوری که میبینیم اینجا نیز فرض کردیم که همه ی لگاریتم ها برابر هستند که باعث میشه فرض کنیم
2n تا
logn داریم که جواب میشه
θ(2nlogn)
اثبات دوم
معادله مشخصه :
روش دوم که بر اساس معادله مشخصه ناهمگن هستش باعث میشه که یه جورایی اثبات اول زیر سوال بره.
برای حل این معادله به این روش یه کم کار سخته ولی با محاسبه T های زیر که حد پایین و بالای مسئله رو محاسبه میکنه ما رو کمک میکنه .
برای این دو تا مثال شرایط اولیه رو ۱ فرض میکنیم :
T(n)=2T(n−1)1⇒αn−2αn−1−1⇒2nα=θ(2n)
T(n)=2T(n−1)n⇒αn−2αn−1=n⇒2nn=θ(2n)
خب در اینجا ما حد پایین و بالای مسئله رو اثبات کردیم که از مرتبه ی
θ(2n) پس در نتیجه مسئله ما هم باید از همین مرتبه باشه


سوال دوم
T(n)=T(n2)T(n4)T(n8)n
واسه این معادله مشخصه کاربرد نداره چون با تغییر متغیر
n=2m داریم
T(2m)=T(2m−1)T(2m−2)T(2m−3)2m⇒
F(m)=F(m−1)F(m−2)F(m−3)m⇒
حالا معادله قسمت همگن این عبارت به صورت زیر هستش
x3−x2−x−1=0
اگر کسی بتونه ریشه های این معادله رو به دست بیاره اولا بهش تبریک میگم دوما قطعا به راحتی به جواب این مسئله میرسه
خب میریم سراغ روش دوم یعنی درخت بازگشت و هزینه سطوح درخت به صورت زیر است
(nn78n6364...)
اینجا کار یه کم سخته ولی باز یه قاعده هستش که ما رو کمک میکنه این قاعده رو در CLRS بهش اشاره شده و فک کنم آقای یوسفی هم بهش اشاره کرده :
(121418116...)=c
این قضیه داره میگه که جمع این سری همیشه یه عدد ثابت میشه و این باعث میشه که سری زیر به این صورت حل بشه
nn2n4n8...=n(1121418116...)=nc=θ(n)
حواسمون باشه که این با سری
n(112131415...)=θ(nlogn) تفاوت داره چون سری اعداد اینجا خیلی بزرگتر هستش
و در ادامه اگر به سری اعداد خودمون توجه کنیم میبینیم که از سری اعداد
1214116132... خیلی کوچیکتره و
n(1786364...)=nc=θ(n)