Złożoność obliczeniowa/Wykład 12: Problemy funkcyjne i złożoność zliczania: Różnice pomiędzy wersjami
Matiunreal (dyskusja | edycje) Nie podano opisu zmian |
Matiunreal (dyskusja | edycje) Nie podano opisu zmian |
||
Linia 363: | Linia 363: | ||
Redukcję rozpoczniemy od formuły 3SAT i będziemy konstruować nasz graf <math>G</math>. Dla każdej zmiennej z formuły <math>\phi</math> będzie on zawierał ''element wyboru'' | Redukcję rozpoczniemy od formuły 3SAT i będziemy konstruować nasz graf <math>G</math>. Dla każdej zmiennej z formuły <math>\phi</math> będzie on zawierał ''element wyboru'' | ||
decydujący o wyborze wartościowania dla zmiennej, przedstawiony w animacji | decydujący o wyborze wartościowania dla zmiennej, przedstawiony w animacji ''Dowód twierdzenia Valianta (1)'' w części (a). | ||
Graf przedstawiony w animacji w części (a) posiada dokładnie dwa możliwe pokrycia cyklami. | Graf przedstawiony w animacji w części (a) posiada dokładnie dwa możliwe pokrycia cyklami. | ||
Linia 385: | Linia 385: | ||
Element xor został przedstawiony w animacji w formie macierzy w części (a), w formie grafu w części (b) i w formie skrótowej w części (c). Wierzchołek <math>g</math> w części (b) odpowiada reszcie grafu i będzie służył do dowodu. | Element xor został przedstawiony w animacji w formie macierzy w części (a), w formie grafu w części (b) i w formie skrótowej w części (c). Wierzchołek <math>g</math> w części (b) odpowiada reszcie grafu i będzie służył do dowodu. | ||
Element w kształcie diamentu w części (c) odpowiada grafowi z części (b) bez wierzchołka <math>g</math> (animacja | Element w kształcie diamentu w części (c) odpowiada grafowi z części (b) bez wierzchołka <math>g</math> (animacja ''Dowód twierdzenia Valianta (2)''). | ||
Na chwilę rozszerzyliśmy problem PERMANENT na macierze o wartościach innych niż 0-1. Jest to problem równoważny obliczaniu uogólnionego | Na chwilę rozszerzyliśmy problem PERMANENT na macierze o wartościach innych niż 0-1. Jest to problem równoważny obliczaniu uogólnionego |
Wersja z 22:28, 7 wrz 2006
Problemy funkcyjne
Do tej pory rozważaliśmy problemy decyzyjne, które polegały na akceptacji słowa przez maszynę, czyli zwróceniu odpowiedzi "TAK/NIE". Czasem potrzebujemy jednak, aby algorytm zwrócił znacznie więcej informacji. Wtedy przydają nam się problemy funkcyjne, w których od maszyny oczekujemy obliczenia zadanej funkcji. Maszyna na taśmie wejściowej ma zapisane argumenty funkcji, a na taśmie wyjściowej wypisuje wartość funkcji. Naturalne przykłady problemów funkcyjnych są powiązane z analizowanymi już problemami decyzyjnymi.
Przykład 1.1 [Problem FSAT]
Wejście: formuła logiczna jak dla problemu SAT.
Wyjście: wartościowanie spełniające lub "NIE", gdy nie istnieje.
Choć nie można bezpośrednio porównać złożoności problemów funkcyjnych i decyzyjnych to łatwo zauważyć, że FSAT jest problemem nie łatwiejszym niż SAT. Z odpowiedzi na problem FSAT można trywialnie obliczyć odpowiedź dla SAT. Okazuje się jednak, że także w drugą stronę przenosi się wielomianowość rozwiązania:
Ćwiczenie 1.2
Sprowadź problem FSAT do SAT przy pomocy wielomianowej redukcji Turinga (korzystając z SAT jako wyroczni).
Podobna własność zachodzi dla problemu TSP, gdzie samoredukowalność nie występuje. Przypominamy problem TSP w wersji funkcyjnej:
Przykład 1.3 [ProblemTSP]
Wejście: graf nieskierowany ważony .
Wyjście: optymalna trasa komiwojażera dla lub "NIE", gdy nie istnieje.
Ćwiczenie 1.4
Sprowadź problem TSP do TSP(D) (wersji decyzyjnej) przy pomocy wielomianowej redukcji Turinga.
Klasy FP i FNP
Można przedstawić zależność pomiędzy problemami decyzyjnymi i funkcyjnymi w sposób formalny. Przypomnijmy, że klasę NP można zdefiniować używając wielomianowo zrównoważonej i rozstrzygalnej relacji. Jeśli należy do NP to istnieje relacja , taka że wtedy i tylko wtedy gdy istnieje taki, że . Poprzez oznaczamy problem funkcyjny polegający na obliczeniu na podstawie wartości takiej, że o ile taka wartość istnieje lub zwróceniu odpowiedzi "NIE" w przeciwnym wypadku.
Klasę wszystkich problemów funkcyjnych, które powstają w ten sposób z klasy NP oznaczamy poprzez FNP. Klasę FP definiujemy jako podzbiór tych problemów z FNP dla których istnieje algorytm wielomianowy. Oczywiście FPFNP natomiast pytanie czy FP=FNP jest otwarte. Co ciekawe problem FSAT należy do FNP jednakże o TSP tego nie wiemy. Dzieje się tak dlatego, iż nie znamy algorytmu stwierdzającego, czy podana trasa jest optymalna. FHORNSAT (czyli funkcyjna wersja HORNSAT -- zawężenia SAT) a także obliczanie idealnego skojarzenia w grafie dwudzielnym są przykładami problemów z klasy FP.
Podobnie do klas decyzyjnych i tutaj można zdefiniować pojęcia redukcji i zupełności. Mówimy, że problem funkcyjny redukuje się do jeśli istnieją funkcje na słowach oraz obliczalne w pamięci logarytmicznej takie, że jeśli jest instancją dla problemu to jest instancją dla problemu . Oraz jeśli jest dopuszczalnym rozwiązaniem dla to jest dopuszczalnym rozwiązaniem dla . Redukcje można składać. Klasy FP i FNP są zamknięte na redukcje.
Zupełność jest definiowana w sposób naturalny, tzn. problem funkcyjny jest zupełny w klasie FC jeśli należy do FC i wszystkie problemy z tej klasy redukują się do niego. Problem FSAT jest natomiast przykładem problemu FNP-zupełnego (patrz ćwiczenie 3.1).
Twierdzenie 1.5
.
Dowód
Z wcześniejszych analiz wiemy, że FSAT jest wielomianowy wtedy i tylko wtedy gdy SAT jest wielomianowy. Ponieważ są to problemy zupełne dla odpowiednich klas to stąd otrzymujemy tezę.

Klasa TFNP
Wśród problemów z klasy FNP można wyróżnić interesującą klasę problemów całkowitych. Odpowiadają one tym problemom funkcyjnym, dla których rozwiązanie zawsze istnieje. Formalnie problem funkcyjny z klasy FNP nazywamy całkowitym jeśli (relacja występująca w definicji problemu funkcyjnego) spełnia warunek, iż dla każdego istnieje przynajmniej jedno takie, że .
Klasę wszystkich problemów całkowitych oznaczamy przez TFNP. Klasa ta zawiera wiele ciekawych problemów, o których nie wiadomo, czy należą do FP, a które mogą sugerować, że są prostsze niż problemy zupełne z FNP. Sztandarowym problemem jest problem rozkładu liczby na czynniki pierwsze, niesłychanie interesujący z punktu widzenia praktycznego i wciąż bez znanego algorytmu wielomianowego:
Przykład 1.6 [Problem FACTORING]
Wejście: liczba naturalna
Wyjście: rozkład na czynniki pierwsze.
Każda liczba naturalna posiada swój rozkład na czynniki pierwsze. To sprawia, że FACTORING jest problemem funkcyjnym całkowitym z klasy TFNP. Kluczowy dla tego stwierdzenia jest fakt, że dzięki przynależności problemu sprawdzania czy liczba jest pierwsza do klasy P łatwo jest stwierdzić, czy rozkład jest rzeczywiście rozkładem na czynniki pierwsze. Fakt, że rozwiązanie zawsze istnieje, może ułatwić znalezienie efektywnego algorytmu. Takiego warunku nie spełniają rozważane wcześniej FSAT i TSP.
Rozważmy poniższy problem funkcyjny obliczania optymalnego stanu sieci:
<flash>file=ZO-12-1.swf|width=300|height=300</flash>
<div.thumbcaption>Problem HAPPYNET.Przykład 1.7 [Problem HAPPYNET]
Wejście: graf nieskierowany ważony z wagami całkowitymi
Wyjście: wartościowanie takie, że każdy wierzchołek jest szczęśliwy, tzn.:
Mówiąc obrazowo, warunek szczęśliwości oznacza, że wierzchołek chce mieć ten sam stan co wierzchołki połączone z nim wagą dodatnią i przeciwny dla wagi ujemnej. Na rysunku Problem HAPPYNET wierzchołek 1 jest nieszczęśliwy, a 4 jest szczęśliwy.
Łatwo zauważyć, że HAPPYNET należy do klasy FNP, gdyż łatwo sprawdzić, czy wartościowanie daje stan szczęśliwy. Co zaskakujące jednak, jest on problemem funkcyjnym całkowitym, tzn. szukany stan "szczęśliwości" zawsze istnieje:
Ćwiczenie 1.8
Udowodnij, że problem HAPPYNET należy do klasy TFNP.
Powyższy algorytm jest oczywiście pseudowielomianowy ze względu na powiązanie czasu działania z wartością sumy wag. Obecnie nie jest znany algorytm wielomianowy dla HAPPYNET.
Ciekawym problem funkcyjnym jest także poniższy problem:
Przykład 1.9 [Problem ANOTHER HAMILTON CYCLE]
Wejście: graf nieskierowany i jego cykl Hamiltona
Wyjście: cykl Hamiltona dla różny od
Stwierdzenie czy istnieje cykl Hamiltona w grafie jest problemem NP-zupełnym. Ale czy wiedza o jednym cyklu pomaga nam w szukaniu kolejnego? Okazuje się, że ANOTHER HAMILTON CYCLE jest problem FNP-zupełnym. Interesujące jest jednak to, że gdy zawężymy klasę dostępnych grafów do grafów kubicznych, to sytuacja ulega specyficznej zmianie. Grafy kubiczne to grafy, w których każdy wierzchołek ma stopień 3. W takiej sytuacji okazuje się, że jeśli graf ma jeden cykl Hamiltona to musi mieć również inny:
Ćwiczenie 1.10
Udowodnij, że problem ANOTHER HAMILTON CYCLE dla grafów kubicznych należy do klasy TFNP.
Weźmy cykl Hamiltona . Oznaczmy dwa kolejne wierzchołki jako i . Rozważmy teraz ścieżki Hamiltona nie zawierające krawędzi rozpoczynające się w , które nazwiemy kandydatami. Dwie ścieżki kandydujące, które różnią się krawędziami uważamy za sąsiednie. Odpowiada to kolejności od (a) do (f) w animacji Problem ANOTHER HAMILTON CYCLE.
Ile sąsiadów może mieć ścieżka kandydująca? Załóżmy, że ścieżka prowadzi od do . Wtedy możemy otrzymać dwóch sąsiadów, poprzez przedłużenie ścieżki z na dwa możliwe sposoby (graf jest kubiczny) stosownie usuwając zbędną krawędź w dokładnie jeden sposób. Kandydat z animacji w części (b) ma właśnie dwóch sąsiadów otrzymanych w powyższy sposób.
Jeśli natomiast ścieżka prowadzi od do to ma tylko jednego sąsiada, gdyż krawędzi użyć nie wolno. W tym momencie łatwo zauważyć, że istnieje parzysta liczba ścieżek Hamiltona o końcach 1 i 2. Dzieje się tak dlatego, że każda taka ścieżka ma jednego sąsiada, a wszystkie inne po dwóch. Każda z takich ścieżek po dodaniu krawędzi zmienia się w cykl Hamiltona co kończy dowód, że drugi cykl Hamiltona zawsze istnieje.
<flashwrap>file=ZO-12-3.swf|size=small</flashwrap>
<div.thumbcaption>Klasy problemów funkcyjnych.Podobnie jak i w poprzednim przypadku, na podstawie dowodu nie umiemy skonstruować algorytmu wielomianowego dla ANOTHER HAMILTON CYCLE dla grafów kubicznych.
Animacja Klasy problemów funkcyjnych podsumowuje poznane klasy problemów funkcyjnych.
Złożoność zliczania
W drugiej części tego modułu zajmiemy się tematem podobnym do problemów funkcyjnych. Będziemy się zastanawiać nad złożonością obliczeniową obliczania liczby rozwiązań lub innymi słowy zliczaniem. Oto pierwszy przykład:
Przykład 2.1 [Problem Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{SAT}} ]
Wejście: formuła logiczna jak dla problemu SAT.
Wyjście: liczba różnych wartościowań spełniających .
Oczywiście rozwiązanie Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{SAT}} daje nam rozwiązanie decyzyjnej wersji SAT. Inne przykłady "zliczających" wersji problemów NP-zupełnych to HAMILTONIAN PATH, w którym pytamy o liczbę różnych cykli Hamiltona w grafie, czy CLIQUE, w którym pytamy o liczbę różnych klik rozmiaru przynajmniej . We wszystkich tych przypadkach nie mamy nadziei, aby wersje zliczające miały rozwiązania wielomianowe.
Istnieją problemy, dla których zliczanie liczby rozwiązań ma algorytm wielomianowy, np. liczba różnych drzew rozpinających w grafie lub liczba ścieżek Eulera. Pomimo tego, pewne problemy wskazują, że zliczanie liczby rozwiązań jest trudniejsze niż obliczanie samego rozwiązania. Nawet gdyby P=NP to nie wiemy jak rozwiązać Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{SAT}} w czasie wielomianowym.
<flashwrap>file=ZO-12-4.swf|size=small</flashwrap>
<div.thumbcaption>Skojarzenie w grafie dwudzielnym.Na większą trudność wskazuje również przykład problemu MATCHING dotyczący idealnych skojarzeń w grafach dwudzielnych. W tym przypadku obliczenie rozwiązania (czyli wersja funkcyjna) jest wielomianowa, a mimo tego MATCHING jest trudny i ciągle nie znamy rozwiązania wielomianowego dla niego.
Problem znajdowania idealnego skojarzenia w grafie dwudzielnym jest związany z wyznacznikami macierzy (animacja Skojarzenie w grafie dwudzielnym).
Oznaczmy przez graf dwudzielny pokazany w animacji. , natomiast . Macierz sąsiedztwa grafu również została przedstawiona w animacji. równe jest 1, gdy krawędź od do istnieje lub 0 w przeciwnym wypadku. Wyznacznik wynosi:
gdzie sumowanie odbywa się po wszystkich permutacjach a tym samym
skojarzeniach idealnych grafu . Wyznacznik można policzyć szybko
dzięki czynnikowi stanowiącego znak permutacji.
Istnieje bardzo podobne wyrażenie zwane permanentem obliczane
dla macierzy, które jest pozbawione tego czynnika:
Permanent macierzy to dokładnie liczba skojarzeń idealnych stosownego grafu dwudzielnego.
Na wskutek tej odpowiedniości problem zliczania idealnych skojarzeń w grafie dwudzielnym nosi nazwę PERMANENT.
Istnieje także powiązanie pomiędzy skojarzeniami a pokryciem rozłącznymi cyklami grafu również przedstawionym w animacji. W grafie skierowanym o wierzchołkach krawędź od do występuje, gdy w grafie wierzchołek jest połączony z . Graf może mieć pętle. Idealne skojarzenie dla odpowiada jednoznacznie pokryciu rozłącznymi cyklami grafu . Dlatego też, wartość permanentu jest jednocześnie liczbą różnych pokryć cyklami dla . Dla przedstawionego przykładu wszystkie te trzy wartości wynoszą 1.
Klasa Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} i twierdzenie Valianta
Badanie problemów polegających na zliczaniu przez Valianta w latach 70 przyniosło skutek w postaci zdefiniowania klasy Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} (czytamy "hasz P"). Jest on laureatem nagrody Knutha z roku 1997. Oznaczmy przez wielomianowo zrównoważoną i rozstrzygalną relację binarną na słowach. Problem zliczania związany z polega na obliczeniu dla danego liczby takich , że jest spełnione. Obliczony wynik musi być przedstawiony w postaci liczby binarnej. Klasa Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} składa się z wszystkich takich problemów związanych z relacjami .
Jeśli jest relacją sprawdzającą, czy jest spełniającym wartościowaniem dla to otrzymujemy Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{SAT}} . Gdy natomiast jest zdefiniowana tak, że zachodzi, gdy jest idealnym skojarzeniem dla grafu dwudzielnego to otrzymujemy problem PERMANENT. Podobnie dla HAMILTONIAN PATH. Wszystko to przykłady problemów Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} -zupełnych.
Aby mówić o zupełności musimy wprowadzić stosowną redukcję. Podobnie jak w przypadku problemów funkcyjnych redukcja pomiędzy problemami i składa się z dwóch funkcji i obliczanych w pamięci logarytmicznej. Jeśli jest instancją problemu to jest instancją problemu . Jeśli jest odpowiedzią dla to jest odpowiedzią dla .
Okazuje się, że wygodnie jest posługiwać się mocniejszą redukcją oszczędną (ang. parsimonious wprowadzoną, co ciekawe przez Simona). Charakteryzuje się ona tym, że jest identycznością, tzn. przekształca instancje tak, że zachowuje liczbę rozwiązań.
Większość redukcji przeprowadzanych pomiędzy problemami decyzyjnymi z klasy NP jest oszczędna lub może zostać nimi zastąpiona. Poniższe ćwiczenie wprowadza pierwszy problem zupełny dla wprowadzonej klasy:
Ćwiczenie 2.2
Udowodnij, że problem Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{SAT}} jest Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} -zupełny.
Jednak problem Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} -zupełny, który jest najbardziej interesujący, to opisany już PERMANENT. Mimo wielomianowości problemu MATCHING okazuje się on tak trudny jak cała wprowadzona klasa:
Twierdzenie 2.3 [twierdzenie Valianta]
Problem PERMANENT jest Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} -zupełny.
<flashwrap>file=ZO-12-5.swf|size=small</flashwrap>
<div.thumbcaption>Dowód twierdzenia Valianta (1).<flashwrap>file=ZO-12-6.swf|size=small</flashwrap>
<div.thumbcaption>Dowód twierdzenia Valianta (2).Dowód
Oczywiście każdy problem z klasy Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} może zostać rozwiązany w pamięci wielomianowej, poprzez prosty algorytm zliczający (oczywiście wykładniczy). Zliczanie nie jest zatem silniejsze niż klasa PSPACE.
Klasa Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}}
Ciekawą klasą powiązaną z tematem zliczania jest klasa Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} (czytamy "parzystość P"). Odpowiada ona obliczaniu ostatniego bitu wyniku dla problemów z klasy Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \#\textsc{P}} . Przeanalizujmy poniższe problemy:
Przykład 2.4 [Problem Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{SAT}} ]
Wejście: formuła logiczna jak dla problemu SAT.
Wyjście: czy liczba różnych wartościowań spełniających jest nieparzysta?
Przykład 2.5 [Problem Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{HAMILTON CYCLE}} ]
Wejście: graf nieskierowany
Wyjście: czy liczba różnych cykli Hamiltona dla jest nieparzysta?
Możemy zdefiniować ogólnie klasę Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} jako ogół tych języków dla których istnieje maszyna niedeterministyczna działająca w czasie wielomianowym, dla której wtedy i tylko wtedy, gdy liczba ścieżek akceptujących przez jest nieparzysta. W języku relacji, powiemy, że należy do Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} , gdy istnieje wielomianowo zrównoważona i rozstrzygalna relacja taka, że wtedy i tylko wtedy, gdy ilość takich, że jest nieparzysta.
Zarówno Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{SAT}} jak i HAMILTON CYCLE okazują się problemami Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} -zupełnymi (zupełność definiujemy przy pomocy redukcji oszczędnych w naturalny sposób). Z łatwością można stwierdzić, że należą do klasy Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} , natomiast redukcje oszczędne omawiane przy okazji wersji zliczających tych problemów są wystarczające.
Moc klasy Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} wydaje się być słabsza ze względu na fakt, iż MATCHING, czyli PERMANENT MOD 2 jest problemem o złożoności wielomianowej. Dzieje się tak dlatego, iż w tym wypadku obliczanie wyznacznika i permanentu daje ten sam wynik.
Ćwiczenia dodatkowe
Ćwiczenie 3.1
Udowodnij, że FSAT jest FNP-zupełny.
Ćwiczenie 3.2
Udowodnij, że klasa Parser nie mógł rozpoznać (nieznana funkcja „\textsc”): {\displaystyle \oplus\textsc{P}} jest zamknięta na dopełnienie.