Złożoność obliczeniowa/Wykład 14: Pamięć wielomianowa i złożoność wykładnicza: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 1: | Linia 1: | ||
==Klasa PSPACE== | |||
W tym module zajmiemy się klasą PSPACE, która, przypomnijmy, jest klasą tych języków, które są akceptowane przez maszynę deterministyczną w pamięci wielomianowej. | |||
Na podstawie twierdzenia Savitcha wiemy jednak, że jest ona równa klasie NPSPACE, czyli języków, które są akceptowane przez maszynę niedeterministyczną w pamięci wielomianowej. | |||
Klasa PSPACE posiada wiele naturalnych problemów zupełnych, które omawiamy w następnej części. Zupełność definiujemy przy pomocy wielomianowej redukcji jak w poprzednich rozdziałach. | |||
==Problemy PSPACE-zupełne== | |||
Najbardziej naturalny i pierwszy problem PSPACE-zupełny, który zdefiniujemy wywodzi się oczywiście z SAT: | |||
{{definicja|2.1|| | |||
Problem <math>\textnormal{QSAT}</math>:<br> | |||
Wejście: formuła logiczna <math>\phi</math> jak dla problemu SAT poprzedzona | |||
dowolną liczbą naprzemiennych kwantyfikatorów: <math>\Phi=\exists{x_1}\forall{x_2}\exists{x_3}\ldots Q{x_k}\phi</math>.<br> | |||
Wyjście: czy <math>\Phi</math> jest prawdziwa? | |||
}} | |||
Przypomnijmy, że na użytek hierarchii wielomianowej definiowaliśmy problem <math>\textnormal{QSAT}_i</math>, który mógł mieć <math>i</math> naprzemiennych | |||
kwantyfikatorów, natomiast tutaj może być ich dowolna ilość. Fakt, że kwantyfikatory muszą występować na zmianę nie jest istotnym ograniczeniem, gdyż można kwantyfikować po zmiennych, które w formule nie występują. Problem ten w literaturze pojawia się też jako QBF (ang. Quantified Boolean Formula). | |||
{{twierdzenie|2.2|| | |||
Problem <math>\textnormal{QSAT}</math> jest PSPACE-zupełny. | |||
}} | |||
{{dowod||| | |||
W pierwszym kroku pokażmy, że QSAT należy do PSPACE. Weźmy dowolną formułę <math>\Phi=\exists{x_1}\forall{x_2}\exists{x_3}\ldots Q{x_k}\phi</math>. | |||
Skonstruujemy algorytm rekurencyjny rozwiązujący powyższy problem. Podstawa rekurencji to sytuacja, w której <math>\Phi</math> nie zawiera kwantyfikatorów. W takiej sytuacji zakładamy, że wszystkie zmienne są uniwersalnie skwantyfikowane i sprawdzamy czy formuła jest prawdziwa poprzez rozważenie wszystkich możliwych wartościowań (po kolei w tej samej pamięci). | |||
Teraz rozważmy <math>\Phi=\exists{x}\Phi'</math>. W tej sytuacji przeglądamy | |||
możliwe wartościowania dla <math>x</math>. Ustalamy najpierw <math>x=0</math> i rozważamy formułę <math>\Phi'</math> z tak ustalonym <math>x</math>. Wywołujemy algorytm rekurencyjnie. Jeśli <math>\Phi'</math> okazuje się prawdziwa to i <math>\Phi</math> jest prawdziwa. W przeciwnym wypadku rozważamy <math>x=1</math>. | |||
Analogicznie dzieje się, gdy <math>\Phi=\forall{x}\Phi'</math>. Tym razem dla | |||
obu wartościowań <math>x</math> formuła <math>\Phi'</math> musi być prawdziwa (co ponownie sprawdzamy w sposób rekurencyjny), aby <math>\Phi</math> była prawdziwa. Cały algorytm działa w pamięci wielomianowej, bo głębokość rekurencji | |||
jest liniowa. | |||
Następnie pokażmy, że każdy problem z klasy PSPACE redukuje się do QSAT. Posłużymy się ideą podobną do tej z twierdzenia Savitcha, tzn. rozważmy osiągalność w grafie konfiguracji maszyny. | |||
Weźmy dowolny język L z klasy PSPACE. Jest on akceptowany przez maszynę M działającą w pamięci wielomianowej. Chcemy na podstawie maszyny M i słowa <math>x</math> zbudować formułę <math>\Phi</math>, która będzie prawdziwa wtedy i tylko wtedy, gdy <math>x\in L</math>. | |||
Przypomnijmy, że <math>x\in L</math> wtedy i tylko wtedy, gdy istnieje ścieżka | |||
od konfiguracji początkowej do końcowej w grafie konfiguracji. Oznaczmy <math>|x|=n</math>. Każda konfiguracja ma rozmiar wielomianowy ze względu na <math>n</math>, zatem wszystkich konfiguracji jest rzędu <math>c^{n^k}</math>. | |||
Naszym zadaniem jest zbudowanie formuły <math>PATH_i(x,y)</math>, która będzie | |||
prawdziwa wtedy i tylko wtedy, gdy istnieje ścieżka od konfiguracji <math>x</math> do <math>y</math> zawierająca co najwyżej <math>2^i</math> wierzchołków. W naszej sytuacji logarytm długości ścieżki jest rzędu <math>n^k</math>. Odpowiedź na pytanie czy słowo należy do L otrzymamy rozważając prawdziwość <math>PATH_{n^k}(start,accept)</math>, gdzie <math>start</math> oznacza konfigurację początkową, a <math>accept</math> akceptującą. | |||
Będziemy budować formułę <math>PATH_i(x,y)</math>, w której <math>\phi</math> jest w dysjunktywnej postaci normalnej (alternatywy implikantów), a nie | |||
koniunktywnej postaci (koniunkcji alternatyw) jak wymaga tego SAT. Takie podejście jest technicznie łatwiejsze, natomiast pod koniec dowodu wyjaśnimy jak sobie z tym poradzić. | |||
Konfiguracje <math>x</math> i <math>y</math> będziemy reprezentować poprzez <math>n^k</math> zmiennych binarnych. Na początku skonstruujemy <math>PATH_0(x,y)</math>. Nasza formuła musi kodować sytuację <math>x=y</math> lub <math>y</math> osiągalne z <math>x</math> przez M w jednym kroku. W dysjunktywnej postaci normalnej jest to możliwe do zakodowania przy użyciu <math>n^k</math> implikantów. | |||
Teraz konstruujemy <math>PATH_{i+1}(x,y)</math> przy pomocy <math>PATH_i(x,y)</math>. Intuicyjnie można to zrobić następująco: | |||
<center><math>PATH_{i+1}(x,y)=\exists{t}PATH_i(x,t)\wedge PATH_i(t,y),</math></center> | |||
gdzie <math>t</math> to konfiguracja pośrednia kodowana przez nowy komplet <math>n^k</math> zmiennych. Niestety postępując w ten prosty sposób rozmiar | |||
ostatecznej formuły będzie wykładniczy, gdyż na każdym poziomie formuła przyrasta dwukrotnie. | |||
Rozwiążemy ten problem używając jednej kopii formuły <math>PATH_i(x,y)</math>. | |||
Ten sprytny zabieg przedstawia się następująco: | |||
<center><math>PATH_{i+1}(x,y)=\exists{t}\forall{p}\forall{q}(((x=p\wedge | |||
t=q)\vee(t=p\wedge y=q))\Rightarrow PATH_i(p,q),</math></center> | |||
gdzie <math>t,p,q</math> to stosowne komplety <math>n^k</math> używanych do zapisu konfiguracji. Używamy dwukrotnie formuły <math>PATH_i</math> co odpowiada w pewnym sensie pracy w tej samej pamięci. Łatwo sprawdzić, że powyższa formuła koduje to samo, co wykładnicza formuła przedstawiona wcześniej, jednak nad jej postacią musimy jeszcze popracować. | |||
Pierwszy ruch to przesunięcie kwantyfikatorów z <math>PATH_i(x,y)</math> tak, | |||
aby formuła była w postaci preneksowej (wszystkie kwantyfikatory na | |||
początku). Można to jednak zrobić przesuwając je za istniejące | |||
kwantyfikatory na podstawie prostych własności logicznych. | |||
Następnie musimy doprowadzić część formuły bez kwantyfikatorów, czyli: | |||
<center><math>(((x=p\wedge t=q)\vee(t=p\wedge y=q))\Rightarrow \phi_i</math></center> | |||
do postaci dysjunktywnej tak, aby nie używać <math>\phi_i</math> dwukrotnie. | |||
Powyższa formuła jest równoważna: | |||
<center><math>(((x\neq p\vee t\neq q)\wedge(t\neq p\vee y\neq q))\vee | |||
\phi_i(p,q),</math></center> | |||
przy czym pierwszą część można ostatecznie zapisać przy pomocy 16 implikantów (w rzeczywistości <math>16n^{2k}</math>, gdyż przypomnijmy, że <math>x,y,p,t,q</math> odpowiadają <math>n^k</math> zmiennym binarnym). | |||
W ten sposób zapisanie <math>PATH_{n^k}(x,y)</math> na każdym poziomie będzie | |||
wymagało dopisania <math>16n^{2k}</math> implikantów oraz <math>3n^k</math> | |||
kwantyfikatorów, a więc ostatecznie rozmiar całej formuły będzie wielomianowy. | |||
Zredukowaliśmy dowolny język <math>L</math> z PSPACE do QSAT w wersji dysjunktywnej. Jest to jednak dopełnienie QSAT w wersji koniunktywnej. Stosując obustronne dopełnienie otrzymujemy redukcję dowolnego języka z coPSPACE do QSAT (w wersji koniunktywnej). Jednak PSPACE = coPSPACE, więc w rzeczywistości pokazana redukcja nam | |||
wystarcza. | |||
}} | |||
Oto przykład dwóch innych problemów, których będziemy używać w dalszej części. Ich PSPACE-zupełność jest przedmiotem ćwiczenia końcowego: | |||
{{definicja|2.3|| | |||
Problem IN PLACE ACCEPTANCE (akceptacja w miejscu)<br> | |||
Wejście: maszyna M i słowo <math>x</math><br> | |||
Wyjście: czy maszyna M akceptuje słowo <math>x</math> używając <math>|x|</math> pamięci? | |||
}} | |||
{{definicja|2.4|| | |||
Problem IN PLACE DIVERGENCE (rozbieżność w miejscu)<br> | |||
Wejście: maszyna M<br> | |||
Wyjście: czy maszyna M pętli się używając <math>|M|</math> pamięci? | |||
}} | |||
===Optymalizacja periodyczna=== | |||
Wśród problemów PSPACE-zupełnych znajdują się wersje ''periodyczne'' (inaczej okresowe) znanych problemów. Jako pierwszy rozważmy problem PERIODIC GRAPH COLORING. Polega on na kolorowaniu grafu periodycznego. Poniższy przykład powinien wszystko wyjaśnić: | |||
[[ZO-14-0a-rys.jpg(Graf periodyczny)]] | |||
Na powyższym rysunku widać nieskończony graf periodyczny i jego skończony zwięzły zapis. Krawędź oznaczona etykietą <math>+1</math> oznacza, że następuje połączenie pomiędzy wierzchołkami z grup odległych o 1. W takim zapisie możemy stosować również etykiety oznaczone większymi liczbami oraz liczbami ujemnymi. | |||
Naszym zadaniem jest obliczenie liczby chromatycznej grafu periodycznego lub stwierdzenie czy jest mniejsza niż <math>k</math> dla wersji decyzyjnej. Dla powyższego grafu wynosi ona 2, mimo, iż graf jest nieskończony! | |||
Podobnie można przedstawić problem PERIODIC SAT. Tym razem formuła jest nieskończona i periodyczna, natomiast w jej zwięzłym zapisie możemy stosować klauzule postaci <math>x\vee y_{+1}\vee \neg z</math>, w których <math>+1</math> oznacza powiązanie pomiędzy zmiennymi z sąsiednich grup. Podobnie jak w normalnym SAT pytamy o istnienie wartościowania spełniającego. | |||
Analizowanie przedstawionych powyżej nieskończonych struktur może wydawać się zadaniem niewykonalnym, jednakże oba powyższe problemy okazują się być PSPACE-zupełne. | |||
{{cwiczenie|2.5|| | |||
Udowodnij, że problem PERIODIC SAT jest PSPACE-zupełny. | |||
}} | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> Zauważ, że wartościowanie spełniające jest okresowe. Skorzystaj z problemu IN PLACE DIVERGENCE. | |||
</div></div> | |||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> Pokażmy najpierw że PERIODIC SAT należy do PSPACE. Załóżmy, że wartościowanie spełniające istnieje. Jest to nieskończony ciąg | |||
wartościowań grup zmiennych <math>\ldots,X_i,X_{i+1},\ldots</math>. Rozmiary <math>X_i</math> odpowiadają zapisowi pojedynczej grupy zmiennych przedstawionym na wejściu (rozmiaru <math>n</math>). | |||
Łatwo zauważyć, że sąsiednie grupy mogą być wartościowane na <math>2^{2n}</math> sposobów, stąd spełniające wartościowanie nieskończone posiada okres o długości co najwyżej tego rzędu, gdyż powtórzy się w nim ta sama para wartościowań sąsiednich grup zmiennych. To pozwala nam przejść od analizy formuł nieskończonych do tych o wykładniczej ilości grup zmiennych. | |||
Wykorzystując maszynę niedeterministyczną zgadujemy wartościowanie wykładniczej długości dla kolejnych grup zmiennych <math>T_i</math> (w tej samej pamięci) sprawdzając na każdym etapie, czy jest spełniające w ramach grupy i odpowiedni fragment w przód i w tył na podstawie uogólnionych klauzul. Na podstawie równości NPSPACE i PSPACE otrzymujemy potrzebny algorytm. | |||
Teraz pokażmy zupełność problemu. Zredukujemy wspomniany PSPACE-zupełny problem IN PLACE DIVERGENCE do PERIODIC SAT. | |||
Bierzemy maszynę M i pytamy czy istnieje dla niej obliczenie nieskończone w miejscu. Kodujemy konfigurację maszyny w pojedynczej grupie zmiennych z problemu PERIODIC SAT. Wzorujemy się na dowodzie twierdzenia Cooka-Levina. Poprawne przejścia pomiędzy konfiguracjami kodujemy przy pomocy uogólnionych klauzul. Jeśli skonstruowana w taki sposób formuła periodyczna jest spełnialna, to w jednoznaczny sposób odpowiada to obliczeniu nieskończonemu maszyny w miejscu. | |||
</div></div> | |||
==Gry== |
Wersja z 20:52, 9 sie 2006
Klasa PSPACE
W tym module zajmiemy się klasą PSPACE, która, przypomnijmy, jest klasą tych języków, które są akceptowane przez maszynę deterministyczną w pamięci wielomianowej.
Na podstawie twierdzenia Savitcha wiemy jednak, że jest ona równa klasie NPSPACE, czyli języków, które są akceptowane przez maszynę niedeterministyczną w pamięci wielomianowej.
Klasa PSPACE posiada wiele naturalnych problemów zupełnych, które omawiamy w następnej części. Zupełność definiujemy przy pomocy wielomianowej redukcji jak w poprzednich rozdziałach.
Problemy PSPACE-zupełne
Najbardziej naturalny i pierwszy problem PSPACE-zupełny, który zdefiniujemy wywodzi się oczywiście z SAT:
Definicja 2.1
Problem Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{QSAT}}
:
Wejście: formuła logiczna jak dla problemu SAT poprzedzona
dowolną liczbą naprzemiennych kwantyfikatorów: .
Wyjście: czy jest prawdziwa?
Przypomnijmy, że na użytek hierarchii wielomianowej definiowaliśmy problem Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{QSAT}_i} , który mógł mieć naprzemiennych kwantyfikatorów, natomiast tutaj może być ich dowolna ilość. Fakt, że kwantyfikatory muszą występować na zmianę nie jest istotnym ograniczeniem, gdyż można kwantyfikować po zmiennych, które w formule nie występują. Problem ten w literaturze pojawia się też jako QBF (ang. Quantified Boolean Formula).
Twierdzenie 2.2
Problem Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{QSAT}} jest PSPACE-zupełny.
Dowód
Oto przykład dwóch innych problemów, których będziemy używać w dalszej części. Ich PSPACE-zupełność jest przedmiotem ćwiczenia końcowego:
Definicja 2.3
Problem IN PLACE ACCEPTANCE (akceptacja w miejscu)
Wejście: maszyna M i słowo
Wyjście: czy maszyna M akceptuje słowo używając pamięci?
Definicja 2.4
Problem IN PLACE DIVERGENCE (rozbieżność w miejscu)
Wejście: maszyna M
Wyjście: czy maszyna M pętli się używając pamięci?
Optymalizacja periodyczna
Wśród problemów PSPACE-zupełnych znajdują się wersje periodyczne (inaczej okresowe) znanych problemów. Jako pierwszy rozważmy problem PERIODIC GRAPH COLORING. Polega on na kolorowaniu grafu periodycznego. Poniższy przykład powinien wszystko wyjaśnić:
ZO-14-0a-rys.jpg(Graf periodyczny)
Na powyższym rysunku widać nieskończony graf periodyczny i jego skończony zwięzły zapis. Krawędź oznaczona etykietą oznacza, że następuje połączenie pomiędzy wierzchołkami z grup odległych o 1. W takim zapisie możemy stosować również etykiety oznaczone większymi liczbami oraz liczbami ujemnymi.
Naszym zadaniem jest obliczenie liczby chromatycznej grafu periodycznego lub stwierdzenie czy jest mniejsza niż dla wersji decyzyjnej. Dla powyższego grafu wynosi ona 2, mimo, iż graf jest nieskończony!
Podobnie można przedstawić problem PERIODIC SAT. Tym razem formuła jest nieskończona i periodyczna, natomiast w jej zwięzłym zapisie możemy stosować klauzule postaci , w których oznacza powiązanie pomiędzy zmiennymi z sąsiednich grup. Podobnie jak w normalnym SAT pytamy o istnienie wartościowania spełniającego.
Analizowanie przedstawionych powyżej nieskończonych struktur może wydawać się zadaniem niewykonalnym, jednakże oba powyższe problemy okazują się być PSPACE-zupełne.
Ćwiczenie 2.5
Udowodnij, że problem PERIODIC SAT jest PSPACE-zupełny.