Złożoność obliczeniowa/Wykład 8: Schematy aproksymacji i klasa MAXSNP: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian
Linia 640: Linia 640:


2. Dopóki <math>\displaystyle t</math> nie będzie liściem drzewa wartościowań:
2. Dopóki <math>\displaystyle t</math> nie będzie liściem drzewa wartościowań:
    obliczaj wartość <math>\displaystyle  P(t_0) </math> i <math>\displaystyle  P(t_1) </math> dla dzieci węzła <math>\displaystyle t</math>  
 
    i ustaw <math>\displaystyle t</math> na to z dzieci, dla którego wartość <math>\displaystyle  P(t_i) </math>  jest większa.
obliczaj wartość <math>\displaystyle  P(t_0) </math> i <math>\displaystyle  P(t_1) </math> dla dzieci węzła <math>\displaystyle t</math>  
 
i ustaw <math>\displaystyle t</math> na to z dzieci, dla którego wartość <math>\displaystyle  P(t_i) </math>  jest większa.


3. Podaj wartościowanie opisywane przez węzeł <math>\displaystyle t</math> jako wynik.}}
3. Podaj wartościowanie opisywane przez węzeł <math>\displaystyle t</math> jako wynik.}}

Wersja z 12:03, 20 wrz 2006

Wprowadzenie

W poprzednim wykładzie zajmowaliśmy się algorytmami aproksymacyjnymi dla przykładowych trudnych problemów optymalizacyjnych. Dla większości z tych algorytmów udawało nam się podać gwarancję dokładności za pomocą stałego współczynnika efektywności przybliżenia.

W tym module postawimy sobie znacznie ambitniejsze zadanie. Będziemy szukać algorytmów, którym na wejściu ustala się dopuszczalny błąd przybliżenia rozwiązania optymalnego. Pokażemy problemy, dla których jest możliwa taka "dowolnie dokładna" aproksymacja.

W drugiej części poznamy klasę Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} . Jest to bardzo szeroka i interesująca klasa problemów optymalizacyjnych, a pytanie o to, czy należące do niej problemy mogą być dowolnie dobrze aproksymowane, było bardzo istotnym zagadnieniem teorii algorytmów aproksymacyjnych. Odpowiedź na to pytanie poznamy dopiero w następnym module.

Schematy aproksymacji

Żeby wyrazić te nowe oczekiwania potrzebujemy nowych notacji:

Definicja 2.1

Mówimy, że algorytm 𝒜 jest {schematem aproksymacji} dla problemu Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} -optymalizacyjnego Π, jeżeli dla wejścia Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{I,\epsilon})} , gdzie I jest instancją problemu Π, a ϵ>0 opisuje dopuszczalny błąd, znajduje rozwiązanie takie, że:

  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle \textnormal{obj}_\Pi(I,{ \mathcal{A}(I,\epsilon) }) \leq (\braq{1 + \epsilon}) \textnormal{opt}\displaystyle _\Pi(I) } dla problemu minimalizacji.
  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle \textnormal{obj}_\Pi(I,{ \mathcal{A}(I,\epsilon) }) \geq (\braq{1 - \epsilon}) \textnormal{opt}\displaystyle _\Pi(I) } dla problemu maksymalizacji.

Definicja 2.2

Jeśli dla dowolnego ϵ>0 czas działania 𝒜 na wejściu Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{I,\epsilon})} jest wielomianowy względem Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{I}|} , to 𝒜 jest {wielomianowym schematem aproksymacji}. Będziemy używać skróconej notacji PTAS (od polynomial time approximation scheme) dla oznaczenia tego faktu.

Zauważmy, że w tej definicji wymagamy wielomianowego czasu działania tylko względem rozmiaru instancji przy ustalonym dopuszczalnym błędzie. Oznacza to, że czas działania może być nawet wykładniczy względem wartości parametru ϵ. Nie jest to sytuacja komfortowa. Możemy w związku z tym wzmocnić wymagania postawione dla algorytmu.

Definicja 2.3

Jeżeli czas działania algorytmu 𝒜 jest wielomianowy względem Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{I}|} oraz wartości 1ϵ, to 𝒜 jest {w pełni wielomianowym schematem aproksymacji}. Omawiając takie algorytmy, będziemy używać notacji FPTAS (fully polynomial time approximation scheme).

Ćwiczenie 2.4

{{{3}}}

Schemat aproksymacji dla problemu KNAPSACK

Pokazaliśmy, że nie warto szukać algorytmów FPTAS dla problemów silnie Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} -zupełnych. Rozpoczniemy w związku z tym dalsze poszukiwania schematów aproksymacyjnych od przyjrzenia się raz jeszcze problemowi plecakowemu. Wiemy, że nie jest to problem silnie Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} -zupełny i znamy dla niego algorytm pseudowielomianowy. Bardzo często istnienie algorytmu pseudowielomianowego można wykorzystać przy konstrukcjii schematów aproksymacji. Zobaczymy teraz klasyczną konstrukcję opartą o ten pomysł.

Pokażemy teraz algorytm pseudowielomianowy rozwiązujący problem KNAPSACK. Poznaliśmy już jeden taki alorytm, ale tamten nie nadaje się do konstrukcji schematu aproksymacji.

Algorytm 3.1 [Algorytm pseudowielomianowy dla problemu plecakowego]


