مبانی طراحی و تحلیل الگوریتمها یکی از مباحث کلیدی در علوم کامپیوتر و مهندسی نرمافزار است که به مطالعه روشهای بهینه برای حل مسائل محاسباتی میپردازد. در این درس، ابتدا مفهوم الگوریتم و ویژگیهای آن مانند صحت، کارایی، سادگی و بهینهبودن بررسی میشود. سپس روشهای طراحی الگوریتمهای بهینه برای حل مسائل مختلف مورد مطالعه قرار میگیرد.
مباحث اصلی این درس شامل موارد زیر است:
-
تحلیل کارایی الگوریتمها:
- روشهای محاسبه زمان اجرا (Time Complexity) و مرتبه زمانی (Big-O، Theta، Omega).
- تحلیل پیچیدگی فضا (Space Complexity) برای سنجش میزان حافظه مورد نیاز.
-
روشهای طراحی الگوریتمها:
- تقسیم و حل (Divide and Conquer): شکستن مسئله به زیرمسائل کوچکتر و حل بازگشتی. (مانند مرتبسازی سریع و ادغامی)
- برنامهنویسی پویا (Dynamic Programming): استفاده از نتایج قبلی برای حل مسائل تکراری (مانند الگوریتم کولهپشتی و فلوید-وارشال).
- حریصانه (Greedy Algorithm): تصمیمگیری گامبهگام بر اساس بهترین انتخاب محلی (مانند الگوریتم کروسکال و هوفمن).
- پسگرد (Backtracking) و شاخه و حد (Branch and Bound): تکنیکهایی برای جستجوی راهحلهای بهینه در مسائل ترکیبیاتی.
-
الگوریتمهای کلاسیک و مسائل کاربردی:
- جستجو و مرتبسازی (مانند QuickSort، MergeSort و Binary Search).
- الگوریتمهای گرافی (مانند Dijkstra و BFS/DFS).
- مسائل NP و سختی محاسباتی (مانند NP-Complete و P vs NP).
http://sharif.edu/~ghodsi/?page=da-alg-bookاطلاعات بیشتر در
ببینید. https://book.sharif.ir/user/getDocInfo/442می توانید آن را در