You are not allowed to perform this action
دادهساختارها و الگوریتمها
Data Structures and Algorithms
مقطع: کارشناسی | گرایش: نرمافزار |
نوع درس: نظری | تعداد واحد: ۳ |
پیشنیاز: ریاضیات گسسته | همنیاز: برنامهسازی پیشرفته |
هدف کلی
در این درس دانشجویان با روشهای تحلیل الگوریتمها، دادهساختارهای پایهای و نیز برخی الگوریتمهای مقدماتی آشنا میشوند. در ارائهی مطالب این درس بر تحلیل و اثبات درستی الگوریتمها تاکید میشود. دانشجو باید از قبل با یکی از زبانهای برنامهنویسی و نیز روشهای بازگشتی در حل مسئلهها آشنا باشد. الگوریتمهای درس مستقل از زبان ارائه میشود.
سرفصلها
- مقدمات (۱ جلسه)
- سطوح انتزاع
- مراحل مختلف حل مسئله و انتزاع
- دادهمدلها، دادهگونهها، دادهساختارها، دادهگونهی انتزاعی، شیء
- تحلیل الگوریتم (۳ جلسه)
- تحلیل زمانی الگوریتم: مرتبسازی درجی
- رشد توابع
- روشهای تحلیل سرشکن
- تقسیم و حل (۲ جلسه)
- مرتبسازی ادغامی، محاسبهی تعداد نابجایی، زیردنبالهی متوالی، ضرب اعداد
- قضیه اصلی
- تحلیل الگوریتمهای تصادفی (۱ جلسه)
- محاسبهی میانهی تقریبی، مسئلهی استخدام
- دادهساختارهای پایه (۱ جلسه)
- صف و پشته
- لیست پیوندی
- دادهساختارهای درخت (۵ جلسه)
- پیادهسازیهای مختلف درختها، پیمایش درختها، استقرای ساختاری
- درخت عبارت، تبدیل نگارشهای مختلف یک عبارت ریاضی
- دادهساختار ترای
- درخت دودویی جستجو
- صف اولویت (هرم کمینه و بیشینه)
- مرتبسازی (۴ جلسه)
- درخت تصمیم و کران پایین
- مرتبسازی هرمی
- مرتبسازی سریع (تحلیل تصادفی)
- مرتبسازی با تعداد مقایسههای بهینه
- مرتبسازی خطی: شمارشی، مبنایی، سطلی
- مرتبسازی خارجی (اختیاری)
- مرتبهی آماری (۲ جلسه)
- محاسبهی کمینه و بیشینه
- انتخاب k-امین عنصر (الگوریتم تصادفی و قطعی)
- درهمسازی (۲ جلسه)
- درهمسازی زنجیرهای
- درهمسازی سراسری
- درهمسازی باز
- درهمسازی کامل
- دادهساختارهای پیشرفته (۳ جلسه)
- مجموعههای مجزا
- درختهای دودویی متوازن: درخت قرمز-سیاه
- درخت بازه
- گرافها (۳ جلسه)
- روشهای مختلف پیادهسازی گراف
- جستوجوهای عمقاول و سطحاول و کاربردهای آنها
- ترتیب توپولوژیکی، مؤلفههای قویاً همبند
- کوتاهترین مسیر در گرافها: الگوریتمهای دایکسترا و بلمن-فورد
ارزیابی پیشنهادی
- پنج تمرین عملی (۳ نمره)
- پنج تمرین نظری (۳ تحویل)
- آزمون میانترم (۶ نمره)
- آزمون پایانی (۸ نمره)
منابع پیشنهادی
- T. Cormen, C. Leiserson, R. Rivest, and C. Stein. Introduction to Algorithms. 4th Edition, MIT Press, 2022.
- D. Knuth. The Art of Computer Programming: Sorting and Searching. Volume 3, 2nd Edition, Pearson Education, 1998.