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

از testwiki
نسخهٔ تاریخ ۲۹ اوت ۲۰۲۳، ساعت ۱۴:۵۳ توسط imported>کوروش سوم (دو نقطه:)
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

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

اگر n تعداد متغیرها و L تعداد بیت‌های ورودی به الگوریتم باشد، الگوریتم کارمارکار به O(n3.5L) عمل روی اعداد O(L) رقمی احتیاج دارد، درحالی که در روش بیضی به O(n6L) عمل نیاز است.الگو:سخزمان اجرای الگوریتم کارمارکار به شکل زیر است: الگو:چپ‌چین O(n3.5L2logLloglogL) الگو:پایان چپ‌چین که در آن از ضرب به روش تبدیل سریع فوریه استفاده می‌کند.

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

الگوریتم

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

maximize cTx
subject to Ax ≤ b.

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

Algorithm Affine-Scalling
 Input: A, b, c, x0, stopping criterion, γ.
  k0
 do while stopping criterion not satisfied
     vkbAxk
     Dvdiag(v1k,,vmk)
     hx(ATDv2A)1c
     hvAhx
 if hv0 then
 return unbounded
 end if
     αγmin{vik/(hv)i|(hv)i<0,i=1,,m}
     xk+1xk+αhx
     kk+1
 end do

الگو:پایان چپ‌چین

منابع

الگو:پانویس الگو:الگوریتم‌های بهینه‌سازی