0% found this document useful (0 votes)
5 views11 pages

2nd - Tahlile Algorithm

Uploaded by

degalah989
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views11 pages

2nd - Tahlile Algorithm

Uploaded by

degalah989
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

11/3/2020

‫طراحی‬
Algorithm Design
‫طراحی الگوریتماه‬
‫الگوریتمها‬
Algorithm D
esign

‫ارژنگ ملک‬

‫راه‌های‌ارتباطی‬

[email protected]

@tnb_students

Arzhang Malek - TNB )AD( ‫طراحی الگوریتمها‬ Slide 2

1
‫‪11/3/2020‬‬

‫‪Introduction‬‬
‫مقدمه‬

‫فصل‌اول‬
‫طراحی‌الگوریتم‌ها‬

‫تحلیل‌الگوریتم‬
‫عوامل موثر در زمان اجرای یک الگوریتم‬

‫‪ ‬سرعت سخت افزار‬

‫‪ ‬نوع کامپایلر‬

‫‪ ‬برنامه نویس‬

‫‪ ‬اندازه ورودی‬

‫‪ ‬پیچیدگی زمانی الگوریتم‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 4‬‬

‫‪2‬‬
‫‪11/3/2020‬‬

‫پیچیدگی‌زمانی‌الگوریتم‌()‪)T(n‬‬
‫پیچیدگی زمانی الگوریتم ()‪:) T(n‬‬

‫تعداد دفعاتی که عمل اصلی به ازای هر مقدار از اندازه ورودی انجام می‌شود‪.‬‬

‫‪ ‬اندازه ورودی‪n :‬‬

‫‪ ‬عمل اصلی‪ :‬دستور یا گروهی از دستورها که معرف کل کار انجام شده الگوریتم است‪.‬‬

‫* انتخاب عمل معموال با تجربه و داوری انجام می‌شود‪.‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 5‬‬

‫تحلیل‌پیچیدگی‌زمانی‌الگوریتم‬
‫مثال‪ : 1‬الگوریتم جستجوی ترتیبی‬

‫اندازه‌ورودی‪n‌:‬‬ ‫‪‬‬

‫عمل‌اصلی‪if (location > n)‌:‬‬ ‫‪‬‬

‫پیچیدگی‌زمانی‪T(n) = n‌:‬‬ ‫‪‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 6‬‬

‫‪3‬‬
‫‪11/3/2020‬‬

‫تحلیل‌پیچیدگی‌زمانی‌الگوریتم‬
‫مثال‪ : 2‬الگوریتم جمع عناصر یک آرایه‬

‫اندازه‌ورودی‪n‌:‬‬ ‫‪‬‬

‫عمل‌اصلی‪result = result + S[i]‌:‬‬ ‫‪‬‬

‫پیچیدگی‌زمانی‪T(n) = n‌:‬‬ ‫‪‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 7‬‬

‫تحلیل‌پیچیدگی‌زمانی‌الگوریتم‬
‫مثال‪ : 3‬الگوریتم مرتب سازی تعویضی‬

‫اندازه‌ورودی‪n‌:‬‬ ‫‪‬‬

‫عمل‌اصلی‪if ( S[j] < S[i] )‌:‬‬ ‫‪‬‬

‫پیچیدگی‌زمانی‪:‬‬ ‫‪‬‬

‫)𝟏‪𝒏(𝒏−‬‬
‫= )‪T(n‬‬
‫𝟐‬
‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 8‬‬

‫‪4‬‬
‫‪11/3/2020‬‬

‫تحلیل‌پیچیدگی‌زمانی‌الگوریتم‬
‫مثال‪ : 4‬الگوریتم ضرب دو ماتریس 𝒏 × 𝒏‬

‫اندازه‌ورودی‪n‌:‬‬ ‫‪‬‬

‫عمل‌اصلی‪C[i][j] = C[i][j] + A[i][k] * B[k][j]‌:‬‬ ‫‪‬‬

‫پیچیدگی‌زمانی‪:‬‬ ‫‪‬‬

‫𝟑𝒏 = )‪T(n‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 9‬‬

‫تحلیل‌پیچیدگی‌زمانی‌الگوریتم‬
‫‪ : B(n) ‬پیچیدگی زمانی در بهترین حالت‬

‫حداقل تعداد دفعاتی که الگوریتم‪ ،‬عمل اصلی خود را به ازای یک ورودی به اندازه‌ی ‪ n‬انجام می‌دهد‪.‬‬

‫‪ : W(n) ‬پیچیدگی زمانی در بدترین حالت‬

‫حداکثر تعداد دفعاتی که الگوریتم‪ ،‬عمل اصلی خود را به ازای یک ورودی به اندازه‌ی ‪ n‬انجام می‌دهد‪.‬‬

‫‪ : A(n) ‬پیچیدگی زمانی در حالت متوسط‬

‫متوسط تعداد دفعاتی که الگوریتم‪ ،‬عمل اصلی خود را به ازای یک ورودی به اندازه‌ی ‪ n‬انجام می‌دهد‪.‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 10‬‬

‫‪5‬‬
‫‪11/3/2020‬‬

‫تحلیل‌پیچیدگی‌زمانی‌الگوریتم‬
‫عدد‌مورد‌نظر‪4‌‌:‬‬ ‫مثال‪ :‬الگوریتم جستجوی ترتیبی‬

‫‪ ‬پیچیدگی زمانی در بهترین حالت‬

‫‪B(n) = 1‬‬

‫‪ ‬پیچیدگی زمانی در بدترین حالت‬

‫‪W(n) = n‬‬
‫‪ ‬پیچیدگی زمانی در حالت متوسط‬

‫𝒏 = )‪A(n‬‬ ‫𝟐‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 11‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫باتوجه به عوامل موثر در زمان اجرای یک الگوریتم از قبیل‪ :‬سرعت سخت افزار و نوع کامپایلر؛ امکان بدست آوردن تعداد و زمان‬
‫دقیق اجرای دستورات الگوریتم فراهم نیست‪.‬‬

‫• مرتبه اجرایی یک الگوریتم شبیه هم ارزی است‬


‫مرتبه‌اجرایی‬
‫‪𝑇 𝑛 = 5𝑛 − 4‬‬ ‫𝑛‬

‫• مرتبه اجرایی یک الگوریتم با بزرگترین جمله تابع پیچیدگی زمانی آن تعیین می‌شود‬
‫مرتبه‌اجرایی‬
‫‪𝑇 𝑛 = 2𝑛 2 + 6𝑛 − 3‬‬ ‫‪𝑛2‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 12‬‬

‫‪6‬‬
‫‪11/3/2020‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫نماد ‪Big O‬‬

‫‪ -‬تعریف‪:‬‬

‫کمترین‌کران‌باال؛‌زمان‌اجرای‌الگوریتم‌از‌این‌حد‌کمتر‌نشود(بدترین ‌حالت)‬

‫‪ -‬رابطه ریاضی‬
‫𝑛 𝑔 𝑂= 𝑛 𝑓‬ ‫)𝑛(𝑔𝐶 ≤ )𝑛(𝑓 ‪∃ 𝐶, 𝑛0 > 0 ∶ ∀ 𝑛 ≥ 𝑛0‬‬
‫𝑓 و‌𝑔 توابع‌غیر‌منفی‌می‌باشد؛‌حداقل‌یک‌𝑐 ‪‌،‬به‌ازای‌تمام‌مقادیر‌𝑛 وجود‌دارد‪‌،‬که‌در‌این‌حالت‌‬
‫می‌گوییم‪‌،‬مرتبه‌اجرایی‌تابع‌)𝑛(𝑓 ‪‌،‬تابع‌)𝑛(𝑔 می‌باشد‪.‬‬

‫‪ -‬مثال‪:‬‬
‫)𝑛(𝑂 = ‪3𝑛 + 3‬‬
‫‪3𝑛 + 3 ≤ 4𝑛 ∶ 𝑛 ≥ 3‬‬ ‫با‌فرض‌اینکه ‪ 𝑐 = 4‬و ‪ 𝑛0 = 3‬داریم‪:‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 13‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫‪ -‬مثال‪:‬‬
‫)‪𝑛 2 + 10𝑛 = 𝑂(𝑛 2‬‬
‫با‌فرض‌اینکه ‪ 𝑐 = 2‬و ‪ 𝑛0 = 10‬داریم‪:‬‬

‫‪𝑛 2 + 10𝑛 ≤ 2𝑛 2 ∶ 𝑛 ≥ 2‬‬

‫‪ -‬قضیه اصلی‪:‬‬
‫اگر‌ ‪ 𝑓 𝑛 = 𝑎𝑚 𝑛𝑚 + ⋯ + 𝑎1 𝑛 + 𝑎0‬آنگاه‌‌)𝑚 𝑛(𝑂 = 𝑛 𝑓‬

‫‪ -‬مثال‪:‬‬
‫𝑛‬ ‫‪1‬‬ ‫𝑛‬
‫‪𝑓 𝑛 = 𝑛 − 1 = 𝑛2 −‬‬
‫‪2‬‬ ‫‪2‬‬ ‫‪2‬‬
‫)‪𝑓 𝑛 = 𝑂(𝑛 2‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 14‬‬

‫‪7‬‬
‫‪11/3/2020‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫‪ -‬مثال‪ :‬مرتبه اجرایی شبه کدهای زیر را بدست آورید‬

‫;‪a) 𝑥 ≔ 𝑥 + 1‬‬ ‫𝑜𝑑 𝑛 𝑜𝑡 ‪d) 𝑓𝑜𝑟 𝑖 ≔ 1‬‬


