**الگوریتم تقریبی** در علوم رایانه و تحقیق عملیاتی، الگوریتمی برای پیداکردن راه‌حل‌های تقریبی برای مسائل بهینه‌سازی است. این الگوریتم‌ها اغلب برای حل تقریبی مسائل ان‌پی سخت (به انگلیسی: NP-hard) بکار می‌روند زیرا بسیاری از مسائل بهینه‌سازی ان‌پی سخت هستند (در واقع بررسی کردن درستی جواب اینگونه مسائل با حل کلی آنها معادل است) طبق نظریه پیچیدگی محاسباتی تا زمانیکه P ≠ NP، الگوریتم‌های کارامد با زمان چندجمله‌ای برای چنین مسائلی پیدا نخواهد شد مگر اینکه P = NP که چنین فرضی هم خیلی بعید است.

برخلاف الگوریتم جستجوی کاشف که راه‌حل‌هایی بهینه، اغلب بدون اثبات و بدون کران برای جواب خود هستند؛ الگوریتم‌های تقریبی راه حلهایی شبه بهینه همراه با ضریبی برای میزان تقریب جواب واقعی ارائه می‌دهند همچنین وجود جواب خود را در بازهٔ خطای اعلام شده تضمین می‌کنند. (مثلاً جواب آنها ۲ برابر جواب بهینه است) منتها جواب خود را در زمان چندجمله‌ای تولید می‌کنند.

الگوریتم‌های تقریبی برای مسائل **P** نیز استفاده می‌شوند ولی به ازای ورودی‌های بزرگ خوب عمل نمی‌کنند.

یکی از مثال‌های معروف برای الگوریتم‌های تقریبی، مسئله پوشش راسی (به انگلیسی: vertex cover) در گراف است: پیدا کردن یال پوشش داده نشده و اضافه کردن هر دو رأس آن به مجموعه پوشش رأسی تا زمانی که هیچ یال پوشش نیافته نماند. واضح است که مجموعه جوابهای این الگوریتم دو برابر جواب‌های بهینه یعنی مجموعه کمترین رأس‌ها برای پوشش دادن همه یال‌ها در یک گراف است؛ پس ضریب ثابت این الگوریتم ۲ است.

الگوریتم‌های تقریبی موجود برای مسائل ان پی-سخت با هم تفاوت بسیاری دارند؛ مثلاً مسئله بسته‌بندی (به انگلیسی: bin packing problem) را می‌توان به ازای هر ضریب بزرگتر از یک تقریب زد، (اگر بتوانیم الگوریتمی تقریبی با ضریب یک برای چنین مسائلی ارائه دهیم P = NP می‌شود) به این خانواده از مسائل Polynomial time approximation scheme می‌گویند؛ درحالیکه ثابت شده‌است که برای برخی مسائل دیگر هیچ الگوریتم تقریبی‌ای یافت نمی‌شود مگر آنکه P=NP شود مانند مسئله بزرگترین خوشه (به انگلیسی: maximum clique problem) (پیدا کردن بزرگترین زیرگراف کامل)

مسائل ان پی-سخت را می‌توان با برنامه‌ریزی خطی (مسائل برنامه‌ریزی خطی‌ای که x\_iهای صحیح دارند) متناظر کرد و در نتیجه آنها را در زمانهای نمایی حل کرد. (مسائل IP در مرتبه زمانی نمایی حل می‌شوند)

تضمین کارایی الگوریتم‌های تقریبی
--------------------------------

می‌توانیم برای برخی از الگوریتم‌های تقریبی، خصوصیاتی را اثبات کنیم مثلاً برای {\displaystyle \rho -}الگوریتمهای تقریبی ثابت شده‌است که تقریب a بیشتر (و یا کمتر) از \rho  برابر جواب بهینه s نخواهد بود:

{\displaystyle {\begin{cases}s\leq a\leq \rho s,\qquad {\mbox{if }}\rho >1;\\\rho s\leq a\leq s,\qquad {\mbox{if }}\rho <1.\end{cases}}}

ضریب \rho  را *ضریب تضمین کارایی نسبی* می‌گویند.
هر الگوریتم تقریبی ای *تضمین کارایی مطلق* یا *کران خطای* \epsilon  دارد اگر:

{\displaystyle (s-\epsilon )\leq a\leq (s+\epsilon ).}

به‌طور مشابه *نسبت کارایی مطلق* {\displaystyle \mathrm {P} \_{A}} الگوریتم‌های تقریبی A:

{\displaystyle \mathrm {P} \_{A}=\inf\{r\geq 1|R\_{A}(I)\leq r,\forall I\}}

(I یک نمونه از مسئله و {\displaystyle R\_{A}(I)} تضمین کارایی A روی I است)