1. Oblicz V=maxi=1,2,,nv(ai).

2. Oblicz Wi,u określone dla 0in i 0unV jako "minimalny sumaryczny rozmiar podzbioru przedmiotów Sa1,a2,,ai taki, że sumaryczna wartość tych przedmiotów wynosi dokładnie u". Obliczenia można dokonać metodą dynamiczną, korzystając z następujących własności rekurencyjnych: Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned W_{0,u} &= \infty\textnormal{,} \\ W_{i+1,u} &= \min(W_{i,u},W_{i,u- v(a_{i+1}) }+ w(a_{i+1}) )\textnormal{.} \endaligned}

3. Odczytaj rozwiązanie z wartości W.

Algorytm ten można zakodować tak, aby znajdował optymalne rozwiązanie w czasie 𝒪(n2V). Szczegóły implementacji pozostawiamy jako ćwiczenie.

Zauważmy, że gdyby wartości przedmiotów były ograniczone przez wielomianową funkcję n, to skonstruowany algorytm byłby wielomianowy. To jest podstawą schematu aproksymacji, który będzie zaokrąglał wartości przedmiotów tak, aby były one wielomianowe względem n i 1ϵ. Oto algorytm:

Algorytm 3.2 [Algorytm zaokrągleniowy]


1. Oblicz K=ϵVn.

2. Dla każdego przedmiotu oblicz Parser nie mógł rozpoznać (nieznana funkcja „\floor”): {\displaystyle \displaystyle v'(a_i) = [\floor{\frac{ v(a_i) }{K}}]} .

3. Używając algorytmu pseudowielomianowego, rozwiąż problem z wartościami v.

Twierdzenie 3.3

Algorytm zaokrągleniowy jest FPTAS dla problemu plecakowego.

Dowód

Musimy pokazać, że dla zbioru S znajdowanego przez algorytm zachodzi:

Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle \sum_{i \in S} v(a_i) \geq (\braq{1 - \epsilon}) \textnormal{opt}\textnormal{.}}

Niech O będzie rozwiązaniem optymalnym. Możemy wtedy zapisać ciąg nierówności:

Parser nie mógł rozpoznać (nieznana funkcja „\floor”): {\displaystyle \displaystyle \sum_{i \in S} v(a_i) \geq \sum_{i \in S} [\floor{\frac{ v(a_i) }{K}}] K \geq \sum_{i \in O} [\floor{\frac{ v(a_i) }{K}}] K \geq \sum_{i \in O} (\braq{ v(a_i)) - K} \geq \sum_{i \in O} v(a_i) - nK\textnormal{.} }

Korzystamy po kolei z własności zaokrąglenia, optymalności rozwiązania S przy wartościach wydzielonych przez K, własności zaokrąglenia i tego, że Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{S}| \leq n} .

Udowodniliśmy, że wartość rozwiązania znajdowanego przez algorytm jest nie mniejsze niż Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt} \displaystyle - nK = \textnormal{opt} \displaystyle - \epsilon V \geq (\braq{1-\epsilon}) \textnormal{opt} } . Jest to zatem schemat aproksymacyjny. Musimy jeszcze oszacować czas działania algorytmu. Wynosi on Parser nie mógł rozpoznać (nieznana funkcja „\floor”): {\displaystyle \displaystyle \mathcal{O}({n^2[\floor{\frac{V}{K}}]}) = \mathcal{O}({n^2[\floor{\frac{n}{\epsilon}}]})} , a więc jest wielomianowy zarówno względem n, jak i 1ϵ.

Ćwiczenie 3.4

{{{3}}}

Asymptotyczny PTAS dla BIN PACKING

Pokazaliśmy, że problem plecakowy może być aproksymowalny z dowolną dokładnością w czasie wielomianowo zależnym od wielkości danych i dopuszczalnego błędu. Dla problemuu pakowania nie możemy się spodziewać równie dobrych wyników. Jest to problem silnie Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} -zupełny i o ile Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{P} \neq \cc{NP}} , to nie może istnieć FPTAS. Pokazaliśmy również, że nie ma algorytmu osiągającego stałą aproksymacji mniejszą od 32. Dowód opierał się o fakt, że o ile Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{P} \neq \cc{NP}} , to nie da się efektywnie sprawdzać, czy da się przedmioty upakować do dwóch pojemników.

Instancje, które zabraniały aproksymacji lepszej niż 32 miały ograniczoną wartość optimum. Skonstruujemy teraz asymptotyczny PTAS dla problemu pakowania, który może osiągać dowolnie dobrą aproksymację, ale dla odpowiednio dużych wartości optimum.

Precyzując, podamy rodzinę algorytmów 𝒜ϵ dla 0<ϵ12 działających w czasie wielomianowym od liczby przedmiotów i znajdujących rozwiązanie używające co najwyżej Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{1 + 2\epsilon}) \textnormal{opt} \displaystyle + 1} pojemników.

Zanim będziemy mogli przedstawić algorytmy 𝒜ϵ musimy pokazać dwa pomocnicze lematy, które pokazują rozwiązania dla pewnych uproszczonych instancji problemu.

Lemat 4.1

Dla dowolnego ϵ>0 oraz liczby całkowitej K istnieje algorytm wielomianowy rozwiązujący problem pakowania dla instancji, w których występują przedmioty o co najwyżej K różnych rozmiarach, z których każdy jest nie mniejszy niż ϵ.

