Panuje powszechna, jak się wydaje, zgoda co do tego, że sympleks jest w praktyce
bardzo skutecznym i szybkim algorytmem, pozwalającym rozwiązywać problemy w
których występują setki czy nawet tysiące zmiennych. Także różnego rodzaje testy
tego dowodzą (por. [4,10,14,17,19,21]). A jednak. Okazuje się,
że jeśli dobrać wystarczająco złośliwie przykład, to okazuje się, że liczba
iteracji może wynosić nawet , gdzie oznacza ilość zmiennych. Oznacza to
konieczność utworzenia słowników. To zaś z kolei, znaczy, że sympleks jest
teoretycznie beznadziejny: licząc mikrosekundę na utworzenie słownika
(przy dużej liczbie zmiennych to kompletnie nierealne, nawet przy bardzo szybkim komputerze),
oznaczałoby to konieczność oczekiwania trudno wyobrażalnej liczby lat na obliczenie zadania
o 1000 zmiennych3.5.
Takim złośliwym przykładem jest zadanie Klee-Minty'ego
(por. [4,19]) które przedstawione poniżej (lemat )
posłuży do wykazania następującego twierdzenia.
Twierdzenie 3.4
Algorytm sympleks nie jest algorytmem wielomianowym.
Dowód lematu . Udowodnijmy najpierw dwa proste fakty.
Fakt 1.
jest wartością optymalną, zaś
(3.36)
rozwiązaniem optymalnym problemu ().
Rzeczywiście, pierwszy słownik problemu () można zapisać następująco
3.6:
(3.37)
Słownikiem w którym zmiennymi niebazowymi są
,
zaś zmiennymi bazowymi
jest
(3.38)
gdzie
dla każdego .
Jest oczywistym, że słownik () jest ostatnim słownikiem algorytmu sympleks
dla (), zaś () optymalnym rozwiązaniem (współczynniki
są oczywiście ujemne).
Fakt 2.
W każdym słowniku problemu (), dla każdego
dokładnie jedna ze zmiennych jest
zmienną bazową.
Gdyby tak nie było, to w w pewnym słowniku dla pewnego zarówno
jak i
byłyby zmiennymi niebazowymi.
Dla odpowiadającego temu słownikowi bazowego rozwiązania
dopuszczalnego
mamy oczywiście
i
. Napiszmy równania i
słownika ().
(3.39)
(3.40)
Dla naszego rozwiązania bazowego w którym i mamy więc
z ()
Z drugiej zaś strony, korzystając z (), (), nierówności
wynikającej w sposób banalny
z () i pamiętając, że
wszystkie współrzędne rozwiązania są nieujemne, otrzymamy
- sprzeczność która kończy dowód faktu 2.
Reszta dowodu lematu przez indukcję ze względu na .
Dla problem jest banalny: ma postać
i rozwiązuje się w 2 słownikach:
,
Pierwszy słownik dla () jest postaci
(3.41)
a ostatni (o rozwiązaniu bazowym
)
Napiszmy teraz pierwszy słownik dla
Słownik ten różni się od () tym, że dodaliśmy do niego jeden wiersz ograniczeń,
a funkcję celu najpierw pomnożyliśmy przez , a potem dodaliśmy do niej .
Wszystkie współczynniki (a także wyrazy wolne) we wszystkich słownikach są całkowite.
Rzeczywiście: skoro, jak stwierdziliśmy wyżej, dla każdego dokładnie jedna ze
zmiennych jest bazowa, za każdym razem zmienna wchodząca ( lub )
jest obliczana z tego równania w którym występuje zawsze ze współczynnikiem
. Tak więc, dopóki we wzorze na funkcję któregokolwiek słownika
problemu
występuje któraś ze zmiennych , , ze współczynnikiem dodatnim, zmienną
wchodzącą jest jedna z nich (ta której współczynnik w funkcji jest największy).
Tak więc algorytm sympleks będzie funkcjonował na pierwszych wierszach ograniczeń
dopóty, dopóki w funkcji celu
wszystkie współczynniki przy zmiennych
będą niedodatnie. W ostatnim z tych słowników podstawiamy
do
i do
otrzymując
Zmienną wchodzącą teraz jest
.
Tak więc następnym, szym słownikiem jest
słownik następujący
Otrzymaliśmy problem w którym następne iteracje będą polegały na minimalizacji
funkcji
(3.42)
Operacje na wierszach ograniczeń dotyczyć będą wyłącznie pierwszych wierszy.
Funkcja dana wzorem () równa jest stałej plus
razy funkcja celu , potrzebować będziemy więc jeszcze
słowników, czyli w sumie
słowników,
co należało udowodnić.
Next:Dlaczego sympleks? Up:Opis metody simpleks Previous:Ile jest rozwiązań optymalnych?
  Spis rzeczy
  Indeks