0% found this document useful (0 votes)
8 views

Algorithm Chapter1

Uploaded by

Adfa Adfa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Algorithm Chapter1

Uploaded by

Adfa Adfa
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 43

1

‫‪ ‬سرفصل‬
‫فصل اول – تحلیل الگوریتم ها‬ ‫‪‬‬
‫فصل دوم – الگوریتم ها تقسیم و غلبه‬ ‫‪‬‬
‫فصل سوم – الگوریتم های حریصانه‬ ‫‪‬‬
‫فصل چهارم – الگوریتم های پویا‬ ‫‪‬‬

‫‪ ‬منبع‪:‬‬
‫‪ ‬کتاب طراحی و تحلیل الگوریتم ها – نویسنده‪ :‬دکتر بهروز قلی زاده – انتشارات علمی دانشگاه‬
‫صنعتی شریف‬

‫‪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

You might also like