Złożoność pamięciowa Rozważamy następujac a maszynę Turinga: 1 0 0 1 1 0 1 1 1 1 Taśma wejściowa (read only) 1 0 1 1 0 0 0 1 0 0 1 Taśma robocza (read/write) 0 1 1 0 0 1 0 0 1 Taśma wyjściowa (write only) q i Zakładamy, że maszyna ma jeden stan akceptujacy.
Złożoność pamięciowa Niech L {0, 1} będzie językiem i c > 0 pewna stała. Mówimy, że L SPACE(S(n)) jeżeli istnieje DTM rozstrzygajaca L, która wykorzystuje nie więcej niż cs(n) komórek taśmy roboczej dla każdego słowa wejściowego x o długości n. Niech L {0, 1} będzie językiem i c > 0 pewna stała. Mówimy, że L NSPACE(S(n)) jeżeli istnieje NTM rozstrzygajaca L, która wykorzystuje nie więcej niż cs(n) komórek taśmy roboczej dla każdego słowa wejściowego x o długości n w każdej ścieżce obliczeń. Uwaga: NTM rozstrzyga L jeżeli każda ścieżka obliczeń jest skończona.
Złożoność pamięciowa Uwagi: Pamięć (w przeciwieństwie do czasu) jest zasobem odnawialnym, tj. jedna komórka może być wykorzystywana wielokrotnie. Można łatwo skonstruować DTM, która nie kończy pracy i zużywa 1 komórkę pamieci. Komórki taśmy wejściowej i wyjściowej (dla problemów decyzyjnych wystarczy 1 komórka wyjściowa) nie licza się do złożoności pamięciowej. Ma więc sens rozważać np: klasę SPACE(log n).
Klasy złożoności pamięciowej PSPACE = c>0 SPACE(n c ) NPSPACE = c>0 NSPACE(n c ) L = SPACE(log n) NL = NSPACE(log n)
Złożoność pamięciowa Obserwacja 1 Obliczenia NTM na słowie x można przedstawić w postaci grafu konfiguracji. Wierzchołkami garfu sa konfiguracje c i istnieje łuk od c i do c j jeżeli konfigurację c j można osiagn ać z c i. Słowo jest akceptowane wtedy i tylko wtedy gdy istnieje ścieżka od stanu poczatkowego do akceptujacego w grafie konfiguracji. Obserwacja 2 Liczba możliwych konfiguracji maszyny Turinga zużywajacej nie więcej niż S(n) komórek taśmy roboczej i jednej komórki taśmy wyjściowej dla słowa wejściowego o rozmiarze n jest nie większa niż 2 O(S(n)).
Złożoność pamięciowa K-OSIAGALNOŚĆ (K-REACHABILITY) Zadany jest graf skierowany G = (V, A). Czy w G istnieje ścieżka między dwoma zadanymi wierzchołkami s i t składajaca się z nie więcej niż k wierzchołków? Twierdzenie Problem K-OSIAGALNOŚĆ można rozwiazać w pamięci c 1 log V + c 2 log V log k, gdzie c 1, c 2 sa stałymi. Zatem można sprawdzić czy istnieje ścieżka od s do t w pamięci O(log 2 V ), pomijajac pmięć potrzebna do zakodowania grafu.
Klasy złożoności pamięciowej Twierdzenie L NL P NP PSPACE NPSPACE EXP Nietrywialnymi inkluzjami sa: NL P NP PSPACE NPSPACE EXP
Klasy złożoności pamięciowej Dowód NL P. Niech L NL. Obliczenia odpowiedniej NDTM można przedstawić w postaci grafu konfiguracji: n log n 1 0 0 1 1 0 1 1 0 1 0 1 1 0 c 2 c 0 c 1 c 3 c m 1 0 c i = (10q0110110, 10110q0, 0) 1 Liczba wszystkich konfiguracji wynosi 2 O(log n) zatem jest wielomianowa. 2 Graf konfiguracji można skonstruować w czasie wielomianowym i można w czasie wielomianowym sprawdzić czy istnieje ścieżka od c 0 do konfiguracji akceptujacej c m. Zatem L P. 3 Dowód NPSPACE EXP jest analogiczny.
Klasy złożoności pamięciowej Dowód NP PSPACE. Niech L NP. Konstruujemy DTM, która działa następujaco: dla danego słowa wejściowego x, na taśmie roboczej zapisywane sa kolejno certyfikaty u 1, u 2,..., przy czym kolejny certyfikat nadpisuje poprzedni. Wymaga to wielomianowej pamięci na taśmie roboczej. Maszyna następnie weryfikuje certyfikat w czasie wielomianowym co może wymagać dodatkowej pamięci wielomianowej na taśmie roboczej. Zatem maszyna potrzebuje pamięci wielomianowej na taśmie roboczej i L PSPACE. n 1 0 0 1 1 0 x {0, 1}, x = n n k 1 0 1 1 0 0 0 1 u i {0, 1}, u u i n k 1 0
Klasy złożoności pamięciowej Twierdzenie (Savitch 1970) PSPACE = NPSPACE Dowód: Niech L NSPACE(S(n)). Dla zadanego słowa x {0, 1} rozpatrujemy graf konfiguracji dla odpowiedniej NTM rozstrzygajacej L. Graf konfiguracji ma nie więcej niż 2 O(S(n)) wierzchołków. Nie musimy konstruować całego grafu, wystarczy że potrafimy zidentyfikować następniki każdej konfiguracji. Aby sprawdzić czy x L trzeba sprawdzić czy istnieje ścieżka od c 0 do konfiguracji c m ze stanem akceptujacym składajaca się z nie więcej niż 2 O(S(n)) wierzchołków. Na mocy poprzedniego twierdzenia można to zrobić w pamięci c 1 O(S(n))+c 2 O(S(n) 2 )) = O(S(n) 2 ). Zatem L SPACE(S(n) 2 ). Stad łatwo wynika twierdzenie Savitcha.
Obserwacja Jeżeli P = PSPACE, to P = NP. Nie wiemy czy P = PSPACE ale zakłada się, że P PSPACE a nawet NP PSPACE. Implikacja odwrotna nie musi być prawdziwa, czyli jest możliwe P = NP ale P PSPACE.
Język L jest PSPACE-zupełny jeżeli L PSPACE i L p L dla każdego L PSPACE. Obserwacja Jeżeli jakiś język PSPACE-zupełny jest w P, to PSPACE=P.
TQBF Zadana jest wyrażenie (zdanie logiczne) postaci Q 1 x 1 Q 2 x 2...Q n x n φ(x 1,...,x n ), gdzie Q i jest jednym z dwóch kwantyfikatorów, a φ jest formuła logiczna. Pytamy czy wyrażenie to jest prawdziwe. Przykłady: x 1 x 2 [(x 1 x 2 ) ( x 1 x 2 )] - prawda x 1 x 2 [(x 1 x 2 ) ( x 1 x 2 )] - fałsz Problem x 1 x 2... x n Problem x 1 x 2... x n jest w conp. φ(x 1,...,x n ) jest równoważny SAT i jest w NP. φ(x 1,...,x n ) jest równoważny TAUTOLOGY i
Twierdzenie Problem TQBF jest PSPACE-zupełny.
TQBF GAME Plansza gry jest formuła logiczna φ(x 1,...,x 2n ). Dwóch graczy na przemian ustala wartość logiczna zmiennych x 1, x 2,...,x 2n, w ten sposób, że pierwszy gracz ustala wartość nieparzystych zmiennych a gracz drugi parzystych. Pierwszy gracz wygrywa jeżeli pod koniec gry wartość formuły będzie prawdziwa. Czy pierwszy gracz ma strategię wygrywajac a, tj. czy następujace zdanie jest prawdziwe? x 1 x 2 x 3... x 2n φ(x 1,...,x n ) TQBF GAME jest PSPACE-zupełny. Wielomianowy algorytm weryfikujacy strategię wygrywajac a nie jest znany (gdyby istniał to PSPACE = NP). Strategia jako poddrzewo drzewa gry ma rozmiar wykładniczy.
Przykładowa rozgrywka i strategia wygrywajaca gracza 1:
Inne problemy (gry) PSPACE-zupełne: KÓŁKO I KRZYŻYK Zadana jest plansza o rozmiarach m na n. Gracz 1 stawia na planszy kółka a gracz 2 krzyżyki. Zaczyna gracz 1. Wygrywa ten z graczy, który jako pierwszy ułoży k sasiednich kółek (krzyżyków) w jednym wierszu. Czy gracz 1 ma strategię wygrywajac a? REVERSI Zadana jest plansza o rozmiarach n na n. Gracze na przemian ustawiaja kostki w swoich kolorach na planszy. Kiedy gracz i umieszcza swoja kostkę, wszystkie linie kostek drugiego gracza znajdujace się między jakaś kostka gracza i a kostka umieszczona zmieniaja kolor. Wygrywa gracz, który po zapełnieniu planszy ma na niej więcej kostek swojego koloru.
PARZYSTOŚĆ (EVEN) Czy zadana liczba p jest parzysta? Łatwo sprawdzić, że PARZYSTOŚĆ L. Intuicyjnie, w klasie L sa problemy, które wymagaja zapamiętania tylko stałej liczby indeksów (liczb całkowitych). Twierdzenie Jeżeli L jest językiem regularnym, to L SPACE(O(1)) L.
Twierdzenie 2 OSIAGALNOŚĆ SPACE(log 2 n) OSIAGALNOŚĆ NSPACE(log n)=nl Otwarty problem OSIAGALNOŚĆ L (?) Twierdzenie (Reingold 2008) Jeżeli zadany graf jest nieskierowany (równoważnie dla każdego (i, j) A istnieje (j, i) A), to OSIAGALNOŚĆ L.
Dowód Twierdzenia 2: punkt pierwszy wynika od razu z twierdzenia podanego wcześniej. Aby udowodnić punkt drugi rozpatrzmy obliczenia nideterministyczne: Ścieżkę obliczeń kończymy w stanie akceptujacym jeżeli osiagnięto wierzchołek t i w stanie nieakceptujacym jeżeli w n krokach nie osiagnięto t. Każda ścieżka ma więc długość co najwyżej n i wymaga zapamiętania tylko indeksu bieżacego wierzchołka i licznika wierzchołków.
Język L jest redukowalny w pamięci logarytmicznej do języka L (co oznaczamy jako L l L ) jeżeli istnieje funkcja f obliczalna w pamięci logarytmicznej, taka że x L f(x) L. Język L jest NL-zupełny jeżeli L NL i każdy język L NL jest redukowalny w pamięci logarytmicznej do L.
Złożoność pamięciowa Funkcja f : Σ Σ jest obliczalna w pamięci logarytmicznej jeżeli istniej DTM taka, że dla każdego x Σ, x = n, zapisanego na taśmie wejściowej maszyna kończy pracę i zapisuje f(x) Σ na taśmie wyjściowej oraz wykorzystuje nie więcej niż O(log n) komórek taśmy roboczej.
Twierdzenie OSIAGALNOŚĆ jest problemem NL-zupełnym. Idea dowodu: Wiemy, że OSIAGALNOŚĆ NL. Niech L NL. Istnieje więc NTM, która rozstrzyga język L w pamięci O(log n). Dla zadanego x L konstruujemy gaf konfiguracji G(x) w pamięci O(log n): x (c c i, c j ) G(x) x = n (taśma wejściowa) (c c i, c j ) = O(log n) (taśma robocza) (taśma wyjściowa) Odpowiednia DTM dla każdej pary konfiguracji (cc i, c j ) sprawdza czy istnieje łuk między nimi w G(x). Po sprawdzeniu (c c i, c j ) jest usuwana z taśmy roboczej. x L wtedy i tylko wtedy gdy istnieje ścieżka od konfiguracji poczatkowej do akceptujacej w G(x). c i c j
Wnioski Jeżeli OSIAGALNOŚĆ L, to L = NL L = SPACE(log n) NL SPACE(log 2 n)
Język L conl jeżeli jego dopełnienie L NL Przykład problemu w conl: NIEOSIAGALNOŚĆ Zadany jest graf skierowany G = (V, A). Czy zadane dwa wierzchołki s i t w G nie sa połaczone żadna ścieżka? Twierdzenie (Immerman-Szelepcsenyi 1988) NL = conl
Podsumowanie Obecny stan wiedzy o złożoności pamięciowej/czasowej: L NL P NP PSPACE = NSPACE EXP (1) Wiemy również, że L PSPACE i P EXP. Zatem co najmniej jedna inkluzja w (1) jest ścisła. Nie wiemy jednak która chociaż powszechnie przyjmuje się, że wszystkie.