الگوریتم کارمارکار

الگوریتم کارمارکار توسط نراندرا کارمارکار در سال ۱۹۸۴ برای حل مسایلبرنامه‌ریزی خطی ارائه شد. این الگوریتم اولین الگوریتم کارا برای حل این مسایل در زمان چندجمله‌ای بود. روش بیضی نیز زمان اجرای چندجمله‌ای دارد،ولی روش کارایی نیست.

اگر  تعداد متغیرها و  تعداد بیت‌های ورودی به الگوریتم باشد، الگوریتم کارمارکار به  عمل روی اعداد  رقمی احتیاج دارد، درحالی که در روش بیضی به  عمل نیاز است.زمان اجرای الگوریتم کارمارکار به شکل زیر است:

که در آن از ضرب به روش تبدیل سریع فوریه استفاده می‌کند.

الگوریتم کارمارکار از جمله روش‌های نقطهٔ داخلی است: حدس فعلی شرایط مجموعهٔ ممکن را برخلاف روش سیمپلکس رعایت نمی‌کند و با استفاده از کسر معین در هر تکرار، دقت جواب بهینه را بهبود می‌دهد.

الگوریتم 
یک مسئلهٔ برنامه‌ریزی خطی را در شکل ماتریسی در نظر بگیرید:

که در آن c برداری n بعدی و b برداری m بعدی و ماتریس m × n)، A) بعدی است.
الگوریتم کارماکار کمی پیچیده است. یک مدل ساده‌تر که به آن روش affine-scaling گفته می‌شود، که به طور مختصر به شرح زیر است. دقت داشته باشید که این الگوریتم در حالی که در عمل کارا است ولی الگوریتم با زمان چندجمله‌ای نیست.

 Algorithm Affine-Scalling
  Input: A, b, c, , stopping criterion, .

   
  do while stopping criterion not satisfied
      
      
      
      
  if  then
  return unbounded
  end if
      
      
      
  end do

منابع 

الگوریتم‌های بهینه‌سازی
برنامه‌ریزی خطی
روش‌های بهینه‌سازی