۱
subtitle
ارسال: #۱
  
زمان اجرای الگوریتم
سلام دوستان
میشه توضیح بدید تریس مربوط به الگوریتم زیر چطوری میشه و زمان اجراش چقدر هست؟
[tex]sum\: \longleftarrow\: 1\: \: [/tex]
[tex]for\: \: \: i\longleftarrow1\: to\: n[/tex]
[tex]do\: for\: \: \: j\longleftarrow1\: to\: i^2[/tex]
[tex]do\: if\: \: j\: \mod\: i=0[/tex]
[tex]then\: for\: k\longleftarrow1\: to\: j[/tex]
[tex]do\: sum\: \longleftarrow\: sum\: 1[/tex]
میشه توضیح بدید تریس مربوط به الگوریتم زیر چطوری میشه و زمان اجراش چقدر هست؟
[tex]sum\: \longleftarrow\: 1\: \: [/tex]
[tex]for\: \: \: i\longleftarrow1\: to\: n[/tex]
[tex]do\: for\: \: \: j\longleftarrow1\: to\: i^2[/tex]
[tex]do\: if\: \: j\: \mod\: i=0[/tex]
[tex]then\: for\: k\longleftarrow1\: to\: j[/tex]
[tex]do\: sum\: \longleftarrow\: sum\: 1[/tex]
۲
ارسال: #۲
  
RE: زمان اجرای الگوریتم
جواب دقیقش که میشه
[tex](3n 1)*C(n 2,3)/4[/tex]
اما اینکه از نظر مرتبه اجرا تقریبا برابر چی میشه را راحت میشه از روی تست ها انتخاب کرد
[tex](3n 1)*C(n 2,3)/4[/tex]
اما اینکه از نظر مرتبه اجرا تقریبا برابر چی میشه را راحت میشه از روی تست ها انتخاب کرد
۱
ارسال: #۳
  
RE: زمان اجرای الگوریتم
(۲۳ مرداد ۱۳۹۳ ۰۸:۱۹ ق.ظ)shayesteb نوشته شده توسط: سلام دوستان
میشه توضیح بدید تریس مربوط به الگوریتم زیر چطوری میشه و زمان اجراش چقدر هست؟
to n [tex]sum\: \longleftarrow\: 1\: \: [/tex]
[tex]for\: \: \: i\longleftarrow1\: to\: n[/tex]
[tex]do\: for\: \: \: j\longleftarrow1\: to\: i^2[/tex]
[tex]do\: if\: \: j\: \mod\: i=0[/tex]
[tex]then\: for\: k\longleftarrow1\: to\: j[/tex]
[tex]do\: sum\: \longleftarrow\: sum\: 1[/tex]
دوستان ممنون میشم اگه راهنمایی کنید
۰
ارسال: #۵
  
RE: زمان اجرای الگوریتم
۰
ارسال: #۶
  
RE: زمان اجرای الگوریتم
زمان اجراشو نمیدونی که حداقل جوابامون رو باهاش چک کنیم ببینیم درسته یا نه؟
ارسال: #۷
  
RE: زمان اجرای الگوریتم
۰
۰
۰
ارسال: #۱۱
  
RE: زمان اجرای الگوریتم
دوستان ممنون از اینکه راهنمایی کردین
پاسخش تتا n به توان ۴ هستش ( سوال ۴۴ فصل اول کتاب ۶۰۰ تست البته من هم نمیدونستم بعدا یکی از دوستان راهنمایی کردن ) اگه هم کسی خواست بگه تا جواب را توضیح بدم.
دوست عزیز ممنونم
پاسخش تتا n به توان ۴ هستش ( سوال ۴۴ فصل اول کتاب ۶۰۰ تست البته من هم نمیدونستم بعدا یکی از دوستان راهنمایی کردن ) اگه هم کسی خواست بگه تا جواب را توضیح بدم.
(۲۳ مرداد ۱۳۹۳ ۰۸:۲۹ ب.ظ)a.kam نوشته شده توسط: جواب دقیقش که میشه
[tex](3n 1)*C(n 2,3)/4[/tex]
اما اینکه از نظر مرتبه اجرا تقریبا برابر چی میشه را راحت میشه از روی تست ها انتخاب کرد
دوست عزیز ممنونم
۰
ارسال: #۱۲
  
