• Nie Znaleziono Wyników

1Podstawowepoj˛ecia 1.1Cotojestprogramowanieliniowe?

N/A
N/A
Protected

Academic year: 2021

Share "1Podstawowepoj˛ecia 1.1Cotojestprogramowanieliniowe?"

Copied!
17
0
0

Pełen tekst

(1)

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

(2)

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

(3)

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 xi i ka˙zde wys- t ˛apienie xi w PL (tak˙ze w funkcji celu) zast˛epujemy przez x+i − xi . Dodajemy te˙z x+i ≥ 0 i xi ≥ 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

(4)

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

(5)

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.

(6)

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 xi = 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′′.

(7)

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.

(8)

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-

(9)

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

(10)

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:

(11)

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.

(12)

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

(13)

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)

(14)

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:

(15)

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 zs = 0 (je´sli tak nie jest ustawiamy zv := 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 xts, czyli ˙ze c(S, T ) = P

v∈S,w∈Tc(v, w) = xts. W tym celu rozwa˙zmy dwa rodzaje kraw˛edzi (v, w) przecinaj ˛acych przekrój:

1. v∈ S, w ∈ T . Wtedy yvw≥ 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 xvw = c(v, w).

2. v ∈ T, w ∈ S, (v, w) 6= (t, s). Wtedy zv − zw + yvw ≥ zv − zw > 0. St ˛ad warunek zv − zw + yvw ≥ 0 w programie (17) nie jest spełniony z równo´sci ˛a, wi˛ec na mocy

(16)

komplementarnych warunków swobody odpowiadaj ˛aca mu zmienna xvww (15) jest równa 0.

Pokazali´smy, ˙ze

c(S, T ) =X

v∈S w∈T

xvw− X

w∈T,v∈S (w,v)6=(t,s)

xwv.

Jeszcze kilka przekształce´n9

c(S, T ) =X

v∈S w∈T

xvw− X

w∈T,v∈S (w,v)6=(t,s)

xwv

= xts+X

v∈S w∈T

xvw−X

w∈T v∈S

xwv

= xts+

 X

v∈S w∈T

xvw+ X

v,w∈S

xvw

 −

 X

w∈T v∈S

xwv+ X

w,v∈S

xwv



= xts+X

v∈S w∈V

xvw− X

w∈V v∈S

xwv

= xts+X

v∈S

X

w∈V

(xvw− xvw)

| {z }

0

= xts.

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 xts, ale kto o tym pami˛eta?

(17)

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.

Cytaty

Powiązane dokumenty

[r]

Dalsza eliminacja nie jest konieczna, bo otrzymana macierz jest ju˙z tr´ ojk atna , g´ orna... Powy˙zszy spos´ ob rozwi azania

Algebra macierzy Geoinformacja Kolokwium przykładowe.

Części nie mogą być dzielone przez Wykonawców, oferty nie zawierające pełnego zakresu przedmiotu zamówienia określonego w zadaniu częściowym zostaną odrzucone2. Zamawiający

b) Zadanie numer 3 – Aparat RTG z ramieniem C – do 8 tygodni od daty podpisania umowy Szczegółowe warunki dotyczące realizacji umowy przedstawione są w dokumentach

Zamawiający nie ogranicza liczby części zamówienia na które Wykonawca może złożyć ofertę oraz nie określa maksymalnej liczby części zamówienia, na które może zostać

Przedmiot i warunki realizacji niniejszego zamówienia winny być zgodne z ustawą z dnia 6.9.2001 roku Prawo farmaceutyczne (t.j. zm.) oraz z innymi obowiązującymi przepisami prawymi

4. Szczegółowy opis urządzeń, parametry techniczne wraz z innymi szczegółowymi warunkami dotyczącymi realizacji przedmiotu zamówienia przedstawione są w załącznikach numer 1, 2,