برای شروع تصمیم گرفتم که مطلبی را در رابطه با تکنیکهای طراحی الگوریتم بنویسم (در حقیقت ترجمهای ساده شده که تا حد امکانِ مطالب ریاضی آن حذف شده است). اگر مورد پسند واقع شد که ادامه میدهیم وگرنه موضوع دیگهای رو شروع میکنیم. در ضمن اگر در بکارگیری معادلهای فارسی ناشیگری یا اشتباهی دیدید لطفا گوشزد کنید.
------------------------------------------------------------------------------------------
الگوهای الگوریتمی (Algorithmic Paradigms) عبارتند از راه حلهایی جامع برای حل کارآمد مسائل.
این راه حلها بدلایل زیر مورد توجه هستند:
در ادامه این بحث الگوهای الگوریتمی زیر را مورد بررسی قرار میدهیم:
- قالبهای مناسبی برای حل گسترهای از مسائل گوناگون فراهم میکنند.
- به راحتی میتوانند به ساختارهای فراهم شده توسط زبانهای سطح بالا (High-Level Languages) ترجمه شوند.
- کلیه اجزای الگوریتمهایی که از این الگوها حاصل میشوند با ریزبینی میتوانند مورد تجزیه و تحلیل قرار گیرند.
هرچند ممکن است بیشتر از یک تکنیک برای یک مسئله خاص جوابگو باشد، اما در اغلب موارد الگوریتم ساخته شده با یک الگو بطور روشنی از الگوریتمی معادل که با الگویی دیگر ساخته شده است، برتری دارد.
- تقسیم و تسخیر (Divide and Conquer)
- برنامهنویسی پویا (Dynamic Programming)
- روش سیری ناپذیر! (Greedy Method)
- بازگشت به عقب (Backtracking)
انتخاب یک الگوی الگوریتمی مناسب، جنبهای مهم در تعیین ساختار و ترکیب الگوریتم است.