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

نحوه محاسبه مرتبه زمانی

ارسال:
  

Majiid پرسیده:

نحوه محاسبه مرتبه زمانی

سلام دوستان.
خسته نباشید.
میشه نحوه محاسبه مرتبه زمانی این شبه کد رو مرحله به مرحله توضیح بدین؟


سپاسگذارم.
نقل قول این ارسال در یک پاسخ

۳
ارسال:
  

Behnam‌ پاسخ داده:

RE: نحوه محاسبه مرتبه زمانی


نقل قول این ارسال در یک پاسخ

۳
ارسال:
  

Pure Liveliness پاسخ داده:

RE: نحوه محاسبه مرتبه زمانی

قبلا به جای تقسیم گذاشته بودید * و من نوشتم دیدم حلقه ی بی نهایت میشه و جواب نداره.
الان که تبدیل به تقسیم کردید دوباره حل کردم.
اول : i=n
تا زمانی که i از ۱ بزرگتر هست، دستورات داخل while اول اجرا میشه.
……………….j=1
……………...تا زمانی که j از n کوچک تر هست، دستورات داخلی while دوم اجرا میشه.
……………………………. j=j*3
………………..……………i=i/2
………………..……………*write
j=1 هر بار در ۳ ضرب میشه تا برسه به n که از شرط while دوم بیرون بیایم. log3n بار j در سه ضرب میشه تا برسه به n. دستور چاپ * هم به تعداد log3n بار اجرا میشه.
وقتی j به n رسید i چند شده؟ i که قبل از این while دوم n بود الان هر بار با ضربدر ۳ شدن j, تقسیم بر ۲ شده. یعنیlog3n بار بر ۲ تقسیم شده.
یعنی برای while داخلی:
j=3 ….. i=n/2
j=32........i=n22
j=33........i=n23
j=34........i=n24
.
.
.j=3k........i=n2k
تا جایی این ضرب در ۳ برای j ادامه داره که به n برسه. یعنی :
3k<=n
k=log3n
پس در انتهای حلقه ی while، مقدار i هم شده n2k=n(2log3n)=nnlog32=nn1t
در این جا log3n بار عمل چاپ * انجام شده.
حالا از while دوم مییایم بیرون. شرط while اول برقرار هست، چون i از ۱ بزرگتر هست و دوباره j=1 میشه و به همون ترتیب بالا.
نکته ای که وجود داره این هست که چند بار حلقه ی while دوم انجام میشه؟ و در واقع i تا کی از ۱ بزرگتر خواهد موند؟
واضح هست که زمانی شرط حلقه ی اول نقض میشه که i=1 بشه یا مقداری کمتر از ۱.
الان بعد از یک بار اجرای حلقه ی دوم که مقدار i بزرگتر از یک هست دوباره شرط while اول درست هست و میایم داخل حلقه.
j=1
j=3......i=nnlog322 که i مقدارش از ۱ کمتر میشه. اما این شرط حلقه رو که j<n رو نقض نمیکنه. پس این while دوم هم log3n بار اجرا میشه تا از while دوم بیاد بیرون. در این جا مقدار i برابر شده با nn2log32
حالا شرط while اول چک میشه. غلط هست چون i از ۱ کوچیکتر هست. پس کلا دو تا log3n بار دستورات انجام شد و در نتیجه مرتبه ی زمانی برابر میشه با θ(log3n)
نقل قول این ارسال در یک پاسخ



موضوع‌های مرتبط با این موضوع...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  آموزش نحوه گرفتن پرتره ای حرفه ای mortazangz ۰ ۱,۷۲۱ ۲۵ بهمن ۱۴۰۰ ۰۲:۱۹ ب.ظ
آخرین ارسال: mortazangz
Exclamation سلام لطفاً یکی به من بگه مرتبه زمانی ها چطوری به log تبدیل میشن فرمول داره؟؟ Azadam ۶ ۵,۷۲۹ ۰۶ دى ۱۴۰۰ ۰۹:۰۲ ق.ظ
آخرین ارسال: Soldier's life
  مرتبه ایجاد درخت rad.bahar ۱ ۳,۶۳۲ ۳۰ مهر ۱۳۹۹ ۰۳:۳۴ ب.ظ
آخرین ارسال: rad.bahar
  مرتبه شبه کد rad.bahar ۱ ۲,۵۵۷ ۲۲ مهر ۱۳۹۹ ۰۹:۳۲ ب.ظ
آخرین ارسال: BBumir
  حل مساله مرتبه زمانی حلقه های تو در تو sarashahi ۱۶ ۲۴,۴۵۸ ۱۹ خرداد ۱۳۹۹ ۰۱:۱۶ ب.ظ
آخرین ارسال: gillda
  محاسبه ارتفاع درخت.... baharkhanoom ۳ ۸,۵۱۸ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۸ ب.ظ
آخرین ارسال: mohsentafresh
  مرتبه زمانی Sanazzz ۱۷ ۲۳,۱۱۳ ۰۹ اردیبهشت ۱۳۹۹ ۰۶:۴۶ ب.ظ
آخرین ارسال: mohsentafresh
  پیچیدگی زمانی اکشن های قابل اعمال در یک وضعیت اsepid8994 ۰ ۱,۹۵۳ ۲۹ اسفند ۱۳۹۸ ۱۲:۵۱ ب.ظ
آخرین ارسال: اsepid8994
  مرتبه زمانی یافتن قطر Sepideh96 ۲ ۴,۰۹۲ ۰۸ آذر ۱۳۹۸ ۰۴:۳۴ ب.ظ
آخرین ارسال: erfan30
  نحوه محاسبه دفیق لگاریتم بدون ماشین حساب mcse2010 ۲ ۸۴,۳۱۴ ۲۸ مهر ۱۳۹۸ ۰۹:۳۸ ق.ظ
آخرین ارسال: chemical_darton29

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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