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

پیچیدگی زمانی تکه برنامه زیر

ارسال:
  

sixsixsix پرسیده:

پیچیدگی زمانی تکه برنامه زیر

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

for(int i =0 ; i < =n ; i++)
for(int j =1; j<= i^2; j++)
if (j % i == 0)
for(int k = 0; k<j; k++)
; sum++
نقل قول این ارسال در یک پاسخ

۴
ارسال:
  

Iranian Wizard پاسخ داده:

RE: پیچیدگی زمانی تکه برنامه زیر

سلام.
راه اول:
در صورتی حلقه k به تعداد j بار اجرا میشه که --> j بر i بخش پذیر باشه-->
پس در صورتی که j برابر : [tex]i\: or\: 2i\: or\: 3i\: or\: ...\: or\: ii[/tex] باشه،حلقه k به تعداد j بار اجرا میشه.
پس تعداد دفعات تکرار حلقه k برابر:
[tex]i\: \: 2i\: 3i\: \: ...\: \: ii[/tex] هستش. که برابر [tex]i\: \times\frac{i(i 1)}{2}\: =\frac{\: 1}{2}\: \times(i^3\: \: i^2)[/tex] هستش.
و با توجه با اینکه i از ۰ تا n هستش،پس جواب برابر :[tex]\frac{1}{2}\: \sum\: \: (i^3\: \: i^2)\: =\: \theta(n^4)[/tex] (سیگما از ۰ تا n)
پس جواب میشه [tex]\theta\: \: (n^4)[/tex]

راه دوم:
[tex]i=0\: \rightarrow\: -[/tex]

[tex]i=1\: \rightarrow\: \: j=1\: \rightarrow\: Tedad\: tekrar\: k\: :\: 1[/tex]

[tex]i=2\: \rightarrow\: \: j=1\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=2\: \rightarrow\: Tedad\: tekrar\: k\: :\: 2[/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=3\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=4\: \rightarrow\: Tedad\: tekrar\: k\: :\: 4[/tex]

[tex]i=3\: \rightarrow\: \: j=1\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=2\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=3\: \rightarrow\: Tedad\: tekrar\: k\: :\: 3 [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=4\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=5\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=6\: \rightarrow\: Tedad\: tekrar\: k\: :\: 6 [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=7\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=8\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=9\: \rightarrow\: Tedad\: tekrar\: k\: :\: 9[/tex]
.
.
.

پس جواب برابر [tex]\sum^n_{i=1}\sum_{j=1}^i(i\times j)[/tex] میشه. که برابر
[tex]\sum_{i=1}^ni\: \: \sum_{j=1}^ij\: =\: \sum_{i=1}^ni\times(\frac{i(i 1)}{2})\: [/tex] هستش.
که مرتبش میشه :[tex]\theta\: \: (n^4)[/tex]
نقل قول این ارسال در یک پاسخ

ارسال:
  

sixsixsix پاسخ داده:

RE: پیچیدگی زمانی تکه برنامه زیر

(۲۷ اسفند ۱۳۹۴ ۰۱:۵۵ ق.ظ)IranianWizard نوشته شده توسط:  سلام.
راه اول:
در صورتی حلقه k به تعداد j بار اجرا میشه که --> j بر i بخش پذیر باشه-->
پس در صورتی که j برابر : [tex]i\: or\: 2i\: or\: 3i\: or\: ...\: or\: ii[/tex] باشه،حلقه k به تعداد j بار اجرا میشه.
پس تعداد دفعات تکرار حلقه k برابر:
[tex]i\: \: 2i\: 3i\: \: ...\: \: ii[/tex] هستش. که برابر [tex]i\: \times\frac{i(i 1)}{2}\: =\frac{\: 1}{2}\: \times(i^3\: \: i^2)[/tex] هستش.
و با توجه با اینکه i از ۰ تا n هستش،پس جواب برابر :[tex]\frac{1}{2}\: \sum\: \: (i^3\: \: i^2)\: =\: \theta(n^4)[/tex] (سیگما از ۰ تا n)
پس جواب میشه [tex]\theta\: \: (n^4)[/tex]

راه دوم:
[tex]i=0\: \rightarrow\: -[/tex]

[tex]i=1\: \rightarrow\: \: j=1\: \rightarrow\: Tedad\: tekrar\: k\: :\: 1[/tex]

[tex]i=2\: \rightarrow\: \: j=1\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=2\: \rightarrow\: Tedad\: tekrar\: k\: :\: 2[/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=3\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=4\: \rightarrow\: Tedad\: tekrar\: k\: :\: 4[/tex]

[tex]i=3\: \rightarrow\: \: j=1\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=2\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=3\: \rightarrow\: Tedad\: tekrar\: k\: :\: 3 [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=4\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=5\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=6\: \rightarrow\: Tedad\: tekrar\: k\: :\: 6 [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=7\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=8\: \rightarrow\: Tedad\: tekrar\: k\: :\: [/tex]
[tex]\: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: \: j=9\: \rightarrow\: Tedad\: tekrar\: k\: :\: 9[/tex]
.
.
.

پس جواب برابر [tex]\sum^n_{i=1}\sum_{j=1}^i(i\times j)[/tex] میشه. که برابر
[tex]\sum_{i=1}^ni\: \: \sum_{j=1}^ij\: =\: \sum_{i=1}^ni\times(\frac{i(i 1)}{2})\: [/tex] هستش.
که مرتبش میشه :[tex]\theta\: \: (n^4)[/tex]

سپاسات فراوان دوست عزیز
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در یک پاسخ



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

پرش به انجمن:

Can I see some ID?

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

Feeling left out?


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

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

Feeling left out?


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