Test Arka: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 42: | Linia 42: | ||
pamięci, a mianowicie ograniczamy jej ilość przez funkcję logarytmiczną. Przypomnijmy: | pamięci, a mianowicie ograniczamy jej ilość przez funkcję logarytmiczną. Przypomnijmy: | ||
* Klasa L = SPACE(log<math>n</math>), to klasa tych języków, które mogą być akceptowane w deterministycznej pamięci logarytmicznej, | * Klasa L <nowiki>=</nowiki> SPACE(log<math>n</math>), to klasa tych języków, które mogą być akceptowane w deterministycznej pamięci logarytmicznej, | ||
* Klasa NL = NSPACE(log<math>n</math>), to klasa tych języków, które mogą być akceptowane w niedeterministycznej pamięci logarytmicznej, | * Klasa NL <nowiki>=</nowiki> NSPACE(log<math>n</math>), to klasa tych języków, które mogą być akceptowane w niedeterministycznej pamięci logarytmicznej, | ||
* Klasa coNL = coNSPACE(log<math>n</math>), to dopełnienie klasy tych języków, które mogą być akceptowane w niedeterministycznej pamięci logarytmicznej, | * Klasa coNL <nowiki>=</nowiki> coNSPACE(log<math>n</math>), to dopełnienie klasy tych języków, które mogą być akceptowane w niedeterministycznej pamięci logarytmicznej, | ||
Na podstawie następnego rozdziału i twierdzenia Immermana-Szelepcsényi'ego dowiemy się, że NL=coNL . Natomiast pytanie czy L=NL pozostaje | Na podstawie następnego rozdziału i twierdzenia Immermana-Szelepcsényi'ego dowiemy się, że NL=coNL . Natomiast pytanie czy L<nowiki>=</nowiki>NL pozostaje | ||
wciąż problemem otwartym. | wciąż problemem otwartym. | ||
Linia 93: | Linia 93: | ||
</div></div> | </div></div> | ||
Bardzo ciekawy rezultat, który zbliżył nas do odpowiedzi na pytanie czy L=NL, uzyskał w 2004 Reingold. Pokazał on, że | Bardzo ciekawy rezultat, który zbliżył nas do odpowiedzi na pytanie czy L<nowiki>=</nowiki>NL, uzyskał w 2004 Reingold. Pokazał on, że | ||
problem UNDIRECTED REACHABILITY, czyli osiągalność w grafie ''nieskierowanym'' należy do klasy L. | problem UNDIRECTED REACHABILITY, czyli osiągalność w grafie ''nieskierowanym'' należy do klasy L. | ||
Linia 105: | Linia 105: | ||
{{twierdzenie|[Uzupelnij]|| | {{twierdzenie|[Uzupelnij]|| | ||
(twierdzenie Immermana-Szelepcsényi'ego) | (twierdzenie Immermana-Szelepcsényi'ego) | ||
Jeśli <math>f(n)</math> jest konstruowalna pamięciowo, to NSPACE(f(n))=coNSPACE(f(n)). | Jeśli <math>f(n)</math> jest konstruowalna pamięciowo, to NSPACE(f(n))<nowiki>=</nowiki>coNSPACE(f(n)). | ||
}} | }} | ||
Linia 150: | Linia 150: | ||
{<math>u\in S(i-1)</math>} | {<math>u\in S(i-1)</math>} | ||
{licznik++} | {licznik++} | ||
{<math>u=v</math> lub <math>u\rightarrow v \in G</math>}{wynik:=TAK} | {<math>u=v</math> lub <math>u\rightarrow v \in G</math>}{wynik:<nowiki>=</nowiki>TAK} | ||
{<math>licznik<s(i-1)</math>}{NIE} {wynik} | {<math>licznik<s(i-1)</math>}{NIE} {wynik} | ||
Linia 217: | Linia 217: | ||
że jeżeli <math>L</math> jest NP-zupełny, to jego dopełnienie <math>\overline{L}</math> jest coNP-zupełne. | że jeżeli <math>L</math> jest NP-zupełny, to jego dopełnienie <math>\overline{L}</math> jest coNP-zupełne. | ||
Jak wiele pytań w teorii złożoności obliczeniowej również i to, czy NP=coNP pozostaje otwarte. | Jak wiele pytań w teorii złożoności obliczeniowej również i to, czy NP<nowiki>=</nowiki>coNP pozostaje otwarte. | ||
Możemy jedynie stwierdzić, że jeżeli P=NP, to NP=coNP, gdyż P jest zamknięta na dopełnienie. | Możemy jedynie stwierdzić, że jeżeli P<nowiki>=</nowiki>NP, to NP<nowiki>=</nowiki>coNP, gdyż P jest zamknięta na dopełnienie. | ||
Jednak już implikacja w drugą stronę nie jest znana. Inna podobna implikacja to: | Jednak już implikacja w drugą stronę nie jest znana. Inna podobna implikacja to: | ||
{{cwiczenie|| | {{cwiczenie|| | ||
Jeśli <math>L</math> jest coNP-zupełny i <math>L\in NP</math> to NP=coNP. | Jeśli <math>L</math> jest coNP-zupełny i <math>L\in NP</math> to NP<nowiki>=</nowiki>coNP. | ||
}} | }} | ||
Linia 245: | Linia 245: | ||
{1cm} | {1cm} | ||
[width=10cm]{ZO-13-1-rys.jpg}<br> | [width<nowiki>=</nowiki>10cm]{ZO-13-1-rys.jpg}<br> | ||
Relacje pomiędzy klasami NP, coNP i DP | Relacje pomiędzy klasami NP, coNP i DP | ||
Linia 354: | Linia 354: | ||
Wprowadzamy też skróty dla najpopularniejszych klas: | Wprowadzamy też skróty dla najpopularniejszych klas: | ||
* Klasa AP = ATIME <math>(n^k) = \bigcup_{j>0} </math> ATIME <math>(n^j)</math>, to klasa tych języków, które mogą być akceptowane w alternującym czasie wielomianowym, | * Klasa AP <nowiki>=</nowiki> ATIME <math>(n^k) = \bigcup_{j>0} </math> ATIME <math>(n^j)</math>, to klasa tych języków, które mogą być akceptowane w alternującym czasie wielomianowym, | ||
* Klasa AL = ASPACE(log<math>n</math>), to klasa tych języków, które mogą być akceptowane w alternującej pamięci logarytmicznej, | * Klasa AL <nowiki>=</nowiki> ASPACE(log<math>n</math>), to klasa tych języków, które mogą być akceptowane w alternującej pamięci logarytmicznej, | ||
Nietrudno się domyślić, że alternacja jest silniejsza niż niedeterminizm z definicji działania maszyn. Wiemy zatem, w szczególności, że | Nietrudno się domyślić, że alternacja jest silniejsza niż niedeterminizm z definicji działania maszyn. Wiemy zatem, w szczególności, że | ||
Linia 412: | Linia 412: | ||
# Jeśli <math>f(n)\geqslant n</math> to ATIME <math>(f(n)) \subseteq </math> SPACE <math>(f(n))</math>, | # Jeśli <math>f(n)\geqslant n</math> to ATIME <math>(f(n)) \subseteq </math> SPACE <math>(f(n))</math>, | ||
# Jeśli <math>f(n)\geqslant n</math> to SPACE <math>(f(n)) \subseteq </math> ATIME <math>(f^2(n))</math>, | # Jeśli <math>f(n)\geqslant n</math> to SPACE <math>(f(n)) \subseteq </math> ATIME <math>(f^2(n))</math>, | ||
# Jeśli <math>f(n)\geqslant </math> log <math>n</math> to ASPACE <math>(f(n)) \subseteq </math> TIME <math>(c^{f(n)})</math>. | # Jeśli <math>f(n)\geqslant </math> log <math>n</math> to ASPACE <math>(f(n)) \subseteq </math> TIME <math>(c^{f(n)})</math>. | ||
# Jeśli <math>f(n)\geqslant </math> log <math>n</math> to ASPACE <math>(f(n)) \supseteq </math> TIME <math>(c^{f(n)})</math>. | # Jeśli <math>f(n)\geqslant </math> log <math>n</math> to ASPACE <math>(f(n)) \supseteq </math> TIME <math>(c^{f(n)})</math>. | ||
Linia 435: | Linia 438: | ||
{1cm} | {1cm} | ||
[width=10cm]{ZO-13-2-rys.jpg}<br> | [width<nowiki>=</nowiki>10cm]{ZO-13-2-rys.jpg}<br> | ||
Zapis przebiegu obliczeń | Zapis przebiegu obliczeń | ||
Linia 453: | Linia 456: | ||
rzecz w teorii złożoności. Wiemy zatem, że: | rzecz w teorii złożoności. Wiemy zatem, że: | ||
* AL=P, | * AL<nowiki>=</nowiki>P, | ||
* APSPACE = EXP, | * APSPACE <nowiki>=</nowiki> EXP, | ||
* AP=PSPACE. | * AP<nowiki>=</nowiki>PSPACE. | ||
==Hierarchia wielomianowa== | ==Hierarchia wielomianowa== | ||
Linia 474: | Linia 477: | ||
{1cm} | {1cm} | ||
[width=10cm]{ZO-13-3-rys.jpg}<br> | [width<nowiki>=</nowiki>10cm]{ZO-13-3-rys.jpg}<br> | ||
Klasy relatywne | Klasy relatywne | ||
Linia 504: | Linia 507: | ||
{1cm} | {1cm} | ||
[width=10cm]{ZO-13-4-rys.jpg}<br> | [width<nowiki>=</nowiki>10cm]{ZO-13-4-rys.jpg}<br> | ||
Hierarchia wielomianowa | Hierarchia wielomianowa | ||
Linia 543: | Linia 546: | ||
</div></div> | </div></div> | ||
Zachodzi również podobny fakt. Otóż, jeśli P=NP (albo tylko NP=coNP), to hierarchia kolapsuje już na pierwszym poziomie. | Zachodzi również podobny fakt. Otóż, jeśli P<nowiki>=</nowiki>NP (albo tylko NP<nowiki>=</nowiki>coNP), to hierarchia kolapsuje już na pierwszym poziomie. | ||
Można by się zastanowić, czy kolejne poziomy hierarchii wielomianowej są interesujące z punku widzenia problemów, które pozwalają one rozwiązać. | Można by się zastanowić, czy kolejne poziomy hierarchii wielomianowej są interesujące z punku widzenia problemów, które pozwalają one rozwiązać. | ||
Linia 578: | Linia 581: | ||
łatwo rozstrzygać w wielomianowej pamięci relacje, charakteryzujące problemy z PH, które opisywaliśmy wcześniej. | łatwo rozstrzygać w wielomianowej pamięci relacje, charakteryzujące problemy z PH, które opisywaliśmy wcześniej. | ||
Jak nietrudno się domyślić pytanie, czy PH=PSPACE jest otwarte. Bardzo interesujące jest jednak, że gdyby równość zachodziła, to | Jak nietrudno się domyślić pytanie, czy PH<nowiki>=</nowiki>PSPACE jest otwarte. Bardzo interesujące jest jednak, że gdyby równość zachodziła, to | ||
ponieważ PSPACE zawiera problemy zupełne, to PH również by je zawierała, stąd zapadła by się na pewnym skończonym poziomie. Stąd przekonanie, | ponieważ PSPACE zawiera problemy zupełne, to PH również by je zawierała, stąd zapadła by się na pewnym skończonym poziomie. Stąd przekonanie, | ||
że PH zawiera się silnie w PSPACE. | że PH zawiera się silnie w PSPACE. | ||
Linia 611: | Linia 614: | ||
# Jeśli <math>f(n)\geqslant n</math> to ATIME <math>(f(n)) \subseteq </math> SPACE <math>(f(n))</math>, | # Jeśli <math>f(n)\geqslant n</math> to ATIME <math>(f(n)) \subseteq </math> SPACE <math>(f(n))</math>, | ||
# Jeśli <math>f(n)\geqslant n</math> to SPACE <math>(f(n)) \subseteq </math> ATIME <math>(f^2(n))</math>, | # Jeśli <math>f(n)\geqslant n</math> to SPACE <math>(f(n)) \subseteq </math> ATIME <math>(f^2(n))</math>, | ||
# Jeśli <math>f(n)\geqslant </math> log <math>n</math> to ASPACE <math>(f(n)) \subseteq </math> TIME <math>(c^{f(n)})</math>. | # Jeśli <math>f(n)\geqslant </math> log <math>n</math> to ASPACE <math>(f(n)) \subseteq </math> TIME <math>(c^{f(n)})</math>. | ||
Wersja z 11:46, 28 lip 2006
{article}
{}{0.5cm} {}{0.8cm} {}{ -0.4cm} {}{ -0.4cm} {}{1mm} 14.6pt
{} {} {}
{proof}{ Dowód: }{} {hint}{ Wskazówka: }{} {sol}{ Rozwiązanie: }{}
{empty}
{ Informacje}
Przedmiot & Złożoność obliczeniowaModuł & 13
Tytuł & Pamięć logarytmiczna i hierarchia wielomianowa
Opracowanie & Przemysław Broniek
{ Syllabus} Pamięć logarytmiczna i hierarchia wielomianowa
- klasy L, NL i coNL,
- Twierdzenie Immermana-Szelepcsényi'ego,
- klasy coNP i DP,
- maszyny alternujące,
- hierarchia wielomianowa.
Klasy L, NL i coNL
W tym rozdziale zajmiemy się klasami złożoności, w których dajemy bardzo restrykcyjne wymagania odnośnie zużywanej pamięci, a mianowicie ograniczamy jej ilość przez funkcję logarytmiczną. Przypomnijmy:
- Klasa L = SPACE(log), to klasa tych języków, które mogą być akceptowane w deterministycznej pamięci logarytmicznej,
- Klasa NL = NSPACE(log), to klasa tych języków, które mogą być akceptowane w niedeterministycznej pamięci logarytmicznej,
- Klasa coNL = coNSPACE(log), to dopełnienie klasy tych języków, które mogą być akceptowane w niedeterministycznej pamięci logarytmicznej,
Na podstawie następnego rozdziału i twierdzenia Immermana-Szelepcsényi'ego dowiemy się, że NL=coNL . Natomiast pytanie czy L=NL pozostaje wciąż problemem otwartym.
Przyjrzymy się teraz problemom zupełnym w klasie NL. Zupełność definiujemy przy pomocy redukcji w pamięci logarytmicznej, gdyż jak wiemy, wszystkie z powyższych klas są zawarte w klasie P (chociaż nie wiemy, czy ściśle). Dopuszczenie redukcji wielomianowej zniwelowałoby jakiekolwiek różnice pomiędzy językami, gdyż sama redukcja miałaby moc obliczeniową pozwalającą rozwiązać wszystkie problemy z tych klas. Poniższy problem okazuje się być NL-zupełny:
Definicja [Uzupelnij]
Problem REACHABILITY:
Wejście: Graf skierowany oraz wierzchołki i .
Wyjście: Czy istnieje ścieżka od do w ?
Ćwiczenie
Bardzo ciekawy rezultat, który zbliżył nas do odpowiedzi na pytanie czy L=NL, uzyskał w 2004 Reingold. Pokazał on, że problem UNDIRECTED REACHABILITY, czyli osiągalność w grafie nieskierowanym należy do klasy L.
Twierdzenie Immermana-Szelepcsényi'ego
Ten rozdział poświęcony jest bardzo ciekawemu i całkiem młodemu wynikowi udowodnionemu niezależnie przez Neila Immermana i Róberta Szelepcsényi'ego w roku 1987, za który otrzymali w 1995 nagrodę Gödel'a.
Twierdzenie mówi o tym, że klasy niedeterministyczne złożoności pamięciowej są zamknięte na dopełnienie:
Twierdzenie [Uzupelnij]
(twierdzenie Immermana-Szelepcsényi'ego) Jeśli jest konstruowalna pamięciowo, to NSPACE(f(n))=coNSPACE(f(n)).
Dowód [Uzupelnij]
To co zostało pokazane przez autorów, to maszyna niedeterministyczna, która mając dany graf skierowany i wierzchołek potrafi obliczyć liczbę wierzchołków osiąganych z w grafie przy użyciu pamięci log . Zrobimy z niej użytek w ostatniej części głównego dowodu, gdy będziemy uruchamiać ją na grafie konfiguracji.
Maszyna jest dosyć trikowa i pokazuje jak wiele daje nam niedeterminizm. Wielokrotnie będziemy wykorzystywać fakt, że wystarczy nam, aby maszyna niedeterministyczna na dowolnej ścieżce dokonała poprawnego obliczenia. Na wszystkich pozostałych ścieżkach będziemy "wykrywać", że coś jest nie tak i kończyć działanie w stanie odrzucającym ("poddawać się").
Oznaczmy, przez zbiór tych wierzchołków grafu , które są osiągane z ścieżką o długości co najwyżej . Natomiast przez oznaczymy liczność tego zbioru. Naszym obiektem zainteresowania jest zatem obliczenie wartości , czyli liczba wszystkich wierzchołków osiągalnych, gdyż -- rozmiar grafu -- ogranicza długość ścieżki.
Pamiętamy jednak, że mamy do dyspozycji tylko logarytmiczną ilość pamięci, więc o zapamiętaniu zbioru (i obliczaniu na jego podstawie co byłoby banalne) nie możemy marzyć - ma on wielkość liniową względem rozmiaru . To brzmi niesamowicie, ale będziemy obliczać na podstawie ! Czyli wystarczy nam liczba stosownych wierzchołków, która to do zapisu potrzebuje pamięci logarytmicznej. Główna pętla algorytmu przedstawia się następująco:
{} { to } {Wyznacz na podstawie }
Teraz procedura obliczająca . Jest ona całkiem prosta, jeśli zastosujemy w niej pewien skrót notacyjny:
{} {} {}{s(i)++}
Lecz zbioru nie byliśmy w stanie zapamiętać. Zapowiedzielśmy już, że będziemy sprawdzać, czy wierzchołek do niego należy, na podstawie . To najbardziej skomplikowana część algorytmu, gdzie wykorzystujemy niedeterminizm.
Przeglądniemy teraz wszystkie wierzchołki grafu i sprawdzimy, czy któryś z nich należy do w sposób niedeterministyczny. Przypomnijmy, że taka procedura, gdy mówi "TAK", to wierzchołek na pewno należy do , natomiast gdy mówi "NIE" to mogliśmy trafić na nieodpowiednią ścieżkę obliczeń. Będziemy jednak zliczać ile wierzchołków zgadliśmy na TAK i sprawdzimy, czy wyjdzie nam . Jeśli tak się stanie, to będziemy mieć gwarancję, że o każdym wierzchołku zgadliśmy dobrze. Jeśli wyszło nam mniej, to odrzucamy, wiedząc, że na innej ścieżce obliczeń musi nam się udać. Następnie sprawdzamy, czy z można dojść do przy pomocy jednej krawędzi w ten sposób obliczymy czy :
{} {} {} {licznik++} { lub }{wynik:=TAK}
{}{NIE} {wynik}
Teraz przejdźmy do konstrukcji maszyny obliczającej, czy w sposób niedeterministyczny. Algorytm jest całkiem prosty i podobny do tego, w którym pokazywaliśmy, że REACHABILITY jest w NL. Zgadujemy sekwencję wierzchołków. Rozpoczynamy od . Sprawdzamy, czy każdy kolejny wierzchołek jest sąsiadem poprzedniego (lub równy poprzedniemu) oraz czy w końcu dochodzimy do . W ten sposób sprawdzimy (niedeterministycznie) wszystkie ścieżki długości co najwyżej .
Poniżej zapis algorytmu dla sytuacji ścieżki długości :
{} { to } {zgadnij } { i nie zachodzi }{NIE}
{}{TAK} {NIE}
To już koniec algorytmu. Krótka analiza wykazuje, że w trakcie jego działania musimy pamiętać jedynie skończoną liczbę wierzchołków i liczb wielkości co najwyżej zatem działa on w pamięci logarytmicznej.
Przejdźmy zatem do wykorzystania maszyny do udowodnienia tezy naszego twierdzenia. Weźmy język należący do NSPACE(), gdzie log , gdyż jest konstruowalna pamięciowo. Istnieje zatem maszyna niedeterministyczna akceptująca w pamięci niedeterministycznej. Musimy pokazać, że istnieje maszyna niedeterministyczna akceptująca również w pamięci . Bierzemy graf konfiguracji dla słowa wejściowego . Musimy stwierdzić, czy nie istnieje ścieżka od konfiguracji początkowej do akceptującej. Wtedy bowiem czyli ma zaakceptować .
Oznaczmy konfigurację akceptującą przez . Liczymy zatem zbiór dla grafu konfiguracji przy pomocy algorytmu z pierwszej części dowodu. Jeśli algorytm zakończy się wynikiem pozytywnym, to oznacza to, że jest policzone poprawnie. Jeśli zatem w trakcie przeglądania nie zakwalifikowaliśmy wierzchołka do żadnego ze zbiorów to znaczy, że nie jest on osiągalny.
W tej sytuacji maszyna może zaakceptować słowo , które nie należy do , a tym samym pokazujemy, że coNSPACE .

Klasy coNP i DP
Wprowadziliśmy już zarówno klasę NP jak i pojęcie dopełnień klas. Przyjrzyjmy się bliżej klasie coNP. Klasa NP, jest to zbiór tych języków, dla których możemy łatwo weryfikować przynależność słów. Klasa coNP natomiast, to zbiór tych języków, dla których możemy łatwo weryfikować, że słowo nie należy do języka.
Podobnie jak dla NP i twierdzenia Fagina, można scharakteryzować coNP jako zbiór własności teoriografowych wyrażalnych w uniwersalnej logice drugiego rzędu.
Oto przykłady problemów z klasy coNP:
Definicja [Uzupelnij]
Problem TAUTOLOGY:
Wejście: formuła logiczna jak dla problemu SAT.
Wyjście: czy każde wartościowanie spełnia ?
Definicja [Uzupelnij]
Problem HAMILTON PATH COMPLEMENT:
Wejście: graf nieskierowany .
Wyjście: czy nie zawiera ścieżki Hamiltona?
W powyższych problemach weryfikacja negatywna słowa wejściowego jest łatwa, bo opiera się na zgadnięciu wartościowania niespełniającego lub ścieżki Hamiltona.
Nietrudno udowodnić (patrz ćwiczenie końcowe), że są to problemy zupełne dla klasy coNP. Nie jest to nic zaskakującego, bowiem równie prosto można udowodnić, że jeżeli jest NP-zupełny, to jego dopełnienie jest coNP-zupełne.
Jak wiele pytań w teorii złożoności obliczeniowej również i to, czy NP=coNP pozostaje otwarte. Możemy jedynie stwierdzić, że jeżeli P=NP, to NP=coNP, gdyż P jest zamknięta na dopełnienie. Jednak już implikacja w drugą stronę nie jest znana. Inna podobna implikacja to:
Ćwiczenie
Poniższy rysunek przedstawia relacje pomiędzy poznanymi klasami i omawianą za chwilę klasą DP:
{1cm}
[width=10cm]{ZO-13-1-rys.jpg}
Relacje pomiędzy klasami NP, coNP i DP
{1cm}
Oczywiście przyglądając się wszystkim takim rysunkom należy pamiętać, że mogą one w wielu miejscach kolapsować.
Klasa DP
Zastanówmy się nad następującym problemem:
Przykład [Uzupelnij]
Problem EXACT TSP:
Wejście: graf nieskierowany ważony i liczba
Wyjście: czy optymalna trasa komiwojażera dla ma wartość dokładnie ?
Jest to wersja dokładna znanego problemu optymalizacyjnego -- problemu komiwojażera. Wiemy że wersja decyzyjna TSP(D) jest NP-zupełna. Nietrudno pokazać również, że EXACT TSP i TSP(D) są wielomianowo równoważne (ćwiczenie końcowe), tzn., że jeśli jeden z nich ma rozwiązanie w czasie wielomianowym to drugi też. W tym rozdziale sklasyfikujemy złożoność EXACT TSP dokładniej przy pomocy klasy DP. Nie umiemy bowiem pokazać, że EXACT TSP należy do NP, wszak jak poświadczyć i szybko zweryfikować, że długość optymalnej trasy wynosi dokładnie ? Widzimy, że odpowiedź na to pytanie wymaga stwierdzenia, że trasa ma długość co najmniej i co najwyżej , co sugeruje pewne specyficzne połączenie problemu TSP(D) i jego dopełnienia.
Definicja [Uzupelnij]
Klasa DP to zbiór języków takich, że , gdzie natomiast .
Przy tak postawionej definicji EXACT TSP należy do DP. Jest on bowiem przecięciem języka TSP(D) i TSP(D) COMPLEMENT, tzn. koszt trasy wynosi dokładnie , gdy jest równy co najwyżej (to przynależność do TSP(D)) oraz co najmniej (to przynależność słowa do TSP(D) COMPLEMENT).
Klasa DP posiada problemy zupełne. Rozważmy problem następujący:
Przykład [Uzupelnij]
Problem SAT-UNSAT:
Wejście: formuły logiczne i jak dla SAT.
Wyjście: czy formuła jest spełnialna, natomiast niespełnialna?
Ćwiczenie
Również wspomniany na początku problem EXACT TSP jest DP-zupełny. Można rozważać także wiele innych wersji EXACT znanych problemów NP-zupełnych, które okazują się DP-zupełne.
Klasa DP zawiera także problemy DP-zupełne innego rodzaju:
Przykład [Uzupelnij]
Problem CRITICAL SAT:
Wejście: formuła logiczna jak dla SAT.
Wyjście: czy formuła jest nie spełnialna, natomiast usunięcie dowolnej klauzuli sprawia, że jest spełnialna?
Przykład [Uzupelnij]
Problem CRITICAL HAMILTON PATH:
Wejście: graf nieskierowany
Wyjście: czy nie ma ścieżki Hamiltona, natomiast dodanie dowolnej krawędzi do powoduje, że już ją posiada?
Maszyny alternujące
W tym rozdziale przedstawimy ciekawe uogólnienie niedeterminizmu, zwane alternacją. Przypomnijmy, że maszyna niedeterministyczna akceptuje słowo, gdy na którejkolwiek ze ścieżek obliczeń trafi do stanu akceptującego.
Maszyna alternująca ma więcej możliwości. Każdy z jej stanów jest oznaczony poprzez "AND" lub "OR", które nazywamy odpowiednio stanami uniwersalnymi i egzystencjalnymi.
Gdy maszyna jest w stanie typu "OR", to dokonuje akceptacji gdy dowolna ze ścieżek obliczeń wychodzących z niego akceptuje słowo. Tak właśnie działają zawsze zwykłe maszyny niedeterministyczne.
Stany typu "AND" są rozszerzają tą funkcjonalność. Maszyna dokonuje akceptacji będąc w takim stanie, gdy każda ze ścieżek obliczeń wychodzących z tego stanu jest akceptująca.
Miarę złożoności czasowej i pamięciowej maszyn alternujących definiujemy zupełnie tak jak dla maszyn niedeterministycznych, tzn. funkcja jest miarą złożoności czasowej, gdy każda ze ścieżek obliczeń ma długość ograniczoną przez oraz złożoność pamięciową gdy na każdej ze ścieżek obliczeń maszyna zużywa co najwyżej pamięci.
Definicja [Uzupelnij]
Poprzez Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \textsc{ATIME}(f(n))} oznaczamy zbiór języków takich, że są akceptowane przez alternującą maszynę Turinga o złożoności czasowej .
Definicja [Uzupelnij]
Poprzez Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \textsc{ASPACE}(f(n))} oznaczamy zbiór języków takich, że są akceptowane przez alternującą maszynę Turinga o złożoności pamięciowej .
Wprowadzamy też skróty dla najpopularniejszych klas:
- Klasa AP = ATIME ATIME , to klasa tych języków, które mogą być akceptowane w alternującym czasie wielomianowym,
- Klasa AL = ASPACE(log), to klasa tych języków, które mogą być akceptowane w alternującej pamięci logarytmicznej,
Nietrudno się domyślić, że alternacja jest silniejsza niż niedeterminizm z definicji działania maszyn. Wiemy zatem, w szczególności, że zawiera w sobie . Poniższe ćwiczenie pokazuje, że o AP można powiedzieć więcej:
Ćwiczenie
To jednak nie wszystko co potrafi klasa AP. Znajdują się w niej języki, o których nie wiemy czy należą do NP lub coNP.
Definicja [Uzupelnij]
Problem MIN-FORMULA:
Wejście: formuła logiczna jak dla problemu SAT.
Wyjście: czy jest minimalna, tzn. czy żadna krótsza formuła nie jest jej równoważna?
Ćwiczenie
Teraz przedstawimy kilka relacji pomiędzy klasami obliczeń alternujących:
Twierdzenie [Uzupelnij]
Następujące relacje są prawdziwe:
- Jeśli to ATIME SPACE ,
- Jeśli to SPACE ATIME ,
- Jeśli log to ASPACE TIME .
- Jeśli log to ASPACE TIME .
Dowód [Uzupelnij]
Dowód własności od 1 do 3 jest przedmiotem ćwiczenia końcowego. Własność 4 wymaga trochę więcej pracy. Zauważmy, że musimy symulować maszynę działającą w czasie wykładniczym od dostępnej nam pamięci! Nie mamy zatem miejsca na potencjalną ilość pamięci, która może być potrzebna. Okazuje się jednak, że można sobie z tym poradzić:
Weźmy dowolną maszynę deterministyczną działającą w czasie . Będziemy symulować jej obliczenia od końca. Najpierw ustalamy, bez straty ogólności, że jest tylko jedna końcowa konfiguracja akceptująca, np. z całkowicie pustą taśmą , głowicą w komórce o numerze 1 i stanie .
Możemy przedstawić całe obliczenie w formie następującej tabelki przedstawiającej w rzędach kolejne zawartości taśmy, a w kolumnach czas. Dla uproszczenia przyjmijmy, że taśma jest jedna, i że pozycję głowicy notujemy specjalnym zapisem w tym miejscu pamięci, które ona odczytuje (podobnie notujemy stan). W ten sposób zawartość komórki zależy tylko od zawartości komórek , i :
{1cm}
[width=10cm]{ZO-13-2-rys.jpg}
Zapis przebiegu obliczeń
{1cm}
Teraz rozpoczynamy od dolnej części tabeli, której zawartość znamy i chcemy sprawdzić, czy obliczenie rozpoczęło się od pierwszego wiersza, który jest wejściem i którego zawartość też znamy.
Jeśli chcemy zweryfikować wartość komórki , to w trybie "OR" zgadujemy zawartość komórek , i . Następnie w trybie "AND" weryfikujemy ich poprawność i zgodność przejścia od , , do .
Ile pamięci jest nam potrzebne? Musimy pamiętać tylko wskaźniki do miejsc w wielkiej tabeli przedstawionej na rysunku, które sa rozmiaru log , co jest rzędu .

