آزادسازی در برنامه‌ریزی خطی

از testwiki
پرش به ناوبری پرش به جستجو

الگو:بدون منبع الگو:سره‌نویسی افراطی در ریاضی و دانش رایانه، واهِلِش به برنامه‌نویسی خطی برنامه‌ای دُرُست (integer program) را به برنامه‌ای خطی می‌ترادیساند. در این ترادیسی، هر متغیر xi{0,1} در برنامهٔ درست با متغیری خطی 0xi1 جایگزین می‌شود. این واهلش پرسمانی ان‌پی سخت را به پرسمانی خطی که در زمانی چند جمله‌ای حل می‌شود می‌ترادیساند. پاسخ به برنامهٔ خطی به دست آمده، اطلاع‌های سودمندی را دربارهٔ برنامهٔ درست اصلی فراهم می‌آورد.

برنامه‌ای درست و واهلش خطی این برنامه.


نمونه

برای نمونه، به پرسمان پوشش مجموعه می‌پردازیم. مجموعه‌ای مانند F و زیرمجموعه‌های S0,S1,...U از این مجموعه داده شده‌اند. این پرسمان شماری از Siها را می‌جوید که یکایش (اجتماع) این زیرمجموعه‌ها مجموعه Fخواهد بود.

در برنامهٔ درست برای پوشش مجموعه، برای هر زیرمجموعهٔ Si متغیری بولی xi داریم.

یکایش زیرمجموعه‌های گزینش شده باید برابر با F باشد. به سخنی دیگر، هر ejF باید در این یکایش باشد: {i|ejSi}xj1. این پاوند را پاوند یکایش می‌نامیم.

هم‌چنین، پاوندِ xi{0,1} برای هر متغیر xi نشان می‌دهد که آیا زیرمجموعه Si در پاسخ خواهد بود یا نه. به سخنی دیگرِ، ارزش یک/صفر برای xi نشان می‌دهد که زیرمجموعهٔ Si در پوشش هست/نیست. این پاوند را پاوند بولی می‌نامیم.

پرسمان کم‌ترین شمار زیرمجموعه‌ها را می‌جوید: minixi.

واهلش به برنامهٔ خطی هر پاوند بولی xi{0,1} را با پاوند 0xi1 جایگزین می‌کند. برنامهٔ خطی به دست آمده وزنی را برای هر زیرمجموعه فرضیده است؛ ولی، پاوند یکایش یکسان می‌ماند. در پاسخ به این برنامهٔ خطی، جمع وزن همهٔ زیرمجموعه‌هایی چون Si که دربردارندهٔ عضو ejF برابر با یک خواهند بود.

به این نمونه از پوشش مجموعه‌ای بنگرید: مجموعهٔ F={a,b,c} و زیرمجموعه‌های S1={a,b},S2={b,c},S3={a,c} را داریم. در برنامهٔ درست، سه متغیر x1,x2,x3 خواهیم داشت. برای هر کدام از a,b,cF یک پاوند یکایش هست. برای نمونه، برای a پاوندِ x1+x31 را داریم. هم‌چنین، برای هر Si یک پاوند بولی 0xi1 داریم.

گزینش هر جفت از زیرمجموعه‌های S1,S2,S3 پاسخی بهین است. به سخنی دیگر، هر یک از {S1,S2}، {S1,S3} یا {S2,S3} یک پوشش مجموعه‌ای کمینه است؛ بنابراین پاسخ کمینه برای برنامهٔ درست برابر است با 2.

ولی، پاسخی بهین به برنامهٔ خطی 32 است. در این پاسخ، هر xi دارای ارزش 12 است. این پاسخ پاوندهای یکایش را برآورده می‌کند.

هم‌سنجی پاسخ واهلش و برنامه‌ی درست

اگر در پاسخ بهین به برنامه‌ی خطی، هر متغیر ارزشی صفر یا یک بگیرد، این پاسخ پاسخی بهین برای برنامه‌ی درست نیز خواهد بود. با این همه،‌ ما پرسمان‌های اندکی با چینن پاسخ‌هایی داریم.

چون هر برنامه‌ی درست زیرمجموعه‌ای از برنامه‌ای خطی است،‌ پاسخ‌ها به برنامه‌ی درست نیز زیرمجموعه‌ای از پاسخ‌ها به برنامه‌ی خطی‌اند. اگر برنامه‌ی درست بیشینه‌سازی باشد،‌ پاسخ بهین به برنامه‌ی خطی همواره بزرگ‌تر از پاسخ بهین به برنامه‌ی اصلی است. به همین سان،‌ اگر برنامه‌ی درست کمینه‌سازی باشد،‌ پاسخ به برنامه ی خطی همواره کوچک‌تر از برنامه‌ی اصلی است. به سخنی دیگر،‌ پاسخ به برنامه‌ی خطی واهلیده همواره کرانی بالا (پایین) برای برنامه‌ای درست بیشینه‌سازی (کمینه‌سازی) است.

در نمونه‌ی بالا برای پوشش مجموعه‌ی،‌ پاسخ بهین خطی برابر بود با 32. چون پرسمان پوشش مجموعه،‌ پرسمانی کمینه‌سازی است،‌ پاسخ بهین برای برنامه‌ی درست همواره بزرگ‌تر یا برابر با 32 خواهد بود. افزون بر این،‌ چون هر متغیر در برنامه‌ی درست می‌تواند ارزش صفر یا یک داشته باشد،‌ دست کم باید دو متغیر با ارزش یک در پاسخ بهین باشند. بنابراین، می‌توان کران پایین برای برنامه‌ی درست را به کرانی تنگ‌تر بهبود داد. این کران برابر با ۲ است.

تقریب‌زنی و گاف درستالی

واهلش به برنامه‌‌ی خطی،‌ شیوه‌ای استاندارد برای طراحی الگوریتم‌های تقریبی است. گاف درستالی (integral gap) مفهومی کلیدی در این زمینه است. در واهلش، گاف درستالی نسبت بیشینه میان برنامه‌ی درست و برنامه‌ی خطی را نشان می‌دهد. اگر Md پاسخ بهین برای برنامه‌ی درست و اگر Mv پاسخ بهین برای برنامه‌ی خطی باشند،‌ گاف درستالی در کمینه‌سازی به دیسه‌ی GD=MdMv تعریف می‌شود و در بیشینه‌سازی برابر است با GD=MvMd. بنابراین، گاف درستالی همواره بزرگ‌تر از یک است. در نمونه‌ی بالا چون پرسمان کمینه‌سازی،‌گاف درستالی برابر است با 43.

گاف درستالی کاربرد فراوانی برای یافتن نسبت تقریب در الگوریتم‌های تقریبی دارد. برخی الگوریتم‌های تقریبی این روش گِردسازی را به کار می‌برند: برای هر واسخ واهلیده‌ی Mv پاسخی درست را می‌یابند که کوچک‌تر از RG.Mv است (RG همان نسبت گردسازی (rounding ratio) است).

پانویس

الگو:پانویس