راهنمای انتخاب الگوریتم

جدول جامع تصمیم‌گیری: از ویژگی‌های مسئله به الگوریتم درست — مرجع نهایی انتخاب الگو

نقشه نهایی

جمع‌بندی کل دوره در یک جدول تصمیم‌گیری — از «چه مسئله‌ای دارم» به «کدام الگو»:

جدول تشخیص الگو

ویژگی مسئلهالگوپیچیدگی معمول
آرایه مرتب + جفت/سه‌تاییدو اشاره‌گرO(n) / O(n²)
زیرآرایه/زیررشته پیوسته بهینهپنجره لغزانO(n)
لیست پیوندی: حلقه/وسطکند و تندO(n), O(1)
فواصل زمانی: ادغام/تقاطعمرتب‌سازی + اسکنO(n log n)
کمینه بیشینه با شرطدودویی روی پاسخO(n log range)
همه ترکیب‌ها/جایگشت‌هاBacktrackingنمایی + هرس
بهینه + همپوشانی زیرمسئلهDPO(حالت×انتقال)
جستجوی الگو در متنKMP / Rabin-KarpO(n+m)
پالیندروم‌هاتوسعه از مرکزO(n²)
دو رشته مشترکLCS (DP)O(mn)
اعداد: جفت/تکیXORO(n)
توان/باقیمانده بزرگتوان سریعO(log n)
گراف + وابستگی/ترتیبتوپولوژیک (Kahn)O(V+E)
گراف دو گروهرنگ‌آمیزی BFSO(V+E)
انتخاب محلی اثبات‌شدهحریصانهO(n log n)

چک‌لیست قبل از کدنویسی

  1. ورودی مرتب است؟ (دو اشاره‌گر/دودویی)
  2. «پیوسته» می‌خواهم یا آزاد؟ (پنجره vs DP)
  3. «همه راه‌ها» یا «بهترین»؟ (Backtracking vs DP/حریصانه)
  4. حجم داده چقدر است؟ (n=10⁶ یعنی O(n) یا O(n log n) لازم)
  5. حافظه محدود است؟ (کند/تند به جای هش)

قانون سرانگشتی حجم داده

nپیچیدگی قابل قبول
≤ ۱۲O(n!) — جایگشت‌ها
≤ ۲۵O(2ⁿ) — Backtracking
≤ ۱۰۰O(n³)
≤ ۱۰⁴O(n²)
≤ ۱۰⁶O(n log n)
≤ ۱۰⁹O(n) یا O(log n)
نکته نهایی: این جدول را «حفظ نکنید» — با حل مسئله، خودش در ذهن شما می‌نشیند. بعد از هر مسئله: «کدام الگو بود؟ چه چیزی لوش داد؟» — این بازتاب، استادتان می‌کند.

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل الگوریتم‌ها است.

ابزارهای مرتبط