Dowód

Liczba przedmiotów w jednym pojemniku jest ograniczona przez Parser nie mógł rozpoznać (nieznana funkcja „\floor”): {\displaystyle \displaystyle M=[\floor{\frac{1}{\epsilon}}]} . Suma rozmiarów większej liczby przedmiotów musi przekraczać 1, gdyż każdy z nich ma rozmiar nie mniejszy niż ϵ.

Liczba możliwych zawartości jednego pojemnika jest zatem ograniczona przez R=(M+KM). Ograniczenie to uzyskujemy, gdyż jest to liczba M-elementowych multipodzbiorów zbioru K-elementowego. Zauważmy, że liczb R jest stałą zależną tylko od K i ϵ.

Liczba pojemników w rozwiązaniu jest ograniczona w oczywisty sposób przez n. Zatem liczba możliwych rozwiązań dopuszczalnych jest ograniczona przez P=(n+RR). Tym razem jest to liczba n-elementowych multipodzbiorów zbioru R-elementowego.

Liczba P wyraża się wielomianem względem n. Możemy w związku z tym w czasie wielomianowym przejrzeć wszystkie rozwiązania dopuszczalne i wybrać optymalne.

Uwaga 4.2

Niestety czas tego algorytmu jest wielomianem stopnia R. Jest to bardzo wysoki stopień i przez to algorytm ten nie może być traktowany jako praktyczne rozwiązanie problemu.

Lemat 4.3

Dla dowolnego ϵ>0 istnieje wielomianowy algorytm Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{1+\epsilon})} -aproksymacyjny dla problemu pakowania dla instancji, w których występują przedmioty o rozmiarach nie mniejszych niż ϵ.

Dowód

Algorytm 4.4 [Algorytm dzielący na grupy]


1. Oblicz Parser nie mógł rozpoznać (nieznana funkcja „\ceil”): {\displaystyle \displaystyle K=[\ceil{\frac{1}{\epsilon^2}}]} .

2. Posortuj przedmioty względem rosnącego rozmiaru i podziel posortowany ciąg na K grup tak, aby w każdej grupie było co najwyżej Parser nie mógł rozpoznać (nieznana funkcja „\floor”): {\displaystyle \displaystyle Q=[\floor{n\epsilon^2}]} przedmiotów.

3. Zamień rozmiar każdego z przedmiotów na rozmiar największego przedmiotu w tej samej grupie.

4. Użyj algorytmu z poprzedniego lematu działającego na przedmiotach o K różnych rozmiarach nie mniejszych niż ϵ.

Niech I będzie instancją podaną na wejściu algorytmu. Niech I* będzie instancją otrzymaną w trzecim kroku algorytmu, a I* instancją, którą otrzymalibyśmy, zamieniając rozmiar każdego z przedmiotów na rozmiar najmniejszego w tej samej grupie.

Wynikiem działania algorytmu jest rozwiązanie optymalne dla instancji I*. Musimy wykazać, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt} \displaystyle (I^*) \leq (\braq{1+\epsilon}) \textnormal{opt} \displaystyle (I) } . Łatwo jest uzasadnić oszacowanie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt} \displaystyle (I_*) \leq \textnormal{opt} \displaystyle (I) } .

Możemy teraz zauważyć, że każde rozwiązanie instancjii I* wyznacza pewne rozwiązanie dla I*, ponieważ najmniejszy przedmiot z i+1 grupy przedmiotów jest większy lub równy największemu przedmiotowi z grupy i. Zatem rozwiązanie instancji I* pozwala upakować wszystkie przedmioty z instancji I* oprócz ostatniej grupy. Więc nawet jeżeli każdy z tych przedmiotów zostałby upakowany do osobnego pojemnika, otrzymujemy ograniczenie:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt} \displaystyle (I^*) \leq \textnormal{opt} \displaystyle (I_*) + Q \leq \textnormal{opt} \displaystyle (I) + Q \leq \textnormal{opt} \displaystyle (I) + [\floor{n\epsilon^2}] \leq (\braq{1+\epsilon}) \textnormal{opt} \displaystyle (I)\textnormal{.} }

Ostatnia nierówność wynika z tego, że Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle n\epsilon \leq \textnormal{opt}\displaystyle (I) } . Pokazaliśmy zatem, że algorytm jest Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{1+\epsilon})} -aproksymacyjny.

Mając w ręku te dwa pomocnicze lematy, możemy już pokazać algorytm 𝒜ϵ.

Algorytm 4.5 [Algorytm 𝒜ϵ]


1. Stwórz instancję Iϵ, usuwając wszystkie przedmioty o rozmiarze mniejszym od ϵ z I.

2. Oblicz instancję Iϵ* i znajdź dla niej optymalne upakowanie, korzystając z algorytmu przeglądającego wszystkie rozwiązania dopuszczalne.

3. Dopakuj przedmioty o rozmiarze mniejszym od ϵ za pomocą algorytmu First-Fit, otrzymując rozwiązanie dla instancji wejściowej I.

Twierdzenie 4.6

Dla dowolnego 0<ϵ12 algorytm 𝒜ϵ znajduje upakowanie przedmiotów instancji I w co najwyżej Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{1 + 2\epsilon}) \textnormal{opt} \displaystyle (I) + 1} pojemnikach.

Dowód