Dzięki wymienionym relacjom pomiędzy klasami alternującymi możemy udowodnić kilka dokładnych równości pomiędzy klasami, a to rzadka rzecz w teorii złożoności. Wiemy zatem, że:
- AL=P,
- APSPACE = EXP,
- AP=PSPACE.
Hierarchia wielomianowa
W tej części zdefiniujemy całą hierarchię klas ponad znanymi nam już P i NP, która stanowi pewne uogólnienie problematyki spotkanej w klasie DP.
W poprzednich rozdziałach zdefiniowaliśmy pojęcie maszyny z wyrocznią na język oznaczanej przez . Przypomnijmy, że jest to zwykła maszyna z dodatkową możliwością zadania pytania postaci "czy ?" które kosztuje jedną jednostkę czasu. Rozszerzenie tego pojęcia na klasy jest naturalne. Poprzez oznaczamy zbiór tych języków, które mogą być rozstrzygane przez maszyny z klasy z wyrocznią na dowolny język z klasy .
Ta klasa okazuje się być mocniejsza od DP, bowiem w DP mogliśmy zadań pytanie tylko raz (dotyczące coNP, ale w sensie wyroczni działa to jak pytanie do NP), a tutaj dowolną liczbę razy i to na dodatek pytań adaptywnych, tzn. takich, które mogą zależeć od wyników odpowiedzi na poprzednie z nich. Kolejną interesującą klasą jest . Wszystkie te klasy dają nam coraz większe możliwości, lecz oczywiście nie wiadomo, czy są to ściśle większe klasy, choć panuje takie przekonanie:
{1cm}
[width=10cm]{ZO-13-3-rys.jpg}
Klasy relatywne
{1cm}
Postępując w ten sposób Meyer i Stockmeyer w latach 70 zdefiniowali całą hierarchię klas:
Definicja [Uzupelnij]
Hierarchia wielomianowa, to ciąg klas indeksowany poprzez :
- dla ,
- dla ,
- dla .
Dodatkowo poprzez oznaczamy sumę wszystkich tych klas, czyli:
.
Ponieważ na poziomie zerowym wszystkie elementy hierarchii to P, więc na poziomie pierwszym, ponieważ taka wyrocznia nic nie daje, otrzymujemy . Drugi poziom, to klasy. Warto zwrócić uwagę, że jest dopełnieniem na każdym poziomie wprost z definicji. Zawieranie się poszczególnych elementów na jednym poziomie obrazuje poniższy rysunek:
{1cm}
[width=10cm]{ZO-13-4-rys.jpg}
Hierarchia wielomianowa
{1cm}
Do tej pory często odwoływaliśmy się do odpowiedniości pomiędzy klasą NP a szczególnymi relacjami wielomianowo zrównoważonymi i rozstrzygalnymi. Przedstawimy teraz zgrabną charakteryzację klas z hierarchii wielomianowej przy pomocy podobnego kryterium:
Twierdzenie [Uzupelnij]
Niech będzie językiem, . Język należy do wtedy i tylko wtedy, gdy istnieje wielomianowo zrównoważona i rozstrzygalna relacja (-argumentowa), taka, że dokładnie wtedy, gdy takie, że jest spełnione (-ty kwantyfikator jest uniwersalny, gdy jest parzyste, natomiast egzystencjalny, gdy jest nieparzyste).
Hierarchia wielomianowa jest strukturą dosyć wrażliwą na kolapsy, tzn. równości klas na pewnym poziomie. Okazuje się, że wtedy przenoszą się one automatycznie w górę:
Ćwiczenie
Zachodzi również podobny fakt. Otóż, jeśli P=NP (albo tylko NP=coNP), to hierarchia kolapsuje już na pierwszym poziomie.
Można by się zastanowić, czy kolejne poziomy hierarchii wielomianowej są interesujące z punku widzenia problemów, które pozwalają one rozwiązać. Okazuje się, że na każdym poziomie hierarchii posiada ona problemy zupełne:
Definicja [Uzupelnij]
Problem QSAT :
Wejście: formuła logiczna jak dla problemu SAT poprzedzona naprzemiennymi grupami kwantyfikatorów egzystencjalnych i uniwersalnych:
.
Wyjście: czy jest prawdziwa?
Twierdzenie [Uzupelnij]
Problem jest -zupełny dla .
Jednak pytanie czy istnieje problem PH-zupełny (czyli zupełny dla całej hierarchii) jest otwarte i panuje przekonanie, że tak nie jest, gdyż:
Ćwiczenie
Jak silna jest cała hierarchia? Można łatwo zauważyć, że zawiera się ona w znanej już nam klasie PSPACE, ze względu na fakt, że można łatwo rozstrzygać w wielomianowej pamięci relacje, charakteryzujące problemy z PH, które opisywaliśmy wcześniej.
Jak nietrudno się domyślić pytanie, czy PH=PSPACE jest otwarte. Bardzo interesujące jest jednak, że gdyby równość zachodziła, to ponieważ PSPACE zawiera problemy zupełne, to PH również by je zawierała, stąd zapadła by się na pewnym skończonym poziomie. Stąd przekonanie, że PH zawiera się silnie w PSPACE.
Na koniec ciekawy rezultat autorstwa Seinosuke Tody (laureata nagrody Gödel'a z roku 1998) związany z klasą PH. Pokazał on, że , czyli wyrocznia na klasę jest niesamowicie silna i pozwala pochłonąć tak misternie zbudowaną piramidę coraz silniejszych klas.
Ćwiczenia dodatkowe
Ćwiczenie
Ćwiczenie
Ćwiczenie