|
|
(Nie pokazano 77 wersji utworzonych przez 4 użytkowników) |
Linia 1: |
Linia 1: |
| Przedmiot & '''Z³o¿ono¶æ obliczeniowa''' <br>
| | <quiz type="exclusive"> |
| | When working with character arrays, always reserve enough array elements to hold the string AND its null-terminating character (\0). |
| | <rightoption>True</rightoption> |
| | <wrongoption>False</wrongoption> |
| | </quiz> |
| | ==Testy== |
|
| |
|
| Modu³ & '''13''' <br>
| | <quiz type="exclusive"> |
| | When working with character arrays, always reserve enough array elements to hold the string AND its null-terminating character (\0). |
| | <rightoption>True</rightoption> |
| | <wrongoption>False</wrongoption> |
| | </quiz> |
|
| |
|
| Tytu³ & '''Pamiêæ logarytmiczna i hierarchia wielomianowa''' <br>
| | <quiz> |
| | When working with character arrays, always reserve enough array elements to hold the string AND its null-terminating character (\0). |
| | <rightoption>True</rightoption> |
| | <wrongoption>False</wrongoption> |
| | </quiz> |
|
| |
|
| Opracowanie & '''Przemys³aw Broniek''' <br>
| | <quiz type="exclusive"> |
| | In C++, 14 % 4 = |
| | <option reply="Za mało">1</option> |
| | <option>2</option> |
| | <option reply="Za dużo">3</option> |
| | <wrongoption reply="O wiele za dużo">4</wrongoption> |
| | </quiz> |
| | |
| | <quiz> |
| | In C++, 14 % 4 = |
| | <option reply="Za mało">1</option> |
| | <option>2</option> |
| | <option reply="Za dużo">3</option> |
| | <wrongoption reply="O wiele za dużo">4</wrongoption> |
| | </quiz> |
|
| |
|
| { Syllabus}
| | <quiz> |
| | Variables that are declared, but not initialized, contain |
| | <wrongoption>blank spaces</wrongoption> |
| | <rightoption reply="Tak, pod warunkiem, że są globalne">zeros</rightoption> |
| | <rightoption reply="Jeśli nie są globalne">"garbage" values</rightoption> |
| | <wrongoption reply="Dostajesz pałę!">nothing - they are empty</wrongoption> |
| | </quiz> |
|
| |
|
| Pamiêæ logarytmiczna i hierarchia wielomianowa
| | <quiz type="exclusive"> |
| | Variables that are declared, but not initialized, contain |
| | <wrongoption>blank spaces</wrongoption> |
| | <rightoption reply="Tak, pod warunkiem, że są globalne">zeros</rightoption> |
| | <rightoption reply="Jeśli nie są globalne">"garbage" values</rightoption> |
| | <wrongoption reply="Dostajesz pałę!">nothing - they are empty</wrongoption> |
| | </quiz> |
|
| |
|
| * klasy L, NL i coNL,
| |
|
| |
|
| * Twierdzenie Immermana-Szelepcsényi'ego,
| | <div style="background-color: #bbbbbb; padding: 2em; border: 1px solid black"> |
| | Dlaczego suma <math>\sum_{i=1}^{10}i</math> jest źle wyświetlana w wykładniku potęgi? |
|
| |
|
| * klasy coNP i DP,
| | <math>z^{\sum_{i=1}^{10}i}</math> |
|
| |
|
| * maszyny alternuj±ce,
| |
|
| |
|
| * hierarchia wielomianowa.
| | </div> |
|
| |
|
| ==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
| | <div id="content"> |
| pamiêci, a mianowicie ograniczamy jej ilo¶æ przez funkcjê logarytmiczn±. Przypomnijmy:
| | <div id="navcontainer"> |
| | <ul id="navlist"> |
| | <div><a href="index.xml" class="withChild">Start</a></div> |
|
| |
|
| * Klasa L = SPACE(log<math>n</math>), to klasa tych jêzyków, które mog± byæ akceptowane w deterministycznej pamiêci logarytmicznej,
| | <div id="active" class="withoutChild">Zadanie 1.</div> |
| | <div><a href="zadanie_2.xml" class="withoutChild">Zadanie 2.</a></div> |
| | <div><a href="zadanie_3.xml" class="withoutChild">Zadanie 3.</a></div> |
| | <div><a href="zadanie_4.xml" class="withoutChild">Zadanie 4.</a></div> |
| | <div><a href="zadanie_5.xml" class="withoutChild">Zadanie 5.</a></div> |
| | <div><a href="zadanie_6.xml" class="withoutChild">Zadanie 6.</a></div> |
|
| |
|
| * Klasa NL = NSPACE(log<math>n</math>), to klasa tych jêzyków, które mog± byæ akceptowane w niedeterministycznej pamiêci logarytmicznej,
| | </ul> |
| | </div> |
| | <div id="main"> |
| | <div id="nodeDecoration"> |
| | <p id="nodeTitle">Zadanie 1.</p> |
| | </div> |
| | <script type="text/javascript" src="common.js"></script> <script |
| | type="text/javascript" src="libot_drag.js"></script> |
| | |
| | <div class="iDevice emphasis1"><img alt="Ikona obiektu Pytanie" |
| | class="iDevice_icon" src="icon_question.gif" /> <span |
| | class="iDeviceTitle">Zadanie 1,</span><br /> |
| | <div class="iDevice_inner"> |
| | Liczba <math><msqrt><mrow><mn>3</mn> |
|
| |
|
| * 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,
| | <mo class="MathClass-bin">+</mo> <mn>2</mn><msqrt><mrow> |
| | <mn>2</mn></mrow></msqrt></mrow></msqrt> <mo class="MathClass-bin">−</mo><msqrt><mrow><mn>3</mn> |
| | <mo class="MathClass-bin">−</mo> <mn>2</mn><msqrt><mrow> |
| | <mn>2</mn></mrow></msqrt></mrow></msqrt></math> |
| | <table> |
| | <tbody> |
|
| |
|
| Na podstawie nastêpnego rozdzia³u i twierdzenia Immermana-Szelepcsényi'ego dowiemy siê, ¿e NL=coNL . Natomiast pytanie czy L=NL pozostaje
| | <tr> |
| wci±¿ problemem otwartym.
| | <td><input type="checkbox" name="option9" id="ia0b9" |
| | value="vTrue" |
| | onclick="document.getElementById('sa0b9').style.display = this.checked ? 'block' : 'none';" /></td> |
| | <td>jest dodatnia</td> |
| | <td> |
| | <div id="sa0b9" style="color: rgb(0, 51, 204);display: none;">Poprawnie</div> |
| | </td> |
| | </tr> |
| | <tr> |
|
| |
|
| Przyjrzymy siê teraz problemom zupe³nym w klasie NL. Zupe³no¶æ definiujemy przy pomocy redukcji w pamiêci logarytmicznej, gdy¿
| | <td><input type="checkbox" name="option9" id="ia1b9" |
| 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,
| | value="vTrue" |
| 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:
| | onclick="document.getElementById('sa1b9').style.display = this.checked ? 'block' : 'none';" /></td> |
| | <td>jest wymierna</td> |
| | <td> |
| | <div id="sa1b9" style="color: rgb(0, 51, 204);display: none;">Poprawnie</div> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td><input type="checkbox" name="option9" id="ia2b9" |
| | value="vFalse" |
| | onclick="document.getElementById('sa2b9').style.display = this.checked ? 'block' : 'none';" /></td> |
|
| |
|
| {{definicja|[Uzupelnij]||
| | <td>nale»y do trójkowego zbioru Cantora.</td> |
| Problem REACHABILITY:<br>
| | <td> |
| Wej¶cie: Graf skierowany <math>G</math> oraz wierzcho³ki <math>x</math> i <math>y</math>.<br>
| | <div id="sa2b9" style="color: rgb(0, 51, 204);display: none;">Źle</div> |
| Wyj¶cie: Czy istnieje ¶cie¿ka od <math>x</math> do <math>y</math> w <math>G</math>?
| | </td> |
| }}
| | </tr> |
| | </tbody> |
| | </table> |
|
| |
|
| {{cwiczenie||
| | </div> |
| Poka¿, ¿e problem REACHABILITY jest NL-zupe³ny.
| | </div> |
| }}
| | <div class="noprt" align="right"><a href="index.xml">« |
| | | previous</a> | <a href="zadanie_2.xml">next »</a></div> |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| | </div> |
| Zwróæ uwagê na fakt, ¿e problem REACHABILITY jest zwi±zany z wykonywaniem obliczeñ przez maszynê Turinga.
| | </div> |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Poka¿my najpierw, ¿e problem REACHABILITY nale¿y do NL.
| |
| U¿yjemy dwóch zmiennych <math>v</math> - wierzcho³ek bie¿±cy, oraz <math>u</math> wierzcho³ek kolejny na ¶cie¿ce od <math>x</math> do <math>y</math>.
| |
| | |
| Pocz±tkowo
| |
| ustawiamy <math>v:=x</math>. Poniewa¿ mamy do dyspozycji niedeterminizm to zgadujemy wierzcho³ek <math>u</math> i sprawdzamy, czy jest s±siedni do <math>v</math>.
| |
| Je¶li nie, to przerywamy obliczenie, wiedz±c, ¿e na innej ¶cie¿ce obliczeñ przetworzymy inne mo¿liwo¶ci.
| |
| Je¶li jest s±siedni to sprawdzamy czy <math>u=y</math> co oznacza, ¿e dotarli¶my do celu i akceptujemy parê <math>x</math>, <math>y</math>. W przeciwnym wypadku
| |
| ustawiamy <math>v:=u</math> i kontynuujemy obliczenia.
| |
| | |
| Formalnie nale¿y jeszcze u¿yæ trzeciej zmiennej <math>licznik</math>, która zlicza liczbê kroków, tak aby ostatecznie
| |
| odrzuciæ parê, gdy <math>licznik</math> przekroczy liczbê wierzcho³ków grafu. U¿yli¶my pamiêci rzêdu log <math>n</math> co koñczy dowód pierwszego faktu.
| |
| | |
| Teraz musimy pokazaæ, ¿e ka¿dy inny problem z klasy NL redukuje siê do REACHABILITY
| |
| poprzez redukcjê w pamiêci logarytmicznej. We¼my dowolny jêzyk L z klasy NL i odpowiadaj±c± mu niedeterministyczn± maszynê Turinga
| |
| <math>M</math>.
| |
| | |
| Rozmiar grafu konfiguracji maszyny dzia³aj±cej w pamiêci log <math>n</math> to jak wiemy <math>c^{</math> log <math>n}\in O(n)</math>,
| |
| natomiast sprawdzenie czy <math>x</math> jest akceptowany przez <math>M</math> mo¿emy sprowadziæ do istnienia ¶cie¿ki od konfiguracji pocz±tkowej
| |
| do akceptuj±cej. Jest to zatem instancja problemu REACHABILITY na danych wielko¶ci rzêdu <math>n</math> .
| |
| Nie potrzebujemy konstruowaæ ca³ego grafu, a jedynie stwierdzaæ, czy dwie konfiguracje s± s±siednie, co mo¿emy zrobiæ
| |
| w pamiêci logarytmicznej.
| |
| </div>}}</div>
| |
| | |
| 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 <math>f(n)</math> jest konstruowalna pamiêciowo, to NSPACE(f(n))=coNSPACE(f(n)).
| |
| }}
| |
| | |
| {{dowod|[Uzupelnij]||
| |
| To co zosta³o pokazane przez autorów, to maszyna niedeterministyczna, która maj±c dany graf skierowany <math>G</math> i
| |
| wierzcho³ek <math>x</math> potrafi obliczyæ liczbê wierzcho³ków osi±ganych z <math>x</math> w grafie <math>G</math> przy u¿yciu pamiêci log <math>n</math>.
| |
| 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 <math>S(k)</math> zbiór tych wierzcho³ków grafu <math>G</math>, które s± osi±gane z <math>x</math> ¶cie¿k± o d³ugo¶ci co najwy¿ej <math>k</math>. Natomiast
| |
| przez <math>s(k)=|S(k)|</math> oznaczymy liczno¶æ tego zbioru. Naszym obiektem zainteresowania jest zatem obliczenie warto¶ci <math>s(n)</math>,
| |
| czyli liczba wszystkich wierzcho³ków osi±galnych, gdy¿ <math>n</math> -- 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 <math>S(k)</math> (i obliczaniu na jego podstawie
| |
| <math>S(k+1)</math> co by³oby banalne) nie mo¿emy marzyæ - ma on wielko¶æ
| |
| liniow± wzglêdem rozmiaru <math>G</math>. To brzmi niesamowicie, ale bêdziemy obliczaæ <math>s(k+1)</math> na podstawie <math>s(k)</math>! 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:
| |
| | |
| {<math>s(0):=1</math>}
| |
| {<math>i:=1</math> to <math>n</math>}
| |
| {Wyznacz <math>s(i)</math> na podstawie <math>s(i-1)</math>}
| |
| | |
| Teraz procedura obliczaj±ca <math>s(i)</math>. Jest ona ca³kiem prosta, je¶li zastosujemy w niej pewien skrót notacyjny:
| |
| | |
| {<math>s(i):=0</math>}
| |
| {<math>v\in V(G)</math>}
| |
| {<math>v\in S(i)</math>}{s(i)++}
| |
| | |
| Lecz zbioru <math>S(i)</math> nie byli¶my w stanie zapamiêtaæ. Zapowiedziel¶my ju¿, ¿e bêdziemy sprawdzaæ, czy wierzcho³ek do niego nale¿y,
| |
| na podstawie <math>s(i-1)</math>. To najbardziej skomplikowana czê¶æ algorytmu, gdzie wykorzystujemy niedeterminizm.
| |
| | |
| Przegl±dniemy teraz wszystkie wierzcho³ki <math>u</math> grafu <math>G</math> i sprawdzimy, czy który¶ z nich nale¿y do <math>S(i-1)</math> w sposób niedeterministyczny.
| |
| Przypomnijmy, ¿e taka procedura, gdy mówi "TAK", to wierzcho³ek na pewno nale¿y do <math>S(i-1)</math>, 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 <math>s(i-1)</math>. Je¶li tak siê stanie, to bêdziemy mieæ gwarancjê, ¿e
| |
| o ka¿dym wierzcho³ku <math>u</math> 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 <math>u</math> mo¿na doj¶æ do <math>v</math> przy pomocy jednej krawêdzi w ten sposób obliczymy
| |
| czy <math>v\in S(i)</math>:
| |
| | |
| {<math>licznik:=0, wynik:=NIE</math>}
| |
| {<math>u\in V(G)</math>}
| |
| {<math>u\in S(i-1)</math>}
| |
| {licznik++}
| |
| {<math>u=v</math> lub <math>u\rightarrow v \in G</math>}{wynik:=TAK}
| |
| | |
| {<math>licznik<s(i-1)</math>}{NIE} {wynik}
| |
| | |
| Teraz przejd¼my do konstrukcji maszyny obliczaj±cej, czy <math>u\in S(i-1)</math> 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ê <math>k-1</math> wierzcho³ków. Rozpoczynamy od <math>x</math>. Sprawdzamy, czy ka¿dy kolejny wierzcho³ek jest s±siadem poprzedniego (lub równy poprzedniemu)
| |
| oraz czy w koñcu dochodzimy do <math>u</math>. W ten sposób sprawdzimy (niedeterministycznie) wszystkie ¶cie¿ki d³ugo¶ci co najwy¿ej <math>i-1</math>.
| |
| | |
| Poni¿ej zapis algorytmu dla sytuacji ¶cie¿ki d³ugo¶ci <math>k</math>:
| |
| | |
| {<math>p_1:=x</math>}
| |
| {<math>i := 2</math> to <math>k</math>}
| |
| {zgadnij <math>p_i</math>}
| |
| {<math>p_{i-1}\neq p_i</math> i nie zachodzi <math>p_{i-1}\rightarrow p_i \in G</math>}{NIE}
| |
| | |
| {<math>p_k=u</math>}{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 <math>n</math> zatem dzia³a on w pamiêci logarytmicznej.
| |
| | |
| Przejd¼my zatem do wykorzystania maszyny do udowodnienia tezy naszego twierdzenia. We¼my jêzyk <math>L</math> nale¿±cy do NSPACE(<math>f(n)</math>), gdzie
| |
| <math>f(n)\geqslant </math> log <math>n</math>, gdy¿ <math>f(n)</math> jest konstruowalna pamiêciowo. Istnieje zatem maszyna niedeterministyczna <math>M</math> akceptuj±ca
| |
| <math>L</math> w pamiêci niedeterministycznej. Musimy pokazaæ, ¿e istnieje maszyna niedeterministyczna <math>\overline{M}</math> akceptuj±ca <math>\overline{L}</math> równie¿
| |
| w pamiêci <math>f(n)</math>. Bierzemy graf konfiguracji <math>M</math> dla s³owa wej¶ciowego <math>x</math>. Musimy stwierdziæ, czy nie istnieje ¶cie¿ka od
| |
| konfiguracji pocz±tkowej do akceptuj±cej. Wtedy bowiem <math>x\notin L</math> czyli <math>M'</math> ma zaakceptowaæ <math>x</math>.
| |
| | |
| Oznaczmy konfiguracjê akceptuj±c± przez <math>y</math>.
| |
| Liczymy zatem zbiór <math>S(n)</math> dla grafu konfiguracji przy pomocy algorytmu z pierwszej czê¶ci dowodu.
| |
| Je¶li algorytm zakoñczy siê wynikiem pozytywnym, to oznacza to, ¿e <math>s(n)</math> jest policzone
| |
| poprawnie. Je¶li zatem w trakcie przegl±dania nie zakwalifikowali¶my wierzcho³ka <math>y</math> do ¿adnego ze zbiorów
| |
| <math>S(i)</math> to znaczy, ¿e ''nie'' jest on osi±galny.
| |
| | |
| W tej sytuacji maszyna <math>M'</math> mo¿e zaakceptowaæ s³owo <math>x</math>, które
| |
| nie nale¿y do <math>L</math>, a tym samym pokazujemy, ¿e <math>L\in </math> coNSPACE <math>(f(n))</math>.
| |
| }}
| |
| | |
| ==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:<br>
| |
| Wej¶cie: formu³a logiczna <math>\phi</math> jak dla problemu SAT.<br>
| |
| Wyj¶cie: czy ka¿de warto¶ciowanie spe³nia <math>\phi</math>?
| |
| }}
| |
| | |
| {{definicja|[Uzupelnij]||
| |
| Problem HAMILTON PATH COMPLEMENT:<br>
| |
| Wej¶cie: graf nieskierowany <math>G</math>.<br>
| |
| Wyj¶cie: czy <math>G</math> 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 <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.
| |
| 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:
| |
| | |
| {{cwiczenie||
| |
| Je¶li <math>L</math> jest coNP-zupe³ny i <math>L\in NP</math> to NP=coNP.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Poka¿ inkluzje w obie strony korzystaj±c z symetrii klas.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Ustalmy <math>L</math> z klasy NP, który jest coNP-zupe³ny.
| |
| | |
| We¼my dowolny <math>L'</math> z klasy coNP.
| |
| Poniewa¿ <math>L</math> jest coNP-zupe³ny, wiêc <math>L'</math> redukuje siê do <math>L</math>, czyli
| |
| <math>L'</math> nale¿y do NP, bowiem redukcja jest procedur± deterministyczn±.
| |
| | |
| Analogicznie, we¼my dowolny <math>L'</math> z NP. Wiemy, ¿e <math>\overline{L}</math> jest NP-zupe³ny,
| |
| i nale¿y do coNP. Mo¿emy zatem sprowadziæ <math>L'</math> redukcj± do <math>\overline{L}</math>.
| |
| Zatem <math>L'</math> nale¿y do coNP.
| |
| </div>}}</div>
| |
| | |
| Poni¿szy rysunek przedstawia relacje pomiêdzy poznanymi klasami i omawian± za chwilê klas± DP:
| |
| | |
| {1cm}
| |
| | |
| [width=10cm]{ZO-13-1-rys.jpg}<br>
| |
| 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:
| |
| | |
| {{przyklad|[Uzupelnij]||
| |
| Problem EXACT TSP:<br>
| |
| Wej¶cie: graf nieskierowany wa¿ony <math>G</math> i liczba <math>K</math> <br>
| |
| Wyj¶cie: czy optymalna trasa komiwoja¿era dla <math>G</math> ma warto¶æ dok³adnie <math>K</math>?
| |
| }}
| |
| | |
| 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 <math>K</math>? Widzimy, ¿e odpowied¼ na to pytanie wymaga
| |
| stwierdzenia, ¿e trasa ma d³ugo¶æ co najmniej <math>K</math> i co najwy¿ej <math>K</math>, co sugeruje pewne specyficzne po³±czenie problemu TSP(D) i jego dope³nienia.
| |
| | |
| {{definicja|[Uzupelnij]||
| |
| Klasa DP to zbiór jêzyków <math>L</math> takich, ¿e <math>L=L_1\cap L_2</math>, gdzie <math>L_1\in NP</math> natomiast <math>L_2 \in coNP</math>.
| |
| }}
| |
| | |
| 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
| |
| <math>K</math>, gdy jest równy co najwy¿ej <math>K</math> (to przynale¿no¶æ do TSP(D)) oraz co najmniej <math>K</math> (to przynale¿no¶æ s³owa do TSP(D) COMPLEMENT).
| |
| | |
| Klasa DP posiada problemy zupe³ne. Rozwa¿my problem nastêpuj±cy:
| |
| | |
| {{przyklad|[Uzupelnij]||
| |
| Problem SAT-UNSAT:<br>
| |
| Wej¶cie: formu³y logiczne <math>\phi</math> i <math>\psi</math> jak dla SAT.<br>
| |
| Wyj¶cie: czy formu³a <math>\phi</math> jest spe³nialna, natomiast <math>\psi</math> niespe³nialna?
| |
| }}
| |
| | |
| {{cwiczenie||
| |
| Udowodnij, ¿e problem SAT-UNSAT jest DP-zupe³ny.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Skorzystaj z redukcji jêzyka z NP oraz dope³nienia jêzyka z coNP do SAT.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Najpierw poka¿my, ¿e SAT-UNSAT nale¿y do klasy DP. Musimy wskazaæ stosowne jêzyki <math>L_1</math> i <math>L_2</math> odpowiednio z klas NP i coNP.
| |
| Wybieramy <math>L_1=\{(\phi,\psi):\phi</math> jest spe³nialna <math>\}</math> oraz <math>L_1=\{(\phi,\psi):\psi</math> nie jest spe³nialna <math>\}</math>, o których
| |
| mo¿na to ³atwo stwierdziæ.
| |
| | |
| Przejd¼my do czê¶ci zwi±zanej z pokazaniem redukcji z dowolnego problemu z klasy DP. We¼my <math>L\in</math> DP. Wiemy, ¿e
| |
| <math>L=L_1\cap L_2</math> i na mocy w³asno¶ci klas NP i coNP istniej± redukcje <math>R_1</math> jêzyka <math>L_1</math> do SAT oraz <math>R2</math>
| |
| dope³nienia jêzyka <math>L_2</math> do SAT (jako ¿e <math>L_2</math> jest w coNP). Definiujemy redukcjê jako <math>R(x)=(R_1(x),R_2(x))</math>.
| |
| | |
| Na podstawie konstrukcji wiemy, ¿e <math>x\in L_1</math>, gdy <math>R_1(x)</math> jest spe³niona oraz <math>x\in L_2</math>, gdy <math>R_2(x)</math> jest nie spe³niona.
| |
| zatem <math>x\in L_1 \cap L_2</math> gdy <math>R(x)\in</math>SAT-UNSAT.
| |
| </div>}}</div>
| |
| | |
| 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:
| |
| | |
| {{przyklad|[Uzupelnij]||
| |
| Problem CRITICAL SAT:<br>
| |
| Wej¶cie: formu³a logiczna <math>\phi</math> jak dla SAT.<br>
| |
| Wyj¶cie: czy formu³a <math>\phi</math> jest nie spe³nialna, natomiast usuniêcie dowolnej klauzuli sprawia, ¿e jest spe³nialna?
| |
| }}
| |
| | |
| {{przyklad|[Uzupelnij]||
| |
| Problem CRITICAL HAMILTON PATH:<br>
| |
| Wej¶cie: graf nieskierowany <math>G</math><br>
| |
| Wyj¶cie: czy <math>G</math> nie ma ¶cie¿ki Hamiltona, natomiast dodanie dowolnej krawêdzi do <math>G</math> 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 <math>f(n)</math> jest miar± z³o¿ono¶ci czasowej, gdy ka¿da ze ¶cie¿ek obliczeñ ma d³ugo¶æ ograniczon± przez <math>f(n)</math> oraz z³o¿ono¶æ
| |
| pamiêciow± <math>f(n)</math> gdy na ka¿dej ze ¶cie¿ek obliczeñ maszyna zu¿ywa co najwy¿ej <math>f(n)</math> pamiêci.
| |
| | |
| {{definicja|[Uzupelnij]||
| |
| Poprzez <math>\textsc{ATIME}(f(n))</math> oznaczamy zbiór jêzyków <math>L</math> takich, ¿e s± akceptowane przez alternuj±c± maszynê Turinga <math>M</math> o z³o¿ono¶ci
| |
| czasowej <math>f(n)</math>.
| |
| }}
| |
| | |
| {{definicja|[Uzupelnij]||
| |
| Poprzez <math>\textsc{ASPACE}(f(n))</math> oznaczamy zbiór jêzyków <math>L</math> takich, ¿e s± akceptowane przez alternuj±c± maszynê Turinga <math>M</math> o z³o¿ono¶ci
| |
| pamiêciowej <math>f(n)</math>.
| |
| }}
| |
| | |
| 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 AL = 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
| |
| <math>AP</math> zawiera w sobie <math>NP</math>. Poni¿sze æwiczenie pokazuje, ¿e o AP mo¿na powiedzieæ wiêcej:
| |
| | |
| {{cwiczenie||
| |
| Poka¿, ¿e AP zawiera w sobie klasê coNP.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Poka¿ ¿e problem coNP-zupe³ny TAUTOLOGY nale¿y do AP.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Na mocy wskazówki poka¿emy, ¿e TAUTOLOGY <math>\in</math> AP, a tym samym poniewa¿ AP jest zamkniêta na redukcje, to ca³a klasa coNP zawiera siê w AP.
| |
| | |
| Maszyna dla TAUTOLOGY rozpoczyna dzia³anie od stanu uniwersalnego. Nastêpnie na ka¿dej ze ¶cie¿ek obliczeñ sprawdza inne warto¶ciowanie.
| |
| Je¶li <math>\phi</math> jest spe³niona na danym warto¶ciowaniu, to obliczenie dochodzi do stanu akceptuj±cego. W ten sposób ze wzglêdu
| |
| na swój tryb dzia³ania, maszyna zaakceptuje <math>\phi</math>, gdy jest ona spe³niona dla ka¿dego warto¶ciowania, czyli, gdy jest tautologi± logiczn±.
| |
| </div>}}</div>
| |
| | |
| 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:<br>
| |
| Wej¶cie: formu³a logiczna <math>\phi</math> jak dla problemu SAT.<br>
| |
| Wyj¶cie: czy <math>\phi</math> jest minimalna, tzn. czy ¿adna krótsza formu³a nie jest jej równowa¿na?
| |
| }}
| |
| | |
| {{cwiczenie||
| |
| Poka¿, ¿e MIN-FORMULA nale¿y do AP.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Wykorzystaj dwa tryby alternacji.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| W pierwszej czê¶ci maszyna dzia³a w trybie "AND". Zgadujemy formu³ê <math>\psi</math> krótsz± ni¿ <math>\phi</math>, a nastêpnie
| |
| przestawiamy siê na tryb "OR". Teraz zgadujemy warto¶ciowanie <math>s</math>. Je¶li <math>\phi</math> i <math>\psi</math> s± rozró¿niane przez
| |
| <math>s</math>, tzn. jedna z nich jest spe³niona, a druga nie, to akceptujemy formu³ê <math>\phi</math>.
| |
| | |
| Za³ó¿my nie wprost, ¿e formu³a nie jest minimalna, a mimo to zostaje zaakceptowana.
| |
| Aby tak siê sta³o na ka¿dej ze ¶cie¿ek z pierwszego poziomu alternacji uniwersalnej maszyna musi zaakceptowaæ.
| |
| Je¶li jednak formu³a nie jest minimalna, to istnieje krótsza od niej formu³a <math>\psi</math>, które jest jej równowa¿na. Na ¶cie¿ce obliczeñ
| |
| rozwa¿aj±cej <math>\psi</math> maszyna w drugim poziomie alternacji musi znale¼æ warto¶ciowanie, które rozró¿nia <math>\phi</math> i <math>\psi</math> co jest
| |
| niemo¿liwe, st±d uzyskujemy sprzeczno¶æ.
| |
| </div>}}</div>
| |
| | |
| Teraz przedstawimy kilka relacji pomiêdzy klasami obliczeñ alternuj±cych:
| |
| | |
| {{twierdzenie|[Uzupelnij]||
| |
| | |
| Nastêpuj±ce relacje s± prawdziwe:
| |
| | |
| # 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 </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>.
| |
| | |
| }}
| |
| | |
| {{dowod|[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± <math>M</math> dzia³aj±c± w czasie <math>c^{f(n)}</math>. 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 <math>q_{acc}</math>.
| |
| | |
| 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 <math>d</math> zale¿y tylko od zawarto¶ci komórek <math>a</math>, <math>b</math> i <math>c</math>:
| |
| | |
| {1cm}
| |
| | |
| [width=10cm]{ZO-13-2-rys.jpg}<br>
| |
| 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 <math>d</math>, to w trybie "OR" zgadujemy zawarto¶æ komórek <math>a</math>, <math>b</math> i <math>c</math>. Nastêpnie w trybie
| |
| "AND" weryfikujemy ich poprawno¶æ i zgodno¶æ przej¶cia od <math>a</math>, <math>b</math>, <math>c</math> do <math>d</math>.
| |
| | |
| 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 <math>(c^{f(n)})</math>, co jest rzêdu <math>f(n)</math>.
| |
| }}
| |
| | |
| 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 <math>L</math> oznaczanej przez <math>M^L</math>. Przypomnijmy, ¿e jest to zwyk³a maszyna <math>M</math>
| |
| z dodatkow± mo¿liwo¶ci± zadania pytania postaci "czy <math>x\in L</math>?" które kosztuje jedn± jednostkê czasu. Rozszerzenie tego pojêcia na klasy jest
| |
| naturalne. Poprzez <math>P^{NP}</math> oznaczamy zbiór tych jêzyków, które mog± byæ rozstrzygane przez maszyny z klasy <math>P</math> z wyroczni± na dowolny jêzyk z klasy <math>NP</math>.
| |
| | |
| 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 <math>NP^{NP}</math>. 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}<br>
| |
| 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 <math>i</math>:<br>
| |
| | |
| * <math>\sum_0 P = \prod_0 P = \Delta_0 P = P</math>
| |
| | |
| * <math>\Delta_{i+1} P = P^{\sum_i P},</math> dla <math>i>0</math>,
| |
| | |
| * <math>\sum_{i+1} P = NP^{\sum_i P},</math> dla <math>i>0</math>,
| |
| | |
| * <math>\prod_{i+1} P = coNP^{\sum_i P},</math> dla <math>i>0</math>.
| |
| | |
| Dodatkowo poprzez <math>PH</math> oznaczamy sumê wszystkich tych klas, czyli:<br>
| |
| <math>PH=\bigcup_{i\geqslant 0} \sum_i P</math>.
| |
| }}
| |
| | |
| Poniewa¿ na poziomie zerowym wszystkie elementy hierarchii to P, wiêc na poziomie pierwszym,
| |
| poniewa¿ taka wyrocznia nic nie daje, otrzymujemy <math>\Delta_1 P = P, \sum_1 P = NP, \prod_1 P = coNP</math>.
| |
| Drugi poziom, to klasy<math>\Delta_2 P = P^{NP}, \sum_2 P = NP^{NP}, \prod_2 P = coNP^{NP}</math>.
| |
| Warto zwróciæ uwagê, ¿e <math>\prod_i P</math> jest dope³nieniem <math>\sum_i P</math> 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}<br>
| |
| 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 <math>L</math> bêdzie jêzykiem, <math>i>0</math>. Jêzyk <math>L</math> nale¿y do <math>\sum_i P</math> wtedy i tylko wtedy, gdy istnieje wielomianowo zrównowa¿ona i rozstrzygalna
| |
| relacja <math>R</math> (<math>i+1</math>-argumentowa), taka, ¿e <math>x \in L</math> dok³adnie wtedy, gdy
| |
| <math>\exists{y_1}\forall{y_2}\exists{y_3}\ldots Q{y_i}</math> takie, ¿e <math>R(x,y_1,\ldots,y_i)</math> jest spe³nione (<math>i</math>-ty kwantyfikator jest uniwersalny, gdy <math>i</math> jest
| |
| parzyste, natomiast egzystencjalny, gdy <math>i</math> 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ê:
| |
| | |
| {{cwiczenie||
| |
| Poka¿, ¿e je¿eli dla pewnego <math>i</math> zachodzi <math>\sum_i P = \prod_i P</math> to dla ka¿dego <math>j>i</math> zachodzi <math>\sum_j P = \prod_j P = \Delta_j P = \sum_i P</math>.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Poka¿, ¿e <math>\sum_{i+1} P = \sum P</math>.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Poka¿emy równo¶æ podan± we wskazówce z za³o¿enia <math>\sum_i P = \prod_i P</math>. We¼my dowolny <math>L\in\sum_{i+1} P</math>. Z poprzedniego twierdzenia
| |
| charakteryzuj±cego wiemy, ¿e istnieje relacja <math>i+1</math>-argumentowa <math>R_L</math> dla <math>L</math>. We¼my rzut relacji <math>R_L</math>, w którym pomijamy wspó³rzêdn± <math>y_1</math>.
| |
| Jest to relacja odpowiadaj±ca pewnemu jêzykowi <math>L'</math> z <math>\prod_i P</math> (otrzymujemy to dziêki zastosowaniu negacji i dope³nienia jêzyka dla poprzedniego twierdzenia). W definicji tym razem jako pierwszy wystêpuje
| |
| kwantyfikator uniwersalny.
| |
| | |
| Dziêki równo¶ci klas istnieje dla jêzyka <math>L'</math> <math>i</math>-argumentowa relacja <math>R_{L'}</math>, definiuj±ca go przy u¿yciu kwantyfikatora
| |
| egzystencjalnego na pocz±tku. Dziêki tej zmianie, mo¿emy teraz zmieniæ <math>R_{L'}</math> tak, aby
| |
| uwzglêdniæ usuniêt± wcze¶niej wspó³rzêdn± wspó³rzêdn± <math>y_1</math>, bez dodawania nowego kwantyfikatora, gdy¿ teraz jako pierwszy wystêpuje kwantyfikator
| |
| egzystencjalny, co sprawia, ¿e <math>L\in\sum_{i} P</math>.
| |
| </div>}}</div>
| |
| | |
| 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 <math>_i</math>:<br>
| |
| Wej¶cie: formu³a logiczna <math>\phi</math> jak dla problemu SAT poprzedzona <math>i</math> naprzemiennymi grupami kwantyfikatorów egzystencjalnych i uniwersalnych:
| |
| <math>\Phi=\exists{x_1}\forall{x_2}\exists{x_3}\ldots Q{x_i}\phi</math>.<br>
| |
| Wyj¶cie: czy <math>\Phi</math> jest prawdziwa?
| |
| }}
| |
| | |
| {{twierdzenie|[Uzupelnij]||
| |
| Problem <math>QSAT_i</math> jest <math>\sum_i P</math>-zupe³ny dla <math>i>0</math>.
| |
| }}
| |
| | |
| 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¿:
| |
| | |
| {{cwiczenie||
| |
| Poka¿, ¿e je¶li istnieje problem PH-zupe³ny, to hierarchia zapada siê na pewnym poziomie.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Zauwa¿, ¿e problem zupe³ny musi nale¿eæ do konkretnego poziomu.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Je¶li <math>L</math> jest zupe³ny dla PH, to <math>L</math> nale¿y do <math>\sum_i P</math> dla pewnego <math>i</math>. Wtedy jednak dowolny jêzyk <math>L'</math> z poziomu <math>\sum_{i+1} P</math>
| |
| redukuje siê do <math>L</math> w czasie wielomianowym. Poniewa¿ poziomy hierarchii s± zamkniête na redukcje, st±d <math>L'\in \sum_i P</math>, a w konsekwencji
| |
| <math>\sum_{i+1} P=\sum_i P</math>.
| |
| </div>}}</div>
| |
| | |
| 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
| |
| <math>PH\subseteq P^{PP}</math>, czyli wyrocznia na klasê <math>PP</math> jest
| |
| niesamowicie silna i pozwala poch³on±æ tak misternie zbudowan±
| |
| piramidê coraz silniejszych klas.
| |
| | |
| ==Æwiczenia dodatkowe==
| |
| | |
| {{cwiczenie||
| |
| Poka¿, ¿e problem TAUTOLOGY jest coNP-zupe³ny.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Skorzystaj z faktu, ¿e SAT jest NP-zupe³ny.
| |
| </div>}}</div> | |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| TAUTOLOGY nale¿y do coNP. We¼my dowolny inny problem <math>L</math> z coNP. Wiemy, ¿e <math>\overline{L}</math> nale¿y do NP, wiêc
| |
| jest redukowalny do SAT - problemu NP-zupe³nego, poprzez redukcjê, któr± oznaczymy jako <math>R</math>. Z definicji redukcji
| |
| otrzymujemy, ¿e <math>x\in \overline{L}</math> wtedy i tylko wtedy, gdy <math>R(x)</math> jest spe³nialna. Po zastosowaniu negacji mamy
| |
| , ¿e <math>x\in L</math> wtedy i tylko wtedy, gdy <math>R(x)</math> jest nie spe³nialna, tzn. <math>\neg R(x)</math> jest tautologi±. Sprowadzili¶my zatem
| |
| problem przynale¿no¶ci do dowolnego jêzyka <math>L</math> z coNP do sprawdzania czy pewna formu³a jest tautologi±, co dowodzi
| |
| coNP-zupe³no¶ci problemu TAUTOLOGY.
| |
| </div>}}</div>
| |
| | |
| {{cwiczenie||
| |
| Udowodnij w³asno¶ci od 1 do 3 z twierdzenia [[##tw:arel|Uzupelnic tw:arel|]].
| |
| | |
| # 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 </math> log <math>n</math> to ASPACE <math>(f(n)) \subseteq </math> TIME <math>(c^{f(n)})</math>.
| |
| | |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none"><br>
| |
| Ad. 1 i 3: zasymuluj maszynê alternuj±c± przy pomocy zwyk³ej.<br>
| |
| Ad. 2: skorzystaj z idei zaczerpniêtej z twierdzenia Savitcha.<br>
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none"><br>
| |
| Ad. 1:<br>
| |
| We¼my dowolny jêzyk <math>L\in</math> ATIME <math>(f(n))</math> akceptowany przez alternuj±c± maszynê Turinga <math>M</math>.
| |
| Dokonamy symulacji przy pomocy deterministycznej maszyny w pamiêci <math>f(n)</math>. Wykonujemy algorytm
| |
| rekurencyjnego przegl±dania grafu konfiguracji w g³±b. W momencie powrotu z rekurencji z ostatniego potomka
| |
| danego wierzcho³ka decydujemy na podstawie typu "OR" lub "AND" i akceptacji potomków o tym czy dana konfiguracja
| |
| jest akceptuj±ca. G³êboko¶æ rekurencji to czas obliczeñ maszyny <math>M</math>, czyli <math>f(n)</math>. Na ka¿dy poziom rekurencji
| |
| potrzeba nam jednak <math>f(n)</math>, aby zapamiêtaæ konfiguracjê, czyli ³±cznie <math>f^2(n)</math>.
| |
| | |
| Mo¿emy jednak zaoszczêdziæ na pamiêci pamiêtaj±c tylko który z niedeterministycznych wyborów dokona³a <math>M</math> na danym poziomie
| |
| rekurencji. Teraz aby obliczyæ pe³n± konfiguracjê, bêdziemy musieli rozpocz±æ za ka¿dym razem obliczenia od pocz±tku
| |
| dokonuj±c stosownych wyborów. Taka operacja mo¿e byæ jednak wykonana w pamiêci <math>f(n)</math>, st±d ca³a symulacja
| |
| potrzebuje <math>f(n)</math> pamiêci, a wiêc <math>L\in</math> SPACE <math>(f(n))</math>.
| |
| | |
| Ad. 2:<br>
| |
| Tym razem mamy do dyspozycji maszynê dzia³aj±c± w pamiêci <math>f(n)</math> i chcemy j± zasymulowaæ przy pomocy maszyny alternuj±cej
| |
| w czasie <math>f^2(n)</math>. Jak w twierdzeniu Savitcha odwo³amy siê do grafu konfiguracji maszyny rozmiaru <math>c^{f(n)}</math> i bêdziemy siê starali
| |
| odpowiedzieæ na pytanie, czy istnieje ¶cie¿ka od konfiguracji pocz±tkowej do koñcowej.
| |
| | |
| Procedura, która oblicza istnienie ¶cie¿ki o d³ugo¶ci co najwy¿ej <math>n</math> ma do dyspozycji alternacjê i dokonuje tego w dwóch etapach.
| |
| W pierwszym zgaduje wierzcho³ek po¶redni
| |
| <math>t</math> na ¶cie¿ce dzia³aj±c w trybie "OR". Nastêpnie prze³±cza siê w tryb uniwersalny "AND" i sprawdza rekurencyjnie,
| |
| czy obydwie czê¶ci ¶cie¿ki, d³ugo¶ci <math>n/2</math> poprzez odgadniêty wierzcho³ek <math>t</math> istniej±.
| |
| | |
| Czas potrzebny do dzia³ania to g³êboko¶æ rekurencji, czyli log <math>(c^{f(n)})</math> co jest rzêdu <math>f(n)</math> przemno¿ony
| |
| przez czas potrzebny do przetworzenia ka¿dego kroku, który wynosi równie¿ <math>f(n)</math>, gdy¿ jest to rozmiar konfiguracji. £±cznie daje to czas<math>f^2(n)</math>.
| |
| Zwróæmy uwagê, ¿e liczymy czas na ''jednej'' ¶cie¿ce obliczeñ, dziêki realizacji rekurencji przy pomocy alternacji!
| |
| | |
| Ad. 3:<br>
| |
| We¼my dowolny jêzyk <math>L\in</math> ASPACE <math>(f(n))</math> akceptowany przez alternuj±c± maszynê Turinga <math>M</math>.
| |
| Mamy do dyspozycji czas rzêdu wyk³adniczego wzglêdem <math>f(n)</math>, a wiêc mo¿emy wygenerowaæ ca³y graf konfiguracji
| |
| obliczeñ maszyny <math>M</math> (który jak wiemy ma rozmiar <math>c^{f(n)}</math>, gdy <math>f(n)\geqslant </math> log <math>n</math>).
| |
| Nastêpnie stosownie do typów "AND" i "OR" przegl±damy graf od konfiguracji koñcowych i decydujemy
| |
| o akceptacji s³owa wej¶ciowego.
| |
| </div>}}</div>
| |
| | |
| {{cwiczenie||
| |
| Udowodnij, ¿e problemy TSP(D) i EXACT TSP s± wielomianowo równowa¿ne.
| |
| }}
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{wskazowka ||| <div class="mw-collapsible-content" style="display:none">
| |
| Skorzystaj z problemu HAMILTON PATH.
| |
| </div>}}</div>
| |
| | |
| <div class="mw-collapsible mw-made=collapsible mw-collapsed">{{rozwiazanie ||<div class="mw-collapsible-content" style="display:none">
| |
| Za³ó¿my, ¿e TSP(D) ma rozwi±zanie wielomianowe. Dziêki opisywanej ju¿ metodzie wyszukiwania binarnego mo¿emy
| |
| odnale¼æ <math>K</math> - optymalny koszt dziêki temu, ¿e potrzebujemy zadaæ tylko logarytmiczn± liczbê pytañ wzglêdem <math>K</math>,
| |
| czyli liniow± wzglêdem rozmiaru wej¶cia.
| |
| | |
| Niewiele trudniejsza jest implikacja w drug± stronê. Za³ó¿my, ¿e EXACT TSP ma rozwi±zanie wielomianowe. Metoda wyszukiwania
| |
| binarnego tym razem zawodzi. Zgodnie ze wskazówk± rozwi±¿emy najpierw HAMILTON PATH. Maj±c dany graf skierowany <math>G</math> w którym
| |
| chcemy znale¼æ ¶cie¿kê Hamiltona konstruujemy przyk³ad <math>G'</math> dla EXACT TSP. Je¶li krawêd¼ istnieje w <math>G</math> to w <math>G'</math> otrzymuje wagê
| |
| 1, je¶li nie istnieje w <math>G</math> to w <math>G'</math> wstawiamy j± z wag± 2. £atwo stwierdziæ, ¿e graf <math>G</math> ma ¶cie¿kê Hamiltona wtedy i tylko wtedy,
| |
| gdy trasa komiwoja¿era w <math>G'</math> ma koszt dok³adnie <math>n</math> -- rozmiar grafu.
| |
| | |
| Poniewa¿ HAMILTON PATH jest NP-zupe³ny, wiêc istnieje redukcja TSP(D) do HAMILTON PATH, a tym samym sk³adaj±c redukcje otrzymamy algorytm
| |
| wielomianowy dla TSP(D).
| |
| </div>}}</div>
| |
| | |
| ==Testy koñcowe==
| |