Jeżeli w ostatnim kroku algorytmu nie zostały utworzone żadne nowe pojemniki, to rozwiązanie znalezione dla Iϵ używa Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{1+\epsilon}) \textnormal{opt} \displaystyle (I_{\geq\epsilon}) } pojemników, a więc spełnia warunki twierdzenia.

Jeżeli natomiast zostały utworzone nowe pojemniki, to zauważmy, że tylko w jednym ze wszystkich pojemników mogą znajdować się przedmioty o sumarycznym rozmiarze mniejszym niż 1ϵ. Zatem jeżeli oznaczymy przez M liczbę wszystkich użytych pojemników, to sumarczyny rozmiar wszystkich przedmiotów (a więc i optimum) możemy ograniczyć z dołu przez Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{M-1})(\braq{1-\epsilon})} . W związku z tym możemy napisać:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle M \leq \frac{ \textnormal{opt} \displaystyle (I) }{1-\epsilon} + 1 \leq (\braq{1 + 2\epsilon}) \textnormal{opt} \displaystyle (I) + 1\textnormal{.} }

Druga nierówność wynika z prostego przekształcenia arytmetycznego przy 0<ϵ12.

Ćwiczenie 4.7

{{{3}}}

Ćwiczenie 4.8

Problem BIN COVERING.

Rozważ problem dualny do BIN PACKING:

Problem

Pokrywanie BIN COVERING.

Mając dany zbiór n przedmiotów o wagach wymiernych w1,w2,,wn(0,1], należy znaleźć przyporządkowanie ich do jak największej liczby pojemników. Suma wag przedmiotów w jednym pojemniku musi przekraczać 1, a część przedmiotów może być w ogóle niewykorzystana.

Można się domyślać, że problem ten ma charakterystykę podobną do BIN PACKING.

Pokaż, że o ile Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{P} \neq \cc{NP}} , to nie ma dla niego algorytmu a-aproksymacyjnego dla a>12. Skonstruuj asymptotyczny PTAS przy dodatkowym założeniu, że rozmiary wszystkich przedmiotów są większe niż pewna stała c>0 (istnieje również asymptotyczny PTAS bez tego dodatkowego założenia, ale jego analiza jest znacznie trudniejsza).

Wskazówka
Rozwiązanie

L-redukcje

Wprowadzimy teraz pojęcie redukcji zachowującej aproksymację. Pozwoli nam to na bardziej systematyczne niż do tej pory zbadanie klasy problemów, dla których możliwa jest aproksymacja. W dalszej części będziemy poszukiwać klasy problemów aproksymowalnych i problemów w tej klasie zupełnych względem podanej redukcji. Definicja interesującej nas redukcji jest podobna do tej, jaką wprowadziliśmy pomiędzy problemami funkcyjnymi.

Definicja 5.1

Dla dwóch problemów optymalizacyjnych A i B, parę funkcji R:DADB i S:SBSA obliczalnych w pamięci logarytmicznej nazywamy L-redukcją, jeżeli istnieją dwie stałe dodatnie α i β takie, że spełnione są następujące własności:

  • Dla dowolnej instancji x problemu A zachodzi:
Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt} \displaystyle _B( R(x) ) \leq \alpha \cdot \textnormal{opt}\displaystyle _A(x)\textnormal{.} }
  • Dla dowolnego rozwiązania dopuszczalnego s instancji R(x) zachodzi:
Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{ \textnormal{opt} \displaystyle _A(x) - \textnormal{obj}_A(x, S(s) ) }| \leq \beta |\size{ \textnormal{opt} \displaystyle _B( R(x) ) - \textnormal{obj}_B( R(x) ,s) }|\textnormal{.} }

Intuicyjnie, funkcja R L-redukcji (redukcji liniowej) zamienia instancję problemu A na instancję problemu B, nie zmieniając wartości rozwiązania optymalnego bardziej niż o stałą α. Funkcja S pozwala natomiast przeprowadzić dowolne z rozwiązań z powrotem na rozwiązanie instancji A, nie zmieniając odległości od optimum bardziej niż o stałą β.

Uwaga 5.2

Warto zauważyć, że definicja L-redukcji nie zależy od tego, czy problemy A i B są problami minimalizacyjnymi, czy maksymalizacyjnymi.

Przyjrzyjmy się teraz jeszcze raz redukcji problemu zbioru niezależnego do pokrycia wierzchołkowego. Jest ona oparta o fakt, że problemy te są do siebie dualne. Dopełnienie dowolnego zbioru niezależnego jest pokryciem wierzchołkowym i na odwrót.

Definicje odpowiednich funkcji są w związku z tym bardzo proste. R to po prostu funkcja identycznościowa na grafach, a S zwraca dopełnienie zbioru wierzchołków. Okazuje się, że nie jest to jednak L-redukcja, gdyż stosunku rozmiarów rozwiązań obu problemów nie da się w żaden sposób ograniczyć przez stałe.

Takie ograniczenie można uzyskać, zawężając klasę grafów. Jeżeli ograniczymy maksymalny stopień wierzchołków występujących w grafie przez liczbę k, to otrzymamy problemy k-INDPENDENT SET i k-VERTEX COVER. Przypomnijmy, że z redukcji problemu 3SAT wynika, że już problem 4-INDEPENDENT SET jest Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} -zupełny.

Pokażemy, że funkcje R i S tworzą L-redukcję problemu k-INDEPENDENT SET do k-NODE COVER.

