29
الگوریتم آموزش طراحیfaradars.org/fvsft109 ﻓﺮادرسFaraDars.org

آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

Embed Size (px)

Citation preview

Page 1: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 2: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

حام دهیم با بیان ترتیب کارهایی که باید ان. شودالگوریتم به روش خاص حل هر دسته از مسایل گفته می

تم بایود بوه الگووری. تعیین نظم و ترتیب دستورات و توجه به اولویت اجرای دستورات را الگوریتم گووییم

.دکند، سازماندهی شده باشای از مسایل را به دقت تبیین میای از اعمال که حل دستهصورت رشته

.منحصر بفرد نیستالگوریتم حل یک مسئله لزوماً

الگوریتم چیست؟آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 3: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

:برای ارزیابی کارایی یک الگوریتم، دو مسئله دارای اهمیت است

زمان اجرای الگوریتم •

الگوریتممورد نیاز حافظه •

همانند عواملی که در هنگام خرید به آن توجه داریم و بعد از جمع بندی کلی خرید خود را انجام می

:مانند. دهیم

...قیمت، کیفیت، سلیقه، آبروداری و

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 4: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

. اهمیت بیشتری داردزمان اجرا عامل زمان اجرا و حافظه، دو از بین

:اجرا به عوامل متعددی بستگی دارد از جملهزمان

مثالً پردازنده : افزارسخت •

.سریعتر هستندPASCALمعموالً از مشابه Cهای نوشته شده به زبان مثالً برنامه: کامپایلر•

شتر مثالً در مرتب سازی یک آرایه، هر چه تعداد عناصر آرایه بیشتر باشد، زمان اجرا بی: ورودیاندازه •

.است

اشد سازی صعودی یک آرایه، اگر آرایه از قبل مرتب بمثال در مرتببرای : یا ترتیب ورودیترکیب •

.معموالً بهترین حالت است

جود داشته های مختلف وهای مختلف با زمانممکن است برای یک مسئله الگوریتم: الگوریتمپیچیدگی •

.ستشان، یکسان نیهای مختلفی وجود دارد که پیچیدگیسازی، الگوریتممثالً برای مرتب. باشد

فرادرس

FaraDars.org

Page 5: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

:را می توان بررسی کردها سه حالت الگوریتمبررسی عملکرد در

(Best case)حالت بهترین -الف

(Average case)متوسط حالت -ب

(Worst case)حالت بدترین -ج

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 6: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

بورای 𝑛0 ،f(n)و Cباشد اگر و فقط اگر به ازای مقادیر ثابت و مثبتوی از میf(n)=O(g(n)): 1تعریف

:یعنی. باشدCg(n)، کمتر یا مساوی 𝑛0تمامی مقادیر بزرگتر یا مساوی

𝑓 𝑛 = 𝑂 𝑔 𝑛 ⟺ ∃𝐶 , 𝑛0 > 0 ∶ ∀𝑛 ≥ 𝑛0 𝑓 𝑛 ≤ 𝐶𝑔 𝑛

f وgگوییم مرتبه اجرایی تابع باشند و در این حالت میتوابعی غیرمنفی میf(n) تابع ،g(n)باشدمی.

های مسائل حد در ریاضیات است و با استفاده از تعاریف و قضیه زیر ارزیمرتبه اجرایی همانند مبحث هم

.توان برای هر الگوریتمی مرتبه اجرایی آن را بدست آوردمی

اجراییمرتبه آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 7: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

f(n): 2تعریف = θ(g(n)) اگر و فقط اگر ثابتهای𝑐1 و𝑐2 و ثابت صحیح𝑛0 وجود داشته باشد به

𝑛ای که برای همه مقادیر گونه ≥ 𝑛0،

𝑐1 g(n) ≤ f(n) ≤ 𝑐2 g(n)

𝑓اگر : قضیه 𝑛 = 𝑎𝑚𝑛𝑚 +⋯𝑎1𝑛 +𝑎0 باشد آنگاه𝑓 𝑛 = 𝑂 𝑛𝑚خواهد بود.