‫)𝟏(𝑶‬ ‫𝑜𝑑 𝑛 𝑜𝑡 ‪𝑓𝑜𝑟 𝑖 ≔ 1‬‬
‫;‪𝑥 ≔ 𝑥 + 1‬‬
‫) 𝟐𝒏(𝑶‬
‫𝑜𝑑 ‪b) 𝑓𝑜𝑟 𝑖 ≔ 4 𝑡𝑜 12‬‬
‫;‪e) 𝑥 ≔ 0‬‬ ‫;𝑛 ≔ 𝑖‬
‫;‪𝑥 ≔ 𝑥 + 1‬‬
‫𝑛𝑖𝑔𝑒𝑏 𝑜𝑑 ‪𝑤ℎ𝑖𝑙𝑒 𝑖 > 1‬‬
‫)𝟏(𝑶‬ ‫;‪𝑥 ≔ 𝑥 + 1‬‬
‫;‪𝑖 ≔ 𝑖 𝑑𝑖𝑣 2‬‬
‫𝑜𝑑 𝑛 𝑜𝑡 ‪c) 𝑓𝑜𝑟 𝑖 ≔ 1‬‬ ‫;𝑑𝑛𝑒‬
‫;‪𝑥 ≔ 𝑥 + 1‬‬ ‫)𝒏𝑔𝑜𝑙(𝑶‬
‫)𝒏(𝑶‬
‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 15‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫‪ -‬نکات‪:‬‬

‫‪ ‬وقتی‌می‌گوییم‌مرتبه‌ی‌زمانی‌یک‌الگوریتم‌)𝑛(𝑂 است‪‌،‬یعنی‌تعداد‌تکرار‌دستور‌اصلی‌الگوریتم‌ضریبی‌از‌𝑛 است‪.‬‬

‫‪ ‬مرتبه‌اجرایی‌دو‌حلقه ‪ for‬تودرتو‌(چه‌مستقل‪‌،‬چه‌وابسته)‪‌،‬که‌شمارنده‌آن‌ها‌تا‌‪ n‬باشد‪‌،‬همواره‌)𝟐𝒏(𝑶‬

‫‪ ‬مرتبه‌اجرایی‌سه‌حلقه‌‪ for‬تودرتو‌(چه‌مستقل‪‌،‬چه‌وابسته)‪‌،‬به‌شرطی‌که‌تمامی‌حلقه‌ها‌به‌نوعی‌تابعی‌از‌‪ n‬باشد‪‌،‬‬


‫همواره‌) 𝟑𝒏(𝑶‬

‫‪ ‬مرتبه‌اجرایی‌یک‌حلقه‌‪ while‬که‌شمارنده‌آن‌از‌‪ n‬به‌‪ 1‬تغییر‌می‌کند‪‌،‬و‌شمارنده‌آن‌با‌دستور‌𝒌 𝒗𝒊𝒅 𝒊 ≔ 𝒊 و‌یا‬


‫𝒌 ∗ 𝒊 ≔ 𝒊 ‪‌،‬پس‌از‌هر‌بار‌اجرای‌حلقه‌تغییر‌کند‪‌،‬برابر‌است‌‌با‌ 𝒏 𝒌 𝐠𝐨𝐥 𝑶‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 16‬‬

‫‪8‬‬
‫‪11/3/2020‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫‪ -‬نکات‪:‬‬

‫‪ ‬در‌مقایسه‌‪ order‬های‌مختلف‌داریم؛‬
‫) 𝑛 𝑛(𝑂 < )!𝑛(𝑂 < ) 𝑛 𝑘(𝑂 < ) 𝑘 𝑛(𝑂 < 𝑛 ‪𝑂 1 < 𝑂(log 𝑛) < 𝑂(𝑛) < 𝑂 𝑛 log‬‬

‫) ‪𝑂(𝑛2‬‬ ‫‪𝑡2‬‬ ‫𝑣‬


‫که‌در‌آن؛‬ ‫=‬ ‫‪ ‬همواره‌داریم‌‌‪× 2‬‬
‫) ‪𝑂(𝑛1‬‬ ‫‪𝑡1‬‬ ‫‪𝑣1‬‬

‫‪ : 𝑣1‬سرعت‌کامپیوتر‌اول‬ ‫‪ ∶ 𝑡1‬زمان‌اجرای‌الگوریتم‌در‌کامپیوتر‌اول‌‬
‫‪ : 𝑣2‬سرعت‌کامپیوتر‌دوم‬ ‫‪ : 𝑡1‬زمان‌اجرای‌الگوریتم‌در‌کامپیوتر‌دوم‬

‫مثال‪ :‬الگوریتمی‌با‌مرتبه‌زمانی‌ 𝑛 ‪ 𝑂 𝑛 log‬در‌کامپیوتری‌در‌مدت‌‪ 3‬ثانیه‌اجرا‌می‌شود‪‌.‬همان‌الگوریتم‌در‌کامپیوتری‌دیگر‌با‌‬


‫سرعت‌‪ 25‬برابر‌کامپیوتر‌اول‌در‌چه‌مدت‌زمانی‌اجرا‌خواهد‌شد؟‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 17‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫نماد ‪Ω‬‬

‫‪ -‬تعریف‪:‬‬

‫بیشترین‌کران‌پایین؛‌زمان‌اجرای‌الگوریتم‌از‌این‌حد‌بیشتر‌نشود(بهترین‌حالت)‬

‫‪ -‬رابطه ریاضی‬
‫𝑛 𝑔 𝛺= 𝑛 𝑓‬ ‫)𝑛(𝑔𝐶 ≥ )𝑛(𝑓 ‪∃ 𝐶, 𝑛0 > 0 ∶ ∀ 𝑛 ≥ 𝑛0‬‬
‫)𝑛(𝑓 امگای‌)𝑛(𝑔 است؛‌اگر‌و‌تنها‌اگر‌به‌ازای‌مقادیر‌ثابت‌و‌مثبت‌𝑐 و‌ ‪ 𝑛0‬و‌)𝑛(𝑓 برای‌تمامی‌‬
‫مقادیر‌بزرگتر‌یا‌مساوی ‪‌، 𝑛0‬بزرگتر‌یا‌مساوی‌)𝑛(𝑔‪ C‬باشد‪.‬‬

‫‪ -‬مثال‪:‬‬
‫)𝑛(𝛺 = ‪3𝑛 + 2‬‬
‫‪3𝑛 + 2 ≥ 3𝑛 ∶ 𝑛 ≥ 1‬‬ ‫با‌فرض‌اینکه ‪ 𝑐 = 3‬و ‪ 𝑛0 = 1‬داریم‪:‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 18‬‬

‫‪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‬داریم‪:‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 19‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫‪ -‬نکات‪:‬‬

‫‪ ‬برای‌تمام‌الگوریتم‌های‌مرتب‌کننده‌که‌بر‌اساس‌مقایسه‌عمل‌مرتب‌سازی‌را‌انجام‌می‌دهند‌مرتبه‌زمانی‌آن‌ها‌برابر‌‬
‫خواهد‌بود‌با 𝒏 𝒈𝒐𝒍 𝒏 𝜴‬

‫) 𝑛 𝑓(𝑂 = 𝑛 ‪𝑇1‬‬ ‫‪ ‬اگر‬


‫)‪T(n‬‬
‫) 𝑛 𝑔(𝑂 = 𝑛 ‪𝑇2‬‬

‫آنگاه‌داریم؛‬
‫𝑛 ‪𝑇 𝑛 = 𝑇1 𝑛 + 𝑇2‬‬
‫} 𝑛 𝑔(𝑂 ‪𝑂 𝑛 = 𝑚𝑎𝑥{𝑂(𝑓 𝑛 ,‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 20‬‬

‫‪10‬‬
‫‪11/3/2020‬‬

‫تحلیل‌مرتبه‌اجرایی‌الگوریتم‬
‫نمودارهای ‪O ، Ω ، θ‬‬
‫نمودار ‪O‬‬ ‫نمودار ‪Ω‬‬

‫نمودار ‪θ‬‬

‫‪Arzhang Malek - TNB‬‬ ‫طراحی الگوریتمها (‪)AD‬‬ ‫‪Slide 21‬‬

‫‪11‬‬

You might also like