Zauważmy, że dla grafu Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle G=(\braq{V,E})} ze stopniem wierzchołków ograniczonym przez k rozmiar maksymalnego zbioru niezależnego to co najmniej Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle \frac{|\size{V}|}{k+1}} . Dla każdego zbioru niezależnego o mniejszym rozmiarze, zbiór jego wszystkich sąsiadów jest co najwyżej k razy większy i nie obejmuje w związku z tym całego grafu. Można zatem taki zbiór niezależny poszerzyć.

Tymczasem minimalne pokrycie wierzchołkowe ma w oczywisty sposób co najwyżej Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{V}|} elementów. W związku z tym możemy ustalić wartość parametru α na k+1.

Wystarczy teraz zauważyć, że odległość rozwiązania znalezionego od optymalnego nie zmienia się przy przejściu przez funkcję S. W związku z tym możemy ustalić wartość parametru β na 1.

Ta krótka analiza pozwala stwierdzić, że para Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{R,S})} jest L-redukcją problemu k-INDEPENDENT SET do k-NODE COVER.

Można też skonstruować odwrotną L-redukcję problemu k-NODE COVER do k-INDEPENDENT SET. Oczywiście należy użyć tych samych funkcji R i S, ale żeby uzyskać liniową zależność rozmiaru maksymalnego zbioru niezależnego od minimlanego pokrycia wierzchołkowego trzeba się trochę postarać. Zauważmy, że dla antykliki rozmiar minimalnego pokrycia wierzchołkowego wynosi 0, a maksymalny zbiór niezależny ma rozmiar równy ilości wierzchołków. Wynika stąd, że punkty izolowane mogą sprawiać problem dla L-redukcji.

W nowej redukcji funkcja R będzie usuwać wierzchołki izolowane z grafu (które i tak nie należą do minimalnego pokrycia wierzchołkowego). Funkcja S nadal będzie zamieniać zbiór wierzchołków na jego uzupełnienie (ale tylko w obrębie wierzchołków nieizolowanych). Rozmiar minimalnego pokrycia wierzchołkowego w grafie bez wierzchołków izolowanych wynosi co najmniej Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle \frac{|\size{V}|}{k}} ponieważ jest co najmniej Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{V}|} krawędzi, a każdy wierzchołek pokrywa co najwyżej k z nich. To oszacowanie pozwala nam stwierdzić, że nowa redukcja jest L-redukcją z parametrami k i 1.

Ćwiczenie 5.3

{{{3}}}

Ćwiczenie 5.4

{{{3}}}

Ćwiczenie 5.5

{{{3}}}

Klasa Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}}

Wprowadzimy teraz formalną definicję klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} , która pozwoli nam bardziej metodycznie zbadać problemy optymalizacyjne. Dalsze badania nad tą klasą doprowadzą nas do bardzo ciekawych rezultatów dotyczących możliwości aproksymacji.

Zaczniemy od zdefiniowania klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} , która opisuje problemy maksymalizacyjne. Jej charakteryzacja jest analogiczna do charakteryzacji klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} podanej w twierdzeniu Fagina.

Definicja 6.1

Problem A należy do klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} , jeżeli można go wyrazić za pomocą formuły:

Parser nie mógł rozpoznać (nieznana funkcja „\defset”): {\displaystyle \displaystyle \max_{S}\defset{\{(\braq{x_1,x_2,\ldots,x_k}) \in V^k} : { \phi(G_1,G_2,\ldots,G_m,S,x_1,x_2,\ldots,x_k) }\}\textnormal{.} }

Wejściem dla problemu A jest ciąg relacji (być może wieloargumentowych) Gi,i=1,2,,m nad skończonym uniwersum V. Poszukiwana jest natomiast relacja S, która maksymalizowałaby liczbę naborów zmiennych xi takich, że formuła pierwszego rzędu bez kwantyfikatorów ϕ jest spełniona.

Definicja 6.2

Klasa Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} jest domknięciem Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} ze względu na L-redukcje.

Zobaczmy teraz przykład problemu, który należy do Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} . Wybierzemy problem k-INDEPENDENT SET. Zwykła reprezentacja grafu poprzez relację binarną nie pozwala wygodnie przedstawić ograniczenia stopnia wierzchołka i raczej nie prowadzi do reprezentacji poprzez odpowiednią formułę. Dlatego użyjemy niestandardowej reprezentacji grafu poprzez k+1-argumentową relację H. Każdemu wierzchołkowi G odpowiada jedna krotka relacji H - Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{x,y_1,y_2,\ldots,y_k})} , która koduje sąsiedztwo wierzchołka x. Wierzchołki y1,y2,,yk to sąsiedzi x. Jeżeli x nie ma k sąsiadów, to na brakujących pozycjach występuje x. Problem k-zbioru niezależnego koduje się wtedy w następujący sposób:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned \max_{S\subseteq V}\{(\braq{x,y_1,y_2,\ldots,y_k}) \in V^k : (\braq{x,y_1,y_2,\ldots,y_k}) \in H \wedge x \in S \wedge \\ \wedge \left[x = y_1 \vee y_1 \notin S\right] \wedge \left[ x = y_2 \vee y_2 \notin S\right] \wedge \ldots \wedge \left[ x = y_k \vee y_k \notin S\right]\} \endaligned\textnormal{.}}

