1 Podstawowe poj˛ecia
1.1 Co to jest programowanie liniowe?
Program liniowy(w skrócie PL1) jest to problem minimalizacji/maksymalizacji liniowej funkcji celuo n argumentach x1, x2, . . . , xn przy zachowaniu pewnej liczby równo´sci lub nierówno´sci liniowych (b˛edziemy je nazywa´c ograniczeniami) zawieraj ˛acych zmienne xi.
Przykład:
zminimalizuj x1+ 2x2
z zachowaniem warunków x2 ≤ x1+ 2 2x1+ x2 ≤ 4 2x2+ x1 ≥ 0 x2 ≥ 0
Za pomoc ˛a programów liniowych mo˙zna wyrazi´c bardzo wiele naturalnych problemów op- tymalizacyjnych. Dla przykładu, problem maksymalnego przepływu w sieci o n wierzchołkach,
´zródle s, uj´sciu t, i funkcji przepustowo´sci c: V2 → R mo˙zna wyrazi´c za pomoc ˛a nast˛epuj ˛acego programu liniowego o|V |2 zmiennych (dla ka˙zdej pary wierzchołków v, w mamy zmienne fvwi fwvodpowiadaj ˛ace przepływowi od v do w i odwrotnie) i2|V |2+ |V | − 2 ograniczeniach:
zmaksymalizuj P
v∈V fsv
z zachowaniem warunków fvw ≤ c(v, w) v, w∈ V fvw = −fwv v, w∈ V P
w∈V fvw= 0 v ∈ V \ {s, t}
Inny przykład: znajdowanie długo´sci najkrótszej ´scie˙zki od s do t w grafie G = (V, E) z funkcj ˛a w: E → R opisuj ˛ac ˛a długo´sci kraw˛edzi. Tu dla ka˙zdego wierzchołka v mamy zmienn ˛a dv. Dla wierzchołków na najkrótszej ´scie˙zce od s do t zmienna dv b˛edzie odpowiada´c odległo´sci od s do v.
zmaksymalizuj dt
z zachowaniem warunków dv ≤ du+ w(u, v) (u, v) ∈ E ds = 0
Zadanie. Udowodnij, ˙ze ten program faktycznie jest równowa˙zny problemowi najkrótszej ´scie˙zki.
Rozwi ˛azanie. Dowód mo˙zna przedstawi´c w nast˛epuj ˛acy nieformalny sposób: wyobra´zmy sobie
˙ze mamy fizyczny model grafu, w którym wierzchołki (powiedzmy metalowe kulki) s ˛a poł ˛ac- zone sznurkami o odpowiednich długo´sciach. ˙Zeby znale´z´c odległo´s´c od s do t chwytamy za kulki odpowiadaj ˛ace tym wierzchołkom i staramy si˛e je maksymalnie od siebie oddali´c (a˙z do całkowitego napi˛ecia niektórych sznurków).
1w tekstach angloj˛ezycznych powszechnie u˙zywany jest skrót LP
1.2 Terminologia, posta´c kanoniczna i dopełnieniowa
Rozwa˙zmy PL o n zmiennych x1, . . . , xn. Warto´sci zmiennych mo˙zemy uto˙zsamia´c z wektorem x = (x1, . . . , xn) ∈ Rn. Zauwa˙zmy te˙z, ˙ze liniow ˛a funkcj˛e celu Pn
j=1cjxj mo˙zemy zapisa´c krócej jako cTx dla wektora c= (c1, . . . , cn). B˛edziemy uto˙zsamia´c t˛e funkcj˛e z wektorem c.
• x ∈ Rnjest rozwi ˛azaniem dopuszczalnym2PL gdy x spełnia wszystkie ograniczenia.
• x ∈ Rn jest rozwi ˛azaniem optymalnym PL gdy x jest rozwi ˛azaniem dopuszczalnym i optymalizuje funkcj˛e celu, tzn. je´sli dla dowolnego dopuszczalnego y ∈ Rn jest cTx ≤ cTy w przypadku gdy PL jest minimalizacyjny (cTx≥ cTy gdy maksymalizacyjny).
• PL jest dopuszczalny gdy istnieje rozwi ˛azanie dopuszczalne, w przeciwnym przypadku jest sprzeczny3.
• PL jest nieograniczony gdy jest dopuszczalny ale nie ma rozwi ˛aza´n optymalnych, tzn. dla PL minimalizacyjnego dla dowolnego λ ∈ R istnieje rozwi ˛azanie dopuszczalne x takie,
˙ze cTx< λ.
B˛edziemy posługiwa´c si˛e trzema wygodnymi postaciami programów liniowych: kanoniczn ˛a, standardow ˛a i dopełnieniow ˛a4.
1.2.1 Posta´c kanoniczna
Posta´c kanoniczna jest najbardziej ogólna z trzech rozwa˙zanych tu postaci. Program w postaci kanonicznej wygl ˛ada nast˛epuj ˛aco:
zminimalizuj Pn
j=1cjxj z zachowaniem warunków Pn
j=1aijxj ≥ bi i= 1, . . . , m
gdzie{aij, bi, cj} s ˛a dane. Wygodniej b˛edzie nam u˙zywa´c zapisu macierzowego:
zminimalizuj cTx
z zachowaniem warunków Ax≥ b gdzie c∈ Rn, b∈ Rm, A ∈ Mm×n[R].
Lemat 1. Ka˙zdy PL mo˙zna sprowadzi´c do postaci kanonicznej.
Dowód. Zadanie max cTx zamieniamy na min (−c)Tx. Równo´sci aTi x = bi zamieniamy na par˛e aTi x≤ bi, aTi x≥ bi. Nierówno´sci aTi x≤ bizamieniamy na(−ai)Tx≥ −bi.
2ang. feasible solution
3ang. infeasible
4W literaturze panuje niemały bałagan dotycz ˛acy terminologii postaci PL. W szczególno´sci, w wielu tekstach posta´c dopełnieniowa (ang. augmented) jest nazywana standardow ˛a (standard). Dokonali´smy tu takiego wyboru, poniewa˙z słowo „dopełnieniowa” wi˛ecej mówi o naturze tej postaci, natomiast wi˛ekszo´s´c naturalnych problemów algorytmicznych zapisuje si˛e standardowo w postaci, któr ˛a nazwiemy standardow ˛a. Wreszcie, ta terminologia jest u˙zywana w Cormenie i Vaziranim
1.2.2 Posta´c standardowa
Programy liniowe modeluj ˛ace problemy algorytmiczne bardzo cz˛esto s ˛a w nast˛epuj ˛acej postaci (jest to szczególny przypadek postaci kanonicznej):
zminimalizuj cTx
z zachowaniem warunków Ax≥ b x≥ 0
Lemat 2. Ka˙zdy PL mo˙zna sprowadzi´c do postaci standardowej.
Dowód. Mo˙zemy zało˙zy´c, ˙ze mamy ju˙z PL w postaci kanonicznej. Aby zapewni´c nieujemno´s´c ka˙zdej zmiennej, dla ka˙zdej zmiennej xi wprowadzamy par˛e zmiennych x+i i x−i i ka˙zde wys- t ˛apienie xi w PL (tak˙ze w funkcji celu) zast˛epujemy przez x+i − x−i . Dodajemy te˙z x+i ≥ 0 i x−i ≥ 0.
W j˛ezyku macierzy, program min{cTx | Ax ≥ b} zamienili´smy na min{ˆcTxˆ | ˆAˆx ≥ b,xˆ ≥ 0}, gdzie ˆA = [A| − A] oraz ˆc = [c| − c]T, natomiast x mo˙zemy interpretowa´c jakoˆ ˆ
x= [x+| x−]T.
1.2.3 Posta´c dopełnieniowa
Program w postaci dopełnieniowej wygl ˛ada nast˛epuj ˛aco:
zminimalizuj cTx
z zachowaniem warunków Ax= b i= 1, . . . , m x≥ 0
gdzie c ∈ Rn, b ∈ Rm, A ∈ Mm×n[R]. Zauwa˙zmy, ˙ze z dokładno´sci ˛a do zamiany równo´sci na pary nierówno´sci mo˙zemy powiedzie´c, ˙ze PL w postaci dopełnieniowej jest w postaci kanon- icznej.
Lemat 3. Ka˙zdy PL mo˙zna sprowadzi´c do postaci dopełnieniowej.
Dowód. Mo˙zemy zało˙zy´c, ˙ze mamy ju˙z PL w postaci standardowej. Dla ka˙zdej nierówno´sci aTi x≤ biwprowadzamy „zmienn ˛a swobody”5si i nierówno´s´c zast˛epujemy przez aTi x− si = bi
oraz si ≥ 0.
W j˛ezyku macierzy, programmin{cTx| Ax ≥ b, x ≥ 0} zamienili´smy na min{ˆcTxˆ| ˆAˆx= b,xˆ ≥ 0}, gdzie ˆA = [A| − I] oraz ˆc = [c|0]T, natomiast x mo˙zna interpretowa´c jakoˆ xˆ = [x | s]T.
5ang. slack variable
2 Geometria programów liniowych
Przypomnijmy:
• zbiór punktów spełniaj ˛acych aTx= b, a ∈ Rn, b∈ R to hiperpłaszczyzna,
• zbiór punktów spełniaj ˛acych aTx≥ b to półprzestrze´n,
• zbiór rozwi ˛aza´n dopuszczalnych PL w postaci dopełnieniowej Ax= b, x ≥ 0 to przeci˛e- cie hiperpłaszczyzn,
• zbiór rozwi ˛aza´n dopuszczalnych PL w postaci kanonicznej Ax≥ b to przeci˛ecie półprzestrzeni, czyli wielo´scian6.
Dla przykładu, zbiór rozwi ˛aza´n dopuszczalnych PL z rozdziału 1.1 jest czworok ˛atem (w 2 wymiarach hiperpłaszczyzny to proste, półprzestrzenie to półpłaszczyzny, a wielo´sciany to wielok ˛aty). Zauwa˙zmy, ˙ze rozwi ˛azanie optymalne to najdalszy punkt wielo´scianu w kierunku wektora funkcji celu (dla problemu maksymalizacyjnego; dla minimalizacyjnego w kierunku wektora odwrotnego).
Zauwa˙zmy, ˙ze zbiór rozwi ˛aza´n PL jest przeci˛eciem zbiorów wypukłych (półprzestrzeni, hiperpłaszczyzn) a wi˛ec jest wypukły.
2.1 Struktura rozwi ˛ aza ´n optymalnych
Zdefiniujemy teraz trzy naturalne poj˛ecia zwi ˛azane z programami liniowymi i ich geometryczn ˛a interpretacj ˛a. Za chwil˛e poka˙zemy, ˙ze s ˛a one równowa˙zne.
• Wierzchołkiem wielo´scianu P nazywamy dowolny punkt x ∈ P, który jest jedynym rozwi ˛azaniem optymalnym dla pewnej funkcji celu c.
• Punktem ekstremalnym wielo´scianu P nazywamy dowolny punkt x ∈ P, który nie jest wypukł ˛a kombinacj ˛a dwóch innych punktów y, z∈ P. (Przypomnijmy, ˙ze wypukła kom- binacja y i z to dowolny punkt postaci λy+ (1 − λ)z dla pewnego λ ∈ [0, 1].)
• Bazowe rozwi ˛azanie dopuszczalne(brd) PL o n zmiennych to rozwi ˛azanie dopuszczalne x∈ Rntakie, ˙ze istnieje n liniowo niezale˙znych ogranicze´n (w sensie wektorów współczyn- ników przy xi, tzn. x1+2x2≥ 1 i x1+2x2 ≤ 2 s ˛a liniowo zale˙zne), które dla x s ˛a spełnione z równo´sci ˛a7. Na przykład(0, 0) i (23,83) s ˛a brd programu z rozdziału 1.1.
W poni˙zszych lematach zakładamy, ˙ze PL jest w postaci kanonicznej, aP jest wielo´scianem jego rozwi ˛aza´n dopuszczalnych.
Lemat 4. Je´sli x jest wierzchołkiem PL to x jest punktem ekstremalnym.
6ang. polyhedron
7ang. tight
Dowód. Niech c b˛edzie funkcj ˛a celu tak ˛a, ˙ze x jest jedynym rozwi ˛azaniem optymalnym LP dla funkcji celu c.
Załó˙zmy, ˙ze x= λy + (1 − λ)z dla pewnych y, z ∈ P oraz λ ∈ [0, 1]. Z liniowo´sci c cTx= λcTy+ (1 − λ)cTz.
Poniewa˙z x jest optymalny wi˛ec cTy, cTz ≥ cTx. Gdyby cTy > cTx to cTx > λcTx+ (1 − λ)cTx= cTx, sprzeczno´s´c (podobnie dla cTz). St ˛ad cTx= cTy = cTz. Poniewa˙z x jest jedynym rozwi ˛azaniem optymalnym wzgl˛edem c wi˛ec x= y = z.
Lemat 5. Je´sli x jest punktem ekstremalnym PL to x jest bazowym rozwi ˛azaniem dopuszczalnym.
Dowód. Z definicji punktu ekstremalnego x jest dopuszczalny. Załó˙zmy, ˙ze nie jest brd, tzn.
˙ze nie istnieje n liniowo niezale˙znych ogranicze´n spełnionych z równo´sci ˛a dla x. Intuicyjnie, oznacza to, ˙ze wokół x jest nieco „luzu”, tzn. jest pewien wektor d (liniowo niezale˙zny od wektorów ogranicze´n spełnionych z równo´sci ˛a), wzdłu˙z którego mo˙zemy si˛e przemieszcza´c z x w przód i w tył pozostaj ˛ac w P. Istotnie, poka˙zemy, ˙ze x jest kombinacj ˛a wypukł ˛a dwóch punktów wP.
Niech T = {i | aTi x= bi}. Wiemy, ˙ze {ai | i ∈ T } nie rozpina Rn, tzn. rank[ai, i∈ T ] < n.
St ˛ad układ równa´n (jednorodny)
aTi d= 0 i ∈ T
ma przestrze´n rozwi ˛aza´n wymiaru n− rank[ai | i ∈ T ] ≥ 1. Czyli istnieje d 6= 0 który jest rozwi ˛azaniem tego układu. Poka˙zemy, ˙ze dla pewnego małego ǫ > 0, x ± ǫd ∈ P, czyli b˛edzie sprzeczno´s´c (bo x jest ekstremalny). Istotnie, je´sli i ∈ T to dla dowolnego ǫ, aTi (x ± ǫd) = bi. Dla i 6∈ T mamy aTi x > bi, a wi˛ec na pewno mo˙zna wybra´c dostatecznie małe ǫ, ˙zeby aTi (x ± ǫd) ≥ bidla ka˙zdego i6∈ T .
Lemat 6. Je´sli x jest bazowym rozwi ˛azaniem dopuszczalnym PL to x jest wierzchołkiem.
Dowód. Niech T = {i | aTi x = bi}. Podamy funkcj˛e celu c, przy której x jest jedynym rozwi ˛azaniem optymalnym: c=P
i∈Tai. Dla dowolnego y ∈ P mamy cTy=X
i∈T
aTi y≥X
i∈T
bi = cTx,
(czyli x jest rozwi ˛azaniem optymalnym) przy czym równo´s´c zachodzi tylko gdy dla ka˙zdego i ∈ T , aTi y= bi, a to jest układ którego jedynym rozwi ˛azaniem jest x (borank[ai | i ∈ T ] = n).
Wniosek 1. Dla PL w postaci kanonicznej s ˛a równowa˙zne:
(i) x jest wierzchołkiem,
(ii) x jest punktem ekstremalnym,
(iii) x jest bazowym rozwi ˛azaniem dopuszczalnym.
Twierdzenie 1. Ka˙zdy ograniczony PL w postaci dopełnieniowej Ax= b, x ≥ 0 ma rozwi ˛azanie optymalne, które jest punktem ekstremalnym.
Dowód. Niech x b˛edzie rozwi ˛azaniem optymalnym PL. Je´sli x jest ekstremalny – koniec. W przeciwnym przypadku poka˙zemy jak przej´s´c od x do punktu ekstremalnego o tej samej warto´sci funkcji celu (u˙zywaj ˛ac analogii trójwymiarowej, przesuniemy si˛e z x wewn ˛atrz wielo´scianu do
´sciany wielo´scianu, nast˛epnie ze ´srodka ´sciany do kraw˛edzi, a z kraw˛edzi do wierzchołka).
Skoro x nie jest punktem ekstremalnym, to istnieje y 6= 0 taki ˙ze x + y, x − y ∈ P. St ˛ad, A(x + y) = A(x − y) = b, a to implikuje Ay = 0. Podobnie, poniewa˙z x jest optymalny, cT(x + y) ≥ cTx i cT(x − y) ≥ cTx, a to implikuje cTy= 0.
B˛edziemy si˛e przemieszcza´c z x wzdłu˙z wektora y, czyli do punktu x′ = x+λy dla pewnego λ ∈ R. Skoro cTy = 0 to cTx′ = cTx. Podobnie, skoro Ay = 0 to Ax′ = b. Bez straty ogólno´sci mo˙zemy zało˙zy´c, ˙ze istnieje j takie, ˙ze yj <0 (je´sli tak nie jest to zamiast y bierzemy
−y). We´zmiemy najmniejsze takie λ ≥ 1, ˙ze x′ ma składow ˛a zerow ˛a, która była niezerowa w x. Zauwa˙zmy, ˙ze składowe zerowe w x nie zmieniaj ˛a si˛e: je´sli xi = 0 to yi = 0 (bo inaczej x+ y 6∈ P lub x − y 6∈ P) a wi˛ec x′i = 0. Pokazali´smy wi˛ec, ˙ze mo˙zemy z x przesun ˛a´c si˛e do nowego rozwi ˛azania optymalnego, które ma o jedn ˛a wi˛ecej składowych zerowych. St ˛ad, po co najwy˙zej n takich przesuni˛eciach musimy trafi´c to punktu ekstremalnego.
Twierdzenie 2. Ka˙zdy ograniczony PL w postaci standardowej Ax≥ b, x ≥ 0 ma rozwi ˛azanie optymalne, które jest punktem ekstremalnym.
Dowód. Niech x b˛edzie rozwi ˛azaniem optymalnym programu liniowego P , o którym mowa w twierdzeniu. Oznaczmy przez n i m odpowiednio liczb˛e kolumn (zmiennych) i wierszy macierzy A. Wektor s = Ax − b jest wtedy rozwi ˛azaniem optymalnym równowa˙znego PL w postaci dopełnieniowej:
zminimalizuj cTx
z zachowaniem warunków [A | I]
x s
= b x≥ 0
s≥ 0
(1)
Z twierdzenia 1 [x | s] jest brd programu (1). Istnieje wi˛ec zbiór L zawieraj ˛acy n + m liniowo niezale˙znych ogranicze´n programu (1) spełnionych z równo´sciami. Bez straty ogólno´sci s ˛a w´sród nich wszystkie równo´sci ze zbioru[A | I][x | s]T = b — je´sli która´s nie jest to mo˙zemy j ˛a doda´c i usun ˛a´c pewn ˛a równo´s´c si = 0 liniowo zale˙zn ˛a od pozostałych. Wszystkie równo´sci ze zbioru L postaci xj = 0 s ˛a spełnione równie˙z w programie P . Podobnie, dla ka˙zdej równo´sci ze zbioru L postaci si = 0, nierówno´s´c ai ≥ b programu P jest spełniona z równo´sci ˛a. Mamy wi˛ec zbiór R zawieraj ˛acy n ogranicze´n programu P spełnionych z równo´sci ˛a.
Pozostaje uzasadni´c, ˙ze równo´sci z R s ˛a liniowo niezale˙zne. Zauwa˙zmy, ˙ze po po wyelim- inowaniu ze wszystkich równo´sci L zmienne si dla ka˙zdego i takiego, ˙ze L zawiera równo´s´c si = 0, otrzymany zbiór L′ (jako macierz) dalej ma pełny rz ˛ad, a wi˛ec jest liniowo niezale˙zny.
Po usuni˛eciu z L′ wszystkich równo´sci zawieraj ˛acych zmienne si otrzymujemy L′′, który te˙z musi by´c liniowo niezale˙zny, a przecie˙z R= L′′.
Wniosek 2. Istnieje algorytm (brutalny), który rozwi ˛azuje PL w postaci standardowej o n zmi- ennych i m ograniczeniach w czasie O( mn
n3).
Dowód. ˙Zeby rozwi ˛aza´c LP w postaci standardowej wystarczy sprawdzi´c wszystkie wierzchołki wielo´scianu i wybra´c wierzchołek o najmniejszej warto´sci funkcji celu. Wierzchołków jest tyle co bazowych rozwi ˛aza´n dopuszczalnych, czyli mn
. Aby znale´z´c taki wierzchołek wystarczy rozwi ˛aza´c układ odpowiednich n liniowo niezale˙znych równa´n.
(Uwaga. W powy˙zszym twierdzeniu m oznacza liczb˛e ogranicze´n, a nie liczb˛e wierszy macierzy A. Je´sli t˛e liczb˛e wierszy oznaczymy przez r to m= r + n).
3 Dualno´s´c
3.1 Motywacje z teorii zło˙zono´sci
Rozwa˙zmy decyzyjn ˛a wersj˛e problemu programowania liniowego: maj ˛ac dany (minimaliza- cyjny) PL i liczb˛e δ rozstrzygn ˛a´c, czy istnieje dopuszczalny x taki, ˙ze cTx≤ δ.
Aby pokaza´c, ˙ze taki problem jest w NP wystarczy jako ´swiadectwo poda´c szukany element x, np. rozwi ˛azanie optymalne (uwaga! nietrywialne jest wykazanie, ˙ze długo´s´c zapisu binarnego takiego x-a b˛edzie wielomianowa wzgl˛edem długo´sci zapisu binarnego danych, tzn. macierzy A, wektorów b, c i liczby δ), a weryfikator ju˙z w czasie liniowym sprawdzi, czy x jest dopuszczalny i czy cTx≤ δ. Innymi słowy łatwo jest pokaza´c górne ograniczenie na rozwi ˛azanie optymalne:
wystarczy wskaza´c odpowiednie warto´sciowanie zmiennych.
Przypomnijmy, ˙ze j˛ezyk L jest w klasie co-NP, gdy jego dopełnienie jest w NP. Czy pro- gramowanie liniowe jest w co-NP? Inaczej, czy mo˙zna w czasie wielomianowym potwierdzi´c (maj ˛ac do dyspozycji wielomianowej długo´sci ´swiadectwo), ˙ze nie istnieje taki dopuszczalny x,
˙ze cTx≤ δ? Jest to pytanie o dolne ograniczenie na rozwi ˛azanie optymalne.
3.2 Poszukiwanie dolnego ograniczenia
Rozwa˙zmy nast˛epuj ˛acy PL w postaci dopełnieniowej:
zminimalizuj 7x1+ x2+ 5x3
z zachowaniem warunków x1 − x2+ 3x3 = 10 5x1+ 2x2− x3 = 6 x1, x2, x3 ≥ 0
(2)
Zauwa˙zmy, ˙ze skoro x1, x2, x3 ≥ 0, to 7x1+ x2 + 5x3 ≥ x1− x2 + 3x3, bo7 > 1, 1 > −1 oraz5 > 3. St ˛ad7x1+ x2+ 5x3 ≥ 10. Dostali´smy dolne ograniczenie! (Cho´c, trzeba przyzna´c, do´s´c fartownie). W tym przypadku mo˙zemy zauwa˙zy´c nawet wi˛ecej:
7x1+ x2+ 5x3 ≥ x1− x2+ 3x3 + 5x1+ 2x2− x3 = 16.
Mo˙zemy to rozumowanie uogólni´c: mo˙zna bra´c dowolne kombinacje liniowe równa´n. Jak dobre ograniczenie dolne mo˙zemy w ten sposób uzyska´c? Czyli jak ˛a kombinacj˛e liniow ˛a równo´sci wybra´c, ˙zeby dosta´c jak najwi˛eksz ˛a liczb˛e z prawej strony wynikowej równo´sci, ale ˙zeby wszys- tkie współczynniki przed xi były≤ ni˙z w funkcji celu? Mo˙zna to zapisa´c za pomoc ˛a programu liniowego:
zmaksymalizuj 10y1+ 6y2
z zachowaniem warunków y1+ 5y2 ≤ 7
−y1+ 2y2 ≤ 1 3y1− y2 ≤ 5
Powy˙zszy program b˛edziemy nazywa´c programem dualnym do programu (2).
3.3 Konstruowanie programu dualnego 3.4 Posta´c dopełnieniowa
Spróbujmy zastosowa´c rozumowanie z poprzedniego podrozdziału do dowolnego programu w postaci dopełnieniowej (nazwiemy go programem prymalnym):
zminimalizuj cTx
z zachowaniem warunków Ax= b x≥ 0
(3)
Kombinacj˛e liniow ˛a równa´n otrzymujemy przez pomno˙zenie obu stron równo´sci Ax= b z lewej strony przez wektor współczynników kombinacji yT, tzn. dostajemy yTAx= yTb. Je´sli zadbamy, ˙zeby cT ≥ yTA to poniewa˙z x≥ 0, mamy cTx≥ yTAx= yTb, czyli
cTx≥ yTb, (4)
a to jest dolne ograniczenie na rozwi ˛azanie optymalne. Chcemy mie´c dolne ograniczenie jak najwi˛eksze, czyli rozwi ˛aza´c zadaniemax{yTb| cT ≥ yTA}. Pami˛etaj ˛ac, ˙ze yTb = bTy oraz yTA= (ATy)T mo˙zemy to zapisa´c w znajomej postaci:
zmaksymalizuj bTy
z zachowaniem warunków ATy≤ c (5)
3.5 Dualna dualno´s´c ;)
Lemat 7. Niech L b˛edzie programem prymalnym w postaci dopełnieniowej. Program dualny do programu dualnego L jest programem prymalnym (czyli L).
Proof. Spróbujemy utworzy´c program dualny do (5). Zauwa˙zmy, ˙ze (5) jest równowa˙zny pro-
gramowi w postaci dopełnieniowej (patrz dowody lematów 2 i 3):
zminimalizuj −(bTy+− bTy−) z zachowaniem warunków
AT | − AT | I
y+ y− s
= c y+, y−, s≥ 0
(6)
Zgodnie z rozdziałem 3.4 program dualny do powy˙zszego ma posta´c:
zmaksymalizuj cTx
z zachowaniem warunków
A
−A I
x≤
−b b 0
(7)
czyli równowa˙znie:
zmaksymalizuj −cT(−x)
z zachowaniem warunków A(−x) = b
−x ≥ 0.
(8)
Po przej´sciu z maksymalizacji −cT(−x) do minimalizacji cT(−x) oraz po zamianie −x na x, otrzymujemy (3).
3.6 Posta´c kanoniczna
Rozwa˙zmy program w postaci kanonicznej
zminimalizuj cTx
z zachowaniem warunków Ax ≥ b .
Po przemno˙zeniu nierówno´sci przez−1 i zamianie minimalizacji na maksymalizacj˛e (c za- mieniamy na −c), otrzymujemy (5). Z lematu 7 programem dualnym jest (3). Zamieniaj ˛ac minimalizacj˛e na maksymalizacj˛e (i mno˙z ˛ac równo´sci przez−1) dostajemy
zmaksymalizuj bTy
z zachowaniem warunków ATy= c y≥ 0
3.7 Posta´c standardowa i komplementarne warunki swobody
zminimalizuj cTx
z zachowaniem warunków Ax≥ b x≥ 0
(9)
Post ˛apimy podobnie jak przy postaci dopełnieniowej: teraz te˙z potrzebujemy cT ≥ yTA, ale dodatkowo zało˙zymy y≥ 0 (˙zeby przy mno˙zeniu przez y nie zmieniały si˛e kierunki nierówno´sci.
Mamy wtedy
cTx≥ yTAx≥ yTb. (10) Znowu, chc ˛ac mie´c jak najwy˙zsze dolne ograniczenie, maksymalizujemy yTb. Po identy- cznej kosmetyce jak poprzednio dostajemy:
zmaksymalizuj bTy
z zachowaniem warunków ATy≤ c y≥ 0
(11) Zastanówmy si˛e, kiedy rozwi ˛azania optymalne programu dualnego i prymalnego spotykaj ˛a si˛e, czyli cTx = bTy. Jest tak wtedy i tylko wtedy gdy w (10) obie nierówno´sci s ˛a równo´s- ciami. Poniewa˙z z (11) cT ≥ yTA oraz z (9) x ≥ 0, wi˛ec dla ka˙zdego j = 1, . . . , n:
cjxj ≥ (yT[a∗,j])xj. St ˛ad cTx = yTAx wtedy i tylko wtedy gdy dla ka˙zdego j = 1, . . . , n:
cjxj = (yT[a∗,j])xj, gdzie [a∗,j] oznacza j-t ˛a kolumn˛e macierzy A. Analogicznie, yTATx = yTb wtedy i tylko wtedy gdy dla ka˙zdego i = 1, . . . , m: biyi = yi([ai,∗]x), gdzie [ai,∗] oznacza i-ty wiersz macierzy A. Jest to równowa˙zne nast˛epuj ˛acemu twierdzeniu.
Twierdzenie 3. Niech x i y b˛ed ˛a rozwi ˛azaniami dopuszczalnymi odpowiednio dla zadania pry- malnego i dualnego w postaci standardowej. Rozwi ˛azania x i y s ˛a oba optymalne wtedy i tylko wtedy gdy
(i) prymalne komplementarne warunki swobody
dla ka˙zdego j = 1, . . . , n albo xj = 0 albo [a∗,j]Ty= cj.
(albo xj = 0 albo j-ta nierówno´s´c programu dualnego jest spełniona z równo´sci ˛a.) (ii) dualne komplementarne warunki swobody
dla ka˙zdego i= 1, . . . , m albo yi = 0 albo [ai,∗]x = bi.
(albo yi = 0 albo i-ta nierówno´s´c programu prymalnego jest spełniona z równo´sci ˛a.) Powy˙zsze twierdzenie b˛edzie miało du˙ze znaczenie w zastosowaniach algorytmicznych. Oczy- wi´scie mo˙zna formułowa´c analogiczne twierdzenia dla innych postaci PL. (Np. dla postaci dopełnieniowej otrzymamy jedynie warunek (i). Dlaczego?)
3.8 Posta´c dowolna
Stosuj ˛ac powy˙zsze rozumowania do prymalnego PL w dowolnej postaci:
zminimalizuj cT1x1+ cT2x2+ cT3x3
z zachowaniem warunków A11x1+ A12x2+ A13x3 = b1
A21x1+ A22x2+ A23x3 ≥ b2
A31x1+ A32x2+ A33x3 ≤ b3
x1 ≥ 0 x2 ≤ 0
x3 nieograniczony
(12)
dostajemy nast˛epuj ˛acy program dualny:
zmaksymalizuj bT1y1 + bT2y2+ bT3y3
z zachowaniem warunków AT11y1+ AT21y2+ AT31y3 ≤ c1
AT12y1+ AT22y2+ AT32y3 ≥ c2
AT13y1+ AT23y2+ AT33y3 = c3
y1 nieograniczony y2 ≥ 0
y3 ≤ 0.
(13)
Zasada dualny-do-dualnego-jest-prymalny te˙z tu działa, tzn. programem dualnym do (13) jest (12).
3.9 Słaba i silna dualno´s´c
Z konstrukcji programu dualnego mo˙zemy wysnu´c nast˛epuj ˛acy wniosek:
Lemat 8 (słaba dualno´s´c). Je´sli z jest warto´sci ˛a funkcji celu rozwi ˛azania optymalnego prymal- nego minimalizacyjnego PL, natomiast w jest warto´sci ˛a funkcji celu rozwi ˛azania optymalnego programu dualnego, to z ≥ w.
Wniosek 3. Je´sli program prymalny jest nieograniczony, to program dualny jest sprzeczny.
Okazuje si˛e, ˙ze prawdziwe jest znacznie wi˛ecej ni˙z słaba dualno´s´c:
Twierdzenie 4 (silna dualno´s´c). Przy oznaczeniach jak powy˙zej, z = w.
Do udowodnienia twierdzenia o silnej dualno´sci b˛edziemy potrzebowa´c dwóch lematów.
Lemat 9 (o hiperpłaszczy´znie oddzielaj ˛acej). NiechP ⊂ Rnb˛edzie zbiorem wypukłym, z∈ Rn, z6∈ P. Wtedy istnieje a ∈ Rnoraz b ∈ R takie, ˙ze
aTx ≤ b dla ka˙zdego x∈ P aTz > b.
Dowód. Niech y b˛edzie najbli˙zszym punktem z w zbiorze P. Okre´slamy a := z − y oraz b:= aTy. Wtedy
b < aTz
(bo aTz = aT(y + a) = aTy+ aTa > aTy = b). Załó˙zmy (dowodz ˛ac niewprost), ˙ze istnieje x∈ P taki, ˙ze aTx> b, czyli aTx> aTy. Poka˙zemy, ˙ze nawet gdy taki x jest dalej od z ni˙z y, to na odcinku ł ˛acz ˛acym x i y (który cały zawiera si˛e wP) istnieje punkt bli˙zszy z ni˙z y (patrz rysunek 1), a to b˛edzie sprzeczno´s´c.
Dowolny punkt na odcinku xy odpowiada λx+ (1 − λ)y dla pewnego λ ∈ [0, 1]. Okre´slmy funkcj˛e zmiennej λ b˛ed ˛ac ˛a kwadratem odległo´sci takiego punktu od z:
f(λ) = ||λx + (1 − λ)y − z||2
= (λx + (1 − λ)y − z)2
= λ2(x − y)2+ 2λ(x − y)(y − z) + (y − z)2.
Rys. 1: Dowód lematu o hiperpłaszczy´znie separuj ˛acej Policzmy pochodn ˛a:
f′(λ) = 2λ(x − y)2+ 2(x − y)(y − z)
= 2λ(x − y)2− 2(aTx− aTy).
Widzimy, ˙ze limλ→0+f′(λ) < 0, a wi˛ec dla pewnego dostatecznie małego λ > 0 punkt λx + (1 − λ)y jest bli˙zej z ni˙z y, sprzeczno´s´c.
Kolejny lemat jest interesuj ˛acy sam w sobie. Przypomnijmy, ˙ze dla układów równa´n prawdziwa jest nast˛epuj ˛aca elegancka własno´s´c:
Lemat 10. Dokładnie jedno jest prawd ˛a dla układu równa´n Ax= b:
(i) istnieje x taki, ˙ze Ax= b,
(ii) istnieje y taki, ˙ze yTA= 0 oraz yTb6= 0.
Innymi słowy, albo układ ma rozwi ˛azanie, albo istnieje taka kombinacja liniowa y jego rów- na´n, która prowadzi do sprzeczno´sci. Odpowiednik tego faktu dla programów liniowych nosi nazw˛e Lemat Farkasa. Oto jego sformułowanie dla postaci dopełnieniowej:
Lemat 11 (Farkasa). Dokładnie jedno jest prawd ˛a:
(i) istnieje x taki, ˙ze Ax= b i x ≥ 0,
(ii) istnieje y taki, ˙ze yTA≥ 0 oraz yTb <0.
Dowód. Łatwo jest pokaza´c, ˙ze oba warunki nie mog ˛a by´c równocze´snie prawdziwe: je´sli Ax= b, x≥ 0 oraz yTA ≥ 0 to yTb= yTA
| {z }
≥0
|{z}x
≥0
≥ 0.
Załó˙zmy teraz, ˙ze nie zachodzi (i). Niech S := {Ax | x ≥ 0}. S jest zbiorem wy- pukłym (jako obraz przekształcenia liniowego na zbiorze wypukłym) i b 6∈ S. Z lematu o
hiperpłaszczy´znie oddzielaj ˛acej8, istniej ˛a takie y i b′, ˙ze yTs ≥ b′ > yTb dla ka˙zdego s ∈ S, czyli
yTAx> yTb dla ka˙zdego x≥ 0.
Podstawiaj ˛ac x = 0 dostajemy yTb < 0. Z kolei podstawiaj ˛ac λei, gdzie λ > 0 jest dowoln ˛a liczb ˛a a ei wektorem jednostkowym dostajemy yT(Aλei) > yTb, czyli yT(Ai) > yTλb, gdzie Ai jest i-t ˛a kolumn ˛a A. Nast˛epnie yT(Ai) ≥ limλ→+∞yTb
λ , czyli yT(Ai) ≥ 0 dla ka˙zdego i, a to daje w ko´ncu yTA≥ 0.
B˛edziemy jednak potrzebowa´c wersji lematu Farkasa dla postaci kanonicznej:
Lemat 12 (Farkasa, wersja kanoniczna). Dokładnie jedno jest prawd ˛a:
(i’) istnieje x taki, ˙ze Ax≤ b,
(ii’) istnieje y≥ 0 taki, ˙ze ATy= 0 oraz yTb<0.
Dowód. Przypomnijmy z dowodów lematów 2 i 3, ˙ze (i’) jest równowa˙zny temu, ˙ze istniejex taki, ˙ze¯ [A | − A | I]¯x= b, ¯x≥ 0.
A wi˛ec, z lematu Farkasa, prawd ˛a jest albo (i’) albo
istniejey taki, ˙ze¯ yT[A | − A | I] ≥ 0, yTb<0.
Zauwa˙zmy jednak, ˙ze yT[A | − A | I] ≥ 0 jest równowa˙zne y ≥ 0 i ATy = 0, co ko´nczy dowód.
Mo˙zemy ju˙z teraz udowodni´c twierdzenie o silnej dualno´sci (w wersji dla postaci dopełnieniowej):
Twierdzenie 5 (silna dualno´s´c). Je´sli z jest warto´sci ˛a funkcji celu c rozwi ˛azania optymalnego prymalnego minimalizacyjnego PL w postaci dopełnieniowej ATx= b, x ≥ 0, natomiast w jest warto´sci ˛a funkcji celu rozwi ˛azania optymalnego programu dualnego, to z = w.
Dowód. Ze słabej dualno´sci, z ≥ w. Załó˙zmy, ˙ze z > w. Wtedy {y | ATy≤ c, bTy≥ z} = ∅.
Z lematu Farkasa (wersja kanoniczna) mamy, ˙ze istnieje
x q
≥ 0 takie, ˙ze [A | − b]
x q
= 0 oraz [x | q]
c
−z
< 0.
St ˛ad x≥ 0, q ≥ 0, Ax = bq oraz cTx< qz. Rozwa˙zamy dwa przypadki w zale˙zno´sci od q.
Je´sli q >0, to mamy Axq = b, xq ≥ 0 oraz cT xq < z czyli xq jest rozwi ˛azaniem dopuszczal- nym o mniejszej warto´sci funkcji celu ni˙z z, sprzeczno´s´c.
Je´sli q = 0, to Ax = 0 i cTx< 0. Niech x∗ b˛edzie rozwi ˛azaniem dopuszczalnym takim, ˙ze cTx∗ = z. Wówczas A(x∗ + x) = b oraz x∗+ x ≥ 0 ale cT(x∗ + x) < cTx∗ = z, ponownie sprzeczno´s´c.
8Stosujemy ten lemat z odwróconymi nierówno´sciami (wystarczy pomno˙zy´c oryginalne nierówno´sci przez−1)
Zadanie Sprowadzi´c problem znajdowania rozwi ˛azania optymalnego do problemu znajdowania rozwi ˛azania dopuszczalnego.
Zadanie Przyjmuj ˛ac, ˙ze dla PL ograniczonego długo´s´c zapisu binarnego rozwi ˛azania dopuszczal- nego jest ograniczona przez wielomian rozmiaru współczynników PL (macierzy A, wektorów b, c), poka˙z, ˙ze programowanie liniowe jest w co-NP∩ NP.
3.10 Przykład zastosowania dualno´sci: przepływy i przekroje
Rozwa˙zmy problem maksymalnego przepływu (niedouczony czytelnik jest proszony o przypom- nienie sobie definicji problemu maksymalnego przepływu i problemu minimalnego przekroju).
Zamiast maksymalizowa´c całkowity przepływ wypływaj ˛acy z s mo˙zemy doda´c now ˛a kraw˛ed´z (t, s) o niesko´nczonej przepustowo´sci oraz za˙z ˛ada´c warunku zachowania przepływu (tzn.P
wxvw= 0) tak˙ze dla ´zródła s i uj´scia t. Otrzymujemy nast˛epuj ˛acy program:
zmaksymalizuj xts
z zachowaniem warunków P
w∈V(xvw− xwv) = 0 dla ka˙zdego v ∈ V xvw ≤ c(v, w) dla wszystkich v, w ∈ V xvw ≥ 0 dla wszystkich v, w ∈ V
(14)
Zauwa˙zmy, ˙ze warunki zachowania przepływuP
w∈V(xvw− xwv) = 0 mo˙zemy zamieni´c na P
w∈V(xvw−xwv) ≤ 0. Istotnie, gdyby w rozwi ˛azaniu dopuszczalnym dla pewnego wierzchołka P
w∈V(xvw − xwv) < 0, czyli mniej wypływa z v ni˙z wpływa do v, to poniewa˙z całkowity przepływ wpływaj ˛acy do wszystkich wierzchołków jest równy wypływaj ˛acemu wi˛ec z jakiego´s innego wierzchołka q musiałoby wi˛ecej wypływa´c ni˙z wpływa´c, czyli rozwi ˛azanie nie byłoby dopuszczalne. W ten sposób otrzymali´smy PL w postaci standardowej:
zmaksymalizuj xts
z zachowaniem warunków P
w∈V(xvw− xwv) ≤ 0 dla ka˙zdego v ∈ V xvw ≤ c(v, w) dla wszystkich v, w ∈ V xvw ≥ 0 dla wszystkich v, w ∈ V
(15)
Skonstruujmy program dualny. Dla ka˙zdego warunku zachowania przepływu program du- alny b˛edzie zawierał zmienn ˛a zv. Podobnie, ka˙zdemu warunkowi przepustowo´sci w (15) odpowiada zmienna yvww programie dualnym. Ka˙zda zmienna xvwprogramu (15) wyst˛epuje raz w warunku zachowania przepływu dla v (ze współczynnikiem1), raz w warunku zachowania przepływu dla w (ze współczynnikiem−1) oraz raz w warunku przepustowo´sci dla vw (ze współczynnikiem 1). Zmienna xvw b˛edzie wi˛ec odpowiada´c nierówno´sci o lewej stronie zv − zw + yvw. Zmienna xvw jest nieujemna wi˛ec nierówno´s´c b˛edzie postaci zv − zw+ yvw ≥?, gdzie ? to współczynnik w funkcji celu przy xvw, czyli 1 gdy vw = ts i 0 w przeciwnym przypadku. Mo˙zemy ju˙z napisa´c cały program dualny:
zminimalizuj P
vwc(v, w)yvw
z zachowaniem warunków zv − zw + yvw ≥ 0 dla ka˙zdego vw 6= ts zt− zs+ yts ≥ 1
yvw≥ 0 dla wszystkich v, w ∈ V zv ≥ 0 dla ka˙zdego v ∈ V
(16)
Zauwa˙zmy, ˙ze gdyby w optymalnym rozwi ˛azaniu (16) yts > 0 to skoro c(t, s) = +∞, wi˛ec (16) jest nieograniczony. Ale wtedy (15), jako program dualny do (16), jest sprzeczny, a przecie˙z zerowy przepływ jest zawsze dopuszczalny. St ˛ad yts = 0. Uwzgl˛edniaj ˛ac t˛e równo´s´c po niewielkich zabiegach kosmetycznych dostajemy:
zminimalizuj P
vwc(v, w)yvw
z zachowaniem warunków yvw≥ zw − zv dla ka˙zdego vw 6= ts zt− zs≥ 1
yvw≥ 0 dla wszystkich v, w ∈ V zv ≥ 0 dla ka˙zdego v ∈ V
(17)
Zauwa˙zmy, ˙ze gdyby doło˙zy´c warunki zv, yvw ∈ {0, 1} to dostaliby´smy dokładnie prob- lem minimalnego przekroju! W szczególno´sci, dla minimalnego przekroju (S, ¯S), rozwi ˛azanie postaci zv = 0 dla v ∈ S, zw = 1 dla w ∈ ¯S, yvw = zv − zw jest rozwi ˛azaniem do- puszczalnym (17). Na podstawie słabej dualno´sci dostajemy znajomy fakt: max-przepływ ≤ min-przekrój.
Gdyby teraz udowodni´c, ˙ze rozwi ˛azanie optymalne (17) ograniczonego do warto´sci {0, 1}
jest te˙z rozwi ˛azaniem optymalnym (17), to z twierdzenia o dualno´sci mieliby´smy jako wniosek twierdzenie o maksymalnym przepływie i minimalnym przekroju, tzn. ˙ze warto´s´c maksymalnego przepływu jest równa przepustowo´sci minimalnego przekroju. Mo˙zna tak uczyni´c, my jednak w inny sposób poka˙zemy, ˙ze twierdzenie o maksymalnym przepływie i minimalnym przekroju jest szczególnym przypadkiem teorii dualno´sci PL.
Wystarczy pokaza´c, ˙ze min-przekrój ≤ max-przepływ. Nawet mniej: wystarczy skonstru- owa´c dowolny przekrój o przepustowo´sci≤ max-przepływ. Niech x∗ b˛edzie optymalnym roz- wi ˛azaniem (15) natomiast z∗, y∗ optymalnym rozwi ˛azaniem (17). Bez straty ogólno´sci mo˙zemy zało˙zy´c, ˙ze z∗s = 0 (je´sli tak nie jest ustawiamy z∗v := zv∗ − zs∗, otrzymuj ˛ac rozwi ˛azanie do- puszczalne o tej samej warto´sci funkcji celu). Niech S = {v | zv∗ <1} i T = V − S. Zauwa˙zmy,
˙ze s∈ S oraz t ∈ T , a wi˛ec (S, T ) jest przekrojem. Poka˙zemy, ˙ze jego przepustowo´s´c jest równa x∗ts, czyli ˙ze c(S, T ) = P
v∈S,w∈Tc(v, w) = x∗ts. W tym celu rozwa˙zmy dwa rodzaje kraw˛edzi (v, w) przecinaj ˛acych przekrój:
1. v∈ S, w ∈ T . Wtedy y∗vw≥ zw∗ − zv∗ >0. St ˛ad yvw∗ 6= 0 i na podstawie komplementarnych warunków swobody, odpowiedni warunek w programie prymalnym musi by´c spełniony z równo´sci ˛a, czyli x∗vw = c(v, w).
2. v ∈ T, w ∈ S, (v, w) 6= (t, s). Wtedy zv∗ − zw∗ + y∗vw ≥ zv∗ − zw∗ > 0. St ˛ad warunek zv∗ − zw∗ + y∗vw ≥ 0 w programie (17) nie jest spełniony z równo´sci ˛a, wi˛ec na mocy
komplementarnych warunków swobody odpowiadaj ˛aca mu zmienna x∗vww (15) jest równa 0.
Pokazali´smy, ˙ze
c(S, T ) =X
v∈S w∈T
x∗vw− X
w∈T,v∈S (w,v)6=(t,s)
x∗wv.
Jeszcze kilka przekształce´n9
c(S, T ) =X
v∈S w∈T
x∗vw− X
w∈T,v∈S (w,v)6=(t,s)
x∗wv
= x∗ts+X
v∈S w∈T
x∗vw−X
w∈T v∈S
x∗wv
= x∗ts+
X
v∈S w∈T
x∗vw+ X
v,w∈S
x∗vw
−
X
w∈T v∈S
x∗wv+ X
w,v∈S
x∗wv
= x∗ts+X
v∈S w∈V
x∗vw− X
w∈V v∈S
x∗wv
= x∗ts+X
v∈S
X
w∈V
(x∗vw− x∗vw)
| {z }
0
= x∗ts.
4 Algorytmy programowania liniowego
Pierwszym algorytmem programowania liniowego był algorytm simplex, opublikowany przez George’a Dantziga w 1947 roku. Algorytm ten najpierw znajduje pewien wierzchołek wielo´s- cianu rozwi ˛aza´n dopuszczalnych, a nast˛epnie w p˛etli przemieszcza si˛e wzdłu˙z kraw˛edzi do jed- nego z s ˛asiednich wierzchołków tak, aby poprawi´c warto´s´c funkcji celu. Niestety okazuje si˛e, ˙ze jego pesymistyczna zło˙zono´s´c jest wykładnicza. Doskonale zachowuje si˛e on jednak dla rzeczy- wistych danych i jest powszechnie stosowany w praktyce.
Kolejny przełom nast ˛apił w 1979 kiedy to Leonid Khachiyan opublikował tzw. metod˛e elip- soidaln ˛a, czyli algorytm wielomianowy o zło˙zono´sci O(n4L), gdzie L jest ograniczone z góry przez długo´s´c zapisu binarnego danych (macierzy A, wektorów b i c). Istniej ˛a implementacje tego algorytmu, jednak˙ze ´zle sprawdzaj ˛a si˛e w praktyce.
W 1984 roku zupełnie inne podej´scie zaproponował Narendra Karmarkar. Jego metoda punktu wewn˛etrznego osi ˛aga zło˙zono´s´c O(n3.5L) i została poprawiona przez kolejnych autorów do O(n3L). Podobno niektóre implementacje niektórych wersji tego algorytmu zachowuj ˛a si˛e bardzo dobrze dla rzeczywistych danych (porównywalnie albo lepiej ni˙z algorytm simplex).
9wła´sciwie ju˙z wida´c, ˙ze z prawej strony mamy przepływ płyn ˛acy przez przekrój, a to jest równe po prostu x∗ts, ale kto o tym pami˛eta?
Literatura
• Notatki do wykładu „Advanced Algorithms” E. Demiane’a i D. Kargera (2003) http://courses.csail.mit.edu/6.854/fall03/
• Notatki do wykładu „Advanced Algorithms” M. Goemans’a (1994) http://www-math.mit.edu/~goemans/notes-lp.ps
• O zastosowaniach PL do algorytmów aproksymacyjnych mo˙zna poczyta´c w V. Vazirani „Algorytmy Aproksymacyjne” WNT 2005.
• O programowaniu liniowym (z perspektywy algorytmu Simplex) mo˙zna te˙z poczyta´c w Cormen, Leiserson, Rivest, Stein „Wprowadzenie do algorytmów”, Wydanie≥ 6, WNT 2004.