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

پیچیدگی زمانی یک قطعه کد نسبتا جالب!

ارسال:
  

arshad90 پرسیده:

پیچیدگی زمانی یک قطعه کد نسبتا جالب!

قطعه کد زیر رو در نظر بگیرید. لطفا بگید به نظر شما رابطه بازگشتی برای این قطعه کد چیه؟ و پیچیدگی زمانیش از چه مرتبه ایه.

به نظر میاد این قطعه کد از مرتبه O(logn) باشه. من درختش رو رسم کردم در واقع چون هر ۴ فراخوانی مثل همن فقط یه فراخوانی از مرتبه M(n-3) است و بقیه از مرتبه O(1) هست. به نظرتون این تحلیل درسته؟


فایل‌(های) پیوست شده

۰
ارسال:
  

ف.ش پاسخ داده:

پیچیدگی زمانی یک قطعه کد نسبتا جالب!

خیر درست نیست.اگه آرایه داشتیم حرف شما درست بود یکی رو حساب میکردیم و واسه بقیه دیگه نیازی نبود.

اما توی روابط بازگشتی ما از بقیه شاخه ها(سایر فراخوانی ها) خبر نداریم!

اگه واسه اعداد کوچکتر از ۱۰ یه عدد return میکردیم اونوقت T اینجوری میشد:

T(n)=4*T(n-3) ,T(10)=1

که اگه بسط بدین میشه [tex]O(4^{\left\lceil(n-10)/3\right\rceil})[/tex]


اما الان که داره واسه کوچکتر از ۱۰ هم باز بازگشتی کار میکنه و شرط توقفی نداریم هیچ وقت این الگوریتم پایان نمی پذیره!
در ضمن logn واسه وقتی است که n داره بر یه چیزی تقسیم میشه نه منها!

هر موقع - دیدین یاد فیبوناچی بیفتین که نمایی میشه البته وقتی نمایی میشه که bT(n-a داشته باشیم و میشه b^n/a

ارسال:
  

arshad90 پاسخ داده:

RE: پیچیدگی زمانی یک قطعه کد نسبتا جالب!

(۱۳ آذر ۱۳۸۹ ۰۲:۳۴ ب.ظ)afagh1389 نوشته شده توسط:  خیر درست نیست.اگه آرایه داشتیم حرف شما درست بود یکی رو حساب میکردیم و واسه بقیه دیگه نیازی نبود.

اما توی روابط بازگشتی ما از بقیه شاخه ها(سایر فراخوانی ها) خبر نداریم!

اگه واسه اعداد کوچکتر از ۱۰ یه عدد return میکردیم اونوقت T اینجوری میشد:

T(n)=4*T(n-3) ,T(10)=1

که اگه بسط بدین میشه [tex]O(4^{\left\lceil(n-10)/3\right\rceil})[/tex]


اما الان که داره واسه کوچکتر از ۱۰ هم باز بازگشتی کار میکنه و شرط توقفی نداریم هیچ وقت این الگوریتم پایان نمی پذیره!
در ضمن logn واسه وقتی است که n داره بر یه چیزی تقسیم میشه نه منها!

هر موقع - دیدین یاد فیبوناچی بیفتین که نمایی میشه البته وقتی نمایی میشه که bT(n-a داشته باشیم و میشه b^n/a


حق با آفاق هست، دوستان عزیز sal-dovomi و Masoud به این نکته تو شرط بازگشت توجه نکردن. توی شرط بازگشت وقتی می گیم: if (n<=10) then return M(30)، باز هم داریم فراخوانی بازگشتی رو انجام می دیم. اگر عددی رو برمیگردوند می شد نظر شما رو در نظر گرفت. اما نمیشه چون باز هم در شرط بازگشت فراخوانی بازگشتی داریم.
حالا سوال اصلی اینجاست، با وجود اینکه این قطعه کد پایان ناپذیره، آیا نمیشه حدی برای پیچیدیگی زمانیش در نظر گرفت؟ اگر میشه این حد چیه؟Exclamation
یافتن تمامی ارسال‌های این کاربر

۰
ارسال:
  

sal_dovomi پاسخ داده:

پیچیدگی زمانی یک قطعه کد نسبتا جالب!

معادله یچیدگی زمانی این میشه:
T(n)=4(n-3)+4
که با حل آن یک معادله درجه ۳ به دست میاد و ما از حل آن عاجزیم.
ولی با همان حل دست و پا شکسته فکر میکنم بشه O(4^n/3)=time

۰
ارسال:
  

Masoud05 پاسخ داده:

RE: پیچیدگی زمانی یک قطعه کد نسبتا جالب!

به نظر من:

[تصویر:  attachment.php?aid=134]

طبق نکته:

[تصویر:  attachment.php?aid=135]


فایل‌(های) پیوست شده


۰
ارسال:
  

ف.ش پاسخ داده:

پیچیدگی زمانی یک قطعه کد نسبتا جالب!

امکانش هست که اشتباه تایپی باشه! ولی چیزی که اینجا نوشته با return یه مقدار غیر بازگشتی فرق داره!!!

۰
ارسال:
  

ف.ش پاسخ داده:

پیچیدگی زمانی یک قطعه کد نسبتا جالب!

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



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۴,۰۶۷ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  تکمیل قطعه کد مجموع آرایه Xzrix ۰ ۱,۳۳۱ ۰۲ دى ۱۳۹۹ ۰۷:۱۹ ب.ظ
آخرین ارسال: Xzrix
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۱,۵۰۳ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  مرتبه زمانی Sanazzz ۱۷ ۱۹,۶۳۵ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh
  پیچیدگی زمانی اکشن های قابل اعمال در یک وضعیت اsepid8994 ۰ ۱,۶۰۷ ۲۹ اسفند ۱۳۹۸ ۱۲:۵۱ ب.ظ
آخرین ارسال: اsepid8994
  منابع یوسفی تو ارشد اصلا جالب نیستن tesla66 ۱۳ ۷,۸۸۳ ۰۷ دى ۱۳۹۸ ۰۴:۳۲ ق.ظ
آخرین ارسال: marvelous
  یه اتفاق جالب sirvan.t ۱۷ ۱۵,۱۰۲ ۱۴ آذر ۱۳۹۸ ۰۲:۴۸ ق.ظ
آخرین ارسال: sirvan.t
  مرتبه زمانی یافتن قطر Sepideh96 ۲ ۳,۵۰۱ ۰۸ آذر ۱۳۹۸ ۰۴:۳۴ ب.ظ
آخرین ارسال: erfan30
Question یافتن دو عدد پیچیدگی زمانی O(n) porseshgar ۲ ۳,۵۹۷ ۱۵ بهمن ۱۳۹۷ ۱۲:۱۶ ب.ظ
آخرین ارسال: porseshgar
  مرتبه زمانی Sanazzz ۰ ۱,۸۷۲ ۰۴ بهمن ۱۳۹۷ ۰۵:۴۱ ب.ظ
آخرین ارسال: Sanazzz

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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