Wybór relacji S koduje pewien podzbiór wierzchołków. Formuła kodująca problem jest spełniona dla krotek odpowiadających tym wierzchołkom x, które należą do wybranego zbioru, a żaden z sąsiadów nie należy. Odpowiada to więc zbiorowi niezależnemu.

Pokazaliśmy zatem, że problem k-INDEPENDENT SET należy do klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} . Natychmiastowym wnioskiem jest, że problem k-NODE COVER jest problemem z Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} . Znamy przecież jego L-redukcję do k-INDEPENDENT SET.

Ćwiczenie 6.3

{{{3}}}

Problemy MAXSAT i MAX FUNCTION SAT

Problem maksymalnej spełnialności MAXSAT i jego zawężenia pełnią podobną rolę dla klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} jak problem SAT dla Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} . W tej części przyjrzymy się dokładniej temu problemowi i jego różnym wersjom. Podamy również algorytmy aproksymacyjne i udowodnimy zupełność zawężeń tego problemu dla klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} .

Przypomnijmy, że na wejściu problemu MAXSAT dostajemy formułę logiczną w koniunkcyjnej postaci normalnej z n zmiennymi. Poszukujemy takiego wartościowania tych zmiennych, które zmaksymalizowałoby liczbę spełnionych klauzul. Dla wygody dodajemy warunek, aby każda z klauzul była inna.

12-aproksymację problemu MAXSAT można osiągnąć bardzo prostą metodą:

Algorytm 7.1 [Algorytm wybierający wartościowanie x lub x]


1. Wybierz dowolne wartościowanie x dla n zmiennych występujących w formule.

2. Skonstruuj wartościowanie x, które przyporządkowuje zmiennym wartościowanie odwrotne do x.

3. Jako wynik podaj to z wartościowań x, x, przy którym więcej klauzul jest spełnionych.

Twierdzenie 7.2

Podany algorytm jest algorytmem 12-aproksymacyjnym.

Dowód

Zauważmy, że jeżeli któraś z alternatyw jest niespełniona przy wartościowaniu x, to musi być spełniona przy wartościowaniu x. Jeżeli alternatywa jest niespełniona przy jakimś wartościowaniu, to znaczy, że każda ze zmiennych występujących w klauzuli jest wartościowana odwrotnie niż jej wystąpienie. Zatem przy wartościowaniu odwrotnym każdy z literałów występujących w alternatywie jest wartościowany pozytywnie i alternatywa musi być spełniona.

Jeżeli zatem oznaczymy przez m - liczbę alternatyw w formule, przez c liczbę alternatyw spełnionych przy wartościowaniu x, a przez c liczbę alternatyw spełnionych przy wartościowaniu x, to zachodzą następującee nierówności:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned c &\geq m - \overline{c}\textnormal{,} \\ \overline{c} &\geq m - c\textnormal{,} \\ c + \overline{c} &\geq 2m - c - \overline{c}\textnormal{,} \\ c + \overline{c} &\geq m\textnormal{.} \endaligned}

Ponieważ algorytm wybiera to z wartościowań x lub x, przy którym więcej alternatyw jest spełnionych, to liczba spełnionych alternatyw jest nie mniejsza niż 12m. Nawet jeżeli rozwiązanie optymalne zapewnia spełnienie wszystkich m alternatyw, to algorytm jest 12-aproksymacyjny.

Pokażemy teraz pewną wariację na temat problemu MAXSAT.

Problem

Problem maksymalnej spełnialności funkcyjnej MAX FUNCTION SAT.

Danych jest n zmiennych logicznych x1,x2,,xn oraz m funkcji logicznych f1,f2,,fm. Należy znaleźć wartościowanie zmiennych x1,x2,,xn, przy którym największa liczba funkcji daje wynik pozytywny.

Ciekawym i istotnym dla dalszych rozważań zawężeniem problemów MAXSAT i MAX FUNCTION SAT jest ograniczenie liczby różnych zmiennych występujących w pojedynczej klauzuli lub funkcji logicznej. Jeżeli ta liczba jest ograniczonaa przez k, to mamy do czynienia z problemem MAXkSAT i MAXkFSAT.

Przypomnijmy, iż pokazaliśmy, że już problem MAX2SAT jest Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{NP}} -zupełny (mimo że problem 2SAT nie jest). Teraz okaże się, dlaczego te problemy są dla nas tak interesujące:

Twierdzenie 7.3

Problemy MAXkSAT należą do klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} .

Dowód

Pokażemy, że problem MAX2SAT należy do Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} . Konstrukcja reprezentacji formuły i kodowania problemu dla większych k jest analogiczna.

Zatem ustalamy, że uniwersum V to zbiór zmiennych występujących w formule, a trzy relacje binarne G0,G1,G2 kodują formułę. Para Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{x_1,x_2})} w relacji Gi koduje wystąpienie klauzuli zawierającej literały x1 i x2, z których i występuje pozytywnie. Żeby zapewnić reprezentację każdej alternatywy przez dokładnie jedną krotkę którejś z relacji, wprowadzamy taką odpowiedniość pomiędzy relacjami i klauzulami:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \displaystyle \aligned G_0(x_i,x_j) & \Longleftrightarrow & (\braq{\neg x_i \vee \neg x_j}); i < j\textnormal{,} \\ G_1(x_i,x_j) & \Longleftrightarrow & (\braq{x_i \vee \neg x_j})\textnormal{,} \\ G_2(x_i,x_j) & \Longleftrightarrow & (\braq{x_i \vee x_j}); i < j\textnormal{.} \endaligned}

