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(2 N ). 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 1mlnukł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 N Funkcja 10 50 100 300 1000 log 2 N 3 5 6 8 9 N 10 50 100 300 1000 N log 2 N 33 282 664 2468 9965 N 2 100 2500 10 000 90 000 1 000 000 N 3 1000 125 000 1 000 000 27 mln (8 cyfr) 1mld (10 cyfr) 2 N 1024 liczba 16 cyfrowa liczba 31 cyfrowa liczba 91 cyfrowa liczba 302 cyfrowa N! 3,6 mln (7 cyfr) liczba 65 cyfrowa liczba 161 cyfrowa liczba 623 cyfrowa N N 10 mld (11 cyfr) liczba 85 cyfrowa liczba 201 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 Funkcja 10 20 50 100 300 N 2 1/10 000 sek. 1/2500 sek. 1/400 sek. 1/100 sek. 9/100 sek. 2 N 1/1000 sek. 1 sekunda 35,7 lat 400 bilionów stuleci 75 cyfr. liczba stuleci N N 2,8 godziny 3,3 biliony lat 70 cyfr. liczba stuleci 185 cyfr. liczba stuleci 728 cyfr. 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 N 0 N N 0 : f(n) g(n) - oznaczmy ten fakt przez f(n) g(n). Wtedy zachodzi 10 40 10 35 10 30 N N 2 N 1,2 N log 2 N N N log 2 N N 2 2 N N! N N 10 25 10 20 10 15 10 12 10 9 10 6 1000 100 10 2 4 8 16 N 5 N 3 5 N 32 64 128 256 512 1024 M.Rawski Wstęp do Informatyki 5
10 40 N N 2 N 1,2 N 10 35 10 30 Podział funkcji złożoności Można także porównywać funkcje asymptotycznie w oparciu o poprzednio przyjęty warunek 10 25 10 20 10 15 10 12 10 9 10 6 1000 100 10 2 4 8 16 N 5 N 3 5 N 32 64 128 256 512 1024 f ( N ) lim = g( N ) N 0 - oznaczmy ten fakt przez f(n) g(n). Wtedy zachodzi 1 log 2 log 2 N log 2 N N N N log 2 N N 2 N 3 N log N 2 N N! N N 2 2N 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) Kilka pytań wzwiązku z głupią układanką: PROBLEMY TRUDNO ROZWIĄZYWALNE PROBLEMY ŁATWO ROZWIĄZYWALNE Nie istnieją wielomianowe algorytmy Istnieją (rozsądne) wielomianowe algorytmy 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 wgodzinę Funkcja współczesny komputer komputer 100 razy szybszy komputer 1000 razy szybszy N 2 K 10 K 31,6 K 2 N 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
Problem komiwojażera 3 6 9 8 4 Problem polega na znalezieniu w sieci połączeń pomiędzy miastami najkrótszej drogi, która pozwala odwiedzić każde z miast i powrócić do miasta wyjściowego (tzw. cykl). Problem formułowany jest jako poszukiwanie minimalnego pełnego cyklu w grafie z wagami krawędzi W wersji decyzyjnej problem polega na stwierdzeniu czy istnieje cykl o koszcie nie większym niż podana wartość K 3 7 5 3 10 Graf z wagami krawędzi 6 7 5 3 7 4 Minimalny cykl o koszcie 28 M.Rawski Wstęp do Informatyki 11
Problem komiwojażera cd 3 6 9 8 4 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 7 5 3 10 Graf z wagami krawędzi 6 3 7 4 Naiwne rozwiązanie N! 7 5 3 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 nie jest spełnialne (( D E) F) ( F ( D E)) 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 8barw M.Rawski Wstęp do Informatyki 18
Załadunek plecaka 4 1 31zł Zapis w wersji optymalizacyjnej: N = max ci xi i 1,..., N, przy ograniczeniach, N i i= 1,..., N a x b i Zapis w wersji decyzyjnej: czy dla danego K istnieje takie upakowanie, że N N i i = 1,..., N c x K i i= 1,..., N 2 3 1 a i a x b i i 2 3 19zł 27zł 4 7zł Plecak załadowany optymalnie c i 4 3 2 plecak 53 zł 6 b M.Rawski Wstęp do Informatyki 19
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 2 2 1 1 Ścieżka Hamiltona dla 5 wierzchołków Istnieje ścieżka Hamiltona w grafie o N wierzchołkach 2 Cykl komiwojażera odługości 6 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 P 1, P 2,..., P N państw i mamy trzy kolory C, Z i N. Asercja P K = Z oznacza, że państwo P K jest pokolorowane na zielono. Zdanie F ma postać F1 F2, gdzie F 1 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 F 2 składa się ze zdań (( P = C P = C) ( P = Z P = Z) ( P = N P = N)) K L K L K L 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 NP-zupełne P Czy P = NP? M.Rawski Wstęp do Informatyki 25
ALGORYTMY PRZYBLIŻONE praktyczne rozwiązanie dla problemównpc 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: L OPT - długość minimalnego cyklu Hamiltona L APR - długość przybliżonego rozwiązania LAPR miara dobroci rozwiązania przybliżonego: s = OPT istnieje algorytm o złożoności O(N 3 ) wyznaczający w najgorszym przypadku cykl Hamiltona o dobroci s A 1,5 A L M.Rawski Wstęp do Informatyki 26
Załadunek plecaka - zastosowanie metody zachłannej Posortuj pakowane przedmioty według nie rosnących wartości Pakuj je do plecaka w otrzymanym porządku, dopóki się mieszczą c a i i W przykładzie liczbowym: c1 a = 31 1 4 = 7 3 4, c2 a = 19 2 2 = 9 1 2, c3 27 c = = 9, a3 3 a c2 c3 c1 c4 zatem i ta lista wyznacza kolejność pakowania: a a a a 2 3 1 4 a 2 = 2 6 x 2 = 1 a 2 + a 3 = 5 6 x 3 = 1 a 2 + a 3 + a 1 = 9 > 6 x 1 = 0 a 2 + a 3 + a 4 = 6 6 x 4 = 1, c 2 + c 3 + c 4 = 53 s A = 1 W najgorszym przypadku algorytm daje upakowanie o dobroci s A 2 złożoność algorytmu = złożoność sortowania = O(N log N) 4 4 7 = = 1 7 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ń są problemy, dla których pokazano podwójnie wykładnicze dolne ograniczenia czasowe, np. spełnialność w arytmetyce Presburgera są problemy algorytmiczne, dla których udowodniono, że mają wykładnicze dolne ograniczenia pamięciowe O( 2 2N 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 wykładnicza NP-zupełne NP P (wielomianowa) logarytmiczna arytmetyka Presburgera szachy, warcaby uogólnione małpie układanki, spełnialność, ładowanie plecaka sprawdzanie czy liczba jest pierwsza sortowanie wyszukiwanie w uporządkowanej liście M.Rawski Wstęp do Informatyki 30