Syllabus.pdf

‫طراحي الگوریتمها (‪)۴۰-۳۵۴‬‬
‫‪Design of Algorithms‬‬
‫دانشکدهی مهندسي کامپيوتر‬
‫مدرس‪ :‬حميد ضرابيزاده‬
‫کليات‬
‫هدف از اين درس‪ ،‬آشنايی دانشجويان با روشهای متداول در طراحی الگوريتمهای کارا برای مسائل مختلف است‪ .‬در ارائهی‬
‫مطالب‪ ،‬بر تحلیل کارايی الگوريتمها و اثبات درستی آنها تأکید خواهد شد‪ .‬همچنین‪ ،‬موضوعات مهمی از نظريهی الگوريتمها‬
‫همچون پیچیدگی محاسباتی‪ ،‬شبکههای شار و الگوريتمهای گراف در اين درس ارائه خواهند شد‪.‬‬
‫ریز مواد‬
‫‪ )1‬مقدمات و مسائل نمونه (‪ ۴‬جلسه)‬
‫‪ ‬حلپذيری‪ ،‬تحلیل الگوريتمها‪ ،‬زمانهای اجرا‬
‫‪ ‬تطابق پايدار‪ ،‬قضايای مرتبط‬
‫‪ ‬بزرگترين زيردنبالهی متوالی‪ ،‬مسئلهی ‪-۳‬مجموع‬
‫‪ ‬الگوريتمهای مبتنی بر استقرا‪ :‬ارزيابی چندجملهایها‪ ،‬ستارهی مشهور‬
‫‪ )2‬گرافها (‪ 2‬جلسه)‬
‫‪ ‬جستوجوهای عمقاول و سطحاول و کاربردهای آنها‬
‫‪ ‬ترتیب توپولوژيکی‪ ،‬مؤلفههای قوي ًا همبند‬
‫‪ )۳‬الگوریتمهای حریصانه (‪ ۴‬جلسه)‬
‫‪ ‬خرد کردن پول‪ ،‬مسائل زمانبندی‪ ،‬کولهپشتی کسری‬
‫‪ ‬درخت فراگیر کمینه‪ :‬الگوريتمهای کروسکال و پريم‬
‫‪ ‬کوتاهترين مسیر در گرافها‪ :‬الگوريتمهای دايکسترا و بلمن‪-‬فورد‬
‫‪ ‬فشردهسازی‪ :‬کدگذاری هافمن‬
‫‪ )۴‬تقسيم و حل (‪ 2‬جلسه)‬
‫‪ ‬محاسبهی توان‪ ،‬محاسبهی روابط بازگشتی‪ ،‬نزديکترين زوج نقاط‬
‫‪ ‬ضرب اعداد بزرگ‪ ،‬الگوريتم استراسن‪ ،‬يافتن عنصر اکثريت‬
‫‪ )5‬برنامهریزی پویا (‪ ۴‬جلسه)‬
‫‪ ‬اعداد فیبوناچی‪ ،‬زمانبندی بازههای وزندار‪ ،‬خردکردن پول‬
‫‪ ‬ضرب ماتريسها‪ ،‬کولهپشتی‪ ،‬تراز دنبالهها‬
‫‪ ‬بزرگترين زيردنبالهی مشترک‪ ،‬بزرگترين زيردنبالهی افزايشی‬
‫‪ ‬کوتاهترين مسیر بین تمام رأسها‪ :‬الگوريتمهای فلويد‪-‬وارشال و جانسون‬
‫‪ )6‬شبکههای شار (‪ ۳‬جلسه)‬
‫‪ ‬شار بیشینه و برش کمینه‪ :‬الگوريتم فورد‪-‬فالکرسن‬
‫‪ ‬بهبود الگوريتم فورد‪-‬فالکرسن‪ ،‬بهبودهای ادموندز و کارپ‬
‫‪ ‬گونهها و کاربردها‪ :‬تطابق در گراف دوبخشی‪ ،‬مسیرهای مجزا‪ ،‬گرد کردن ماتريس‬
‫‪ )7‬پيچيدگي محاسبات (‪ ۳‬جلسه)‬
‫‪ ‬کاهش چندجملهای‪ ،‬مسائل صدقپذيری‬
‫‪ ‬ردهی انپی‪ ،‬اثبات انپی‪-‬تمام بودن يک مسئله‪ ،‬قضیهی کوک‬
‫‪ ‬دور همیلتنی‪ ،‬رنگآمیزی گراف‪ ،‬مجموع زيرمجموعهها‬
‫‪ )8‬الگوریتمهای تقریبي (‪ 2‬جلسه)‬
‫‪ ‬پوشش راسی‪ ،‬فروشندهی دورهگرد‪ ،‬سختی تقريب‬
‫‪ ‬طرحهای تقريبی‪ ،‬مسئلهی کولهپشتی‬
‫‪ )9‬الگوریتمهای تصادفي (‪ 2‬جلسه)‬
‫‪ ‬مسئلهی استخدام‪ ،‬کوچکترين دايرهی محیطی‬
‫‪ ‬ارزيابی درخت منطقی‪ ،‬يافتن نزديکترين نقاط‬
‫‪ )10‬حل مسائل سخت (‪ 2‬جلسه)‬
‫‪ ‬يافتن پوشش رأسی کوچک‪ ،‬حل مسائل سخت روی درخت‬
‫‪ ‬روش پسگرد‪ ،‬انشعاب و حد‪ ،‬درخت بازی‬
‫آزمون ‪ -‬تمرین ‪ -‬پروژه‬
‫‪‬‬
‫چهار تمرين نظری (‪ ۴‬نمره)‬
‫‪‬‬
‫دو تمرين برنامهنويسی (‪ 2‬نمره)‬
‫‪‬‬
‫آزمون میانترم (‪ 6‬نمره)‬
‫‪‬‬
‫آزمون پايانی (‪ 8‬نمره)‬
‫‪‬‬
‫يک مسابقه به سبک ایسیام (‪ +1‬نمره)‬
‫مراجع اصلي‬
‫‪J. Kleinberg and E. Tardos, Algorithm Design, Addison Wesley, 2005.‬‬
‫‪‬‬
‫‪T. Cormen, C. Leiserson, R. Riverst, and C. Stein, Introduction to Algorithms, 3rd edition, MIT‬‬
‫‪Press, 2009.‬‬
‫‪‬‬
‫مراجع کمکي‬
‫‪U. Manber, Introduction to Algorithms: A Creative Approach, Addison Wesley, 1989.‬‬
‫‪‬‬
‫‪G. Brassard, P. Bratley, Algorithmics: Theory and Practice, Prentice-Hall, 1988.‬‬
‫‪‬‬
‫‪2‬‬