FIT ČVUT MI-LOM Lineární optimalizace a metody Dualita Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Michal Černý, 2011
FIT ČVUT, MI-LOM, M. Černý, 2011: Dualita 2/5 Dualita Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Z konvergence simplexového algoritmu Blandova věta plyne tato věta. Věta 1. Nechť polyedr F := x : Ax b} je neprázdný, má vrchol a platí supc T x : x F} <. Pak existuje base B taková, že a bod x definovaný jako řešení systému nezávislých rovnic A B x = b B splňuje, že i je vrcholem polyedru F a ii platí c T x = maxc T x : x F} to speciálně znamená: optima úlohy maxc T x : x F} se nabývá [také] ve vrcholu, a b existuje vektor y takový, že y B 0, y B = 0 a A T y = c. Této věty podstatně využijeme v důkazu věty 4. Nyní přistupme k formulaci ústředního výsledku teorie lineárního programování. Definice 2. Nechť jsou dány A, b, c. a Polyedr F := x : Ax b} se nazývá primární polyedr a polyedr G := y : A T y = c, y 0} se nazývá duální polyedr. b Úloha maxc T x : x F} se nazývá primární úloha a úloha minb T y : y G} se nazývá duální úloha. c Pro libovolné x F a y G definujeme Γx, y := b T y c T x. Číslo Γx, y se nazývá duality gap. Ze slabé věty o dualitě víme: pro libovolné x F a libovolné y G platí Γx, y 0. Odtud plyne zřejmý důsledek: Důsledek 3. Jestliže x F a y G splňují Γx, y = 0, pak x je optimum primární úlohy a y je optimum duální úlohy. Není ale jasné, zdali antecedent implikace lze vůbec naplnit jestli to možné není, důsledek neříká nic. Ukážeme, že tomu tak jest. Věta 4 von Neumann, silná věta o dualitě. Nechť primární polyedr je neprázdný. Jestliže existuje optimum x primární úlohy, pak také existuje optimum y duální úlohy a platí c T x = b T y. Tedy: Γx, y = 0. Důkaz. Nechť F =. Označme ξ := maxc T x : x F} a υ := minb T y : x G}. Předpokládejme, že F má vrchol; pak na lineární program max x F c T x můžeme spustit simplexový algoritmus. Jestliže ξ existuje, algoritmus skončí v kroku [3] s y splňujícím y 0 a A T y = c viz větu 1. Odtud y G, pročež G =. Podle slabé věty o dualitě víme ξ υ ; stačí tedy ukázat ξ υ. Řekněme bez újmy na obecnosti, že v poslední iteraci simplexového
FIT ČVUT, MI-LOM, M. Černý, 2011: Dualita 3/5 algoritmu jest B = 1,..., n}; pak y = y B 0 a víme, že A B x = b B, kde x je algoritmem nalezený optimální vrchol. Pak ξ = c T x = A T y T x = y T Ax = y T B 0 T AB x = y T BA B x = y T Bb B = y T B 0 T bb = y T b = b T y y G minb T ỹ : ỹ G} = υ. Tím je dokončen důkaz případu, kdy F má vrchol. Nechť F je obecný polyedr který vrchol mít nemusí. Z první fáze simplexového algoritmu víme, že polyedr F x := : A B I 0 A A 0 I x b 0 0 má vrchol zde 0 značí nulovou matici či vektor příslušného rozměru. Užijme již prokázaný případ na lineární program } max c T c T x x : F. Obdržíme max } c T c T x x : F = min b T 0 T 0 T y1 y1 y 2 : y 2 G }, b B kde G := y 1 y 2 : y 3 A T I 0 A T 0 I y 1 y 2 = y 3 c c, y 1 0, y 2 0, y 3 0. Je jasné, že platí } maxc T x : x F} = max c T c T x x : F ; zbývá ukázat, že platí také minb T y : y G} = min To je snadné: min b T 0 T 0 T y1 y1 y 2 : y 2 G } b T 0 T 0 T y1 y1 y 2 : y 2 G }. = minb T y 1 : A T y 1 y 2 = c, A T y 1 y 3 = c, y 1 0, y 2 0, y 3 0} = minb T y 1 : A T y 1 c, A T y 1 c, y 1 0} = minb T y 1 : A T y 1 c, A T y 1 c, y 1 0} = minb T y 1 : A T y 1 = c, y 1 0} = minb T y 1 : y 1 G}. Věta o dualitě má velký význam pro návrh algoritmů pro lineární programování. Připomeňme, že na začátku přednášky jsme zformulovali tři verse úlohy lineárního programování:
FIT ČVUT, MI-LOM, M. Černý, 2011: Dualita 4/5 A je dána racionální matice A a racionální vektor b; úkolem je rozhodnout, zdali existuje reálný vektor x splňující Ax b tzv. rozhodovací verse, B je dána racionální matice A a racionální vektor b; úkolem je rozhodnout, zdali existuje reálný vektor x splňující Ax b, a je-li tomu tak, je úkolem nějaké takové x najít tzv. konstruktivní rozhodovací verse, C je dána racionální matice A a racionální vektory b a c. Úkolem je rozhodnout, zdali existuje reálný vektor x splňující c T x = maxx : Ax b}, a je-li tomu tak, je úkolem nějaké takové x najít; a jestliže x neexistuje, úkolem je rozhodnout, zdali je tomu z důvodu x : Ax b} =, anebo z důvodu supc T x : Ax b} = tzv. optimalsační verse. Věta 5. Libovolný algoritmus pro B dokáže řešit C. To speciálně znamená: Důsledek 6. Jestliže problém B je řešitelný v polynomiálním čase, pak také problém C je řešitelný v polynomiálním čase. Důkaz věty 5. Dokažme větu v tomto znění: Systém Ax b, A T y = c, y 0, b T y c T x = 0 1 má řešení, právě když existuje maxc T x : Ax b}; a existuje-li, pak libovolné řešení x, y systému 1 splňuje c T x = maxc T x : Ax b}. 2 Dokažme implikaci jestliže max x F c T x neexistuje, pak systém 1 nemá řešení. Jestliže číslo max x F c T x neexistuje, může to být ze dvou důvodů: buďto i F = anebo ii F = a funkce c T x roste na F přes všechny meze. Jestliže max x F c T x neexistuje z důvodu i, systém 1 nemá řešení, protože obsahuje nesplnitelnou nerovnost Ax b. Jestliže max x F c T x neexistuje z důvodu ii, pak musí být G =. Kdyby totiž bylo G =, pak existuje y 0 G, a pak ze slabé věty o dualitě plyne x F[c T x b T y 0 ], a tedy funkce c T x je na F shora omezená; to je ovšem spor s tím, že c T x roste na F přes všechny meze. Systém 1 nemůže mít řešení: obsahuje totiž systém A T y = c, y 0, a ten je díky G = nesplnitelný. Opačná implikace. Jestliže max x F c T x existuje, pak z věty o dualitě plyne x 0 F y 0 G[c T x 0 = b T y 0 ], pročež x 0, y 0 je řešením systému 1. Tedy, systém 1 je řešitelný. Zbývá ukázat, že každé řešení x, y systému 1 splňuje 2. Vzhledem k tvaru systému 1 jest x F a y G. Protože c T x = b T y, jest Γx, y = 0 a tvrzení plyne z důsledku 3. Algoritmu pro problém B stačí předhodit systém 1. Algoritmus pro B dokáže rozhodnout, zdali má systém 1 nějaké řešení. Jestliže řešení nemá, pak F = anebo c T x roste na F přes všechny meze a snadno dokážeme tyto dva případy rozlišit; jestliže řešení má, najděme jej. Tím získáme řešení problému C. Je zajímavé, že platí i tato věta:
FIT ČVUT, MI-LOM, M. Černý, 2011: Dualita 5/5 Věta 7. Libovolný algoritmus pro A dokáže řešit B. To speciálně znamená: Důsledek 8. Jestliže problém A je řešitelný v polynomiálním čase, pak také problém B je řešitelný v polynomiálním čase. Důkaz věty 7 a důsledku 8. Nejprve algoritmem pro A otestujeme, zdali F := x : Ax b}. Je-li F =, uvážíme obecnější problém. Budiž dán systém α T 1 x b 1, α T 2 x b 2,..., α T p x b p, α T p1x = b p1, α T p2x = b p2,..., α T mx = b m ; 3 popíšeme algoritmus k nalezení x, jež jej splňuje. Systém Ax b je speciální případ s p = m. Postupujme rekursivně v počtu nerovností p. Je-li p = 0, máme systém rovností, který lze vyřešit Gaussovou eliminací. Víme, že Gaussova eliminace pracuje v polynomiálním čase. Je-li p 1, modifikujeme systém 3 tak, že v nerovnici α T p x b p nahradíme znak rovností; dostaneme tak nový systém X, který má o jednu nerovnici méně. Algoritmem pro A otestujme, zdali systém X má řešení. Kruciální pozorování. Jestliže systém X nemá řešení, pak nerovnice α T p x b p je v systému 3 zbytečná. To znamená, že množina x : x je řešením 3} se vypuštěním nerovnice α T p x b p nezmění. Pozorování je zřejmé; pro intuici je dobré si jej představit alespoň v rovině. Jestliže X nemá řešení, podle pozorování můžeme volat rekursivně proceduru na nalezení řešení systému α T 1 x b 1, α T 2 x b 2,..., α T p 1x b p 1, α T p1x = b p1, α T p2x = b p2,..., α T mx = b m, který má o jednu nerovnost méně. Jestliže X má řešení, volejme rekursivně proceduru na systém X; ten má o jednu nerovnost méně než 3 a řešení X je i řešením 3. Je zřejmé, že právě popsaná procedura volá algoritmus pro A nanejvýš polynomiálněkrát, a pracuje proto v polynomiálním čase pracuje-li v polynomiálním čase algoritmus pro A. Z důsledků 6 a 8 plyne: chceme-li ukázat, že úlohu C lze řešit v polynomiálním čase, stačí ukázat, že problém A je v P. Tak učiníme v další přednášce.