زمان کنونی: ۳۰ فروردین ۱۴۰۳, ۰۵:۵۱ ب.ظ مهمان گرامی به انجمن مانشت خوش آمدید. برای استفاده از تمامی امکانات انجمن می‌توانید عضو شوید.
گزینه‌های شما (ورودثبت نام)

آنالیز زمانی این برنامه؟

ارسال:
  

JetiX پرسیده:

آنالیز زمانی این برنامه؟

دوستان توی مبحث آنالیز زمانی واقعا ممنون میشم کمکم کنید
سپاسگزارم.


مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمی‌باشید. جهت مشاهده پیوندها ثبت نام کنید.
نقل قول این ارسال در یک پاسخ

۰
ارسال:
  

Pure Liveliness پاسخ داده:

RE: آنالیز زمانی این برنامه؟

سلام. مطمئن نیستم درست باشه :|
trace می کنیم.
در ابتدا : Dec=0
در حلقه ی اول:
i=0 … j=1 … [tex]l=power(2,i)=2^0=1[/tex]
چون j=l هست پس شرط while یه بار درست هست و داخلش اجرا میشه.
درون while :
s=1 … ++dec
s=4 … ++dec
s=7 … ++dec
s=10 … ++dec
.
.
s=n*n … ++dec
در انتهای while : j=j*2=2
چند بار ++dec انجام شده؟ از ۱ تا n به توان ۲ با گام ۳ : [tex]\frac{n^2}{3}[/tex]بار تقریبا
------------------------------------------------------------------------------------
i=1 … j=1 … [tex]l=power(2,i)=2^1=2[/tex]
شرط while در ابتدا درست هست که j=1 و l=2 شده.
درون while :
s=1 … ++dec
s=4 … ++dec
s=7 … ++dec
s=10 … ++dec
.
.
s=n*n … ++dec
در انتهای while : j=j*2=2.
چند بار ++dec انجام شده؟ از ۱ تا n به توان ۲ با گام ۳ : [tex]\frac{n^2}{3}[/tex]بار تقریبا
حالا j=2 شده و l هم که درست هست، پس یه بار دیگه شرط while درست هست و داریم:
درون while :
s=1 … ++dec
s=4 … ++dec
s=7 … ++dec
s=10 … ++dec
.
.
s=n*n … ++dec
در انتهای while : j=j*2=2.
چند بار ++dec انجام شده؟ از ۱ تا n به توان ۲ با گام ۳ : [tex]\frac{n^2}{3}[/tex]بار تقریبا
------------------------------------------------------------------------------------
i=2 … j=1 … [tex]l=power(2,i)=2^2=4[/tex]
شرط while دفعه ی اول که j=1 هست، دفعه ی دوم که j=2 میشه و دفعه ی سوم که j=4 میشه درست هست چون از l کوچیکتر هست. پس سه بار داخل حلقه ی while اجرا میشه.
------------------------------------------------------------------------------------
i=3 … j=1 … [tex]l=power(2,i)=2^3=8[/tex]
شرط while دفعه ی اول که j=1 هست، دفعه ی دوم که j=2 میشه و دفعه ی سوم که j=4 میشه و دفعه ی چهارم که j=8 میشه درست هست چون از l کوچیکتر هست. پس چهار بار داخل حلقه ی while اجرا میشه.
------------------------------------------------------------------------------------
i=4 … j=1 … [tex]l=power(2,i)=2^4=16[/tex]
شرط while دفعه ی اول که j=1 هست، دفعه ی دوم که j=2 میشه و دفعه ی سوم که j=4 میشه و دفعه ی چهارم که j=8 میشه و دفعه ی پنجم هم درست هست چون از l کوچیکتر هست. پس پنج بار داخل حلقه ی while اجرا میشه.
خب پس به ازای هر i اون حلقه ی while به اندازه ی [tex]\log l\: +1[/tex] بار انجام میشه و هر بار هم هزینه ش میشه [tex]\theta(n^2)[/tex]
[tex]l=2^i[/tex]
[tex]\sum^{n-1}_{i=1}\log2^i+1[/tex] بار حلقه ی while اجرا میشه که هر بار هزینه ش [tex]\theta(n^2)[/tex] هست.
پس کل هزینه و مقدار نهایی dec میشه : [tex]n^2\times\sum^{n-1}_{i=1}\log2^i+1=n^2\times\sum_{i=1}^{n-1}i+1=n^2\times[2+3+...+n]=\theta(n^4)[/tex]
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  کمک برای شروع برنامه نویسی seyed ehsn ۲۱ ۱۴,۲۱۲ ۲۴ بهمن ۱۴۰۲ ۰۵:۱۰ ب.ظ
آخرین ارسال: maryamjafari63
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۳,۸۹۷ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  رودمپی برای برنامه نویسی Doctorwho ۱ ۱,۷۶۸ ۲۵ آذر ۱۴۰۰ ۰۳:۰۲ ق.ظ
آخرین ارسال: one hacker alone
  کمک در باره این تروجان Ghasemiyeh ۲ ۲,۶۶۰ ۲۵ آذر ۱۴۰۰ ۰۳:۰۰ ق.ظ
آخرین ارسال: one hacker alone
  استخدام برنامه نویس یا کارآموز برنامه نویسی سی شارپ Hesitant_Girl ۰ ۱,۴۸۲ ۲۰ شهریور ۱۴۰۰ ۱۲:۰۲ ب.ظ
آخرین ارسال: Hesitant_Girl
  رودمپی برای یادگیری برنامه نویسی Doctorwho ۰ ۱,۵۶۷ ۲۳ اردیبهشت ۱۴۰۰ ۱۱:۲۲ ق.ظ
آخرین ارسال: Doctorwho
  درخواست برنامه برای اردینو در iot seokheiry ۱ ۲,۹۷۳ ۱۳ بهمن ۱۳۹۹ ۱۲:۵۵ ب.ظ
آخرین ارسال: iot-programer
  چگونه این خطا را موقع اجرای sql server 2014 رفع کنم ؟ farahnaz ۲ ۲,۶۲۳ ۱۹ مهر ۱۳۹۹ ۰۲:۱۸ ق.ظ
آخرین ارسال: farahnaz
  کدام زبان برنامه‌نویسی بهترین انتخاب است؟ elecomco ۲ ۲,۷۶۲ ۱۰ شهریور ۱۳۹۹ ۰۵:۱۶ ب.ظ
آخرین ارسال: kilookiloo
Sad مشکل در برنامه نویسی شیء گرا Xialu ۰ ۱,۹۵۹ ۰۵ شهریور ۱۳۹۹ ۱۲:۰۰ ب.ظ
آخرین ارسال: Xialu

پرش به انجمن:

Can I see some ID?

به خاطر سپاری رمز Cancel

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close

رمزت رو فراموش کردی؟

Feeling left out?


نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. close