Złożoność obliczeniowa/Wykałd 4: Redukcje i zupełność
Redukcje i zupełność
W poprzednim module przedstawione zostały podstawowe klasy złożoności dla problemów, jak również zależności między nimi. W tym rozdziale poznamy narzędzie bardzo pomocne przy określaniu przynależności problemów do zadanej klasy złożoności - redukcje.
Redukcje
Definicja
Niech będzie pewną rodziną funkcji o sygnaturze
domkniętą na składanie i zawierającą identyczność. Niech i będą językami nad alfabetem (czyli inaczej mówiąc zakodowanymi binarnie problemami decyzyjnymi). Mówimy, że problem jest redukowalny do problemu w sensie rodziny i zapisujemy
wtedy i tylko wtedy, gdy
Intuicyjnie problem jest w pewnym sensie co najwyżej tak trudny jak problem - jeżeli znamy rozwiązanie problemu oraz odpowiednią funkcję (zwaną redukcją lub transformacją), to znamy również rozwiązanie problemu . Warto zauważyć, że relacja jest preporządkiem, to znaczy jest zwrotna (ze względu na obecność identyczności) i przechodnia (ze względu na domkniętość rodziny na składanie).
Przedstawmy teraz najczęściej stosowane rodziny redukcji.
Redukcje wielomianowe
Rodzina redukcji wielomianowych (Karpa) to rodzina funkcji obliczalnych nadeterministycznej maszynie Turinga w czasie wielomianowym. Redukowalność w sensie rodziny redukcji wielomianowych najczęściej po prostu nazywa się redukowalnością wielomianową.
Klasycznym przykładem redukowalnosci wielomianowej jest redukowalność problemu maksymalnego skojarzenia w grafie dwudzielnym do problemu maksymalnego przepływu w grafie skierowanym.
ZO-4-1. Przekształcenie grafu dwudzielnego w sieć przepływową.
Redukcje wielomianowe mają ważną własność: Jeżeli problem jest redukowalny wielomianowo do problemu oraz należy do klasy , to również należy do klasy . Aby uzasadnić tą własność wystarczy skonstruować maszynę, która najpierw przekształci instancję problemu do instancji problemu (uczyni to w czasie wielomianowym, bo jest wielomianowo redukowalne do ), po czym w czasie wielomianowym da odpowiedź dla instancji problemu .
Ćwiczenie 1
Załóżmy, że jest wielomianowo redukowalne do oraz należy do klasy . Pokaż, że również należy do klasy .
Redukcje logarytmiczne
Drugą ciekawą rodziną redukcji jest rodzina redukcji logarytmicznych. Aby zdefiniować tą rodzinę zmodyfikujemy definicję maszyny Turinga - otóż wyznaczamy na niej dwie specjalne taśmy - wejściową (tylko do odczytu, tak jak przy maszynie off-line) i wyjściową. Po zapisie na taśmę wyjściową głowica przesuwa się zawsze w tym samym kierunku, co uniemożliwia odczyt poprzednio zapisanych symboli.
Powróćmy teraz do redukcji. Redukcja logarytmiczna jest funkcją obliczalną na deterministycznej maszynie Turinga z użyciem logarytmicznej ilości pamięci na taśmie roboczej. Zauważmy, że nie nakładamy żadnych ograniczeń na wielkość słowa wyjściowego - najczęśniej jego wielkość będzie wielomianowo zależna od wielkości słowa wejściowego. Intuicyjnie transformacja logarytmiczna pozwala przechowywać na taśmie roboczej stałą liczbę wskaźników do komórek wejściowych (lub innych obiektów o podobnej wielkości).
Ćwiczenie 2
Czy problem maksymalnego skojarzenia w grafie dwudzielnym jest redukowalny do problemu maksymalnego przepływu w sensie rodziny transformacji logarytmicznych?
Ćwiczenie 3
Czy istnienie redukcji logarytmicznej z problemu do problemu implikuje istnienie redukcji wielomianowej z do ? Odpowiedź uzasadnij.
Warto się zastanowić czy prawdziwa jest następująca hipoteza:
Ta niewątpliwie cenna (o ile prawdziwa) hipoteza nie jest jednak tak oczywista jak poprzednio pokazywane analogiczne fakty dla transformacji wielomianowej i klas oraz . Problem przy "składaniu" dwóch maszyn - transformacji oraz maszyny rozwiązującej - tkwi w tym, że być może nie będziemy w stanie zapisac wyjścia transformacji (o potencjalnie wielomianowej wielkości) na taśmie roboczej.
Posłużymy się tutaj następującym trikiem: Uruchomimy maszynę rozwiązującą problem ; za każdym razem, gdy maszyna ta będzie chciała odwołać się do któregoś - dla ustalenia uwagi -tego - bitu wejścia, na osobnej taśmie uruchomimy maszynę implementującą redukcję z do . Maszyna ta nie będzie jednak wypisywać kolejnych symboli na wyjście, tylko inkrementować specjalnie utworzony licznik operacji wyjścia; w momencie, gdy wykonana zostanie -ta operacja wyjścia, maszyna powróci do wykonywania programu rozwiązującego problem , wykorzystująć symbol, który miał zostać wypisany na wyjście przez maszynę transformującą. Takie postępowanie wydaje się mało wydajne - tym niemniej na taśmach roboczych nigdy nie znajduje się większa niż logarytmiczna liczba symboli - a zatem otrzymujemy algorytm dla problemu , wykorzystujący logarytmiczną ilośc symboli. Analogiczny argument można zastosować do pokazania, że rodzina transformacji logarytmicznych jest domknięta na składanie.
Transformacja wielomianowa w sensie Turinga
Definiowana tutaj transformacja będzie miała trochę inny charakter od dwóch poprzednich - w szczególności formalnie nie będzie ona redukcją. Do jej zdefiniowania będziemy potrzebować pojęcia maszyny z wyrocznią.
Definicja
Maszyna z wyrocznią jest wielotaśmową maszyną Turinga, z jedną wyróżnioną taśmą i trzema wyróżnionymi stanami . Zachowanie maszyny różni się od zachowania zwykłej maszyny Turinga w następujący sposób: Przejście maszyny do stanu jest traktowane jako odwołanie do wyroczni . Jeżeli słowo aktualnie zapisane na wyróżnionej taśmie należy do języka , to maszyna przechodzi do stanu ; w przeciwnym razie przechodzi do stanu . Odwołanie do wyroczni wliczane jest do czasu działania maszyny jako jedno przejście.
Mówiąc nieformalnie maszyna może w trakcie działania wielokrotnie prosić wyrocznię o rozwiązanie problemu .
Definicja
Niech i będą językami nad alfabetem . Mówimy, że transformuje się do w sensie wielomianowej transformacji Turinga wtedy i tylko wtedy gdy istnieje maszyna Turinga z wyrocznią rozwiązująca w czasie wielomianowym.
Transformacja Turinga intuicyjnie odpowiada stosowaniu podprogramów - jeżeli znamy rozwiązanie problemu to stosujemy go jako podprocedurę przy rozwiązywaniu problemu .
Ćwiczenie 4
Niech i będą językami nad alfabetem oraz niech transformuje się do w sensie transformacji wielomianowej Turinga. Które z poniższych zdań jest prawdziwe:
- ,
- ?
Łatwo zauważyć, że transformacja wielomianowa w sensie Turinga wyznacza preporządek na językach zawartych w . Oznaczamy ją symbolem .
Ćwiczenie 5
Które z poniższych zdań jest prawdziwe:
- ,
- ?