در واقع {\displaystyle \mathrm {P} \_{A}} بزرگترین کران نسبت تقریب r روی همه نمونه‌های مسئله است.
همچنین *نسبت کارایی مجانبی* {\displaystyle R\_{A}^{\infty }}:

{\displaystyle R\_{A}^{\infty }=\inf\{r\geq 1|\exists n\in \mathbb {Z} ^{+},R\_{A}(I)\leq r,\forall I,I\geq n\}}

جستارهای وابسته
---------------

* الگوریتم حریصانه
* الگوریتم جستجوی محلی (بهینه‌سازی)
* برنامه‌ریزی پویا
* بهینه‌سازی محدب
* برنامه‌ریزی خطی
* بهینه‌سازی نیمه‌معین

منابع
-----

مشارکت‌کنندگان ویکی‌پدیا. «Approximation algorithm». در *دانشنامهٔ ویکی‌پدیای انگلیسی*، بازبینی‌شده در ۲۹ ژوئن ۲۰۱۳.

* Vazirani, Vijay V. (۲۰۰۳). *Approximation Algorithms*. Berlin: Springer 2001. ISBN 3-540-65367-8.
* توماس اچ کورمن، Charles E. Leiserson, Ronald L. Rivest, و کلیفورد استین. *مقدمه‌ای بر الگوریتم‌ها*, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7.

Chapter 35: Approximation Algorithms, pp.۱۰۲۲–۱۰۵۶

| * ن
* ب
* و
بهینه‌سازی: تئوری، روش‌ها، و ابتکارها |
| --- |
| 

| برنامه‌سازی نامقید غیرخطی: روش‌ها با استفاده از |
| --- |
| 

|  |  |
| --- | --- |
| … تابع‌ها | 
* Golden section search
* Interpolation methods
* Line search
* روش نلدر - مید
* Successive parabolic interpolation

 |
| … و گرادیان‌ها | 

|  |  |
| --- | --- |
| Convergence | 
* Trust region
* Wolfe conditions

 |
| Quasi–Newton | 
* روش بی‌اف‌جی‌اس and L-BFGS
* DFP
* Symmetric rank-one (SR1)

 |
| Other methods | 
* Gauss–Newton
* Gradient
* الگوریتم لونبرگ-مارکارد
* Conjugate gradient

 |

 |
| … و هشین‌ها | 
* Newton's method

 |

 |

 | The graph of a strictly concave quadratic function is shown in blue, with its unique maximum shown as a red dot. Below the graph appears the contours of the function: The level sets are nested ellipses.Optimization computes maxima and minima. |
| 

| برنامه‌سازی مقید غیرخطی |
| --- |
| 

|  |  |
| --- | --- |
| کلی | 
* Barrier methods
* روش پنالتی

 |
| مشتق‌پذیر | 
* Augmented Lagrangian methods
* Sequential quadratic programming
* Successive linear programming

 |

 |

 |
| 

| بهینه‌سازی محدب |
| --- |
| 

|  |  |
| --- | --- |
| بهینه‌سازی محدب | 
* Cutting-plane method
* Reduced gradient (Frank–Wolfe)
* Subgradient method

 |
| برنامه‌ریزی خطی ودرجه دو | 

|  |  |
| --- | --- |
| برنامه‌ریزی خطی | 
* Ellipsoid algorithm of Khachiyan
* الگوریتم کارمارکار

 |
| Basis-الگوریتم حریصانه | 
* الگوریتم غیر مرکب
* Revised simplex algorithm
* Criss-cross algorithm
* Principal pivoting algorithm of Lemke

 |

 |

 |

 |
| 

| بهینه‌سازی ترکیبیاتی |
| --- |
| 

|  |  |
| --- | --- |
| الگو‌ها | 
* الگوریتم تقریبی
* برنامه‌ریزی پویا
* الگوریتم حریصانه
* بهینه‌سازی خطی عدد صحیح
	+ شاخه و حد یا شاخه و برش

 |
| الگوریتم‌هایگراف | 

|  |  |
| --- | --- |
| درخت پوشای کمینه | 
* الگوریتم بلمن–فورد
* الگوریتم بروکا
* الگوریتم دیکسترا
* الگوریتم فلوید-وارشال
* الگوریتم جانسون
* الگوریتم کراسکال

 |

 |
| شبکه شاره | 
* الگوریتم دینیک
* الگوریتم ادموندز کارپ
* الگوریتم فورد–فالکرسون
* الگوریتم ارسال-برچسب

 |

 |

 |
| 

| الگوریتم‌های فراابتکاری |
| --- |
| 
* الگوریتم تکاملی
* الگوریتم تپه‌نوردی
* الگوریتم جستجوی محلی (بهینه‌سازی)
* الگوریتم تبرید شبیه‌سازی شده
* الگوریتم جستجوی ممنوعه

 |

 |
| 
* **رده‌ها**
	+ روش‌ها
	+ ابتکارها
* **نرم‌افزارها**

 |