RE: زمان اجرای الگوریتم
ای ول منم [tex]\theta(n^4)[/tex] رو به دست اوردم.ببخشید البته صبح حسابش کردم ولی خب شک داشتم دیگه نگفتم.ولی سوال خیلی جالبی بود.البته من از تریس کردن و تصاعد عددی به دستش اوردم.راه حل دیگه ای داره رو نمیدونم
ارسال: #۱۳
  
RE: زمان اجرای الگوریتم
(۲۴ مرداد ۱۳۹۳ ۱۲:۳۹ ق.ظ)miladcr7 نوشته شده توسط: ای ول منم [tex]\theta(n^4)[/tex] رو به دست اوردم.ببخشید البته صبح حسابش کردم ولی خب شک داشتم دیگه نگفتم.ولی سوال خیلی جالبی بود.البته من از تریس کردن و تصاعد عددی به دستش اوردم.راه حل دیگه ای داره رو نمیدونم
بله از طریق تریس کردن به دست میاد. آفرین که جوابتون درست بوده
ارسال: #۱۴
  
RE: زمان اجرای الگوریتم
(۲۴ مرداد ۱۳۹۳ ۰۹:۱۸ ق.ظ)shayesteb نوشته شده توسط:(24 مرداد ۱۳۹۳ ۱۲:۳۹ ق.ظ)miladcr7 نوشته شده توسط: ای ول منم [tex]\theta(n^4)[/tex] رو به دست اوردم.ببخشید البته صبح حسابش کردم ولی خب شک داشتم دیگه نگفتم.ولی سوال خیلی جالبی بود.البته من از تریس کردن و تصاعد عددی به دستش اوردم.راه حل دیگه ای داره رو نمیدونم
بله از طریق تریس کردن به دست میاد. آفرین که جوابتون درست بوده
مرسی ممنون
۰
ارسال: #۱۵
  
