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

آنالیز استهلاکی - vajihehsalehi - 09 بهمن ۱۳۹۵ ۰۱:۵۵ ب.ظ

سلام
لطفا در مورد سوال زیر راهنمایی کنید
دنباله ای از n عمل روی یک ساختمان داده اجرا شده است.هزینه هر عمل i برابرi است اگر iتوانی از ۲ باشد و در غیر این صورت هزینا عمل برابر ۱ است. هزینه استهلاکی به ازای هر عمل را بیابید.

RE: آنالیز استهلاکی - Pure Liveliness - 09 بهمن ۱۳۹۵ ۰۲:۳۰ ب.ظ

سلام.
باید هزینه ی عمل ها رو توی بدترین حالت حساب کنیم و به تعداد تقسیم کنیم تا هزینه ی استهلاکی هر عمل به دست بیاد.
هزینه ی عمل ۱: ۱
هزینه ی عمل ۲: ۲
هزینه ی عمل ۳: ۱
هزینه ی عمل ۴: ۴
هزینه ی عمل ۵: ۱
هزینه ی عمل ۶: ۱
هزینه ی عمل ۷: ۱
هزینه ی عمل ۸: ۸
هزینه ی عمل ۹: ۱
.
.
.
هزینه ی عمل nام: ؟

همونطور که توی صورت سوال گفته هزینه ی عمل i ام اگر i توانی از دو باشه برابر i هست.
خب این توان دو ها یه دنباله رو تشکیل میدن:
[tex]۲^۰+۲^۱+۲^۲+۲^۳+...+۲^k[/tex] که خب میدونیم که [tex]2^k[/tex] حداکثر برابر با n هست. چون هزینه ی عمل nام اگر n توانی از دو باشه برابر با n یا همون [tex]2^k[/tex] میشه و در غیر اینصورت میشه ۱.
خب این جمع هزینه ی اعمالی هست که هزینه شون ۱ نیست که میشه:
[tex]2^0+2^1+...+2^k=\frac{(2^{k+1}-1)}{2-1}=2^{k+1}-1[/tex]
ولی تعداد اون اعمالی که هزینه شون ۱ هست چند تاست؟
کلا n تا عمل بود. k+1 تاش هزینه شون توان دو بود. چرا؟ دنباله رو نگاه کنید از ۰ تا k میشه k+1
پس کلا هزینه ی اعمال با هزینه ی ۱ میشه [tex]n-(k+1)[/tex] یعنی به تعدادشون.
کل هزینه هامون تقسیم بر تعداد میشه:
[tex]\frac{[2^{k+1}-1+(2^{k}-k+1)]}{n=2^k}=\frac{2^{k+1}}{2^k}-\frac{1}{2^k}+\frac{2^{k}-(k+1)}{2^k}=2-0+1+0[/tex] اون دو تا وقتی k بزرگ بشه به ۰ میل میکنن. پس هزینه ی استهلاکی هر عمل برابر با c+3 هست. (اگه آخرش اشتباه نکرده باشم.)

RE: آنالیز استهلاکی - hasanmousavi - 09 بهمن ۱۳۹۵ ۰۳:۰۱ ب.ظ

(۰۹ بهمن ۱۳۹۵ ۰۲:۳۰ ب.ظ)Pure Liveliness نوشته شده توسط:  سلام.
باید هزینه ی عمل ها رو توی بدترین حالت حساب کنیم و به تعداد تقسیم کنیم تا هزینه ی استهلاکی هر عمل به دست بیاد.
هزینه ی عمل ۱: ۱
هزینه ی عمل ۲: ۲
هزینه ی عمل ۳: ۱
هزینه ی عمل ۴: ۴
هزینه ی عمل ۵: ۱
هزینه ی عمل ۶: ۱
هزینه ی عمل ۷: ۱
هزینه ی عمل ۸: ۸
هزینه ی عمل ۹: ۱
.
.
.
هزینه ی عمل nام: ؟

همونطور که توی صورت سوال گفته هزینه ی عمل i ام اگر i توانی از دو باشه برابر i هست.
خب این توان دو ها یه دنباله رو تشکیل میدن:
[tex]۲^۰+۲^۱+۲^۲+۲^۳+...+۲^k[/tex] که خب میدونیم که [tex]2^k[/tex] حداکثر برابر با n هست. چون هزینه ی عمل nام اگر n توانی از دو باشه برابر با n یا همون [tex]2^k[/tex] میشه و در غیر اینصورت میشه ۱.
خب این جمع هزینه ی اعمالی هست که هزینه شون ۱ نیست که میشه:
[tex]2^0+2^1+...+2^k=\frac{(2^{k+1}-1)}{2-1}=2^{k+1}-1[/tex]
ولی تعداد اون اعمالی که هزینه شون ۱ هست چند تاست؟
کلا n تا عمل بود. k+1 تاش هزینه شون توان دو بود. چرا؟ دنباله رو نگاه کنید از ۰ تا k میشه k+1
پس کلا هزینه ی اعمال با هزینه ی ۱ میشه [tex]n-(k+1)[/tex] یعنی به تعدادشون.
کل هزینه هامون تقسیم بر تعداد میشه:
[tex]\frac{[2^{k+1}-1+(2^{k}-k+1)]}{n=2^k}=\frac{2^{k+1}}{2^k}-\frac{1}{2^k}+\frac{2^{k}-(k+1)}{2^k}=2-0+1+0[/tex] اون دو تا وقتی k بزرگ بشه به ۰ میل میکنن. پس هزینه ی استهلاکی هر عمل برابر با c+3 هست. (اگه آخرش اشتباه نکرده باشم.)
داداش فکر می کنم آخرش اشتباه شد فکر می کنم از جملات کوچکتر در صورت صرف نظر میشه
جواب میشه ۲ .

RE: آنالیز استهلاکی - Pure Liveliness - 09 بهمن ۱۳۹۵ ۰۳:۲۸ ب.ظ

(۰۹ بهمن ۱۳۹۵ ۰۳:۰۱ ب.ظ)hasanmousavi نوشته شده توسط:  
(09 بهمن ۱۳۹۵ ۰۲:۳۰ ب.ظ)Pure Liveliness نوشته شده توسط:  …..
کل هزینه هامون تقسیم بر تعداد میشه:
[tex]\frac{[2^{k+1}-1+(2^{k}-k+1)]}{n=2^k}=\frac{2^{k+1}}{2^k}-\frac{1}{2^k}+\frac{2^{k}-(k+1)}{2^k}=2-0+1+0[/tex] اون دو تا وقتی k بزرگ بشه به ۰ میل میکنن. پس هزینه ی استهلاکی هر عمل برابر با c+3 هست. (اگه آخرش اشتباه نکرده باشم.)
داداش فکر می کنم آخرش اشتباه شد فکر می کنم از جملات کوچکتر در صورت صرف نظر میشه
جواب میشه ۲ .
اگر که بزرگترین جمله ی صورت و مخرج رو در نظر بگیریم و قید [tex]2^k[/tex] رو در برابر [tex]2^{k+۱}[/tex] بزنیم بله میشه ۲+c
اما اگه در نظر بگیریم [tex]2^k[/tex] رو اونوقت میشه ۳+c
البته گویا درستش این هست که بزرگترین جملات صورت و مخرج رو در نظر بگیریم. دکتر یوسفی هم همین طور انگار حساب میکنن.