0% found this document useful (0 votes)
15 views43 pages

Algorithm Chapter1

Uploaded by

Adfa Adfa
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)
15 views43 pages

Algorithm Chapter1

Uploaded by

Adfa Adfa
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/ 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