Modelowanie matematyczne – złożoność obliczeniowa, teoria a praktyka dr inż. Krzysztof Bryś brys@mini.pw.edu.pl Wydział Matematyki i Nauk Informacyjnych Politechnika Warszawska Warszawa, 12 stycznia 2016 www.mini.pw.edu.pl
Problem decyzyjny Problem : Dane (input): Szukane (output): Problem decyzyjny: Dane: Pytanie: Czy…. ? Możliwe odpowiedzi: TAK/NIE Problem L = zbiór danych dla których odpowiedź TAK
Problem optymalizacyjny Problem optymalizacyjny: Dane: Szukane: rozwiązanie dopuszczalne, dla którego wartość funkcji celu osiąga wartość minimalną albo maksymalną. Przykład: Dane: zbiór studentów Szukane: najwyższy student spośród tych, którzy zdadzą egzamin
Algorytm Algorytm przepis na rozwiązanie problemu, opis sposobu rozwiązania problemu ciąg działań (instrukcji), które należy wykonać aby rozwiązać problem Jeden problem można rozwiązać wieloma algorytmami !
Złożoność obliczeniowa czas obliczeń algorytmu dla danych d = t(d) = liczba operacji elementarnych wykonywanych przez dany algorytm dla danych d złożoność obliczeniowa (pesymistyczna) algorytmu = funkcja, która każdemu rozmiarowi danych n przyporządkowuje pesymistyczny czas obliczeń (sup(t(d)) dla danych d o rozmiarze n złożoność przeciętna, złożoność najlepszego przypadku
Złożoność pamięciowa zajętość pamięci przez algorytmu dla danych d = s(d) = liczba komórek pamięci zajętych przez dany algorytm podczas obliczeń wykonywanych dla danych d złożoność pamięciowa (pesymistyczna) algorytmu = funkcja, która każdemu rozmiarowi danych n przyporządkowuje pesymistyczną zajętość pamięci (sup(t(d)) dla danych d o rozmiarze n złożoność przeciętna, złożoność najlepszego przypadku
Główni bohaterowie Algorytm wielomianowy (dobry bohater) = algorytm, który ma funkcję złożoności obliczeniowej ograniczoną przez wielomian rozmiaru danych Algorytm wykładniczy (zły bohater) = algorytm, który ma złożoność obliczeniową określoną przez funkcję wykładniczą rozmiaru danych (zwiększenie rozmiaru danych o pewną stałą powoduje pomnożenie czasu działania przez pewien stały czynnik)
Klasy złożoności obliczeniowej P (deterministic polynomial) = klasa problemów, które można rozwiązać za pomocą algorytmów wielomianowych (Cobham, 1965) NP (nondeterministic polynomial) = klasa problemów, dla których znalezione rozwiązanie może być zweryfikowane przez algorytm wielomianowy (istnieje „wielomianowy” dowód poprawności rozwiązania) = klasa problemów, być rozwiązany w wielomianowym czasie przez algortym niedeterministyczny (z możliwymi losowymi wyborami) =na niederministycznej maszynie Turinga (Edmonds, 1965)
P=NP ? Problem milenijny: Czy P=NP ? Uwaga 1 : Każdy algorytm z klasy NP może być rozwiązany przez algorytm wykładniczy (poprzez sprawdzenie wszystkich możliwych przebiegów algorytmu niedeterministycznego) Uwaga 2: Każdy problem z klasy P należy również do NP. Problem milenijny: Czy P=NP ?
Problemy NP-zupełne Problem L jest redukowalny w czasie wielomianowym do problemu M jeśli można przy użyciu algorytmu wielomianowego sprowadzić rozwiązanie problemu L do rozwiązania problemu M Problem L jest NP-zupełny jeśli L należy do klasy NP oraz każdy problem z klasy NP jest do niego redukowalny w czasie wielomianowym. NPC = klasa problemów NP-zupełnych (Cook, 1971)
Eureka ! Fakt: Jeśli jakikolwiek problem NP-zupełny należy do klasy P, to P=NP (każdy problem z klasy NP należy również do klasy P)
Dopełnienie problemu dopełnienie problemu L = zbiór danych, dla których odpowiedź jest nie Przykład: Problem L: Czy w danym zbiorze jest liczba pierwsza ? Dopełnienie problemu L: Czy w danym zbiorze nie ma liczby pierwszej ? co- NP = klasa problemów, których dopełnienie należy do klasy NP.
co-NP Przykład problemu z klasy co-NP: L: Czy dana liczba jest pierwsza ? Łatwo sprawdzić, że dana liczba nie jest pierwsza jeśli znamy jej dzielnik. csd
Co by było gdyby …
Co by było gdyby…
Graf składa się z elementów pewnego zbioru zwanych wierzchołkami oraz par wierzchołków zwanych krawędziami. Na rysunku grafu wierzchołki reprezentowane są przez punkty a krawędzie przez linie łączące pary wierzchołków. .
Jeżeli krawędzie mają nadane orientacje, to znaczy każda prowadzi od jednego wierzchołka do innego (na rysunku grafu krawędzie są wtedy oznaczone strzałkami), to mówimy wtedy o grafie skierowanym. Często rozważa się również grafy ważone czyli takie, w których każda krawędź ma przyporządkowaną pewną wagę.
Na rysunku grafu wierzchołki są etykietami odpowiadających im punktów
Graf = uniwersalne narzędzie do rozwiązywania problemów z różnych dziedzin nauki i życia codziennego
Problem króla Artura i rycerz okrągłego stołu: Jak rozsadzić 165 rycerzy zaproszonych na imieniny króla Artura tak, aby każdy rycerz miał za sąsiadów przyjaciół ? żródło: internet
Sformułowanie grafowe tego problemu: Niech wierzchołki grafu odpowiadają rycerzom. Dwa wierzchołki łączymy krawędzią jeśli odpowiadają przyjaciołom. Znaleźć taki cykl w tym grafie, który przechodzi przez każdy wierzchołek dokładnie raz. żródło: internet
Sformułowanie grafowe tego problemu: Niech wierzchołki grafu odpowiadają rycerzom. Dwa wierzchołki łączymy krawędzią jeśli odpowiadają przyjaciołom. Znaleźć taki cykl w tym grafie, który przechodzi przez każdy wierzchołek dokładnie raz. Cykl, który przechodzi przez każdy wierzchołek grafu dokładnie raz nazywa się cyklem Hamiltona.
Problem istnienia cyklu Hamiltona Problem istnienia cyklu Hamiltona należy do klasy NP (łatwo zweryfikować czy dany ciąg wierzchołków tworzy cykl Hamiltona) ale nie należy do klasy co-NP (zgodnie z obecnym stanem wiedzy, nie znamy żadnego „łatwego” sposobu sprawdzania, że w danym grafie cykl Hamiltona nie istnieje)
Graf Petersena
Łamigłówka Hamiltona (Wiliam Rowan Hamilton 1856): Gramy na grafie będącym siatką dwunastościanu foremnego
Gracz 1: Wybiera 5 pierwszych wierzchołków w taki sposób, że każde dwa kolejne są połączone krawędzią. Gracz 2: Ma za zadanie wybrać pozostałe wierzchołki w takiej kolejności, by utworzyć cykl (czyli drogę zaczynającą się i kończącą się w tym samym wierzchołku) przechodzący przez każdy wierzchołek tego grafu dokładnie raz. Gracz 2 zawsze może wygrać !!! (jeśli pomyśli trochę)
Gracz 1:
Gracz 2:
Problem komiwojażera: Komiwojażer musi odwiedzić każde z n miast i wrócić do miasta, z którego wyruszył. Chce przebyć jak najkrótszą drogę. Sformułowanie grafowe tego problemu: Niech wierzchołki w grafie odpowiadają miastom. Każde dwa wierzchołki łączymy w tym grafie krawędzią o wadze równej odległości między tymi miastami. Znaleźć w tak stworzonym grafie „najkrótszy” cykl przechodzący przez każdy wierzchołek tego grafu dokładnie raz.
Dla 5 miast, wszystkich możliwych dróg komiwojażera jest 4*3*2*1*(1/2) = 4!/2 = 12 Dla 10 miast, wszystkich możliwych dróg komiwojażera jest 9!/2 = 181 440 Dla 20 miast, wszystkich możliwych dróg komiwojażera jest 19!/2 czyli około 6 000 000 000 000 000 000. Dla 20 000 miast, wszystkich możliwych dróg komiwojażera jest BARDZO DUŻO – jedynka z 77 tysiącami zer
Najlepsza dotąd znaleziona trasa komiwojażera żródło: internet Najlepsza dotąd znaleziona trasa komiwojażera dla 13 509 miast w USA
żródło: internet Najlepsza dotąd znaleziona trasa komiwojażera dla wszystkich miast na świecie
Przykłady problemów NP-zupełnych Problem istnienia cyklu Hamiltona w grafie Problem komiwojażera Problem plecakowy Problem spełnialności formuły boolowskiej Problem wyznaczania liczby chromatycznej grafu Problem wyznaczania indeksu chromatycznego grafu
Zagadnienie programowania liniowego
Zagadnienie programowania liniowego ZPL jest problemem z klasy P bo istnieje wielomianowy algorytm eliptyczny (Khachiyan, 1979) - niepraktyczny bo o gigantycznej złożoności pamięciowej. W praktyce do rozwiązywania ZPL używa się metody sympleks, która jest algorytm wykładniczym ale dla praktycznych, niezłośliwych danych działa w czasie wielomianowym. Algorytm punktu wewnętrznego również jest wielomianowy ale rzadko stosowany w praktyce.
Problem plecakowy
Problem plecakowy
Dziękuje za uwagę
Dziękuje za uwagę