Justyna Kosakowska i Piotr Malicki Badania operacyjne (Kurs letni 2009) Materiały dydaktyczne dla studentów I-go roku matematyki Wydział Matematyki i Informatyki Uniwersytet Mikołaja Kopernika Toruń 2009 Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego
Podczas przygotowywania niniejszych notatek korzystaliśmy z następującej literatury: [] M. S. Bazaraa, C. M. Shetty, Nonlinear Programming Theory and Algorithms, New York 979. [2]T.H.Cormen,Ch.E.Leiserson,R.L.Rivest, Wprowadzeniedo algorytmów, WN-T, Warszawa 200. [3] M. M. Sysło, Algorytmy, WSiP, Warszawa 997. [4] M. M. Sysło, N. Deo, J. S. Kowalik, Algorytmy optymalizacji dyskretnej, PWN, Warszawa 995. Literatura uzupełniająca: [] R. Faure, J.-P. Boss, A. Le Garff, Badania operacyjne, PWN 982. [2] S. I. Gass, Programowanie liniowe, PWN 980. [3] K. Manteuffel, E. Seiffart, Wstęp do algebry liniowej i programowania liniowego, PWN 975.
SPIS TREŚCI 3 Spis treści Programowanie liniowe 4. Wstęp... 4.2 Zbiorywypukłeiichwłasności... 6.3 Punktyiwektoryekstremalne... 2.4 Metodasympleksowa... 22.4. Dualnametodaprogramowanialiniowego... 29.5 Elementyprogramowaniacałkowitoliczbowego... 3 2 Strategie zachłanne 39 2. Problemwyboruzajęć... 40 2.2 Problemplecakowy... 42 3 Programowanie dynamiczne 44 3. Problemplecakowy-programowaniedynamiczne... 45 4 Grafy- podstawowe definicje 49 4. Reprezentacjegrafów... 53 4.. Macierzesąsiedztwa... 53 4..2 Listysąsiedztwa... 54 5 Minimalne drzewa rozpinające 55 5. AlgorytmKruskala... 56 6 Problem najkrótszych dróg 60 6. AlgorytmDijkstry... 6 6.2 AlgorytmBellmana-Forda... 65
. PROGRAMOWANIE LINIOWE 4. Programowanie liniowe.. Wstęp W roku 827 matematyk francuski J.B.J. Fourier opublikował metodę rozwiązywania układu nierówności liniowych. Publikacja ta jest zwykle uważana za początek programowania liniowego. W 939 roku rosyjski matematyk L.V. Kantorovich sformułował problem przydziału środków jako problem programowania liniowego. Mniej więcej w tym samym okresie duński ekonomista T.C. Koopmans sformułował model programowania liniowego dla pewnych klasycznych zagadnień występujących w ekonomii. W czasie trwania II wojny światowej modele programowania liniowego były stosowane do rozwiązywania problemów związanych z planowaniem wojskowym. W roku 947 matematyk amerykański G.B. Dantzig odkrył metodę sympleks. Zbiegło się to z rozwojem komputeryzacji, a zatem z możliwością zastosowania metod programowania liniowego do rozwiązywania problemów występujących w rzeczywistości. W roku 975 Kantorovich oraz Koopmans otrzymali za swoje prace nagrodę Nobla w dziedzinie nauk ekonomicznych. Przykład.. Załóżmy, że pewna firma produkuje dwa rodzaje zapałek: grillowe(długie) i normalne(krótkie). Zysk z każdego pudła zapałek grillowych wynosi 300 EUR, a z każdego pudła zapałek normalnych wynosi 200 EUR. Firma posiada jedną maszynę robiącą długie lub krótkie zapałki. Maszyna ta może wyprodukować w jednym roku maksymalnie 900 000 pudeł zapałek długich lub krótkich. Do produkcji zapałek firma potrzebuje drewna oraz pudeł. Do otrzymania jednego pudła zapałek grillowych potrzeba 3 m 3 drewna,natomiastdootrzymaniajednegopudłazapałeknormalnychpotrzebam 3 drewna.firmaposiada 800000m 3 drewnanaroknastępny, ponadtonaszafirmama700000pudełnazapałkigrilloweoraz600000pudeł na zapałki normalne. Naszym celem jest zmaksymalizowanie zysków firmy w roku następnym, przy czym zakładamy, że firma może sprzedać wszystko co wyprodukuje. Zapiszmypowyższyproblemzapomocąnierówności.Niech x oraz x 2 oznaczają odpowiednio ilość pudeł( 00 000) zapałek długich oraz ilość pudeł( 00 000) zapałek krótkich wyprodukowanych w roku następnym. Zysk z jednegopudłazapałekdługichwynosi300eur(3 00EUR),zatemzyskzx pudełzapałekdługichwynosi 3x (stueurojednostek).podobniezyskzx 2
. PROGRAMOWANIE LINIOWE 5 pudełzapałekkrótkichwynosi 2x 2 (stueurojednostek).przyformułowaniu naszego zagadnienia musimy wziąć pod uwagę następujące ograniczenia: wydajnośćmaszynyjestograniczonaprzez9( 00000)pudełnarok, czyli x + x 2 9; ograniczeniezwiązanezilościądrewna,to 3x + x 2 8; ograniczeniezwiązanezilościądostępnychpudeł,to x 7, x 2 6; ograniczeniezwiązanezsensownościąrozważań,to x 0, x 2 0. Możemy teraz napisać model dla naszej firmy: przy warunkach: max(3x + 2x 2 ) x + x 2 9, 3x + x 2 8, x 7, x 2 6, x, x 2 0. Jest to przykład modelu programowania liniowego(w skrócie PL-modelu). Funkcję 3x + 2x 2 nazywamyfunkcjącelu.wdalszejczęściwypracujemy metody ogólne, pozwalające rozwiązywać podobne problemy. Powyższy problem rozwiążmy graficznie.
. PROGRAMOWANIE LINIOWE 6 Obszarwyznaczonyprzezpunkty [ ] 0, v, v 2, v 3, v 4 nazywamydopuszczalnym, zawiera on punkty spełniające ograniczenia. Same zaś x punkty x 2 0, v, v 2, v 3, v 4 nazywamywierzchołkamiobszarudopuszczalnego.łatwo [ ] [ ] [ ] [ ] 6 4, 5 3 0 policzyć,że v =, v 0 2 =, v 4, 5 3 =, v 6 4 =. Zauważmy, że nierówność x 7niemawpływunaobszardopuszczalny.Szkicującfunkcjęcelu [ ] 4, 5 6 widzimy,żeosiągaonawartośćmaksymalnądlawierzchołka v 2 =. 4, 5 Wartość funkcji celu w tym wierzchołku wynosi 22, 5, zatem maksymalny zyskdlafirmywynosi22500eur..2. Zbiory wypukłe i ich własności Definicja.2.Niepustyzbiór S R n nazywamywypukłym,jeślidla dowolnychdwóchelementów x, x 2 Sorazdowolnego λ [0, ]zachodzi λx + ( λ)x 2 S. Przykład.3.(i)PłaszczyznawR 3, S = {(x, x 2, x 3 ) R 3 ; 2x + x 2 3x 3 = 7}lubogólniejhiperpłaszczyznawR n, S = {c T x = α},gdzie 0 c R n, α R. (ii)półprzestrzeńwr 3, S = {(x, x 2, x 3 ) R 3 ; 2x + x 2 3x 3 7}lub ogólniejpółprzestrzeńwr n, S = {c T x α},gdzie 0 c R n, α R. (iii) Zbiór S pochodzący z Przykładu. S = [ x x 2 ] R 2 ; 3 0 0 [ x x 2 ] 9 [ ] 8 7, x x 2 6 [ 0 0 ] Uwaga.4.(i)Niech S, S 2 R n będązbioramiwypukłymi.wówczas zbiory S +S 2 = {x +x 2 ; x S, x 2 S 2 }, S S 2 = {x x 2 ; x S, x 2 S 2 }sąrównieżzbioramiwypukłymi. (ii)niech S t R n, t Tbędązbioramiwypukłymi.Wówczaszbiór t T S t jest również wypukły. Definicja.5.Niech S R n.otoczkąwypukłązbioru SnazywamynajmniejszyzbiórwypukływR n zawierający Sioznaczamygoprzez conv (S)..
. PROGRAMOWANIE LINIOWE 7 conv (S) Lemat.6.Dowolnyzbiór S R n posiadaotoczkęwypukłą. Dowód.Niech S R n, A = {T R n ; S T, T wypukły}.odnotujmy,że A =,bo R n A.Definiujemy T A T =conv (S).Mamy S T A T,bo T AS T.Ponadto T A T,ponieważzzałożenia S.Zfaktu,żedowolnyzbiór T Ajestwypukły,dostajemyżezbiór T A Tjestwypukły.Załóżmy,że T A Tniejestnajmniejszymzbiorem wypukłymzawierającym S.Wówczasistniejezbiórwypukły T 0 zawierający Staki,że T A T T 0.Otrzymujemyzatemsprzeczność,bo T 0 A(czyli T A T T 0). Twierdzenie.7.Niech S R n.wówczas x conv (S)wtedyi tylkowtedy,gdyistnieją x, x 2,...,x k S, λ, λ 2,...,λ k 0, k λ i = takie,że x = k λ ix i. Dowód.Dlaustalonego S R n oznaczmy { } k C(S) = x R n ; x,x 2,...,x k S λ,...,λ k 0, P k λ x = λ i x i. Abywykazaćinkluzjęconv (S) C(S)wystarczypokazać,że S C(S)oraz żezbiór C(S)jestwypukły.Oczywiście S C(S),ponieważjeśli x S,to x = x(k =, λ =, x = x). Pokażemy, że C(S) jest zbiorem wypukłym. Niech v, w C(S). Istnieją zatem v, v 2,...,v k, w, w 2,...,w l Soraz λ, λ 2,...,λ k, µ, µ 2,...,µ l 0
. PROGRAMOWANIE LINIOWE 8 takie,że v = k λ iv i, w = l µ iw i oraz k λ i =, l µ i =. Musimywykazać,żedladowolnego t [0, ], tv + ( t)w C(S).Mamy tv + ( t)w = t k λ i v i + ( t) l µ i w i = k tλ i v i + l ( t)µ i w i. Jesttokombinacjaliniowawektorów v, v 2,...,v k, w, w 2,...,w l Soraz tλ i 0dla i =, 2,..., k, ( t)µ i 0dla i =, 2,...,l.Ponadto k tλ i + l ( t)µ i = t k λ i + ( t) l µ i = t + t =. ostatecznie otrzymujemy, że conv (S) C(S). Pozostała nam jeszcze do udowodnienia inkluzja C(S) conv (S). Niech S T R n będziedowolnymzbioremwypukłym.pokażemy,że C(S) T. Weźmy x C(S),zatem x = k λ ix i, x i S, k λ i =.Dowódfaktu, że x Tprzeprowadzimyindukcyjniezewzględuna k. Jeśli k =,to x = x S T.Czyli x T.Załóżmy,że x Tdla k. Wówczas x = k k k λ i λ i x i = λ i x i + λ k x k = ( λ k ) x i + λ k x k = λ k k λ i ( λ k ) x i + λ k x k. λ k Możemyzałożyć,że λ k (wprzeciwnymrazie k = ).Zauważmy,że element x = k λ i λ k x i należydo T,gdyż k λ k i = λ i = λ k = λ k λ k λ k oraz x i S.Zatem x = ( λ k )x +λ k x k,gdzie x T, x k S Tnależydo T, ponieważ T jest zbiorem wypukłym. Z dowolności T dostajemy C(S) conv (S). Ostatecznie otrzymujemy równość C(S) = conv (S). Definicja.8.Otoczkęwypukłąskończonegozbioru {x, x 2,..., x k } R n nazywamywielościanem.jeśliponadtowektory x 2 x, x 3 x,...,x k x sąliniowoniezależne,towielościannazywamysympleksem.
. PROGRAMOWANIE LINIOWE 9 wielościan sympleks Twierdzenie.9(Carathe odory).niech S R n będziedowolnym zbiorem.wówczas x conv (S)wtedyitylkowtedy,gdyistnieją x, x 2,..., x n+ Stakie,że x conv ({x, x 2,...,x n+ }). Dowód.Oczywiściejeżeliistniejąelementy x, x 2,...,x n+ Stakie,że x conv ({x, x 2,...,x n+ }),to x conv (S). Niech x conv (S).Wówczas x = k λ ix i,przyczym x, x 2,...,x k S, λ, λ 2,...,λ k 0, k λ i =.Jeżeli k n+,toodpowiedniaimplikacja jestprawdziwaztwierdzenia.7.jeśli k > n +,towektorów x 2 x, x 3 x,..., x k x jestconajmniej n +,zatemsąoneliniowozależne(w R n ). Dlategoistniejąliczby µ i R, i = 2, 3,..., ktakie,że k i=2 µ i(x i x ) = 0 oraz k i=2 µ2 i 0.Niech µ = k i=2 µ i.wówczas k µ i x i = µ x + k k µ i x i = µ i x + i=2 i=2 k µ i x i = i=2 k µ i (x i x ) = 0. i=2 Ponadto k µ i = 0oraz k µ2 i 0.Rozpatrzmyzbiór A = { λ i µ i ; µ i > 0}. Zauważmy,że A (istnieje i {, 2,..., k},dlaktórego µ i > 0,ponieważ jeślidlakażdego i 2, µ i 0,to µ > 0).Niech dlapewnego s {, 2,..., k}.mamy α = min{ λ i µ i ; µ i > 0} = λ s µ s > 0 x = k λ i x i + 0 = k k λ i x i α µ i x i = k (λ i αµ i )x i.
. PROGRAMOWANIE LINIOWE 0 Jeśli µ i 0,to λ i αµ i > 0.Jeśli µ i > 0,to λ i µ i λs µ s = α.czyli λ i αµ i 0. Ponadto k k k (λ i αµ i ) = λ i α µ i = α0 =. Równocześnie λ s αµ s = λ s λs µ s µ s = 0.Wobecpowyższychzależności x = k,i s (λ i αµ i )x i,czyli x conv ({(x i ) i, i k, i s}).zatem x posiada przedstawienie w postaci wypukłej kombinacji k elementów zezbioru S.Jeżeli k > n +,topostępujemyanalogicznie.procesten kontynuujemy, dopóty dopóki x nie okaże się wypukłą kombinacją n + elementów ze zbioru S. Twierdzenie.0.Niech S R n będziezbioremwypukłymtakim,że S = Sorazniech y S.Wówczasistniejedokładniejedenpunkt x S taki,żeodległość yod xjestminimalna,tzn. y x = min x S { y x }. Ponadto punkt x jest jedynym punktem zbioru S spełniającym nierówność: (x x) T (x y) 0dlawszystkich x S. Dowód.Niech γ = inf x S { y x }.Ponieważzbiór Sjestdomknięty, to γ > 0.Rzeczywiście,gdyby γ = 0,toistniałbyciąg (x n ) Staki,że lim n x n = y,czyli y Siwkonsekwencji y S,codajesprzeczność. Wobectegoistniejeciąg (x n ) Staki,że lim n x n y = γ.pokażemy, żeciąg (x n )jestzbieżny.niech k, n N.Mamy x k x n 2 = x k y (x n y) 2 = 2 x k y 2 +2 y x n 2 x k +x n 2y 2 = 2 x k y 2 + 2 x n y 2 4 x k + x n 2 y Ponieważ x k, x n S,to x k+x n S.Zokreślenia γmamy x k+x n y 2 γ 2. 2 2 Stąd x k x n 2 2 x k y 2 + 2 x n y 2 4γ 2. Wiemy,że lim k x k y = γ,czyli lim k x k y 2 = γ 2.Istniejezatem Ntakie,żedla m N x m y 2 < γ 2 + ε 4. Stąddla k, n N x k x n 2 < 2γ 2 + ε 2 + 2γ2 + ε 2 4γ2 = ε. 2.
. PROGRAMOWANIE LINIOWE Zatem (x n )jestciągiemcauchy ego.zzupełności R n dostajemy,żeciąg (x n ) jestzbieżny.niech x = lim n x n,odnotujmyże x S,ponieważ S = S. Mamy y x = y lim x n = lim y x n = γ. n n Abypokazaćjedynośćzałóżmy,żeistniejeelement x Staki,że y x = γ.pokażemy,iż x = x.ponieważzbiór Sjestwypukły,to x+x S.Mamy 2 y x + x 2 = y 2 x 2 + y 2 x 2 2 y x + 2 y x = γ. Zokreślenia γwynika,że y x+x 2 = γ,ale 4 y x + x 2 2 + x x 2 = 2 y x 2 + 2 y x 2. Czyli 4γ 2 + x x 2 = 2γ 2 + 2γ 2,azatem x x = 0ix = x. Pokażemyteraz,że (x x) T (x y) 0dladowolnego x S.Weźmy x S,wówczas y x 2 y x 2 (xjestnajbliżej y).zbiór Sjestwypukły oraz x, x Szatemdla λ [0, ], λx + ( λ)x S.Mamyponadto y x 2 y x λ(x x) 2 = y x 2 +λ 2 x x 2 +2λ(y x) T (x x). Stąd λ 2 x x 2 + 2λ(x x) T (x y) 0idla λ > 0, λ x x 2 + 2(x x) T (x y) 0.Gdy λzmierzadozeraotrzymujemy (x x) T (x y) 0. Pokażemy teraz, że x jest jedynym punktem spełniającym powyższą nierówność.niech x Sorazniechdladowolnego x Szachodzi (x x ) T (x y) 0.Wówczas y x 2 = y x + x x 2 = y x 2 + x x 2 + 2(y x ) T (x x). Ponieważ x x 2 0oraz (x x ) T (x y) 0,to y x 2 y x 2 dladowolnego x S.Zatemostatecznie x = x,botylko xposiadatę własność. Twierdzenie..Niech S R n będziewypukłymidomkniętymzbioremorazniech y S.Wówczasistniejewektor c R n oraz α Rtakie,że c T y > αoraz c T x αdlakażdego x S.
. PROGRAMOWANIE LINIOWE 2 Dowód. Z Twierdzenia.0 wiemy, że istnieje w zbiorze S taki element x,że y x = min x S y x orazdladowolnego x S, (x x) T (y x) 0. Stąd x T (y x) x T (y x), y x 2 = (y x) T (y x) = y T (y x) x T (y x) y T (y x) x T (y x) = (y x) T (y x) = c T (y x), gdzie c = y x 0.Mamy c T y c T x + y x 2 dladowolnego x S. Niech α = sup{c T x; x S},wówczas c T y α + y x 2 > αoraz c T x α z definicji α. Niech X R n będziezbioremwypukłym.punkt x X nazywamy ekstremalnym, jeśli x,y X λ (0,) p = ( λ)x + λy x = y = p..3. Punkty ekstremalne i wektory kierunkowe ekstremalne Przykład.2. Oznaczmy przez E zbiór punktów ekstremalnych zbioru X. [ ] [ ] 9 [ ] [ x (i)dlazbioru X = R x 2 ; 3 x 2 0 8 x 2 7, x 0 pochodzącego z Przykładu., E =,,,,. x 2 0] {[ 0 ] [ ] [ ] [ 6 ] [ ]} 0 6 4, 5 3 0 0 0 4, 5 6 6 (ii) X = {(x, x 2 ) R 2 ; x 2 + x2 2 }, E = {(x, x 2 ) R 2 ; x 2 + x2 2 = }. Jeśli zbiór X jest domknięty i ograniczony, to dowolny punkt tego zbioru może być przedstawiony jako wypukła kombinacja punktów ekstremalnych. Wektor 0 v R n nazywamykierunkowymzbioru X,jeśli x X λ 0 x + λv X. Dwa wektory kierunkowe v, w zbioru X nazywamy równymi, jeśli λ>0 v = λw.
. PROGRAMOWANIE LINIOWE 3 Wektor kierunkowy v zbioru X nazywamy ekstremalnym, jeżeli w,w 2 λ,λ 2 >0 v = λ w + λ 2 w 2 λ>0 w = λw 2, gdzie w, w 2 sąwektoramikierunkowymizbiory X. Wdalszejczęścirozważaćbędziemyzbiory Xpostaci X = {x R n ; Ax = b, x 0},gdzie Aoznaczamacierzwymiaru m n, b R m.zakładamyponadto, że rz(a) = m. Niech A = [BN](po ewentualnej permutacji kolumn), gdzie Bjest m mmacierzą, N jest m (n m)macierzą,natomiast rz (B) = m.wtedy Ax = b, x 0 Bx B + Nx N = b, gdzie x B 0, x N 0.Niech Abędziejakwyżej.Wówczasprzez C(A)oznaczamy zbiór takich macierzy nieosobliwych B wymiaru m m, dla których istniejemacierz Nwymiaru m (n m)taka,że [BN]dasięuzyskaćz macierzy A poprzez przestawienie kolumn. Twierdzenie.3(o charakteryzacji punktów ekstremalnych). Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz(a) = [ m.punkt ] x[ ] Xjestpunktemekstremalnymwtedyitylkowtedy,gdy x = B b xb = dlapewnego B C(A)takiego,że B 0 x b 0. N [ ] B Dowód.Weźmy B C(A)takie,że B b 0.Niech x = b.zauważmy,że x X.Rzeczywiściedla A = [BN]mamy Ax = [BN] b [ 0 ] B = 0 b + N0 = b,zarazem x 0.Załóżmy,że x = λx + ( λ)x 2 dla x, x 2 X oraz λ (0, ).Niech x T = [x T, x T 2], x T 2 = [x T 2, x T 22].Wtedy [ B b 0 ] = λ [ x x 2 ] + ( λ) [ x2 Ponieważ x 2, x 22 0, λ (0, ), λ, λ > 0,tomamy x 2 = x 22 = 0. Ponadto, b = Ax = Bx,awięc x = B b.podobnie x 2 = B b.wobec równości x = x 2 = B bmamy x = x 2 = x,zatem xjestpunktem ekstremalnym w X. x 22 ].
. PROGRAMOWANIE LINIOWE 4 Niechteraz x R n będziepunktemekstremalnym.załóżmy,że x = [x, x 2,...,x k, 0, 0,..., 0] T,gdzie x i > 0dla i =, 2,..., k.pokażemy,że kolumny a, a 2,...,a k sąliniowoniezależne.gdybytakniebyło,toistniałyby liczby λ, λ 2,...,λ k R, k λ2 i 0takie,że k λ ia i = 0.Niech λ = [λ, λ 2,...,λ k, 0, 0,..., 0] T.Rozpatrzmywektory x () = x+rλ, x (2) = x rλ, gdzie r > 0, x (), x (2) 0.Zauważmy,że Ax (i) = k a j (x j + ( ) i rλ j ) = j= k k a j x j + ( ) i r a j λ j = b. j= j= Zatem x (), x (2) X,aponieważ r > 0,to x () x (2).Ponadto x = 2 x() + 2 x(2),coprzeczytemu,że xjestpunktemekstremalnym.zatemkolumny a, a 2,...,a k sąliniowoniezależne.czylizn kkolumnmożnawybrać m k kolumn tak, aby razem z pierwszymi k kolumnami tworzyły m liniowo niezależnychwektorów.załóżmy,żetymikolumnamisą a k+, a k+2,...,a m. Wobectegomacierz Amożebyćzapisanawpostaci A = [BN],gdzie B = [a, a 2,...,a m ] C(A),rz (B) = m.mamy b = Ax = Bx B + Nx N = Bx B,a stąd x B = B b,czyli x = [ B b 0 ]. Wniosek.4.Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz (A) = m.zbiór Xposiadaskończeniewielepunktów ekstremalnych. Dowód.Wynikazfaktu,że C(A) <. Twierdzenie.5(o istnieniu punktów ekstremalnych). Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz (A) = m. Wówczas niepusty zbiór X posiada co najmniej jeden punkt ekstremalny. Dowód.Ustalmy x X.Niech x = [x, x 2,..., x k, 0, 0,..., 0] T,gdzie x i > 0, i =, 2,..., k.rozpatrzmykolumny a, a 2,..., a k macierzy A.Gdysą oneliniowoniezależne,topunkt xjestekstremalny.załóżmy,że a, a 2,...,a k sąliniowozależne,toznaczyistniejąliczby λ, λ 2,...,λ k R, k λ2 i 0 oraz k λ ia i = 0.Niech r = min,2,...,k { x i λ i ; λ i > 0} = x j λ j.możemyzałożyć, żezbiór i {, 2,..., k}takich,że λ i > 0jestniepusty.Niech x R n,gdzie { x i = xi rλ i dla i =, 2,..., k 0 dla i = k +, k + 2,...,n
. PROGRAMOWANIE LINIOWE 5. x 0,boinaczejdlapewnego j {, 2,..., k}mielibyśmy x j rλ j < 0,astąd r > x j λ j iotrzymujemysprzecznośćzminimalnością. 2. Ax = b,rzeczywiście Ax = k (x i rλ i )a i = k x ia i r k λ ia i = Ax = b.zatem x X. 3. x i 0 = 0dlapewnegoindeksu i 0 {, 2,..., k}.wiemy,żeistnieje i 0 {, 2,..., k}taki,że r = x i 0 λ i0.zatem x i 0 = x i0 rλ i0 = 0. Jeślikolumny a, a 2,...,a k bez a i0 sąliniowoniezależne,topunkt x jest ekstremalny. Lemat.6.Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz (A) = m.wektor v R n jestwektoremkierunkowymniepustego zbioru Xwtedyitylkowtedy,gdy Av = 0iv 0, v 0. Dowód.Niech v R n będziewektoremkierunkowymzbioru X.Weźmy x X,wtedy x+v X.Mamy Av = A(x+v x) = A(x+v) Ax = b b = 0, bo v 0 jest wektorem kierunkowym. Załóżmyteraz,że Av = 0, v 0.Niech x X, λ > 0.Mamy A(x+λv) = Ax + λav = Ax = b.ponieważ x 0, λ > 0, v 0,to x + λv 0czyli x + λv X. Twierdzenie.7(o charakteryzacji kierunków ekstremalnych). Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz (A) = m. Wektor v jest kierunkiem ekstremalnym zbioru X wtedy i tylko wtedy, gdy istnieją B C(A),kolumna a j macierzy Aniewystępującawmacierzy B oraz λ > 0takie,że (i) B a j 0, (ii) v = λ(( B a j ) T, e T j ) T,gdzie e j jestwektoremmającym n m współrzędnych z których tylko j-ta współrzędna jest różna od zera i równa się jeden. Dowód.Niech v = λ(( B a j ) T, e T j )T i B a j 0.Pokażemy,że vjest wektoremkierunkowym.zauważmy,że v 0, v 0oraz [ ] B Av = [BN]λ a j = λb( B a j ) + λne j = λ( a j + a j ) = 0. e j Zatem na mocy Lematu.6 wektor v jest kierunkowy. Niech v, v 2 będąwektoramikierunkowymiorazniech v = λ v + λ 2 v 2, gdzie λ, λ 2 > 0.Zauważmy,że n m współrzędnychwektora vjest
. PROGRAMOWANIE LINIOWE 6 równe 0.Zatemodpowiedniewspółrzędnewektorów v i v 2 sąrównieżzerowe iwektorytemogąbyćzapisanewpostaci v T = α [v T, et j ], vt 2 = α 2[v T 2, et j ], gdzie α, α 2 > 0.Wiemy,że Av = Av 2 = 0zatemmamy 0 = Av = [BN]α [v T, e T j ] T = α (Bv T + Ne T j ) = α (Bv T + a T j ), stąd v = B a j.podobnie v 2 = B a j,mamywięc v = v 2,aw konsekwencji v = λv 2,gdzie λ = α α 2.Ostatecznieotrzymujemy,żewektor v jest ekstremalny. Niech vbędziewektoremekstremalnym, v = [v, v 2,...,v k, 0,...,0, v j, 0,..., 0] T, v i > 0dla i =, 2,..., koraz i = j.pokażemy,żekolumny a, a 2,...,a k macierzy Asąliniowoniezależne.Załóżmy,żetakniejesttzn. istnieją λ, λ 2,...,λ k Rtakie,że k λ2 i 0, k λ ia i = 0. Niech λ = [λ, λ 2,..., λ k, 0, 0,..., 0] T.Rozpatrzmywektory v () = v+rλ, v (2) = v rλ,gdzie r > 0, v (), v (2) 0, r = min,2,...,k { v i λ i ; λ i > 0} = v j λ j. Zauważmy, że Av (i) = A(v + ( ) i rλ) = Av + ( ) i raλ = 0 + ( ) i r k a i λ i = 0, Ponieważ r > 0,to v () v (2) v.zatem v = 2 v() + 2 v(2),coprzeczytemu,że vjestwektoremekstremalnym.czylikolumny a, a 2,...,a k sąliniowo niezależne.dodatkoworz (A) = m,stąd k mwięcmożemywybrać m k wektorówzezbioru {a i ; i = k +, k + 2,..., m, i j},którerazemzkolumnami a, a 2,...,a k sąliniowoniezależne.oznaczmy B = [a, a 2,...,a m ] C(A).Zauważmy,że a j B,bo a, a 2,...,a k, a j sąliniowozależne.mamy 0 = Av = [BN]v = Bv B + Nv N = Bv B + a j v j,astąd v B = v j ( B a j ), czyli v = v j [ B a j e j ].Ponieważ v 0, v j > 0więc B a j 0. Wniosek.8.Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz(a) = m.zbiór Xposiadaskończeniewielekierunków ekstremalnych. Twierdzenie.9(oreprezentacji).Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz (A) = m.niech x, x 2,...,x k będą wszystkimipunktamiekstremalnymizbioru X,natomiast v, v 2,..., v l wszystkimi wektorami ekstremalnymi zbioru X. Wówczas x X wtedy i tylko
. PROGRAMOWANIE LINIOWE 7 wtedy,gdyistniejątakieliczby λ, λ 2,...,λ k 0,którychsumajestrówna jedenoraztakieliczby µ, µ 2,...,µ l 0,że x = k λ i x i + l µ i v i. Dowód. Niech Y = {x R n ; λ,λ 2,...,λ k 0, P k λ, µ,µ 2,...,µ l 0 x = k λ i x i + l µ i v i }. Pokażemy,że X = Y.Zauważmy,że Y,boztwierdzenia.5istniejeco najmniej jeden punkt ekstremalny. (i) Y X.Niech x Y, x = k λ ix i + l µ iv i, λ i, µ j 0, k λ i =, i =, 2,..., k, j =, 2,...,l.Mamy x = k λ ix i X.Niech x i = x i + µ iv i,gdzie x 0 = x.wówczas i x i Xczyli x = x l X. (ii) X Y.Zauważmy,że Y jestwypukłyidomknięty.załóżmy,że X \Y iniech z X \Y,czyli z Y.NamocyTwierdzenia.istnieją wówczas:wektor p R n i α > 0takie,że p T z > αoraz k ( ) p T ( λ i x i + l µ i v i ) α, dladowolnych λ i, µ j takich,że k λ i =, λ i, µ j 0, i =, 2,..., k, j =, 2,..., l.ponieważ µ j możnawybraćdowolnieduże,tonierówność ( ) jestprawdziwatylkowtedy,gdy p T v i 0dla i =, 2,..., l.kładąc µ i = 0 dlawszystkich i, λ i = iλ j = 0dla j idostajemyz( ),że p T x i α dla i =, 2,..., k.ponieważ p T z > α,to p T z > p T x i dladowolnego i.z powyższych rozważań wynika, że istnieje niezerowy wektor p, dla którego zachodzą następujące nierówności: ( ) p T z > p T x i dla i =, 2,..., k, ( ) p T v i 0 dla i =, 2,..., l. Rozważmy punkt ekstremalny x określony następująco: p T x = max i k pt x i.
. PROGRAMOWANIE LINIOWE 8 [ ] B Ponieważ x jest punktem ekstremalnym, to z Twierdzenia.3 x = b, 0 gdzie A = [BN]oraz B b 0.Ponieważ z X,to Az = boraz z 0. Zatem Bz B + Nz N = biz B = B (b Nz N ) = B b B Nz N.Niech z T = [zb T, zt N ].Z( )mamy pt z p T x > 0,ponadtoniech p T = [p T B, pt N ]. Wówczas 0 < p T z p T x = p T B z B + p T N z N p T B x B p T N x N = p T B (B b B Nz N )+ p T N p T BB b = p T BB b p T BB Nz N + p T N p T BB b = (p T N p T BB N)z N, bo z N 0, z X.Wobectegoistniejeindeks i 0 > mtaki,że z i0 > 0oraz p i0 p T B B a i0 > 0.Pokażemy,żenierówność B a i0 0niejestprawdziwa.Załóżmy,że B a i0 0.Wówczas vi T 0 = (( B a i0 ) T, e T i 0 ),gdzie e i0 jest wektorem o n m współrzędnych z jedynką(jako jedynym niezerowym elementem)namiejscuoindeksie i 0,jestekstremalnymwektoremkierunkowymzbioru XnamocyTwierdzenia.7.Z( )wynika,że p T v i0 0 czyli p i0 p T B B a i0 0,codajesprzeczność.Zatem B a i0 0.Zdefiniujmy wektor x następująco: [ ] [ ] B x = b B + λ a i0, 0 e i0 gdzie λ = min i m { b i y ij ; y ij > 0} = br y rj > 0, b = B b, y i0 = B a i0. Zauważmy, że x posiada nie więcej niż m dodatnich współrzędnych oraz x r = 0, x i0 = λ.wektor x X,ponieważmamy Ax = [BN]x = BB b + λ( BB a i0 + Ne i0 ) = BB b = b. Zauważmy,żeukład a, a 2,...,a r, a r+, a r+2,...,a m, a i0 jestliniowoniezależny.mamy y i0 = B a i0 zatem a i0 = By i0.wówczas a i0 = α a + α 2 a 2 + + α m a m oraz α r 0. Zatemzbiórwektorów {a, a 2,...,a m }\{a r }, a i0 jestliniowoniezależny.niech B = [a, a 2,...,a r, a r+, a r+2,...,a m, a i0 ].Mamy B C(A), A = [B, N], b = Ax = [B, N]x = Bx B + Nx N = Bx B.
. PROGRAMOWANIE LINIOWE 9 [ ] Stąd x B = B B b 0.Zatem x = b iztwierdzenia.3 xjestpunktem 0 ekstremalnym. Ponadto [ ] b p T x = [p T B, p T λyi0 N] = p T λe B(b λy i0 ) + p T Nλe i0 = p T Bb λp T By i0 + λp i0 = i0 = p T B B b + λ(p i0 p T B B a i0 ) = p T B x + λ(p i 0 p T B B a i0 ). Ponieważ λ > 0oraz p i0 p T B B a i0 > 0,to p T x > p T x i0.zatemskonstruowaliśmypunktekstremalny x,dlaktórego p T x > p T x,codajesprzeczność, ponieważ p T x = max i k p T x i. Wniosek.20(o istnieniu kierunkowych wektorów ekstremalnych). Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz(a) = m. Wówczas X posiada kierunkowy wektor ekstremalny wtedy i tylko wtedy, gdy X jest nieograniczony. Dowód. Oczywiście jeśli zbiór X posiada kierunkowy wektor ekstremalny, to X jest nieograniczony. Pokażemy implikację przeciwną. W tym celu załóżmy, że X nie posiada kierunkowych wektorów ekstremalnych. Niech x X, x = k λ ix i, k λ i =, λ i 0orazniech x, x 2,...,x k będą punktami ekstremalnymi. Mamy x = k λ i x i k λ i x i max i k { x i }. Zatem X jest ograniczony. Otrzymana sprzeczność dowodzi, że zbiór X posiada kierunkowy wektor ekstremalny. Twierdzenie.2.Niech X = {x R n ; Ax = b, x 0},gdzie A M m n (R), b R m,rz (A) = miniech x, x 2,..., x k będąwszystkimipunktamiekstremalnymi,zaś v, v 2,...,v l wszystkimiwektoramiekstremalnymi zbioru X, c R n.wówczas inf{c T x; x X} R j=,2,...,l c T v j 0.Jeżeli j=,2,...,l c T v j 0,to i {,2,...,k} inf{c T x; x X} = c T x i. Dowód. Z Twierdzenia.9 wiemy, że dowolny element x spełnia warunki Ax = b, x 0wtedyitylkowtedy,gdy x = k λ ix i + l j= µ jv j, λ i, µ j 0, k λ i =, i =, 2,..., k, j =, 2,..., l.zatem c T x = c T ( k λ ix i + l j= µ jv j ),gdzie λ i, µ j 0, k λ i =, i =, 2,..., k,
. PROGRAMOWANIE LINIOWE 20 j =, 2,..., l.jeślidlapewnego j, c T v j < 0,tonaszewyrażeniejestnieograniczone,ponieważ µ j możemywybraćdowolnieduże.zatem inf{c T x; x X} Rwtedyitylkowtedy,gdy c T v j 0dladowolnego j =, 2,..., l. Jeśli c T v j 0dladowolnego j =, 2,...,l,towceluosiągnięcianajmniejszejwartościmożemyprzyjąć µ j = 0dla j =, 2,..., l.zatem inf{c T ( k λ i x i + l k µ j v j )} = inf{c T λ i x i ; λ i 0, j= k λ i = }. Niech λ i0 = oraz λ i = 0dla i i 0,gdzieindeks i 0 jesttaki,że c T x i0 = min i k {c T x i }.Wówczas c T x i0 k λ ic T x i,cokończydowód. Niech X = {x R; Ax = b, x 0},gdzie A M m n (R), b R m, rz (A) = m.zajmiemysięszukaniem inf{c T x; x X}.Niech xbędziepunktem ekstremalnym zbioru X. Z Twierdzenia [ ].3 wiemy, że istnieje B [ C(A), ] B B b 0oraz A = [BN], x = b xb.weźmydowolny x X, x =. [ ] 0 x N xb Wówczas Ax = btzn. [BN] = b,skąddostajemy Bx B + Nx N = b. x N Zatem x B = B b B Nx N.Policzmy c T x c T x = c T Bx B + c T Nx N = c T B b c T BB Nx N + c T Nx N = c T Bx B + c T Nx N + Przypadek : c T BB Nx N + c T Nx N = c T x + (c T N c T BB N)x N. c T N ct B B N 0.Ponieważ x 0,to x N 0iwkonsekwencji c T x c T x. Zatem x jest szukanym punktem. Przypadek 2: c T N ct B B N 0.Wszczególnościniechdlapewnegoindeksu jbędzie c T j ct B B a j < 0(stąd c T x < c T x). Przypadek 2a:
. PROGRAMOWANIE LINIOWE 2 Zakładamy,że B a j 0.Wówczasbiorąc v j = [ B a j e j ],gdzie e j jest wektoremon mwspółrzędnychmającymjedynkęnamiejscu j,anapozostałych miejscach zero, otrzymujemy kierunkowy wektor ekstremalny. Wobectego x = x + v j, x X.Zrówności c T x = c T x + c T v j oraz c T x = c T x + (c T N ct B B N)x N dostajemy c T v j = (c T N ct B B N)x N = c T j ct B B a j < 0, czyli problem nie posiada rozwiązania. Przypadek 2b: [ ] B Zakładamy,że B a j 0.Weźmy v j = a j ioznaczmy y = B a j, b = B b.niech λ = min i m { b i y i ; y i > 0} = b i 0 y i0, x = x + λv j.pokażemy,że [ ] B x X.Wiemy,że Ax = b,natomiast Av j = [BN]v j = [BN] a j = a j + a j = 0,zatem Ax = b.musimyjeszczeudowodnić,że x 0.Dla i =, 2,..., mmamy e j e j x = x i + λ(v j ) i = (B b) i + b i 0 y i0 ( B a j ) i = b i b i 0 y i0 y i. Rozważmy dwa przypadki:.jeśli y i 0,tooczywiście x i 0, 2.jeśli y i > 0,to b i y i b i 0 y i0,astąd x i 0. Dla i = m +, m + 2,..., noraz i jmamy x i = 0.Dla i = jmamy x i = λ > 0. Wektor x posiada niezerowe współrzędne co najwyżej na miejscach, 2,..., i 0, i 0 +,..., m, j.pokażemy,że a, a 2,...,a i0, a i0 +,...,a m, a j są liniowo niezależne. Wówczas x będzie punktem ekstremalnym. Załóżmy, że i {,...,m,j}\{i 0 } α ia i = 0,mamy 0 = i {,...,m,j}\{i 0 } α i a i = i {,...,m}\{i 0 } α i a i +α j a j = i {,...,m}\{i 0 } α i a i +α j By = m = α i a i + α j y i a i = i {,...,m}\{i 0 } m (α i + α j y i )a i,
. PROGRAMOWANIE LINIOWE 22 gdzie α i0 = 0.Wtedy α i + α j y i = 0oraz α j y i0 = 0.Zatem α j = 0,astąd α i = 0. Niech B = [a, a 2,...,a i0, a i0 +,...,a m, a j ]oraz A = [B [ N ].Wówczas ] B Ax = b,stąd b = B x B +N x N = B x B,czyli x B = B btzn. b oraz 0 B b 0.Ponadto [ ] B c T x = c T (x + λv j ) = c T x + c T λv j = c T x + λc T a j = c T x+ e j.4. Metoda sympleksowa +λ(c T j ct B B a j ) c T x. Przypomnijmy,żechcemyzminimalizować c T xprzywarunkach Ax = b, x 0. Algorytm sympleks Krok.Wziąćdowolnypunktekstremalny xzbioru Xozmiennychbazowych x B. Krok2.Wyliczyć α = c T B B N c T N.Jeżeli α 0,tozakończyćalgorytm(punkt x jest szukanym punktem). W przeciwnym wypadku przejść do kroku 3. Krok 3. Wybrać maksymalną dodatnią współrzędną α. Niech tą współrzędnąbędzie α j,zatem α j = c T B B a j c T j.jeśli y j = B a j 0,to zakończyć algorytm(brak rozwiązania). W przeciwnym wypadku przejść do kroku 4. Krok 4. Skonstruować nowy punkt ekstremalny o zmiennych bazowych x B zgodniezopisanympowyżejprocesem.przejśćdokroku2. Przykład.22.Znaleźćminimumfunkcji f(x, x 2 ) = 2x 9x 2 przy warunkach x + x 2 6, x + 3x 2 3,
. PROGRAMOWANIE LINIOWE 23 x 0, x 2 0. Zmianawarunkówfunkcji f(x, x 2 ) = 2x 9x 2 : x + x 2 + x 3 = 6, x + 3x 2 + x 4 = 3, x 0, x 2 0, x 3 0, x 4 0, gdzie x 3, x 4 sązmiennymidopełniającymi.mamy [ ] [ ] 0 6 A =, b =, c = [2, 9, 0, 0] T. 3 0 3 [ ] 0 Szukamymacierzy B,dlaktórej B b 0.Weźmy B = [a 3, a 4 ] =, 0 wówczas B = Bi B b = b 0.Liczymy c T B B N c T N : [ ][ ] 0 c T B B N c T N = [0, 0] [2, 9] = [ 2, 9] 0. 0 3 [ ] 0,tokonstru- 3 [ ] [ ] 0 Obliczamy y 2 = B a 2 = = 0 3 ujemy nowy punkt ekstremalny. Mamy [ ].Ponieważ 3 { } { bi 6 λ = min ; y 2i > 0 = min i=3,4 y 2i i=3,4, 3 } =, 3 [ ] 0 0 0 e v 2 = 2 B, x = x + λv a 2 = 0 2 6 + = 5. 3 3 0 [ ] [ ] 0 Teraz B = [a 2, a 3 ] =,wówczas B 3 0 = 3. Ponownie liczymy 3 c T B B N c T N : [ ][ ] 0 c T B B N c T N = [ 9, 0] 3 0 [2, 0] = [, 3] 0. 3
. PROGRAMOWANIE LINIOWE 24 [ ][ ] [ ] [ ] 0 Obliczamy y = B a = 3 = 3 4.Ponieważ 3 4 0,to 3 3 3 konstruujemy kolejny punkt ekstremalny. Mamy { } { } bi 5 λ = min ; y i > 0 = min i=2,3 4 = 5 y i 4, 3 5 0 x = x + λv = 5 + 5 4 3 4 4 = 9 4 0. 3 0 0 0 [ ] [ 3 ] Terazprzyjmujemy B = [a, a 2 ] =,wobectego B 3 = 4 4. 4 4 Liczymy c T B B N c T N : [ 3 ][ ] c T B B N c T N = [2, 9] 4 4 0 [0, 0] = [ 3 0 4, 4 ] < 0. 4 4 Zatemkończymyobliczeniaiotrzymujemywartośćoptymalną f(x, x 2 ) = 2x 9x 2 = 2 5 4 99 4 = 5 4. Lemat.23.Niech B, B M m m (R)będąmacierzaminieosobliwymi różniącymisięjednąkolumną,tzn. B = [a, a 2,...,a l, a l, a l+,...,a m ], B = [a, a 2,...,a l, a k, a l+,...,a m ]orazniech B a k = y = [y, y 2,...,y m ] T. Wówczas B = FB,gdziemacierz Fposiadajedynkinagłównejprzekątnej, l-tąkolumnępostaci f l = y l [ y, y 2,..., y l,, y l+,..., y m ] T,a na pozostałych miejscach zera. Dowód. B = B + (a k a l )e T l = B + (a k Be l )e T l = B(I + B (a k Be l )e T l ) = B(I + (B a k e l )e T l ) = B(I + (y e l)e T l ),zatem B = (I + (y Ie l )e T l ) B. Trzebapokazać,że F = (I + (y Ie l )e T l ).Zauważmy,że I + (y Ie l )e T l jestmacierząjednostkowązl-tąkolumną y.ponadto det(i + (y Ie l )e T l ) = y l 0. Przykład.24.Znaleźćmaksimumfunkcji f(x, x 2 ) = x + 2x 2 przy warunkach x + x 2 5,
. PROGRAMOWANIE LINIOWE 25 x + x 2 0, 3x + 7x 2 27, x 0, x 2 0. Przeformułowanie i zmiana warunków funkcji: znaleźć minimum funkcji f(x, x 2 ) = x 2x 2 przywarunkach x + x 2 + x 3 = 5, x x 2 + x 4 = 0, 3x + 7x 2 + x 5 = 27, x 0, x 2 0, x 3 0, x 4 0, x 5 0, gdzie x 3, x 4, x 5 sązmiennymidopełniającymi.mamy 0 0 5 A = 0 0, b = 0, c = [, 2, 0, 0, 0] T. 3 7 0 0 27 Szukamymacierzy B,dlaktórej B b 0.Weźmy B = [a 3, a 4, a 5 ] = 0 0 0 0,wówczas B = Bi B b = b 0, x T = [0, 0, 5, 0, 27].Liczymy 0 0 c T B B N c T N : 0 0 c T BB N c T N = [0, 0, 0] 0 0 [, 2] = [, 2] 0. 0 0 3 7 0 0 Obliczamy y 2 = B a 2 = 0 0 =. Ponieważ 0, 0 0 7 7 7 to konstruujemy nowy punkt ekstremalny. Mamy { } { bi 5 λ = min ; y 2i > 0 = min i=3,4,5 y 2i, 27 } = 27 7 7, 0 0 0 [ ] e v 2 = 2 0 B, x = x + λv a 2 = 2 5 0 + 27 27 7 = 7 8 7 27. 7 27 7 0
. PROGRAMOWANIE LINIOWE 26 0 Terazzamiast B = [a 2, a 3, a 4 ] = 0, możemy rozważać łatwiejszą 7 0 0 0 dodalszychobliczeńmacierz B = [a 3, a 4, a 2 ] = 0.Mamy B = 0 0 7 0 0 8 5 FB 7 = F = 0 7, B 7 7 b = 0 0 7 = 27 7, l = 3, y l = 7. 27 0 0 0 0 27 7 7 7 Przykład.25. Przedstawimy rozwiązanie zagadnienia z Przykładu. wykorzystując tablice sympleksowe. Nasz PL-model ma następującą postać. Znaleźćmaksimumfunkcji f(x, x 2 ) = 3x + 2x 2 przywarunkach x + x 2 + x 3 = 9, 3x + x 2 + x 4 = 8, 3x + x 5 = 7, 3x 2 + x 6 = 6, x 0, x 2 0, x 3 0, x 4 0, x 5 0, x 6 0, gdzie x 3, x 4, x 5, x 6 sązmiennymidopełniającymi.mamy 0 0 0 9 A = 3 0 0 0 0 0 0 0, b = 8 7, c = [3, 2, 0, 0, 0, 0]T. 0 0 0 0 6 Tablica sympleksowa dla powyższego zagadnienia wygląda następująco: 3 2 0 0 0 0 0 0 0 0 9 3 0 0 0 8 0 0 0 0 7 0 0 0 0 6 Początkowymrozwiązaniemdopuszczalnymjest x = 0, x 2 = 0, x 3 = 9, 0 0 0 x 4 = 8, x 5 = 7, x 6 = 6.Ponadto B = [a 3, a 4, a 5, a 6 ] = 0 0 0 0 0 0, 0 0 0
. PROGRAMOWANIE LINIOWE 27 N = [a, a 2 ] = 3 0.Największymdodatnimwspółczynnikiemfunkcjicelujest 3,zatem x wchodzidonowychzmiennychbazowych.abysprawdzić, 0 która ze zmiennych opuszcza zbiór zmiennych bazowych liczymy odpowiednieminimum: min{ 9, 8, 7 } = 8 = 6.Zatem x 3 3 4opuszczazbiórzmiennych bazowych.mamyteraz B = [a, a 3, a 5, a 6 ]oraz N = [a 2, a 4 ]. 3 2 0 0 0 0 0 0 0 0 9 3 0 0 0 8 0 0 0 0 7 0 0 0 0 6 Stosując eliminację Gaussa oraz dokonując odpowiednich uproszczeń otrzymujemy następującą tablicę sympleksową: 0 0 0 0 8 2 0 0 0 3 3 3 0 0 0 6 3 3 0 0 0 3 3 0 0 0 0 6 Jedynymdodatnimwspółczynnikiemfunkcjicelujestteraz 2,czyli x 2 wchodzi do zbioru nowych zmiennych bazowych. Liczymy odpowiednie minimum: min{ 9 2, 8, 6 } = 9 2.Zatemzmienna x 3opuszczazbiórzmiennychbazowych. Mamyteraz B = [a, a 2, a 5, a 6 ]oraz N = [a 3, a 4 ]. 0 0 0 0 8 2 0 0 0 3 3 3 0 0 0 6 3 3 0 0 0 3 3 0 0 0 0 6 Stosując eliminację Gaussa oraz dokonując odpowiednich uproszczeń otrzymujemy następującą tablicę sympleksową:
. PROGRAMOWANIE LINIOWE 28 0 0 0 0 22 2 2 2 0 0 0 4 2 2 2 0 0 0 4 2 2 2 0 0 0 2 2 2 2 0 0 0 2 2 2 Ponieważ nie ma już dodatnich współczynników funkcji celu otrzymujemy wartośćoptymalną f(x, x 2 ) = 3x + 2x 2 = 3(4 2 ) + 2(4 2 ) = 22 2. Problem znalezienia pierwszego punktu ekstremalnego Przypomnijmy,żeszukamy min c T x,przyzałożeniach Ax = b, x 0,rz(A) = m, b R m. W podanym wcześniej algorytmie sympleks w kroku pierwszym zakładamy istnienie punktu ekstremalnego. Z Twierdzenia.3 wynika, że znalezienie początkowego punktu ekstremalnego związane jest z rozbiciem macierzy A namacierze Boraz Ntak,aby B b 0.WPrzykładach.22i.24mieliśmynapoczątku B = I, b 0. Dwuetapowy sposób znajdowania pierwszego punktu ekstremalnego(bazowego) Zakładamy,że b 0.Jeśli b i < 0,tomnożymyodpowiednierównanieprzez [ ] x -. Rozpatrzmy pomocnicze zagadnienie minimalizacji. Mamy [AI] = bi y szukamy następującego minimum ( ) min m y i, gdzie Ax + Iy = b, x 0, y 0.Dorozwiązaniazagadnienia ( )stosujemy metodę sympleks, ponieważ ma ono początkowe [ ] rozwiązanie dopuszczalne. 0 Zaczynamynastępująco B = I, B b =, x = 0, y = b.jeśliznajdziemy b optymalnerozwiązaniebazowedla ( ),takieże m y i = 0,tootrzymamy takżebazędającąrozwiązanie x B (czyli Ax = b).jeśli ( )posiadadodatnie
. PROGRAMOWANIE LINIOWE 29 minimum,toniemarozwiązaniadopuszczalnegodla Ax = b, x 0.Mamy Etap I- znalezienie rozwiązania dopuszczalnego dla Ax = b, x 0 lub stwierdzenie, że nie istnieje takie rozwiązanie. Etap II- użycie rozwiązania z etapu pierwszego do rozwiązania następującegozagadnienia:znaleźćminimum c T xprzywarunkach Ax b, x 0..4.. Dualna metoda programowania liniowego Szukamy maxy T bprzyzałożeniach y T A c T, y R m (niezakładasię, że y 0).Zauważmy,że y T b = y T Ax c T x, x 0.Wobectegojeżeli y T b = c T x, Ax = b, A T y c,to y, xsąrozwiązaniamioptymalnymidlaodpowiednichzagadnień(xdlaszukaniaminimum c T xprzywarunkach Ax = b, x 0,aydlaszukaniamaksimum y T bprzywarunkach y T A c T ). Twierdzenie.26. Jeśli jedno z zadań programowania liniowego(prymalne lub dualne) posiada skończone rozwiązanie, to takie rozwiązanie posiada drugie z tych zadań. Ponadto wartości funkcji celu obu powyższych zagadnień są takie same. Załóżmy,że x B = B b jestrozwiązaniem(dopuszczalnymioptymalnym)dlazagadnieniaprymalnego(min c T x, Ax = b, x 0).Wtedy y T = c T B B.Ponadtowiemy,że c T N ct B B N 0stąd c T B B N c T N.Okazujesię,żewektor y T = c T B B jestrozwiązaniemoptymalnymzagadnienia dualnego. Mamy y T A = y T [BN] = [c T BB B, c T BB N] [c T B, c T N] = c T jak również równość funkcji celu y T b = c T B B b = c T B x B = c T B x B + c T N x N = [ ] = [c T B, ct N ] xb = c T x. x N Zatemjeślizagadnienieprymalneposiadarozwiązanieoptymalne x B = B b, tozagadnieniedualnemarozwiązanieoptymalne y T = c T B B,któremożna bez trudności policzyć, ponieważ macierz odwrotna do bazy jest znana.
. PROGRAMOWANIE LINIOWE 30 Związek pomiędzy rozwiązaniami optymalnymi x oraz y podaje następujące twierdzenie. Twierdzenie.27(o różnicach dopełniających). Jeżeli x, y są odpowiednio punktami ekstremalnymi dla zagadnienia prymalnego i dualnego, to są one rozwiązaniami optymalnymi wtedy i tylko wtedy, gdy (i) i x i > 0 y T a i = c i (ii) i y T a i < c i x = 0, gdzie a i oznacza i-tąkolumnęmacierzy A. Algorytm dualny sympleks Danejestrozwiązaniebazowe x B = B btakie,żewektor y T = c T B B spełnianierówność c T N yt N 0. Krok.Jeśli x B 0,to x B jestrozwiązaniemoptymalnymiobliczenia sązakończone.wprzeciwnymraziewybraćujemnąskładową x B,niechtą składowąbędzieskładowaonumerze l(zmienna x l zostajeusuniętazezbioru zmiennych bazowych, a l-ta kolumna w macierzy A zostaje usunięta z bazy B). Krok2.Obliczyć b l a j = u lj dla j = m+, m+2,...,n,gdzie b l jest l-tym wierszemmacierzy B, a j j-tąkolumnąmacierzy A.Jeśliwszystkie u lj 0, to zagadnienie dualne nie ma skończonego rozwiązania. W przeciwnym razie dlawszystkich j = m +, m + 2,...,ntakich,że u lj < 0obliczyć oraz wyznaczyć Niech ε = z k c k u lk macierzy A). z j = y T a j = c T B B a j ε = min{ z j c j u lj ; u lj < 0}. (k-takolumnamacierzy Azastępujewbazie l-tąkolumnę Krok3.Obliczyćnowywektor y T wnastępującysposób: y T = y T εb l. Krok4.Uaktualnićodwrotnąmacierzbazową B orazobliczyćnowe rozwiązanie x B = B b. Krok 5. Wrócić do kroku pierwszego.
. PROGRAMOWANIE LINIOWE 3 Uwaga.28.Nowązmienną ymożnaobliczyćtakjakwkroku3lub wykorzystujączależność y T = c T B B potym,gdymacierz B zostałauaktualniona.wartośćdualnejfunkcjicelu y T bjestzwiększanawkażdejkolejnej iteracji. Procedura dualna sympleks zostaje zakończona po skończonej liczbie kroków,gdy x B 0..5. Elementy programowania całkowitoliczbowego Rozważmy zagadnienie optymalizacji z kawałkami liniowym ograniczeniem lub funkcją celu jednej zmiennej przedstawione na poniższym rysunku f(y) y y 2 y 3 y n-2 y n- y n y Dowolnawartość yleżącapomiędzy y oraz y n możebyćprzedstawiona wpostaciwypukłejkombinacjizmiennych y i oraz y i+ wnastępującysposób: y = λ i y i + λ i+ y i+,gdzie λ i + λ i+ =, λ i, λ i+ 0.Podobnie f(y) = λ i f(y i ) + λ i+ f(y i+ ).Zapomocązmiennychcałkowitoliczbowych możemywyrazić f(y)wcałymprzedziale [y, y n ]wnastępującysposób: gdzie n λ i y i = y, f(y) = n λ i f(y i ), n λ i =, λ i 0, i =, 2,..., n, λ x, λ i x i + x i, n i = 2, 3,..., n, λ n x n, x i =, x i = 0 lub x i =, i =, 2,..., n. Tylkojednazmienna x i możeprzyjąćwartośćrówną,astądtylko λ i oraz λ i+ mogąbyćniezerowe,czyli λ i + λ i+ =.Mamyzatemdoczynienia
. PROGRAMOWANIE LINIOWE 32 zezmiennymizero-jedynkowymi x, x 2,...,x n,któreokreślająprzedział zawierający yorazzezmiennymiciągłymi λ, λ 2,..., λ n,któredokładnie określają wartość y. Powyższa technika może być użyta do przybliżania funkcji nieliniowych funkcjami kawałkami liniowymi i do przekształcania zagadnień z nieliniowymi funkcjami celu do zagadnień całkowitoliczbowych programowania liniowego. W przypadku ogólnym nie można rozwiązywać zagadnień całkowitoliczbowych za pomocą metody sympleks i należy posługiwać się specjalnymi technikami obliczeniowymi. Poniżej przedstawimy jedną z nich, a mianowicie metodę dualną Gomory ego. Metoda ta jest bezpośrednim rozwinięciem dualnej metody sympleks. Różnica polega na tym, że w metodzie całkowitoliczbowej wiersz zawierający element główny jest generowany w każdej iteracji i wartość tego elementu wynosi-. Zapewnia to całkowitoliczbowość dualnej metody sympleksowej. Algorytm redukuje obszar dopuszczalności do takiego, aby jego wierzchołek optymalny był całkowitoliczbowy. Leksykograficzna postać dualnej metody sympleks Rozważmy następującą dualną tablicę sympleksową Zmienna Stała x m+ x m+2... x k... x n x 0 p 00 p 0,m+ p 0,m+2... p 0k... p 0n x p 0 p,m+ p,m+2... p k... p n...... x l p l0 p l,m+ p l,m+2... p lk... p ln...... x m p m0 p m,m+ p m,m+2... p mk... p mn x m+ 0 0... 0... 0 x m+2 0 0... 0... 0......... x k 0 0 0...... 0......... x n 0 0 0... 0... gdzie x l jestzmiennąopuszczającąbazę, x k zmiennąwchodzącądobazy, natomiast p lk jestelementemgłównym.powyższatablicaodpowiadazagadnieniu całkowitoliczbowemu w postaci:
. PROGRAMOWANIE LINIOWE 33 ( )znaleźćminimum x 0,przywarunkach x i = p i0 + j J p ij ( x j ), x i 0, x i Z, i =, 2,..., n, natomiast J jest zbiorem wskaźników niebazowych zmiennych. W powyższej tablicy wygodnie jest założyć, że pierwsze m zmiennych jest bazowych. Zapiszmy nasze zagadnienie w postaci wektorowej, mamy: znaleźćminimum x 0,przywarunkach x = p 0 + j J p j ( x j ), x i 0, x i Z, i =, 2,..., n. Wektor v 0 nazywamy leksykograficznie dodatnim(ujemnym), jeśli pierwsza jego niezerowa składowa jest dodatnia(ujemna). Gdy wektor v jest leksykograficzniedodatni(ujemny),topiszemy v > l 0(v < l 0).Wektor vjest leksykograficzniewiększy(mniejszy)odwektora w,jeżeli v w > l 0 (v w < l 0).Ciągwektorów v t, t =, 2,...nazywamyleksykograficznie malejącym(rosnącym),jeśli v t v t+ > l 0(v t v t+ < l 0).Zatemwleksykograficznym algorytmie dualnym zagadnienie ( ) przedstawiamy w sposób następujący: znaleźć leksykograficzne minimum x, przy warunkach x = p 0 + j J p j ( x j ), x 0. Zmienną x l opuszczającąbazęwyznaczasiętaksamojakwzwykłejmetodzie dualnej tzn. p l0 = min{p i0 ; p i0 < 0, i m}. Zmienną x wchodzącą do bazy znajdujemy za pomocą testu p lk p k = lex max{ p lj ; p lj < 0, m + j n}, gdzie lex max oznacza maksimum leksykograficzne. Przekształcenie elementarnewzględem p lk przekształcapowyższątablicęwnowątablicęzkolumnami ( ) p j = p j p lj p lk p k, dla j k, p k = p lk p k.
. PROGRAMOWANIE LINIOWE 34 Jeżeli początkowa tablica jest dualnie dopuszczalna w sensie leksykograficznym(tzn.wektory p j, j = m+, m+2,..., nsąleksykograficznieujemne), towzory ( )gwarantują,żenowewektorykolumnowe p j sąrównieżleksykograficznie ujemne. Uwaga.29.Możnapokazać,żerozwiązaniebazowe p 0 jestściślerosnące(w sensie leksykograficznym) w każdej iteracji oraz że żadna baza nie powtórzy się. Zarys metody dualnej Gomory ego. Metoda Gomory ego rozpoczyna działanie od tablicy całkowitoliczbowej i leksykograficzniedualniedopuszczalnegorozwiązania,toznaczywektory p j, j = m+, m+2,...,nsąleksykograficznieujemnedlazagadnieniaminimalizacji oraz dodatnie dla zagadnienia maksymalizacji. Algorytm jest następujący: Krok.Wybraćwierszonumerze r,wktórym p r0 < 0, r 0.Jestto wiersz generujący tzw. cięcie. Jeżeli wiersza takiego nie ma, to bieżące rozwiązanie jest optymalne. Krok2.Znaleźćkolumnę p k zelementemgłównym,którajestnajwiększa wsensieleksykograficznymwśródkolumn,dlaktórych p rj < 0.Jeślitakiej kolumny nie ma, to brak jest dopuszczalnego rozwiązania całkowitoliczbowego. Krok 3. Utworzyć nierówność(tzw. odcinającą) z wiersza r-tego, który nie jest spełniony przez bieżące rozwiązanie prymalne. Nowy wiersz jest dołączonynadoletablicyijesttowierszzelementemgłównymrównym-. Krok 4. Wykonać jedno przekształcenie elementarne dualnej metody sympleks. Krok 5. Usunąć dodany wiersz, który jest teraz trywialny(x = ( x)) iwrócićdokroku. Sposób otrzymania nierówności odcinającej
. PROGRAMOWANIE LINIOWE 35 Przypuśćmy, że wybrano wiersz o numerze r w tablicy dualnej, jako generujący cięcie(przez cięcie rozumiemy dodatkowe ograniczenie posiadające tę własność, że odcina część zbioru rozwiązań dopuszczalnych nie gubiąc przy tym żadnego rozwiązania całkowitoliczbowego) x r = p r0 + j J p rj ( x j ). Niech λ będzie liczbą dodatnią. Każda liczba p spełnia równość [ p (i) p = λ + R, λ] gdzieprzez [z]oznaczamyczęśćcałkowitąliczby zoraz 0 R < λ.po zastosowaniu (i) do wiersza generującego, otrzymujemy (ii) [ pr0 ] R j x j +R r x r = R 0 +λ( + [ prj ] [ ] ( x j )+ ( x r )) = R 0 +λx. λ λ λ j J j J Dla dowolnego nieujemnego rozwiązania spełniającego (ii) wartość [ pr0 ] (iii) x = + [ prj ] [ ] ( x j ) + ( x r ) λ λ λ j J musi być całkowita, ponieważ wszystkie współczynniki w (iii) są całkowite. Ponadto x 0,bo 0 R 0 < λijeśli xjestujemnąliczbącałkowitą,to R 0 + λx < 0.Jednakostatnianierównośćniejestmożliwa,ponieważlewa stronaw(ii)jestnieujemna.zatem x 0.Gdywybierzemy λ,wówczas nierówność x 0 uprości się do postaci (iv) [ pr0 λ ] + j J [ prj λ ] ( x j ) 0. Niech π rj = [ p rj ] λ,wówczascałkowitoliczbowecięciegomory egookreślone jest następująco: (v) x = π r0 + π rj ( x j ) 0. j J Ograniczenie (v) jest wierszem głównym, a x jest nową nieujemną zmienną dodatkową. Wyznaczymy teraz wartość λ.
. PROGRAMOWANIE LINIOWE 36 Wyznaczanie wartości λ. Krok.Znaleźćkolumnęgłówną ktak,aby p k = lex max{p j ; j J}, gdzie J = {j; p rj < 0, j 0},ar-tywierszgenerujecięcie. Krok2.Wyznaczyćnajwiększąliczbęcałkowitą e j,takąże Ponadtoniech e k =. e j p j l p k, j J, j k. Krok3.Przyjąć λ = max{λ j = p rj e j ; j J}. Uwaga.30.(i) Wyprowadzając zależność (iv) założyliśmy, że λ. Nierównośćtajestspełniona,ponieważ λ λ k = p rk.jeśli λ =, to wiersz generujący jest wierszem zawierającym element główny i nie ma nowego ograniczenia. (ii) Zgodnie z wyprowadzeniem, λ nie musi być całkowite. Wybierając taką wartość λ, otrzymamy jako element główny oraz wiersz główny, który dajenajwiększyleksykograficzniewzrostkolumny p 0. Całkowitoliczbowy algorytm dualny Gomory ego. Zakładamy,żekolumny p j, j = m +, m + 2,..., nsąleksykograficzniedualnie dopuszczalne. Krok.Jeśli p 0 0,torozwiązanieprymalnejestdopuszczalneioptymalne, a obliczenia się kończą. W przeciwnym razie wybrać taki wiersz generującycięcie,że p r0 < 0. Krok2.Znaleźćtakąkolumnęgłówną p k, m + k n,abybyłaonaleksykograficznienajwiększawśródkolumn,dlaktórych p rj < 0. Jeżeliwszystkie p rj 0,towówczasnieistniejedopuszczalnerozwiązanie całkowitoliczbowe. W przypadku przeciwnym przejść do kroku 3. Krok3.Dlakażdego j J, j kznaleźćnajwiększąliczbęcałkowitą e j taką,że e j p j p k.następniepodstawić e k = orazobliczyć λ = max{ p rj e j ; j J}.
. PROGRAMOWANIE LINIOWE 37 Krok 4. Do tablicy dualnej dołączyć ograniczenie x = π r0 + j J π rj ( x j ) 0. Krok 5. Wybrać jedno dualne przekształcenie elementarne używając π rk = jakoelementugłównego. Krok 6. Usunąć dodane ograniczenie, które stało się trywialne i wrócić dokroku. Uwaga.3. W kroku powyższego algorytmu do wyznaczenia wiersza generującegocięciemożnawybraćnajmniejsze p i0 < 0. Przykład.32.Znaleźćminimumfunkcji f(x, x 2 ) = x 0 = 3x + 5x 2 przy warunkach x 3 = 5 + x + 4x 2 0, x 4 = 7 + 3x + 2x 2 0, x, x 2, x 3, x 4 0, x, x 2, x 3, x 4 Z. Dualna tablica sympleksowa dla powyższego zagadnienia wygląda następująco: Zmienna Stała x x 2 x 0 0 3 5 x 3 5 4 x 4 7 3 2 Trywialne ograniczenia z pojedyńczym elementem równym- zostały pominięte.niechwierszemgenerującymbędziewiersz,któryzawiera x 4,akolumną głównąkolumnapierwsza(k = ).Wartości e j sąnastępujące e =, e 2 =. Zatem λ = max{ p rj e j ; j J} = max{ 3, 2 } = 3. Liczymy dodatkowe ograniczenie [ ] [ ] 7 3 x 5 = + ( x ) + 3 3 [ 2 x 5 = 3 + x + x 2 0. Nasza tablica ma następującą postać: 3 ] ( x 2 ) 0,
. PROGRAMOWANIE LINIOWE 38 Zmienna Stała x x 2 x 0 0 3 5 x 3 5 4 x 4 7 3 2 x 5 3 Wymieniamyterazzmienną x nazmienną x 5,czylijesttoprzekształcenie elementarnezelementemgłównym p 5 =.Mamy x 0 = 9+3x 5 +2x 2, x = 3+x 5 x 2, x 3 = 2+x 5 +3x 2, x 4 = 2+3x 5 x 2. Nowa tablica wygląda zatem następująco: Zmienna Stała x 5 x 2 x 0 9 3 2 x 3 x 3 2 3 x 4 2 3 Po usunięciu dodanego ograniczenia mamy: Zmienna Stała x x 2 x 0 9 3 2 x 3 2 3 x 4 2 3 Zauważmy,że p 0 < 0zatemnależyprowadzićobliczeniadalej.Zgodniez uwagą.3wierszemgenerującymjestterazwiersz,któryzawiera x 3,akolumnągłównąkolumnadruga(k = 2).Wartości e j sąnastępujące e =, e 2 =.Zatem λ = max{, 3 } = 3. Liczymy dodatkowe ograniczenie [ ] [ ] 2 x 5 = + ( x ) + 3 3 [ 3 x 5 = + x + x 2 0. Nasza tablica ma następującą postać: 3 ] ( x 2 ) 0,
2. STRATEGIE ZACHŁANNE 39 Zmienna Stała x x 2 x 0 9 3 2 x 3 2 3 x 4 2 3 x 5 Wymieniamyterazzmienną x 2 nazmienną x 5,czylijesttoprzekształcenie elementarnezelementemgłównym p 52 =.Mamy x 0 = +x + 2x 5, x 2 = x + x 5, x 3 = 2x + 3x 5, x 4 = +4x x 5. Nowa tablica wygląda zatem następująco: Zmienna Stała x x 5 x 0 2 x 2 x 3 2 3 x 4 4 Po usunięciu dodanego ograniczenia mamy: Zmienna Stała x x 2 x 0 2 x 3 2 3 x 4 4 Ponieważ p 0 > 0,torozwiązanieprymalnejestdopuszczalneioptymalne,co pozwalazakończyćwykonywaniealgorytmu.ostateczniemamy 3x + 5x 2 =,astądrozwiązaniemoptymalnymjest x = 2, x 2 =, x 3 = oraz x 4 =. 2. Strategie zachłanne Strategia zachłanna(ang. greedy) jest to metoda rozwiązywania pewnych problemów optymalizacyjnych. Polega ona na tym, że na każdym etapie rozwiązywania problemu wybiera opcję lokalnie optymalną. Strategia taka może, ale NIE MUSI prowadzić do optymalnego globalnego rozwiązania.
2. STRATEGIE ZACHŁANNE 40 Istnieje wiele problemów, w których strategia zachłanna daje rozwiązanie optymalne. Strategię zachłanną możemy stosować także wtedy, gdy nie daje ona gwarancji uzyskania optymalnego rozwiązania. Np. wtedy, gdy jesteśmy zainteresowani szybkim, przybliżonym, ale nie koniecznie optymalnym rozwiązaniem. 2.. Problem wyboru zajęć Mamydanyzbiór S = {,...,n}złożonyznzajęć,którymtrzebaprzydzielić salę wykładową. W sali mogą odbywać się w danej chwili co najwyżej jednezajęcia.każdezajęcia imająswójczasrozpoczęcia s i orazczaszakończenia f i.rozsądniejestzałożyć,że s i < f i.ponadtozakładamy,żezajęcia izajmująprzedziałczasowy [s i, f i ).Mówimy,żezajęcia ioraz jsązgodne, jeśli [s i, f i ) [s j, f j ) =. Problem wyboru zajęć polega na wyborze maksymalnego podzbioru A S parami zgodnych zajęć. Problem wyboru zajęć- rozwiązanie Postępujemywnastepującysposób.Najpierwwybieramyzajęcia a,które mająnajwcześniejszyczaszakończenia.jeżelimamyjużwybranezajęcia a,..., a k,tojakozajęcia a k+ wybieramyzezbioru S \ {a,...,a k }te,któresą zgodnezewszystkimi a,...,a k orazmająnajwcześniejszyczaszakończenia. Procedurę tę kontynuujemy aż do wyczerpania zajęć ze zbioru S. Otrzymany zbiór A = {a,...,a m }jestposzukiwanymmaksymalnymzbioremparami zgodnych zajęć. Zauważmy, że na każdym etapie wybierając zajęcia o najwcześniejszym czasie zakończenia pozostawiamy najwięcej wolnego czasu do wykorzystania. W tym sensie jest to strategia zachłanna. Problem wyboru zajęć- przykład Mamydane:salęwolnąwczasie 0orazzajęcia z,..., z 0 wrazzczasami rozpoczęcia oraz zakończenia podanymi w poniższej tabeli(w postaci s i f i ).