Możemy teraz użyć następującej formuły reprezentującej problem MAX2SAT:

Parser nie mógł rozpoznać (nieznana funkcja „\defset”): {\displaystyle \displaystyle \max_{S\subseteq V}\defset \{ {(\braq{x,y})}{\left : [ G_0(x,y) \wedge (\braq{\neg S(x) \vee \neg S(y) })\right] \vee \left[ G_1(x,y) \wedge (\braq{ S(x) \vee \neg S(y) })\right] \vee \left[ G_2(x,y) \wedge (\braq{ S(x) \vee S(y) })\right]} \}\textnormal{.} }

Wybór relacji S odpowiada ustaleniu wartościowania, a konstrukcja formuły zapewnia, że liczba krotek Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle (\braq{x,y})} spełniających formułę odpowiada liczbie alternatyw spełnionych przy danym wartościowaniu.

<flash>file=ZO-8-2.swf|width=300|height=200</flash>

<div.thumbcaption>Drzewo wartościowań

Zbudowanie algorytmu aproksymacyjnego dla problemu MAXkFSAT nie jest już tak proste, jak dla problemu MAXSAT. Załóżmy, że mamy n zmiennych x1,x2,,xn i m funkcji logicznych f1,f2,,fm, z których każda zależy od co najwyżej k zmiennych. Żeby dobrze zobrazować działanie algorytmu, wyobraźmy sobie pełne drzewo binarne o 2n liściach. Każdy węzeł wewnętrzny reprezentuje pewne częściowe wartościowanie zmiennych (rysunek Drzewo wartościowań).

Dla każdego węzła drzewa t i funkcji fi określamy funkcję:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle p(t,f_i) = \frac{\text{liczba wartościowań rozszerzających }t\text{ przy których }f_i\text{ daje wynik pozytywny}}{\text{liczba wszystkich wartościowań rozszerzających }t}\textnormal{.} }

Łatwo zauważyć, że jeżeli węzły t0 i t1 są dziećmi t w drzewie wartościowań, to zachodzi:

Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle p(t,f_i) = \frac{1}{2}(\braq{ p(t_0,f_i) + p(t_1,f_i) })\textnormal{.} }

Rozważmy teraz funkcję P(t)=i=1mp(t,fi). Oczywistym wnioskiem z poprzedniej równości jest:

Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle P(t) = \frac{1}{2}(\braq{ P(t_0) + P(t_1) })\textnormal{.} }

Zauważmy jeszcze, że obliczenia wartości P(t) dla konkretnego t można dokonać w czasie wielomianowym. Ponieważ każda z funkcji fi zależy tylko od k zmiennych, więc można dokonać wyczerpującego przeglądu wszystkich 2k wartościowań tych zmiennych, zliczając te, dla których fi daje wynik pozytywny i są rozszerzeniami wartościowania t. Można zatem w czasie wielomianowym zsumować wartości p(t,fi) dla wszystkich m funkcji fi.

Możemy już teraz przedstawić algorytm:

Algorytm 7.4 [Algorytm schodzący po drzewie wartościowań]


1. Ustaw zmienną t na korzeń r drzewa wartościowań.

2. Dopóki t nie będzie liściem drzewa wartościowań:

obliczaj wartość P(t0) i P(t1) dla dzieci węzła t

i ustaw t na to z dzieci, dla którego wartość P(ti) jest większa.

3. Podaj wartościowanie opisywane przez węzeł t jako wynik.

Twierdzenie 7.5

Algorytm schodzący po drzewie wartościowań jest algorytmem 12k-aproksymacyjnym dla problemu MAXkFSAT.

Dowód

Liczba funkcji dających wynik pozytywny przy wartościowaniu t znalezionym przez algorytm jest równa dokładnie P(t). Ponieważ węzeł t określa wartość każdej ze zmiennych, to p(t,fi) jest równe 1 dla funkcji dających wynik pozytywny, a 0 dla tych dających wynik negatywny.

Zauważmy, że P(t)P(r). Jest tak dlatego, że przy każdym zejściu w dół drzewa od węzła s jest spełnione Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle P(s) = \frac{1}{2}(\braq{ P(s_0) + P(s_1) })} , więc któraś z wartości P(s0), lub P(s1) jest większa lub równa P(s), a algorytm wybiera zejście w kierunku większej z nich. W związku z tym wartość funkcji P dla aktualnie przeglądanego węzła nigdy nie maleje.

Zatem liczba funkcji z wynikiem pozytywnym w rozwiązaniu znalezionym przez algorytm jest nie mniejsza niż Parser nie mógł rozpoznać (nieznana funkcja „\ceil”): {\displaystyle \displaystyle [\ceil{ P(r) }]} . Ponieważ dla każdej funkcji, która może w ogóle dać wynik pozytywny, przy jakimkolwiek wartościowaniu zachodzi p(r,fi)12k, to liczba funkcji, które dają wynik pozytywny w rozwiązaniu optymalnym, jest ograniczona z góry przez P(r)12k. To dowodzi, że algorytm jest algorytmem 12k-aproksymacyjnym.

