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

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

ارسال:
  

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