2nd - Tahlile Algorithm
2nd - Tahlile Algorithm
طراحی
Algorithm Design
طراحی الگوریتماه
الگوریتمها
Algorithm D
esign
ارژنگ ملک
راههایارتباطی
@tnb_students
1
11/3/2020
Introduction
مقدمه
فصلاول
طراحیالگوریتمها
تحلیلالگوریتم
عوامل موثر در زمان اجرای یک الگوریتم
نوع کامپایلر
برنامه نویس
اندازه ورودی
2
11/3/2020
پیچیدگیزمانیالگوریتم())T(n
پیچیدگی زمانی الگوریتم ():) T(n
تعداد دفعاتی که عمل اصلی به ازای هر مقدار از اندازه ورودی انجام میشود.
عمل اصلی :دستور یا گروهی از دستورها که معرف کل کار انجام شده الگوریتم است.
تحلیلپیچیدگیزمانیالگوریتم
مثال : 1الگوریتم جستجوی ترتیبی
اندازهورودیn:
3
11/3/2020
تحلیلپیچیدگیزمانیالگوریتم
مثال : 2الگوریتم جمع عناصر یک آرایه
اندازهورودیn:
تحلیلپیچیدگیزمانیالگوریتم
مثال : 3الگوریتم مرتب سازی تعویضی
اندازهورودیn:
پیچیدگیزمانی:
)𝟏𝒏(𝒏−
= )T(n
𝟐
Arzhang Malek - TNB طراحی الگوریتمها ()AD Slide 8
4
11/3/2020
تحلیلپیچیدگیزمانیالگوریتم
مثال : 4الگوریتم ضرب دو ماتریس 𝒏 × 𝒏
اندازهورودیn:
پیچیدگیزمانی:
𝟑𝒏 = )T(n
تحلیلپیچیدگیزمانیالگوریتم
: B(n) پیچیدگی زمانی در بهترین حالت
حداقل تعداد دفعاتی که الگوریتم ،عمل اصلی خود را به ازای یک ورودی به اندازهی nانجام میدهد.
حداکثر تعداد دفعاتی که الگوریتم ،عمل اصلی خود را به ازای یک ورودی به اندازهی nانجام میدهد.
متوسط تعداد دفعاتی که الگوریتم ،عمل اصلی خود را به ازای یک ورودی به اندازهی nانجام میدهد.
5
11/3/2020
تحلیلپیچیدگیزمانیالگوریتم
عددموردنظر4: مثال :الگوریتم جستجوی ترتیبی
B(n) = 1
W(n) = n
پیچیدگی زمانی در حالت متوسط
𝒏 = )A(n 𝟐
تحلیلمرتبهاجراییالگوریتم
باتوجه به عوامل موثر در زمان اجرای یک الگوریتم از قبیل :سرعت سخت افزار و نوع کامپایلر؛ امکان بدست آوردن تعداد و زمان
دقیق اجرای دستورات الگوریتم فراهم نیست.
• مرتبه اجرایی یک الگوریتم با بزرگترین جمله تابع پیچیدگی زمانی آن تعیین میشود
مرتبهاجرایی
𝑇 𝑛 = 2𝑛 2 + 6𝑛 − 3 𝑛2
6
11/3/2020
تحلیلمرتبهاجراییالگوریتم
نماد Big O
-تعریف:
کمترینکرانباال؛زماناجرایالگوریتمازاینحدکمترنشود(بدترین حالت)
-رابطه ریاضی
𝑛 𝑔 𝑂= 𝑛 𝑓 )𝑛(𝑔𝐶 ≤ )𝑛(𝑓 ∃ 𝐶, 𝑛0 > 0 ∶ ∀ 𝑛 ≥ 𝑛0
𝑓 و𝑔 توابعغیرمنفیمیباشد؛حداقلیک𝑐 ،بهازایتماممقادیر𝑛 وجوددارد،کهدراینحالت
میگوییم،مرتبهاجراییتابع)𝑛(𝑓 ،تابع)𝑛(𝑔 میباشد.
-مثال:
)𝑛(𝑂 = 3𝑛 + 3
3𝑛 + 3 ≤ 4𝑛 ∶ 𝑛 ≥ 3 بافرضاینکه 𝑐 = 4و 𝑛0 = 3داریم:
تحلیلمرتبهاجراییالگوریتم
-مثال:
)𝑛 2 + 10𝑛 = 𝑂(𝑛 2
بافرضاینکه 𝑐 = 2و 𝑛0 = 10داریم:
-قضیه اصلی:
اگر 𝑓 𝑛 = 𝑎𝑚 𝑛𝑚 + ⋯ + 𝑎1 𝑛 + 𝑎0آنگاه)𝑚 𝑛(𝑂 = 𝑛 𝑓
-مثال:
𝑛 1 𝑛
𝑓 𝑛 = 𝑛 − 1 = 𝑛2 −
2 2 2
)𝑓 𝑛 = 𝑂(𝑛 2
7
11/3/2020
تحلیلمرتبهاجراییالگوریتم
-مثال :مرتبه اجرایی شبه کدهای زیر را بدست آورید
تحلیلمرتبهاجراییالگوریتم
-نکات:
8
11/3/2020
تحلیلمرتبهاجراییالگوریتم
-نکات:
درمقایسه orderهایمختلفداریم؛
) 𝑛 𝑛(𝑂 < )!𝑛(𝑂 < ) 𝑛 𝑘(𝑂 < ) 𝑘 𝑛(𝑂 < 𝑛 𝑂 1 < 𝑂(log 𝑛) < 𝑂(𝑛) < 𝑂 𝑛 log
: 𝑣1سرعتکامپیوتراول ∶ 𝑡1زماناجرایالگوریتمدرکامپیوتراول
: 𝑣2سرعتکامپیوتردوم : 𝑡1زماناجرایالگوریتمدرکامپیوتردوم
تحلیلمرتبهاجراییالگوریتم
نماد Ω
-تعریف:
بیشترینکرانپایین؛زماناجرایالگوریتمازاینحدبیشترنشود(بهترینحالت)
-رابطه ریاضی
𝑛 𝑔 𝛺= 𝑛 𝑓 )𝑛(𝑔𝐶 ≥ )𝑛(𝑓 ∃ 𝐶, 𝑛0 > 0 ∶ ∀ 𝑛 ≥ 𝑛0
)𝑛(𝑓 امگای)𝑛(𝑔 است؛اگروتنهااگربهازایمقادیرثابتومثبت𝑐 و 𝑛0و)𝑛(𝑓 برایتمامی
مقادیربزرگتریامساوی ، 𝑛0بزرگتریامساوی)𝑛(𝑔 Cباشد.
-مثال:
)𝑛(𝛺 = 3𝑛 + 2
3𝑛 + 2 ≥ 3𝑛 ∶ 𝑛 ≥ 1 بافرضاینکه 𝑐 = 3و 𝑛0 = 1داریم:
9
11/3/2020
تحلیلمرتبهاجراییالگوریتم
نماد θ
-تعریف:
حدوسطزماناجرایالگوریتم(نهبهترینونهبدترینحالت)
-رابطه ریاضی
𝑛 𝑔 𝜃= 𝑛 𝑓 ∃ 𝐶1, 𝐶2, 𝑛0 > 0 ∶ ∀ 𝑛 ≥ 𝑛0
)𝑛(𝑔𝐶1𝑔(𝑛) ≤ 𝑓(𝑛) ≤ 𝐶2
)𝑛(𝑓 تتای)𝑛(𝑔 است؛اگروتنهااگربهازایمقادیرثابتومثبت 𝐶1و 𝐶2و 𝑛0و)𝑛(𝑓 برای
تمامیمقادیربزرگتریامساوی ، 𝑛0مابین)𝑛(𝑔 𝐶1و)𝑛(𝑔 𝐶2باشد.
-مثال:
)𝑛(𝜃 = 3𝑛 + 2
3𝑛 ≤ 3𝑛 + 2 ≤ 4𝑛 ∶ 𝑛 ≥ 2 بافرضاینکه 𝐶2 = 4، 𝐶1 = 3، 𝑛0 = 2داریم:
تحلیلمرتبهاجراییالگوریتم
-نکات:
برایتمامالگوریتمهایمرتبکنندهکهبراساسمقایسهعملمرتبسازیراانجاممیدهندمرتبهزمانیآنهابرابر
خواهدبودبا 𝒏 𝒈𝒐𝒍 𝒏 𝜴
آنگاهداریم؛
𝑛 𝑇 𝑛 = 𝑇1 𝑛 + 𝑇2
} 𝑛 𝑔(𝑂 𝑂 𝑛 = 𝑚𝑎𝑥{𝑂(𝑓 𝑛 ,
10
11/3/2020
تحلیلمرتبهاجراییالگوریتم
نمودارهای O ، Ω ، θ
نمودار O نمودار Ω
نمودار θ
11