Ćwiczenie 7.6

{{{3}}}

Ćwiczenie 7.7

{{{3}}}

Problemy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} -zupełne

Pokażemy teraz, że problem MAX3SAT jest problemem zupełnym w sensie L-redukcji w klasie Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} . Jest to bardzo istotny fakt, bo oznacza, że pozytywne wyniki aproksymacjii tego elementarnego problemu przekładają się poprzez L-redukcje na wszystkie problemy z klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} . Jest też to fakt interesujący ze względu na to, że wcale nie jest oczywiste, iż problemy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} -zupełne muszą w ogóle istnieć.

Twierdzenie 8.1

MAX3SAT jest problemem zupełnym w sensie L-redukcji w klasie Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} .

Dowód

Przypomnijmy, że klasa Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}} jest definiowana jako klasa problemów L-redukowalnych do problemów z Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} . Zatem wystarczy, że pokażemy, iż każdy problem z Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} jest L-redukowalny do problemu MAX3SAT i skorzystamy z tego, że złożenie L-redukcji jest L-redukcją.

Rozważmy zatem problem A z klasy Parser nie mógł rozpoznać (nieznana funkcja „\cc”): {\displaystyle \displaystyle \cc{MAXSNP}_0} definiowany formułą:

Parser nie mógł rozpoznać (nieznana funkcja „\defset”): {\displaystyle \displaystyle \max_S\defset \{ {(\braq{x_1,x_2,\ldots,x_k})} : {\phi} \}\textnormal{.} }

Rozważymy teraz konkretną instancję problemu A z ustalonym uniwersum V i relacjami G1,G2,,Gm. Dla każdej krotki Parser nie mógł rozpoznać (nieznana funkcja „\braq”): {\displaystyle \displaystyle v = (\braq{v_1,v_2,\ldots,v_k}) \in V^k} definiujemy formułę ϕv, która powstaje z ϕ przez podstawienie wartości v1,v2,,vk za zmienne x1,x2,,xk. Każdą w formuł ϕv możemy uprościć, zamieniając każde wystąpienie relacji G i symbolu = wartościami prawdy i fałszu, które w konkretnej instancji są ustalone. W wyniku otrzymujemy formułę ϕv, w której występują tylko symbole logiczne i relacja S.

Możemy teraz spojrzeć na rozwiązanie tej instancjii problemu A jak na ustalenie wartościowania formuł S(vi1,vi2,,vir), tak aby zmaksymalizować liczbę spełnionych formuł ϕv. Jeżeli któraś z formuł ϕv jest niespełnialna dla żadnego wartościowania, to już na tym etapie usuwamy ją z opisu problemu.

Właśnie opisaliśmy redukcję problemu A do problemu MAXlFSAT, gdzie jest Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{V}|^r} zmiennych odpowiadających S(vi1,vi2,,vir) i Parser nie mógł rozpoznać (nieznana funkcja „\size”): {\displaystyle \displaystyle |\size{V}|^r} funkcji logicznych odpowiadających formułom ϕv. Stała l zależy tylko od postaci formuły ϕ i należy ją ustalić równą liczbie wystąpień symbolu relacyjnego S w formule ϕ. Możemy teraz użyć redukcji MAXlFSAT do MAX3SAT.

Musimy teraz pokazać, że otrzymana w ten sposób redukcja jest L-redukcją. Na podstawie instancji x problemu A możemy zbudować R(x) instancję problemu MAX3SAT. Rozwiązanie S(s) możemy łatwo obliczyć, odczytując relację S z wartości zmiennych występujących w rozwiązaniu problemu R(x).

Musimy teraz skorzystać z pewnych własności problemu MAXlFSAT i jego redukcji do MAX3SAT.

Po pierwsze, każda formuła ϕv jest reprezentowana przez co najwyżej c klauzul, gdzie c zależy tylko od liczby bramek potrzebnych do wyrażenia formuły ϕ.

Po drugie, istnieje stała d taka, że dla m funkcji w problemie MAXlSAT istnieje wartościowanie, przy którym przynajmniej dm spośród funkcji ma wartość pozytywną. Skorzystamy z tego, że odrzuciliśmy funkcje, które stale przyjmują wartość negatywną. Stałą d równą 12l otrzymujemy z dowodu, że algorytm schodzący po drzewie wartościowań jest algorytmem 12l-aproksymacyjnym.

Po trzecie, zastosowana redukcja MAXlFSAT do MAX3SAT gwarantuje, że w rozwiązaniu optymalnym problemu R(x) wszystkie klauzule poza tymi przechowującymi wyniki funkcji są spełnione.

Te trzy fakty sprawiają, że opisana redukcja jest L-redukcją z parametrami Parser nie mógł rozpoznać (błąd składni): {\displaystyle \displaystyle \alpha = \frac{c}{d}( \textnormal{opt} \displaystyle (x) \geq dm} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt} \displaystyle ( R(x) ) \leq cm} ) i β=1 (w rozwiązaniu optymalnym Parser nie mógł rozpoznać (błąd składni): {\displaystyle \textnormal{opt}} problemu R(x) liczba spełnionych alternatyw zmniejszona o liczbę alternatyw innych niż przechowujące wyniki funkcji wyznacza dokładnie liczbę krotek Vk, dla których relacja S zachodzi).

Ćwiczenie 8.2

{{{3}}}

Testy końcowe