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

Design of Algorithms

مقطع: کارشناسی گرایش: نرم‌افزار
نوع درس: نظری تعداد واحد: ۳
پیش‌نیاز: داده‌ساختارها و الگوریتم‌ها هم‌نیاز: –

هدف کلی

هدف از این درس، آشنایی دانش‌جویان با روش‌های متداول در طراحی الگوریتم‌های کارا برای مسائل مختلف است. در ارائه‌ی مطالب، بر تحلیل کارایی الگوریتم‌ها و اثبات درستی آن‌ها تأکید خواهد شد. همچنین، موضوعات مهمی از نظریه‌ی الگوریتم‌ها همچون پیچیدگی محاسباتی، شبکه‌های شار و الگوریتم‌های گراف در این درس ارائه خواهند شد.

سرفصل‌ها

  • مقدمات و مسائل نمونه (۲ جلسه)
    • حل‌پذیری، تحلیل الگوریتم‌ها، زمان‌های اجرا
    • مسائل نمونه، مثال‌هایی از بهبود کارایی با به‌کارگیری روش‌های طراحی
  • الگوریتم‌های مبتنی بر استقرا (۱ جلسه)
    • ارزیابی چندجمله‌ای‌ها، نگاشت یک‌به‌یک، یافتن همزمان کمینه و بیشینه
  • تقسیم و حل (۲ جلسه)
    • محاسبه‌ی توان، محاسبه‌ی روابط بازگشتی، نزدیک‌ترین زوج نقاط
    • الگوریتم استراسن برای ضرب ماتریس‌ها، تبدیل سریع فوریه
  • الگوریتم‌های حریصانه (۳ جلسه)
    • مسائل زمان‌بندی، کوله‌پشتی کسری
    • فشرده‌سازی، کدگذاری هافمن
    • تطابق پایدار، الگوریتم گیل-شاپلی، قضایای مرتبط
  • برنامه‌ریزی پویا (۴ جلسه)
    • زمان‌بندی بازه‌های وزن‌دار، خرد کردن پول
    • ضرب زنجیره‌ی ماتریس‌ها، کوله‌پشتی، تراز دنباله‌ها
    • بزرگ‌ترین زیردنباله‌ی مشترک، بزرگ‌ترین زیردنباله‌ی افزایشی
    • محاسبه‌ی مجموعه‌ی مستقل روی درخت، درخت دودویی جست‌وجوی بهینه
  • جست‌وجوی فضای حالت (۲ جلسه)
    • روش پس‌گرد، مسئله‌ی هشت وزیر، مجموع زیرمجموعه‌ها
    • انشعاب و حد، فروشنده‌ی دوره‌گرد، درخت بازی، هرس آلفا-بتا
  • الگوریتم‌های گراف (۳ جلسه)
    • درخت فراگیر کمینه: الگوریتم‌های کروسکال و پریم
    • هرم فیبوناچی، تحلیل سرشکن برای کاهش کلید
    • کوتاه‌ترین مسیر بین تمام رأس‌ها: الگوریتم‌های فلوید-وارشال و جانسون
  • تطابق رشته‌ها (۲ جلسه)
    • روش مبتنی بر اثر انگشت، الگوریتم رابین-کارپ
    • تطابق رشته به وسیله‌ی اتوماتا: الگوریتم کنوث-موریس-پرت
  • شبکه‌های شار (۳ جلسه)
    • شار بیشینه و برش کمینه: الگوریتم فورد-فالکرسن
    • بهبود الگوریتم فورد-فالکرسن، بهبودهای ادموندز و کارپ
    • گونه‌ها و کاربردها: تطابق در گراف دوبخشی، مسیرهای مجزا، گرد کردن ماتریس
  • برنامه‌ریزی خطی (۲ جلسه)
    • فرم استاندارد، مدل‌سازی مسائل با برنامه‌ریزی خطی
    • الگوریتم سیمپلکس برای حل برنامه‌ریزی خطی
  • پیچیدگی محاسبات (۳ جلسه)
    • کاهش چندجمله‌ای، مسائل صدق‌پذیری
    • رده‌ی ان‌پی، اثبات ان‌پی‌-تمام بودن یک مسئله، قضیه‌ی کوک
    • دور همیلتنی، رنگ‌آمیزی گراف، مجموع زیرمجموعه‌ها
  • الگوریتم‌های تقریبی (۲ جلسه)
    • روش‌های ترکیبیاتی، پوشش راسی، فروشنده‌ی دوره‌گرد
    • سختی تقریب، طرح‌های تقریب چندجمله‌ای (اختیاری)

ارزیابی پیشنهادی

  • سه تمرین نظری (۳ نمره)
  • سه تمرین برنامه‌نویسی (۳ نمره)
  • آزمون میان‌ترم (۷ نمره)
  • آزمون پایانی (۷ نمره)
  • مسابقه برنامه‌سازی (۱‌+ نمره)

منابع پیشنهادی

  1. T. Cormen, C. Leiserson, R. Riverst, and C. Stein. Introduction to Algorithms. 4th Edition, MIT Press, 2022.
  2. J. Kleinberg and E. Tardos. Algorithm Design. 2nd Edition, Pearson, 2022.
  3. U. Manber. Introduction to Algorithms: A Creative Approach. Addison-Wesley, 1989.
  4. G. Brassard and P. Bratley. Algorithmics: Theory and Practice. Prentice-Hall, 1988.