داده‌ساختارها و الگوریتم‌ها

مدرس: محمدعلی آبام گواهی: رسمی دوزبانه
ترم: زمستان ۱۴۰۳ پیش‌نیاز: برنامه‌سازی پایتون، ساختارهای گسسته
زمان ارائه: شنبه و دوشنبه ۱۴:۰۰ تا ۱۵:۳۰ محل برگزاری: کلاس مجازی

هدف کلی

در این درس دانشجویان با روش‌های تحلیل الگوریتم‌ها، داده‌ساختارهای پایه‌ای و نیز برخی الگوریتم‌های مقدماتی آشنا می‌شوند. در ارائه‌‌ی مطالب این درس بر تحلیل و اثبات درستی الگوریتم‌ها تاکید می‌شود. دانشجو باید از قبل با یکی از زبان‌های برنامه‌نویسی آشنا باشد. الگوریتم‌های درس مستقل از زبان ارائه می‌شود.

سرفصل‌ها

  • تحلیل الگوریتم (۲ جلسه)
    • الگوریتم‌ها و تحلیل زمانی آن‌ها: دنباله فیبوناچی و زیر آرایه با بزرگترین جمع
    • رشد توابع: نمادهای O، Ω و Θ
  • الگوریتم‌های تقسیم و حل (۲ جلسه)
    • مرتب‌سازی ادغامی، ، ضرب اعداد $n$ بیتی
    • قضیه اصلی
  • الگوریتم‌های تصادفی (۱ جلسه)
    • الگوریتم‌های لاس‌وگاس و مونتوکارلو: مسئله میانه تقریبی
    • جایگشت تصادفی و کاربردهای‌ آن: مسئله‌ی استخدام
  • مرتبه‌ی آماری، مرتب‌سازی (۳ جلسه)
    • انتخاب k-امین عنصر (الگوریتم قطعی)
    • مرتب‌سازی غیرمقایسه‌ای: شمارشی، مبنایی
    • مرتب‌سازی مقایسه‌ای: مرتب‌سازی سریع (تحلیل تصادفی)
  • داده‌ساختارهای درخت (۲ جلسه)
    • پیاده‌سازی‌های مختلف درخت‌ها، درخت‌های دودویی جستجو
    • صف اولویت (هرم کمینه و بیشینه)، مرتب‌سازی هرمی
  • درهم‌سازی (۲ جلسه)
    • درهم‌سازی زنجیره‌ای، درهم‌سازی باز، Bloom filter
    • انواع توابع درهم‌ساز: توابع k-سراسری و توابع سراسری
  • الگوریتم‌های حریصانه (۱ جلسه)
    • خرد کردن پول، مسائل زمان‌بندی
  • برنامه‌ریزی پویا (۲ جلسه)
    • اعداد فیبوناچی، زمان‌بندی بازه‌های وزن‌دار
    • خرد کردن پول، بزرگ‌ترین زیردنباله‌ی مشترک
  • گراف‌ها (۳ جلسه)
    • روش‌های مختلف پیاده‌سازی گراف
    • جست‌وجوهای عمق‌اول و سطح‌اول و کاربردهای آن‌ها
    • کوتاه‌ترین مسیر در گراف‌ها: الگوریتم‌های دایکسترا

ارزیابی

  • تمرین‌های عملی: ۳ نمره
  • تمرین‌های تئوری : ۳ نمره
  • آزمون پایان‌دوره: ۱۴ نمره

منابع

  • محمد قدسی، «داده‌ساختارها و مبانی الگوریتم‌ها»، چاپ دهم، انتشارات فاطمی، ۱۴۰۲.
  • T. Cormen, C. Leiserson, R. Riverst, and C. Stein. Introduction to Algorithms. 4th Edition, MIT Press, 2022.