اجراییمرتبه آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 8: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

f(n): 3تعریف = Ω(g(n))( بخوانیدf(n) اُمگای بزرگg(n) ) فقط اگر اگر و

مقادیروجود داشته باشد که به ازاء کلیه cثابت و𝑛0صحیح ثابت

𝑛 ≥ 𝑛0 ،f(n) ≥ 𝑐 g(n)

𝑐صورت کران پایین تعداد اعمال الزم جهت اجرای یک الگوریتم به در این g(n)محدود گردیده است .

f(n)چنانچه = Ω(g(n)) وf(n)=O(g(n))آنگاه خواهیم داشت:

f(n) = θ(g(n))

اجراییمرتبه آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 9: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

f(n): 4تعریف = 𝑜(g(n))( بخوانیدf(n) اُی کوچکg(n) ) اگر و فقط اگر

lim𝑛→∞

𝑓(𝑛)

𝑔(𝑛)→ 0

f(n): 5تعریف = ω(g(n))( بخوانیدf(n) اُمگای کوچکg(n) ) اگر

lim𝑛→∞

𝑔(𝑛)

𝑓(𝑛)→ 0

اجراییمرتبه آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 10: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

چنانچه.ندکنمیتقسیمنشدنیرامیاناکاراوشدنیرامیاکارادستهدوبهراهاالگوریتمکارایینظراز

رامالگوریتمآنگاه،O(p(n))مانندباشد،هادادهتعدادبرحسبایچندجملهالگوریتمیکزمانیمرتبه

.بودخواهدشدنی

یکدر.دشومینامیدهنشدنیرامکردمحدودایچندجملهیکبهنتوانراآنزمانیمرتبهکهالگوریتمی

بهمالگوریتاجرایبرایالزمزمان(هادادهطولها،دادهتعداد)هادادهاندازهافزایشبانشدنیرامالگوریتم

.یابدمیافزایششدت

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 11: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

n!2𝑛𝑛3𝑛2𝑛 log2 𝑛log2 𝑛n

1211001

362880010241000100333.310

12500025002825.650رقمی15عددرقمی64عدد

1000000100006646.6100رقمی30عدد رقمی157عدد

مختلفهای nهای اجرایی با مرتبهجدول مقایسه

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 12: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

برنامه نویسی مقدماتی

هبرنامه سازی پیشرفت

ساختمان داده ها

طراحی الگوریتم

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 13: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

های یک عددمقسوم علیه

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 14: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم عدد اول

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 15: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم تبدیل اعداد زوج به جمع دو عدد اول

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 16: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم محاسبه اعداد اول به روش غربالآموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 17: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

م.م.بالگوریتم بزرگترین مقسوم علیه مشترک

101215150165480

150150330

216032649664096

64645760

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 18: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم تجزیه به عاملهای اول

26023031555

1

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 19: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم خرد کردن یک اسکناس

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 20: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم سری فیبوناچی

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 21: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

مسئله ژوزفآموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 22: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

الگوریتم ادغام یک عدد در آرایه مرتب

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 23: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

بازگشت پذیری

و

الگوریتم های بازگشتی

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 24: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

روش تقسیم و حل

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 25: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

روش حریصانه

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 26: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

روش برنامه سازی پویا

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 27: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

روش بازگشت به عقب

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 28: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

روش انشعاب و تحدید

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org

Page 29: آموزش طراحی الگوریتم به همراه حل مثال های عملی - بخش یکم

29

این اسالید ها بر مبنای نکات مطرح شده در فرادرس

« آموزش طراحی الگوریتم».تهیه شده است

.ماییدبرای کسب اطالعات بیشتر در مورد این آموزش به لینک زیر مراجعه ن

faradars.org/fvsft109

آموزش طراحی الگوریتم

faradars.org/fvsft109

فرادرس

FaraDars.org