Institute of Informatics Wrocław University of Technology Poland wersja 0.9
Obliczalność f : N R { sin(1/n) gdy n jest liczba pierwsza f (n) = cos(1/n) w przeciwnym przypadku
Obliczalność f : N R { sin(1/n) gdy n jest liczba pierwsza f (n) = cos(1/n) w przeciwnym przypadku g : N {0, 1} 1 gdy w rozwinięciu dziesiętnym liczby π g(n) = występuje n sasiaduj acych cyfr 1 0 w przeciwnym przypadku
Obliczalność f : N R { sin(1/n) gdy n jest liczba pierwsza f (n) = cos(1/n) w przeciwnym przypadku g : N {0, 1} 1 gdy w rozwinięciu dziesiętnym liczby π g(n) = występuje n sasiaduj acych cyfr 1 0 w przeciwnym przypadku h : N {0, 1} 1 gdy n jest nieparzyste i n = k A k h(n) = gdzie: A = {k < n : k n} 0 w przeciwnym przypadku
Obliczalność t : R R n2 + {0, 1} t(x, (d 11, d 12,..., d nn )) = { 1 π n i=1 d π(i),π(i+1) < x 0 w przeciwnym przypadku
Obliczalność t : R R n2 + {0, 1} t(x, (d 11, d 12,..., d nn )) = F : N Z N N N {0, 1} { 1 π n i=1 d π(i),π(i+1) < x 0 w przeciwnym przypadku 1 gdy istnieja takie liczby x 1,..., x m Z, F(m, (a n ), (b n )) = dla których m i=1 a ix b i i = 0 0 w przeciwnym przypadku
Problemy nierozstrzygalne Dany jest skończony zbiór macierzy 3 3 o elementach będacych liczbami całkowitymi F = {A 1, A 2,..., A n }. Czy macierz zerowa jest iloczynem dowolnej liczby elementów zbioru F (z powtórzeniami)?
Problemy nierozstrzygalne Dany jest skończony zbiór macierzy 3 3 o elementach będacych liczbami całkowitymi F = {A 1, A 2,..., A n }. Czy macierz zerowa jest iloczynem dowolnej liczby elementów zbioru F (z powtórzeniami)? F = A 1 = 3 0 1 0 0 1 1 0 0, A 2 = 0 0 1 1 2 0 0 0 0
Problemy nierozstrzygalne Dany jest skończony zbiór macierzy 3 3 o elementach będacych liczbami całkowitymi F = {A 1, A 2,..., A n }. Czy macierz zerowa jest iloczynem dowolnej liczby elementów zbioru F (z powtórzeniami)? F = A 1 = 3 0 1 0 0 1 1 0 0, A 2 = 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 = A 1 A 2 A 2
Problemy nierozstrzygalne Dany jest skończony zbiór macierzy 3 3 o elementach będacych liczbami całkowitymi F = {A 1, A 2,..., A n }. Czy macierz zerowa jest iloczynem dowolnej liczby elementów zbioru F (z powtórzeniami)? F = A 1 = 3 0 1 0 0 1 1 0 0, A 2 = 0 0 1 1 2 0 0 0 0 0 0 0 0 0 0 0 0 0 = A 1 A 2 A 2 Nie jest możliwe skonstruowanie algorytmu, który rozwiazuje ten problem [1]. [1] Halava, V. and Harju, T.: Mortality in matrix semigroups. American Mathematical Monthly, vol. 108(7), 2001.
Problemy nierozstrzygalne Dane sa dwa skończone zbiory skończonych ciagów symboli ze skończonego zbioru (np. binarne, α i = 001101010, etc.). A = {α 1,..., α n } B = {β 1,..., β n } Czy istnieje takie uporzadkowanie (i k ) 1 k K, K 1, 1 i k n, że: α i1 α i2... α ik = β i1 β i2... β ik?
Problemy nierozstrzygalne Dane sa dwa skończone zbiory skończonych ciagów symboli ze skończonego zbioru (np. binarne, α i = 001101010, etc.). A = {α 1,..., α n } B = {β 1,..., β n } Czy istnieje takie uporzadkowanie (i k ) 1 k K, K 1, 1 i k n, że: A = {0, 01, 110} B = {100, 00, 11} (i 1, i 2, i 3, i 4 ) = (3, 2, 3, 1) α 3 α 2 α 3 α 1 = 110011100 = β 3 β 2 β 3 β 1 α i1 α i2... α ik = β i1 β i2... β ik? (jeśli istnieje jedno rozwiazanie, to istnieje ich nieskończenie wiele)
Problemy nierozstrzygalne Dane sa dwa skończone zbiory skończonych ciagów symboli ze skończonego zbioru (np. binarne, α i = 001101010, etc.). A = {α 1,..., α n } B = {β 1,..., β n } Czy istnieje takie uporzadkowanie (i k ) 1 k K, K 1, 1 i k n, że: A = {0, 01, 110} B = {100, 00, 11} (i 1, i 2, i 3, i 4 ) = (3, 2, 3, 1) α 3 α 2 α 3 α 1 = 110011100 = β 3 β 2 β 3 β 1 α i1 α i2... α ik = β i1 β i2... β ik? (jeśli istnieje jedno rozwiazanie, to istnieje ich nieskończenie wiele) Problem ten jest nierozstrzygalny [2]. [2] Post, E.: A variant of a recursively unsolvable problem, Bulletin of the American Mathematical Society, vol. 52(4), 1946
Rodzaje problemów w matematyce Problemy łatwo rozwiazywalne (= funkcje łatwo obliczalne). Problemy rozwiazywalne, ale trudne: Nie jest znany algorytm rozwiazywania (= obliczania funkcji). Nie jest znany "szybki" algorytm rozwiazywania. Problemy nierozwiazywalne w ogólnym przypadku.
Maszyna Turinga Definicja (DTM) Deterministyczna maszyna Turinga nazywamy czwórkę (K, Σ, δ, s), w której: K skończony zbiór stanów (instrukcji) Σ skończony zbiór symboli (tzw. alfabet) δ : K Σ (K {YES, NO, H}) Σ {,, } funkcja przejścia s K stan poczatkowy Ponadto zbiór Σ zawiera zawsze symbole: symbol pusty symbol końcowy, a zbiór K Σ nie zawiera syboli specjalnych: YES, NO, H,,,,,.
Maszyna Turinga Maszyna Turinga jest formalna reprezentacja pojęcia "algorytm". Dane wejściowe algorytmu sa reprezentowane poprzez ciag symboli x (Σ { }). Efekt działania 1 kroku algorytmu: (q, w, u) (q, w, u ) gdzie: q, q K stan maszyny przed i po wykonaniu kroku w, u Σ słowa po lewej i prawej stronie kursora (poczatkowo: w = x, u = ) w, u Σ słowa po lewej i prawej stronie kursora po wykonaniu kroku
Maszyna Turinga Mówimy, że maszyna M przechodzi z konfiguracji (q, w, u) do konfiguracji (q, w, u ) po k krokach, jeżeli istnieje ciag kroków pośrednich (q i, w i, u i ) (q i+1, w i+1, u i+1 ), i = 1,..., k 1, w których pierwsza konfiguracja to (q, w, u), a ostatnia (q, w, u ).
Maszyna Turinga Piszemy, M(x) = y, gdzie: y = 1 jeśli istnieje q K, takie że δ(q, ) = (YES,, ) oraz maszyna przechodzi z (s, x, ) do (q,, ) w skończonej liczbie kroków 0 jeśli istnieje q K, takie że δ(q, ) = (NO,, ) oraz maszyna przechodzi z (s, x, ) do (q,, ) w skończonej liczbie kroków w u jeśli istnieje q K, takie że δ(q, ) = (H,, ) oraz maszyna przechodzi z (s, x, ) do (q, w, u ) w skończonej liczbie kroków w przeciwnym przypadku
Maszyna Turinga Dodatkowa notacja: M k (x) = y tak jak do tej pory, ale zamiast "w skończonej liczbie kroków" "w co najwyżej k krokach".
Języki Językiem nazywamy podzbiór symboli L (Σ { }). Definicja Język L nazywamy rekurencyjnym, jeśli istnieje M: x L M(x) = 1 x/ L M(x) = 0 Definicja Język L nazywamy rekurencyjnie przeliczalnym, jeśli istnieje M: x L M(x) = 1 x/ L M(x) = Maszyna Turinga rozstrzyga język rekurencyjny. Maszyna Turinga rozpoznaje język rekurencyjnie przeliczalny.
Języki Przykład 1. L = {x jest binarna reprezentacja liczby m : 1<p,q N m = pq} Maszyna, która rozstrzyga ten język jest algorytmem wyliczajacym funkcję: f (x) = 0, jeśli x jest liczba pierwsza, 1 w przeciwnym przypadku
Języki Przykład 3. L = {x : x jest binarna reprezentacja ciagu macierzy 3 3 dla których istnieje ciag mnożeń dajacy w wyniku macierz zerowa} Maszyna, która rozstrzygałaby ten język rozwiazałaby problem "matrix mortality". Taka maszyna nie istnieje, ale istnieje maszyna, która rozpoznaje pozytywne przypadki tego problemu.
Notacja asymptotyczna Niech f, g : R R. Definicja (duże O) f (x) O(g(x)) C R x0 R x x0 f (x) C g(x) Definicja (duża Omega) f (x) Ω(g(x)) C R x0 R x x0 f (x) Cg(x) Definicja (duża Theta) f (x) Θ(g(x)) f (x) O(g(x)) f (x) Ω(g(x)) Definicja (małe o) f (x) o(g(x)) C R x0 R x x0 f (x) C g(x) Uwaga: Zwyczajowo pisze się f (x) = O(g(x)), chociaż to nie jest równość.
Klasa P Problemy, dla których istnieje DTM osiagaj aca jeden ze stanów YES, NO po wykonaniu co najwyżej O(n k ) kroków, dla dowolnego k N, gdzie: n = długość słowa wejściowego x (liczba symboli). Bardziej formalnie: Język L P L jest rekurencyjny i istnieje DTM, która go rozstrzyga w czasie O(n k ). Tzn.: M x L k N x = n M f (n) (x) {0, 1} f (n) = O(n k ).
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny.
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny. Programowanie kwadratowe dla wypukłej funkcji (tzn. min x T Ax, gdzie A jest dodatnio określona, przy liniowych ograniczeniach).
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny. Programowanie kwadratowe dla wypukłej funkcji (tzn. min x T Ax, gdzie A jest dodatnio określona, przy liniowych ograniczeniach). Testowanie pierwszości liczby (NIE: faktoryzacja), Manindra Agrawal, Neeraj Kayal, Nitin Saxena, PRIMES is in P, Annals of Mathematics vol. 160(2), 2004.
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny. Programowanie kwadratowe dla wypukłej funkcji (tzn. min x T Ax, gdzie A jest dodatnio określona, przy liniowych ograniczeniach). Testowanie pierwszości liczby (NIE: faktoryzacja), Manindra Agrawal, Neeraj Kayal, Nitin Saxena, PRIMES is in P, Annals of Mathematics vol. 160(2), 2004. Znajdowanie maksymalnego przepływu w grafie.
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny. Programowanie kwadratowe dla wypukłej funkcji (tzn. min x T Ax, gdzie A jest dodatnio określona, przy liniowych ograniczeniach). Testowanie pierwszości liczby (NIE: faktoryzacja), Manindra Agrawal, Neeraj Kayal, Nitin Saxena, PRIMES is in P, Annals of Mathematics vol. 160(2), 2004. Znajdowanie maksymalnego przepływu w grafie. Wyznaczanie najkrótszego drzewa rozpinajacego grafu.
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny. Programowanie kwadratowe dla wypukłej funkcji (tzn. min x T Ax, gdzie A jest dodatnio określona, przy liniowych ograniczeniach). Testowanie pierwszości liczby (NIE: faktoryzacja), Manindra Agrawal, Neeraj Kayal, Nitin Saxena, PRIMES is in P, Annals of Mathematics vol. 160(2), 2004. Znajdowanie maksymalnego przepływu w grafie. Wyznaczanie najkrótszego drzewa rozpinajacego grafu. Obliczanie dyskretnej transformaty Fouriera.
Przykłady Ważne problemy należace do P: Programowanie liniowe (tzn. minimalizacja liniowej funkcji przy liniowych ograniczeniach) algorytm elipsoidalny. Programowanie kwadratowe dla wypukłej funkcji (tzn. min x T Ax, gdzie A jest dodatnio określona, przy liniowych ograniczeniach). Testowanie pierwszości liczby (NIE: faktoryzacja), Manindra Agrawal, Neeraj Kayal, Nitin Saxena, PRIMES is in P, Annals of Mathematics vol. 160(2), 2004. Znajdowanie maksymalnego przepływu w grafie. Wyznaczanie najkrótszego drzewa rozpinajacego grafu. Obliczanie dyskretnej transformaty Fouriera. 2-SAT (spełnialność formuł boolowskich w postaci CNF z 2 literałami w klauzuli, np: (x 1 x 2 ) (x 1 x 3 ))....
Typowa złożoność Przeważnie dla algorytmów wielomianowych O(n k ), k 1 5. Często teoretycznie lepszy algorytm nie jest używany w praktyce. Przykład: mnożenie macierzy. Najszybszy znany algorytm: O(n 2.37 ), ale ze względu na zbyt duży stały współczynnik algorytm O(n 3 ) jest dużo szybszy dla "typowych" danych (macierze n < 1000).
Niedeterministyczna maszyna Turinga Definicja (NDTM) Nideterministyczna maszyna Turinga nazywamy czwórkę (K, Σ,, s), w której: K skończony zbiór stanów (instrukcji) Σ skończony zbiór symboli (tzw. alfabet) [K Σ] [(K {YES, NO, H}) Σ {,, }] relacja s K stan poczatkowy Ponadto zbiór Σ zawiera zawsze symbole: symbol pusty symbol końcowy, a zbiór K Σ nie zawiera syboli specjalnych: YES, NO, H,,,,,.
Klasa N P Język L N P L jest rekurencyjny i rozstrzygalny przez NDTM w czasie O(n k ).
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe)
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku.
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy.
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera.
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań.
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań. Wyznaczanie liczby chromatycznej grafu (kolorowanie).
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań. Wyznaczanie liczby chromatycznej grafu (kolorowanie). Problemy lokalizacji magazynów (k-centrów, k-median).
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań. Wyznaczanie liczby chromatycznej grafu (kolorowanie). Problemy lokalizacji magazynów (k-centrów, k-median). Wyznaczanie najkrótszego drzewa Steinera.
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań. Wyznaczanie liczby chromatycznej grafu (kolorowanie). Problemy lokalizacji magazynów (k-centrów, k-median). Wyznaczanie najkrótszego drzewa Steinera. Najkrótsze drzewo rozpinajace o co najwyżej k wierzchołkach w grafie n > k - wierzchołkowym.
Przykłady Ważne problemy należace do klasy N P Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań. Wyznaczanie liczby chromatycznej grafu (kolorowanie). Problemy lokalizacji magazynów (k-centrów, k-median). Wyznaczanie najkrótszego drzewa Steinera. Najkrótsze drzewo rozpinajace o co najwyżej k wierzchołkach w grafie n > k - wierzchołkowym. 3-SAT (spełnialność formuł boolowskich w postaci CNF z 3 literałami w klauzuli, np.: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ))....
Redukowalność problemów Definicja (redukowalność) Niech L i L będa językami. Wtedy L L (L jest redukowalny do L ) jeśli istnieje taka funkcja f : Σ Σ, obliczalna przez DTM w czasie wielomianowym, dla której: x L f (x) L
Redukowalność problemów Jeśli L N P to L k-sat [3] Jeśli istnieje wielomianowy algorytm dla k-sat to istnieje dla wszystkich problemów w N P. A więc w pewnym sensie w problemie k-sat zawarta jest cała "trudność" problemu L. Rolę problemu k-sat może pełnić wiele innych problemów kombinatorycznych, teoriografowych, itp. [4] [3] Stephen Cook: "The complexity of theorem proving procedures". Proceedings of the Third Annual ACM Symposium on Theory of Computing, 1971 [4] Richard M. Karp: "Reducibility Among Combinatorial Problems". In: Complexity of Computer Computations, 1972
Redukowalność problemów Definicja Język L N P-complete jeśli: a) L N P b) L N P L L Definicja Język L N P-hard jeśli: L N P L L
Klasa N P-complete Większość znanych problemów w N P jest w N P-complete. Przykład: k-sat programowanie 0-1 (wersja decyzyjna) k-sat : zbiór formuł {C 1,..., C p } Przekształcenie: C = [c ij ], i = 1,..., p, j = 1,..., n, gdzie: 1 jeśli x j C i c ij = 1 jeśli x j C i 0 w przeciwnym przypadku b = [b 1,..., b n ], gdzie: b i = 1 [liczba zanegowanych literałów w C i ] Koniunkcja C 1... C p jest spełniona dla zmiennych boolowskich x = (x 1,..., x n ) wtedy i tylko wtedy, gdy Cx = b.
Przykłady Wszystkie te problemy sa w N P-complete: Programowanie całkowitoliczbowe (i zerojedynkowe) Programowanie kwadratowe w ogólnym przypadku. Problem plecakowy. Problem komiwojażera. Szeregowanie zadań. Wyznaczanie liczby chromatycznej grafu (kolorowanie). Problemy lokalizacji magazynów (k-centrów, k-median). Wyznaczanie najkrótszego drzewa Steinera. Najkrótsze drzewo rozpinajace o co najwyżej k wierzchołkach w grafie n > k - wierzchołkowym. 3-SAT (spełnialność formuł boolowskich w postaci CNF z 3 literałami w klauzuli, np.: (x 1 x 2 x 3 ) ( x 1 x 2 x 3 ))....
Przykłady Problemy wewnatrz N P, ale nie w N P-complete, ani w P (przynajmniej nie wiadomo do tej pory): Faktoryzacja liczby. Stwierdzenie, czy 2 grafy sa izomorficzne. Obliczenie punktu równowagi Nasha gry dwuosobowej o niezerowej sumie.
Złożoność pamięciowa Wróćmy do definicji: Mówimy, że maszyna M przechodzi z konfiguracji (q, w, u) do konfiguracji (q, w, u ) po k krokach, jeżeli istnieje ciag kroków pośrednich (q i, w i, u i ) (q i+1, w i+1, u i+1 ), i = 1,..., k 1, w których pierwsza konfiguracja to (q, w, u), a ostatnia (q, w, u ) Definicja Pamięcia wymagana przez maszynę Turinga dla obliczenia M(x) jest k i=1 w iu i, gdzie k liczba kroków wykonana przed zatrzymaniem. Definicja Maszyna turinga M ma złożoność pamięciowa f (n), jeżeli zatrzymuje się (tzn. przyjmuje wartość M(x) ), zanim k i=1 w iu i > f (n), dla n = x, dla x Σ.
Algorytmy przybliżone Niech: x dane wejściowe problemu A(x) wartość wyliczona algorytmem przybliżonym OPT(x) wartość optymalna Definicja (ρ-aproksymacja) Algorytm nazywamy ρ-aproksymacyjnym, ρ 1, jeśli dla dowolnych danych wejściowych x zachodzi: max{ A(x) OPT(x), OPT(x) A(x) } ρ Definicja (ɛ-aproksymacja) Algorytm nazywamy ɛ-przybliżonym, 0 ɛ 1, jeśli dla dowolnych danych wejściowych x zachodzi: ρ = 1 lub ɛ = 0 algorytm dokładny ρ = lub ɛ = 1 algorytm heurystyczny A(x) OPT(x) max{a(x), OPT(x)} ɛ
Inne klasy złożoności EXP determ. maszyny Turinga działajace w czasie O(2 nk ) problem stopu maszyny Turinga w k krokach uogólnione szachy PSPACE determ. używajace O(n k ) pamięci i dowolnie dużo czasu Q SAT, spełnialność formuł k-sat z dowolnymi kwantyfikatorami (np.: x1 x2 x3 (x 1 x 2 x 3 ) ( x 1 x 2 x 3 )) NEXP niedeterm. działajace w czasie O(2 nk ) L determ. używajace O(log n) pamięci N L niedeterm. używajace O(log n) pamięci NPSPACE niedeterm. używajace O(n k ) pamięci
Inne klasy złożoności APX problemy, dla których istnieje algorytm ρ-przybliżony działajacy w czasie O(n k ), dla pewnego ρ 1 PTAS problemy, dla których istnieje algorytm ρ-przybliżony działajacy w czasie O(n k ), dla każdego ρ 1 #P problemy wyliczeniowe dla problemów decyzyjnych, tzn. dla ilu ścieżek NDTM zachodzi M(x) = 1 (np. ile jest drzew rozpinajacych o długości k?)... i kilkadziesiat innych
Zależności pomiędzy klasami Hierarchia klas: L N L P N P PSPACE EXP NEXP EXPSPACE Do tej pory wiadomo tylko, że: L PSPACE N P = NEXP PSPACE EXPSPACE
Thank you Questions?