RE: زمان اجرای الگوریتم
ببین زمان اجرای حلقه دوم و سوم [tex]\lg(n)[/tex] نمیشه چون به ازای هر [tex]j[/tex] توی حلقه دوم مقدار [tex]k[/tex] توی حلقه سوم فرق داره درسته؟
یعنی وقتی [tex]j[/tex] مقدارش ۱ باشه حلقه سوم ۱ بار اجرا میشه و وقتی [tex]j=2[/tex] باشه حلقه سوم ۲ بار اجرا میشه و وقتی [tex]j=4[/tex] باشه حلقه سوم ۴ بار اجرا میشه پس لگاریتمی تغییر نمیکنه.
حالا این تریس رو داشته باش:
[tex]j=1\longrightarrow1[/tex]
[tex]j=2\longrightarrow2[/tex]
[tex]j=4\longrightarrow4[/tex]
[tex]j=8\longrightarrow8[/tex]
و همینطوری ادامه بده.حال قبول داری [tex]j[/tex] داره به صورت [tex]2^p[/tex] تغییر میکنه.p از صفر شروع میشه.حالا این اجرا تا چه وقتی
ادامه پیدا میکنه؟
تا وقتی که [tex]2^p<n[/tex] درسته؟یعنی وقتی که [tex]2^{p 1}>n[/tex] دیگه حلقه اجرا نمیشه.درسته؟
پس ما میتونیم یه تقریب بزنیم به این صورت که:[tex]2^{p}\cong n[/tex] درست؟
حالا مجموع زمان اجراها رو محاسبه میکنیم:
[tex]2^0 2^1 2^2 2^3 ... 2^p=\frac{2^{p 1}-1}{2-1}=2^{p 1}-1\cong n=\theta(n)[/tex]
حلقه اول هم که [tex]\lg(n)[/tex] پس زمان اجرای کل:[tex]n.\lg(n)[/tex]
اینجوری حلش کردم با تریس.یه عدد مثل ۴ رو در نظر گرفتم اینم از تریس:
[tex]i=1\rightarrow j=1\rightarrow1[/tex]:::::::یعنی به ازای [tex]i=1[/tex] و [tex]j=1[/tex] یه بار اجرا میشه
[tex]i=2\rightarrow j=2\rightarrow2[/tex]
[tex]i=2\rightarrow j=4\rightarrow4[/tex]
[tex]i=3\rightarrow j=3\rightarrow3[/tex]
[tex]i=3\rightarrow j=6\rightarrow6[/tex]
[tex]i=3\rightarrow j=9\rightarrow9[/tex]
[tex]i=4\rightarrow j=4\rightarrow4[/tex]
[tex]i=4\rightarrow j=8\rightarrow8[/tex]
[tex]i=4\rightarrow j=12\rightarrow12[/tex]
[tex]i=4\rightarrow j=16\rightarrow16[/tex]
برای بقیه عددها هم این ریتم هستش.حالا اگه به نحوه ی اجرا دقت کنی میبینی به ازای هر [tex]i[/tex] یه سری عددی داریم با جمله اول [tex]i[/tex] و جمله اخر [tex]i^2[/tex] و تعداد جملات و قدر نسبت هم [tex]i[/tex] هستش.خب مجموع سری حسابی رو که میدونیم چجوری به دست میاد خب حالا ما باید برای هر [tex]i[/tex] این مجموع رو به دست بیاریم که میشه:
[tex]\sum^n_{i=0}\frac{(i i^2)\ast i}{2}=\sum\frac{i^2}{2} \sum\frac{i^3}{2}=\theta(n^4)[/tex]
بفرمایید
یعنی وقتی [tex]j[/tex] مقدارش ۱ باشه حلقه سوم ۱ بار اجرا میشه و وقتی [tex]j=2[/tex] باشه حلقه سوم ۲ بار اجرا میشه و وقتی [tex]j=4[/tex] باشه حلقه سوم ۴ بار اجرا میشه پس لگاریتمی تغییر نمیکنه.
حالا این تریس رو داشته باش:
[tex]j=1\longrightarrow1[/tex]
[tex]j=2\longrightarrow2[/tex]
[tex]j=4\longrightarrow4[/tex]
[tex]j=8\longrightarrow8[/tex]
و همینطوری ادامه بده.حال قبول داری [tex]j[/tex] داره به صورت [tex]2^p[/tex] تغییر میکنه.p از صفر شروع میشه.حالا این اجرا تا چه وقتی
ادامه پیدا میکنه؟
تا وقتی که [tex]2^p<n[/tex] درسته؟یعنی وقتی که [tex]2^{p 1}>n[/tex] دیگه حلقه اجرا نمیشه.درسته؟
پس ما میتونیم یه تقریب بزنیم به این صورت که:[tex]2^{p}\cong n[/tex] درست؟
حالا مجموع زمان اجراها رو محاسبه میکنیم:
[tex]2^0 2^1 2^2 2^3 ... 2^p=\frac{2^{p 1}-1}{2-1}=2^{p 1}-1\cong n=\theta(n)[/tex]
حلقه اول هم که [tex]\lg(n)[/tex] پس زمان اجرای کل:[tex]n.\lg(n)[/tex]
اینجوری حلش کردم با تریس.یه عدد مثل ۴ رو در نظر گرفتم اینم از تریس:
[tex]i=1\rightarrow j=1\rightarrow1[/tex]:::::::یعنی به ازای [tex]i=1[/tex] و [tex]j=1[/tex] یه بار اجرا میشه
[tex]i=2\rightarrow j=2\rightarrow2[/tex]
[tex]i=2\rightarrow j=4\rightarrow4[/tex]
[tex]i=3\rightarrow j=3\rightarrow3[/tex]
[tex]i=3\rightarrow j=6\rightarrow6[/tex]
[tex]i=3\rightarrow j=9\rightarrow9[/tex]
[tex]i=4\rightarrow j=4\rightarrow4[/tex]
[tex]i=4\rightarrow j=8\rightarrow8[/tex]
[tex]i=4\rightarrow j=12\rightarrow12[/tex]
[tex]i=4\rightarrow j=16\rightarrow16[/tex]
برای بقیه عددها هم این ریتم هستش.حالا اگه به نحوه ی اجرا دقت کنی میبینی به ازای هر [tex]i[/tex] یه سری عددی داریم با جمله اول [tex]i[/tex] و جمله اخر [tex]i^2[/tex] و تعداد جملات و قدر نسبت هم [tex]i[/tex] هستش.خب مجموع سری حسابی رو که میدونیم چجوری به دست میاد خب حالا ما باید برای هر [tex]i[/tex] این مجموع رو به دست بیاریم که میشه:
[tex]\sum^n_{i=0}\frac{(i i^2)\ast i}{2}=\sum\frac{i^2}{2} \sum\frac{i^3}{2}=\theta(n^4)[/tex]
بفرمایید
۰
ارسال: #۱۶
  
RE: زمان اجرای الگوریتم
ممنون از اینکه اینقدر خوب راه حل را نوشتید. کاملا درست هست .
Can I see some ID?
Feeling left out?
نگران نباش، فقط روی این لینک برای ثبت نام کلیک کن. رمزت رو فراموش کردی؟ اینجا به یادت میاریم! close