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

دو سوال از مرتبه زمانی - Amir V - 06 بهمن ۱۳۹۱ ۰۱:۳۷ ق.ظ

سلام.

دوستان محبت میکنین این رو حل کنید؟

اولیش اینه:
[tex]for(i=1;i<n;i*=2)[/tex]
[tex]for(j=i;j<n;j )[/tex]

ببینید، من اینو رفتم جلو تا رسیدم به این:

[tex]n (n-2) (n-4) (n-8) ... (n-2^k)[/tex]

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

دومی هم اینه:
[tex]for(i=1;i<n;i*=2)[/tex]
[tex]for(j=1;j<i;j )[/tex]

ممنونم از همگی.

RE: سوال از مرتبه زمانی - javadem - 06 بهمن ۱۳۹۱ ۰۲:۱۹ ق.ظ

سوال اول: lgn تا جمله ی دارای n هست که میشه nlgn.


سوال دوم هم که سادس چندتا از دنبالشو مینویسیم که میشه
[tex]1 2 4 ... n/2[/tex]
برای سادگی فرض میکنیم که n توانی از ۲ست(چون هر بار i ضرب در ۲ میشه ، پس حلقه نهایتا با یه عدد که توانی از ۲ست به پایان میرسه و ما برای سادگی محاسبات فرض میکنم که n دقیقا همون عدده!) یعنی [tex]n=2^k[/tex] که در کل اون رابطه برابر میشه با :
[tex]1 2 4 ... 2^k/2=1 2 4 ... 2^{k-1}[/tex] و این یه تصاعد هندسیه و برابره با:
[tex]2^{k-1 1}-1=2^k-1=n-1[/tex] البته اگر n توانی از ۲ باشه! اگه نباشه جواب میشه [tex]2^{\left \lceil lgn \right \rceil}-1[/tex] .

دو سوالِ از مرتبه زمانی - Amir V - 06 بهمن ۱۳۹۱ ۰۲:۲۲ ق.ظ

تو اینایی که نوشتی فاکتوریل داری؟

نفهمیدم... :|

دو سوالِ از مرتبه زمانی - javadem - 06 بهمن ۱۳۹۱ ۰۲:۲۶ ق.ظ

نه علامت تعجب آخر جمله بود که اصلاح شد.

دو سوالِ از مرتبه زمانی - Amir V - 06 بهمن ۱۳۹۱ ۰۲:۳۰ ق.ظ

مرسی واسه اصلاح.

من کلا نفهمیدم Tongue

یواش تر بگو یکم اگه ممکنه.

دو سوال از مرتبه زمانی - javadem - 06 بهمن ۱۳۹۱ ۰۲:۳۳ ق.ظ

کجاشو متوجه نشدید؟
من کلا توی توضیح دادن مشکل دارم ، ولی اینبار تمام سعیمو کردم که خوب توضیح بدم، نشد! Big Grin
هرجا که متوجه نشدید بگید تا من بیشتر توضیح بدم.

RE: سوال از مرتبه زمانی - slinda - 06 بهمن ۱۳۹۱ ۰۳:۲۸ ق.ظ

سوال دوم هم که سادس چندتا از دنبالشو مینویسیم که میشه
[tex]1 2 4 ... n/2[/tex]


سلام Blush
به نظرتون نباید دنبالش تا logn باشه یعنی:
۱+۲+۳+۴+...+logn
و جواب آخر هم بشه
O(log^2 n)


RE: دو سوال از مرتبه زمانی - teacherpc - 06 بهمن ۱۳۹۱ ۰۷:۵۱ ق.ظ

سلام
من فکر میکنم سری اول اینجوری حل میشه
این سری دو قسمت هست همه جملات n دارند پس میشه n ها را جدا کرد
بقیه عبارت(۱و۲و۴) هم سری هندسی با قدرنسبت ۲ هست
[tex]n (n-2) (n-4) (n-8) ... (n-2^k)=(n n n ....)-(2^{0} 2^{1} 2^{2}...2^{k})=(nk)-(\frac{2^{0}(2^{k}-1)}{1-2}) \simeq nk[/tex]
خب حالا k هم که میشه logn
پس مرتبه زمانی میشه
nlogn

RE: سوال از مرتبه زمانی - javadem - 06 بهمن ۱۳۹۱ ۱۰:۰۲ ق.ظ

(۰۶ بهمن ۱۳۹۱ ۰۳:۲۸ ق.ظ)slinda نوشته شده توسط:  سوال دوم هم که سادس چندتا از دنبالشو مینویسیم که میشه
[tex]1 2 4 ... n/2[/tex]


سلام Blush
به نظرتون نباید دنبالش تا logn باشه یعنی:
۱+۲+۳+۴+...+logn
و جواب آخر هم بشه
O(log^2 n)

سلام نه دیگه
هر بار عدد ضرب در ۲ میشه و اگر n توانی از ۲ باشه چون شرط حلقه مساوی نداره پس حتما تا n/2 پیش میره !
تست کردن جواب کار ساده ایه فقط لازمه یه عدد به جای n بذارید و از روی حلقه تعداد اجراشو حساب کنید و بعد n رو توی رابطه [tex]2^{\left \lceil lgn \right \rceil}-1[/tex] قرار بدید.
مثلا اگر فرض کنیم که n=17، حلقه داخلی در کل ۳۱ بار اجرا میشه . خوب [tex]\left \lceil lg 17 \right \rceil[/tex] هم که ۵ میشه و [tex] 2^5 -1=31[/tex].
درست نیست؟
هر عددی بین ۱۶ تا ۳۱ که جای n بذاریم جوابش همینه!

RE: دو سوال از مرتبه زمانی - fsi2013 - 09 بهمن ۱۳۹۱ ۰۷:۱۵ ق.ظ

سلام دوست عزیز واسه سوال اول من این راه و رفتم
برای بار اول که i=1 هستش حلقه دوم n بار میچرخه یعنی تا اینجا میدونیم که n بار رو داره
ولی برای ادامه اگ دقت کنیم دفه بعدی i=2 شده و دوباره حلقه دوم n بار میچرخه
برای بار سوم i=4 و دوباره n بار میچرخه و به همین حالت تا وقتی که i=n بشه
یعنی برای n=4 این حلقه ۳n بار اجرا میشه
برای n=8 این حلقه ۴n بار اجرا و میشه
و برای n=2^k این حلقه
[tex]n\left ( \left ( log 2^k \right ) 1 \right ))k=\left ( log n \right )[/tex]


پس کلا داریم n logn
برای دومی هم برای بار اول ۱ بار
بار دوم یعنی وقتی i=2 میشه ۲ بار و وقتی i=4 میشه ۴ بار و .....
تا وقتی که i=n بشه
خوب بازم فرض و میذاریم روی n=2^k که داریم [tex]n\left ( \left ( log 2^k \right )-1 \right ))[/tex]
که بازم k=log n هستش این بار هم n log n میشه اگ با دو تا عدد مثال بزنی هم دستت میاد چی میگم برای n=8 کلا تو عبارت اول ۲۴ بار اجرا میشه و عبارت دوم ۱۶ بار ! درسته!!!؟؟؟؟!