Algorithm Chapter1
Algorithm Chapter1
سرفصل
فصل اول – تحلیل الگوریتم ها
فصل دوم – الگوریتم ها تقسیم و غلبه
فصل سوم – الگوریتم های حریصانه
فصل چهارم – الگوریتم های پویا
منبع:
کتاب طراحی و تحلیل الگوریتم ها – نویسنده :دکتر بهروز قلی زاده – انتشارات علمی دانشگاه
صنعتی شریف
2
برنامه نویسی کوییزها
ریاضیات گسسته امتحان میان ترم – فصل های 1و 2
ساختمان داده ها امتحان پایان ترم – فصل های 3و4
3
4
مجموعهای متناهی از دستورالعملها است ،که به ترتیب خاصی اجرا میشوند و مسئلهای را حل میکنند.
به عبارت دیگر یک الگوریتم ،روشی گام به گام برای حل مسئله است.
برای نوشتن یک الگوریتم مناسب باید سه عامل اصلی را در صورت مسئله شناسایی کنیم:
مقادیر معلوم :اطالعاتی که در اختیار ما قرار داده شده و باید به کمک آنها به حل مسئله بپردازیم
(دادهها)
خواستههای مسئله :نتایجی که در اثر انجام محاسبات بر روی دادههای مسئله حاصل میشود (مقادیر
مجهول)
عملیات محاسباتی :دستورات و روابط منطقی که برای رسیدن به خواستههای مسئله بر روی دادهها و
مقادیر مجهول انجام میشود.
5
فرض کنید قصد داریم برنامهای ایجاد کنیم که یک عدد را دریافت کرده و در صورت فرد بودن عدد عبارت
Fardو در صورت زوج بودن عبارت Zojeرا چاپ کند ،مراحل این الگوریتم به شرح زیر است:
6
رعایت این موارد برای نوشتن یک الگوریتم صحیح الزم و ضروری است:
مراحل را به ترتیب و پشت سر هم بنویسید (اجرا از باال به پایین)
از بیان جزئیات بیهوده پرهیز کرده و سعی کنید تا حد امکان مراحل را ساده و در عین حال کامل بنویسید.
از زبانی ساده برای نوشتن الگوریتم استفاده کنید ،طوری که افراد مختلف برداشت متفاوتی از آن نداشته باشند.
هر الگوریتم تنها یک نقطه شروع دارد که اولین دستورالعمل از آن شروع میشود ،ولی میتواند چندین پایان داشته باشد.
الگوریتم باید جامع باشد ،طوری که در حالتهای خاص نیز نتیجهی مناسب را به شما بدهد.
7
زبان محاوره ای
فلوچارت
نوشتن برنامه
شبه کد
8
مقایسه بین الگوریتم هایی انجام می شود که برای حل یک مساله ارائه شده اند
تحلیل و مقایسه الگوریتم ها در دو حوزه انجام می شود
حافظه مصرفی
زمان مصرفی
زمان مصرفی یک الگوریتم ،وابسته به پارامترهای مختلفی از جمله زبان پیاده سازی ،سیستم عامل ،سخت افزار و ....است
امکان محاسبه زمان واقعی اجرای الگوریتم نیست .زمان تخمینی برای مقایسه محاسبه می کنیم
این زمان مصرفی بر اساس تعداد دستورات اجرایی الگوریتم است
9
هر الگوریتم دارای یک تابع زمان مصرفی است که تعداد دستور العمل اجرایی را بر حسب اندازه ورودی
الگوریتم مشخص می کند
اندازه ورودی الگوریتم :یک یا چند پارامتر ورودی الگوریتم که بیشترین تاثیر را در زمان مصرفی الگوریتم
دارند.
مثال :در مساله جستجو ،اندازه ورودی چیست؟
10
T(n)=(n+1)+(n+1)n+n(n)=2n2+2n+1
11
12
13
14
15
نرخ رشد (مرتبه زمان مصرفی) )g(n
بزرگتر یا مساوی) f(nاست
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43