Złożoność problemów
Transkrypt
Złożoność problemów
Złożoność problemów Przykład - wieże Hanoi Problem jest zamknięty (dolne ograniczenie złożoności = złożoność algorytmu rekurencyjnego lub iteracyjnego) i ma złożoność O(2N). Mnisi tybetańscy podobno rozwiązują problem dla N = 64 i wierzą, że nasz świat skończy się kiedy tego dokonają! 1 ruch na sekundę ⇒ czas wykonania ok. 586 549 402 018 lat 1 mln ruchów na sekundę ⇒ czas wykonania ok. 586 549 lat M.Rawski Wstęp do Informatyki 1 “Głupia” układanka Problem decyzyjny - taki problem algorytmiczny, który polega na znalezieniu odpowiedzi “tak” lub “nie” (często jest to odpowiedź na pytanie o istnienie rozwiązania problemu) Czy istnieje takie ułożenie kwadratu M x M z N = M 2 elementów, które spełnia wymagania układanki? • Dla układanki 5 X 5 1 mln układów na sekundę ⇒ czas sprawdzenia ok. 493 208 500 055 lat Problem decyzyjny - taki problem algorytmiczny, który polega na znalezieniu odpowiedzi “tak” lub “nie” (często jest to odpowiedź na pytanie o istnienie rozwiązania problemu) M.Rawski Wstęp do Informatyki 2 Wartości niektórych funkcji złożoności Funkcja log2 N N N ∗ log2 N N2 N3 10 3 10 33 100 1000 2N 1024 N! NN 3,6 mln (7 cyfr) 10 mld (11 cyfr) 50 5 50 282 2500 125 000 N 100 6 100 664 10 000 1 000 000 liczba 16 liczba 31 cyfrowa cyfrowa liczba 65 liczba 161 cyfrowa cyfrowa liczba 85 liczba 201 cyfrowa cyfrowa 300 1000 8 9 300 1000 2468 9965 90 000 1 000 000 27 mln 1 mld (8 cyfr) (10 cyfr) liczba 91 liczba 302 cyfrowa cyfrowa liczba 623 ∞ cyfrowa liczba 744 ∞ cyfrowa liczba protonów w widocznym wszechświecie ma 126 cyfr, a liczba mikrosekund od “wielkiego wybuchu” ma 24 cyfry M.Rawski Wstęp do Informatyki 3 Zapotrzebowanie na czas jedna instrukcja trwa mikrosekundę 1 milion instrukcji na sekundę N 10 20 50 100 300 Funkcja N2 1/10 000 1/2500 1/400 sek. 1/100 sek. 9/100 sek. sek. sek. 2N 1/1000 1 sekunda 35,7 lat 400 bilionów 75 cyfr. sek. stuleci liczba stuleci NN 2,8 3,3 biliony 70 cyfr. 185 cyfr. 728 cyfr. godziny lat liczba stuleci liczba stuleci liczba stuleci M.Rawski Wstęp do Informatyki 4 Tempo wzrostu niektórych funkcji złożoności Funkcja f(N) jest (asymptotycznie) ograniczona z góry przez funkcję g(N), jeśli ∃ N0 ∀ N ≥ N0 : f(N) ≤ g(N) - oznaczmy ten fakt przez f(N) ≤ g(N). Wtedy zachodzi log2 N ≤ N ≤ N ⋅ log2 N ≤ N ≤ 2 2N ≤N!≤N N 10 40 10 35 10 30 10 25 10 20 N N 2 N 1,2 N 15 10 12 10 9 10 6 10 1000 100 10 2 M.Rawski Wstęp do Informatyki N 5 N 3 5N 4 512 8 16 32 64 1 28 2 56 1024 5 N 10 4 0 Podział funkcji złożoności 10 35 10 30 10 25 10 20 N 2 N 1,2 15 10 12 10 10 9 6 10 1000 100 10 2 N N 5 N 3 5N Można także porównywać funkcje asymptotycznie w oparciu o poprzednio przyjęty warunek 4 8 16 32 64 1 28 5 12 2 56 1 024 f (N ) lim = 0 - oznaczmy ten fakt przez f(N) ∠ g(N). N →∞ g ( N ) Wtedy zachodzi 1 ∠ log2 log2 N ∠ log2 N ∠ N ∠ N ∠ N ⋅ log2 N ∠ N 2 ∠ N 3 ∠ N log N ∠ 2N ∠ N ! ∠ N N ∠ 22N Funkcje złożoności ogólnie dzielimy na: wielomianowe - ograniczone z góry przez N k dla pewnego k (tzn. ≤ N k lub ∠ N k ) ponadwielomianowe - wykładnicze i inne szybciej rosnące (tzn. nie istnieje dla nich takie k) algorytm wielomianowy = algorytm o złożoności wielomianowej O(N k) M.Rawski Wstęp do Informatyki 6 Sfery problemów algorytmicznych (podział zgrubny) PROBLEMY TRUDNO ROZWIĄZYWALNE PROBLEMY ŁATWO ROZWIĄZYWALNE Nie istnieją wielomianowe algorytmy Istnieją (rozsądne) wielomianowe algorytmy Kilka pytań w związku z “głupią” układanką: Czy nie można po prostu poczekać na zbudowanie dostatecznie szybkiego komputera? Czy brak rozsądnego algorytmu dla tego problemu nie jest rezultatem braku wiedzy i inwencji informatyków? Czy nie można by wykazać, że dolne ograniczenie złożoności dla tego problemu jest wykładnicze i dać sobie spokój? Czy nie jest on przypadkiem tak szczególnym, że można go pominąć? M.Rawski Wstęp do Informatyki 7 Szybszy komputer? Maksymalna liczba elementów układanki do sprawdzenia w godzinę Funkcja współczesny komputer 100 razy komputer 1000 razy komputer szybszy szybszy N2 K 10 ∗ K 31,6 ∗ K 2N L L+6 L + 10 M.Rawski Wstęp do Informatyki 8 Szczególny przypadek? “Głupia” układanka należy do klasy problemów NPC (ang. Nondeterministic Polynomial-time Complete) zwanych po polsku NP. - zupełnymi, która obejmuje prawie 1000 problemów algorytmicznych o jednakowych cechach: • dla wszystkich istnieją wątpliwe rozwiązania w postaci algorytmów wykładniczych • dla żadnego nie znaleziono rozsądnego rozwiązania w postaci algorytmu wielomianowego • dla żadnego nie udowodniono, że jego rozwiązania wymaga czasu wykładniczego • najlepsze znane dolne ograniczenia są liniowe, tzn. O(N) Nie wiadomo czy są one trudno, czy łatwo rozwiązywalne! Nowe problemy NP-zupełne powstają w kombinatoryce, badaniach operacyjnych, ekonometrii, teorii grafów, logice itd. M.Rawski Wstęp do Informatyki 9 Układanki dwuwymiarowe Powodem braku szybkiego rozwiązania jest istnienie wielu różnych rozwiązań częściowych, nie będących częścią rozwiązania pełnego – nie dających się rozszerzyć do jakiegoś rozwiązania pełnego Zwykłe układanki – Puzzle zazwyczaj mają złożoność czasową O(N 2) W ogólnym przypadku problem układanek jest także problemem NP – zupełnym M.Rawski Wstęp do Informatyki 10 6 Problem komiwojażera 3 9 8 4 3 Problem polega na znalezieniu w sieci 10 7 5 połączeń pomiędzy miastami najkrótszej 7 drogi, która pozwala odwiedzić każde z miast i powrócić do miasta wyjściowego Graf z wagami krawędzi (tzw. cykl). 6 Problem formułowany jest jako 3 4 poszukiwanie minimalnego pełnego 3 cyklu w grafie z wagami krawędzi 7 5 W wersji decyzyjnej problem polega na stwierdzeniu czy istnieje cykl o koszcie nie większym niż podana wartość K Minimalny cykl o koszcie 28 M.Rawski Wstęp do Informatyki 11 6 Problem komiwojażera cd 3 3 Problem komiwojażera pojawia się na przykład przy: projektowaniu sieci telefonicznych projektowaniu układów scalonych planowaniu linii montażowych programowaniu robotów przemysłowych 4 8 9 10 7 5 7 Graf z wagami krawędzi 6 3 4 3 Naiwne rozwiązanie – N! 7 5 Przypadek nawet dla N = 25 jest beznadziejny Minimalny cykl o koszcie 28 M.Rawski Wstęp do Informatyki 12 Ścieżka Hamiltona Problem polega na sprawdzeniu czy w grafie istnieje ścieżka, która przez każdy wierzchołek przechodzi dokładnie raz. Ale... Sprawdzeniu czy w grafie istnieje ścieżka, która przez każdą krawędź przechodzi dokładnie raz, nazywane jest problemem Eulera i nie jest problemem klasy NPC Graf posiadający ścieżkę Hamiltona dopiero po dodaniu krawędzi Ścieżka Hamiltona w grafie po dodaniu krawędzi M.Rawski Wstęp do Informatyki 13 Problemem Eulera Twierdzenie (Eulera) ( ⇒ problem jest łatwo rozwiązywalny ) W grafie spójnym o parzystej liczbie krawędzi wychodzących z każdego wierzchołka (być może z wyjątkiem dwóch) istnieje ścieżka Eulera. Graf posiadający ścieżkę Eulera dopiero po dodaniu krawędzi Ścieżka Eulera w grafie po dodaniu krawędzi M.Rawski Wstęp do Informatyki 14 Przydział i układanie planu zajęć Na przykład: przydział studentów do pokoi w akademiku z uwzględnieniem ograniczeń wypełnianie kontenerów przedmiotami o różnych rozmiarach stwierdzenie czy istnieje plan zajęć dopasowujący nauczycieli, klasy i godziny lekcyjne w taki sposób, aby dwie klasy nie miały jednocześnie zajęć z tym samym nauczycielem, nauczyciel nie prowadził w tym samym czasie lekcji w dwóch różnych klasach, dwaj nauczyciele nie prowadzili jednocześnie lekcji w tej samej klasie itd. M.Rawski Wstęp do Informatyki 15 Ustalenie czy zdanie logiczne jest spełnialne Problem polega na stwierdzeniu czy istnieje takie wartościowanie asercji użytych w złożonym zdaniu logicznym, które powoduje, że zdanie to staje się prawdziwe. Np. zdanie ¬( E ⇒ F ) ∧ ( F ∨ ( D ⇒ E )) staje się prawdziwe dla następującego wartościowania E ← PRAWDA, F ← FAŁSZ, D ← FAŁSZ i jest zatem spełnialne. Natomiast zdanie ¬(( D ∧ E ) ⇒ F ) ∧ ( F ∨ ( D ⇒ ¬E )) nie jest spełnialne M.Rawski Wstęp do Informatyki 16 Kolorowanie map Kolorowanie mapy - problem decyzyjny polegający na ustaleniu czy dana mapa płaska może być pokolorowana k barwami tak, aby sąsiednie państwa nie miały tego samego koloru. dla 2 barw problem jest łatwo rozwiązywalny - wystarczy sprawdzić, czy mapa nie zawiera punktów, w których styka się nieparzysta liczba państw dla 3 barw problem jest trudno rozwiązywalny (klasy NPC) dla 4 barw problem jest banalny - patrz twierdzenie o czterech barwach M.Rawski Wstęp do Informatyki 17 Kolorowanie grafów Kolorowanie grafu - wyznaczenie minimalnej liczby barw, którymi można pokolorować wierzchołki danego grafu tak, aby każde dwa wierzchołki bezpośrednio połączone krawędzią miały różne kolory. Łatwo można skonstruować graf wymagający dowolnie dużej liczby kolorów: Klika - zbiór wierzchołków w grafie połączonych każdy z każdym 8 barw M.Rawski Wstęp do Informatyki 18 Załadunek plecaka 1 2 Zapis w wersji optymalizacyjnej: N max ∑c ⋅ x 3 1 i i i =1,..., N , przy ograniczeniach , N 31zł 4 2 3 4 19zł 6 plecak 27zł 7zł ci ai 53zł Plecak załadowany optymalnie ∑ ai ⋅ x i ≤ b i =1,..., N 4 3 2 Zapis w wersji decyzyjnej: czy dla danego K istnieje takie upakowanie, N N że ci ⋅ xi ≥ K ∑ ai ⋅ x i ≤ b ∑ i =1,..., N M.Rawski i =1,..., N Wstęp do Informatyki 19 b Ogólna charakterystyka problemów z klasy NP (ang. Nondeterministic Polynomial-time) wymagają sprawdzania rozwiązań częściowych i rozszerzania ich w celu znalezienia rozwiązania ostatecznego; jeśli rozwiązanie częściowe nie da się dalej rozszerzyć, to trzeba powrócić na jakiś wcześniejszy etap i po dokonaniu zmian rozpocząć od nowa, postępowanie polegające na systematycznym sprawdzeniu wszystkich możliwości wymaga czasu wykładniczego jeśli znamy rozwiązanie, to sprawdzenie jego poprawności może być przeprowadzone w czasie wielomianowym! dla każdego z problemów istnieje niedeterministyczny („magiczny”) algorytm o złożoności wielomianowej; NP skrót od ang. Nondeterministic Polynomial-time są trudno rozwiązywalne, ale stają się łatwo rozwiązywalne, jeśli korzysta się z niedeterministycznej „wyroczni” M.Rawski Wstęp do Informatyki 20 Ogólna charakterystyka problemów NP-zupełnych każdy problem klasy NP można przekształcić do jednego z nich w czasie wielomianowym (taka jest ich definicja) NPC skrót od ang. Nondeterministic Polynomial-time Complete każdy problem z tej klasy można przekształcić w czasie wielomianowym do każdego innego! znalezienie algorytmu wielomianowego dla jednego z problemów oznacza możliwość rozwiązania w czasie wielomianowym wszystkich innych! M.Rawski Wstęp do Informatyki 21 Ogólna charakterystyka problemów NP-zupełnych cd udowodnienie wykładniczego dolnego oszacowania dla jednego z problemów oznacza wykazanie, że żaden z nich nie może być rozwiązany w czasie wielomianowym! albo wszystkie te problemy są łatwo rozwiązywalne, albo wszystkie trudno wykazanie, że nowy problem jest NP-zupełny przebiega w dwóch krokach: 1. trzeba udowodnić, że nowy problem jest klasy NP 2. trzeba skonstruować przekształcenie, które w czasie wielomianowym transformuje do niego dowolny znany problem NPzupełny M.Rawski Wstęp do Informatyki 22 Przykłady przekształcania jednego problemu NPC w drugi znalezienie ścieżki Hamiltona → problem komiwojażera 1 2 1 1 1 1 2 1 2 2 Ścieżka Hamiltona dla 5 wierzchołków Cykl komiwojażera o długości 6 Istnieje ścieżka Hamiltona w grafie o N wierzchołkach Istnieje cykl komiwojażera w uzupełnionym grafie nie dłuższy niż N + 1 M.Rawski Wstęp do Informatyki 23 Przykłady przekształcania jednego problemu NPC w drugi kolorowanie mapy 3 kolorami → spełnialność zdania logicznego Mapa składa się z P1, P2, ... , PN państw i mamy trzy kolory C, Z i N. Asercja PK = Z oznacza, że państwo PK jest pokolorowane na zielono. Zdanie F ma postać F1 ∧ F2 , gdzie F1 składa się ze zdań ( PK = C ∧ ¬PK = Z ∧ ¬PK = N ) ∨ ( ¬PK = C ∧ PK = Z ∧ ¬PK = N ) ∨ ( ¬PK = C ∧ ¬PK = Z ∧ PK = N ) powtórzonych dla K = 1,...,N i połączonych koniunkcją, a F2 składa się ze zdań ¬(( PK = C ∧ PL = C ) ∨ ( PK = Z ∧ PL = Z ) ∨ ( PK = N ∧ PL = N )) powtórzonych dla wszystkich par K i L państw sąsiadujących ze sobą i także połączonych koniunkcją. M.Rawski Wstęp do Informatyki 24 Klasy problemów Klasa NP - problemy posiadające niedeterministyczne algorytmy o czasie wielomianowym Klasa P - problemy posiadające zwykłe algorytmy o czasie wielomianowym (łatwo rozwiązywalne) Klasa NP-zupełne -„wzorcowe” problemy z klasy NP sprowadzalne jeden do drugiego NP-zupełne NP P Czy P = NP ? M.Rawski Wstęp do Informatyki 25 ALGORYTMY PRZYBLIŻONE – praktyczne rozwiązanie dla problemów NPC Np. problem komiwojażera jest trudno rozwiązywalny (NP-zupełny), ale można w czasie wielomianowym wyznaczać “niezłe” cykle obchodzące wszystkie wierzchołki grafu: LOPT - długość minimalnego cyklu Hamiltona LAPR - długość przybliżonego rozwiązania LAPR miara dobroci rozwiązania przybliżonego: s A = LOPT • istnieje algorytm o złożoności O(N 3) wyznaczający w najgorszym przypadku cykl Hamiltona o dobroci sA ≤ 1,5 M.Rawski Wstęp do Informatyki 26 Załadunek plecaka zastosowanie metody zachłannej ci Posortuj pakowane przedmioty według nie rosnących wartości ai Pakuj je do plecaka w otrzymanym porządku, dopóki się mieszczą W przykładzie liczbowym: c1 31 3 c2 19 1 c3 27 c4 7 = =7 , = =9 , = = 9, = =7 a1 4 4 a2 2 2 a3 3 a4 1 c c c c zatem 2 ≥ 3 ≥ 1 ≥ 4 i ta lista wyznacza kolejność pakowania: a2 a3 a1 a4 a2 a2 a2 a2 W =2≤6 → x2 = 1 + a3 = 5 ≤ 6 → x3 = 1 + a3 + a1 = 9 > 6 → x1 = 0 + a3 + a4 = 6 ≤ 6 → x4 = 1 , c2 + c3 + c4 = 53 ⇒ sA = 1 najgorszym przypadku algorytm daje upakowanie o dobroci sA ≤ 2 złożoność algorytmu = złożoność sortowania = O(N ∗ log N) M.Rawski Wstęp do Informatyki 27 UWAGI o złożoności problemów: • po raz pierwszy wykazano NP-zupełność dla problemu spełnialności zdania logicznego (Cook w 1971 r.) • są problemy, dla których udowodniono, że należą do klasy NP, ale nie są ani NP-zupełne, ani nie należą do klasy P , np. sprawdzenie czy dana liczba jest liczbą pierwszą • są problemy, których złożoność wykładniczą można udowodnić przez podanie dolnych ograniczeń czasowych (i to nie tylko takie, jak wieże Hanoi, dla których z góry wiadomo ile iteracji wykona algorytm), np. stwierdzenie czy dla danej konfiguracji w uogólnionych szachach N x N istnieje strategia wygrywająca dla jednego z przeciwników M.Rawski Wstęp do Informatyki 28 UWAGI cd są problemy spełnialności, dla których także można udowodnić złożoność wykładniczą np. w dynamicznej logice zdań 2N są problemy, dla których pokazano podwójnie wykładnicze O ( 2 ) dolne ograniczenia czasowe, np. spełnialność w arytmetyce Presburgera są problemy algorytmiczne, dla których udowodniono, że mają wykładnicze dolne ograniczenia pamięciowe są ciekawe przypadki problemów, dla których efektywne w praktyce algorytmy mają złożoność wykładniczą, ale znaleziono dla nich algorytm wielomianowy sprawujący się w większości przypadków wyraźnie gorzej - zadanie programowania liniowego, algorytm sympleksowy (wykładniczy) i algorytm Karmarkara (1979) M.Rawski Wstęp do Informatyki 29 Klasy złożoności algorytmów podwójnie wykładnicza arytmetyka Presburgera szachy, warcaby uogólnione wykładnicza małpie układanki, spełnialność, ładowanie plecaka NP-zupełne NP P (wielomianowa) logarytmiczna M.Rawski Wstęp do Informatyki sprawdzanie czy liczba jest pierwsza sortowanie wyszukiwanie w uporządkowanej liście 30