W teorii obliczalności i złożoności (i być może w innych dziedzinach) redukcje są wszechobecne. Istnieje wiele rodzajów, ale zasada pozostaje ta sama: pokaż, że jeden problem jest co najmniej tak samo trudny jak jakiś inny problem poprzez odwzorowanie instancji z na równoważne z rozwiązaniem w . Zasadniczo pokazujemy, że każdy solver dla może również rozwiązać jeśli pozwolimy mu używać funkcji redukcji jako preprocesora.
Przez lata dokonywałem swojej części redukcji i coś mnie wkurza. Chociaż każda nowa redukcja wymaga (mniej lub bardziej) kreatywnej konstrukcji, zadanie może wydawać się powtarzalne. Czy istnieje pula metod kanonicznych?
Jakie techniki, wzorce i sztuczki można regularnie stosować do konstruowania funkcji redukcji?
To ma stać się pytaniem referencyjnym . Dlatego prosimy o podanie ogólnych, dydaktycznie przedstawionych odpowiedzi, które są zilustrowane co najmniej jednym przykładem, ale mimo to obejmują wiele sytuacji. Dzięki!
Odpowiedzi:
Przypadek specjalny
Zakładamy chcemy pokazać względem jakiegoś pojęcia redukcji . Jeśli jest szczególnym przypadkiem od , że jest dość banalna: w zasadzie możemy skorzystać z funkcji tożsamości. Intuicja stojąca za tym jest jasna: ogólny przypadek jest co najmniej tak samo trudny jak przypadek specjalny.L1≤RL2 R L1 L2
W „praktyce”, daje nam i tkwią z problemem podnoszenia partnera redukcji dobry , czyli znalezienie szczególny przypadek , który okazał się być -hard.L 1 L 2 RL2 L1 L2 R
Prosty przykład
Załóżmy, że chcemy pokazać, że KNAPSACK jest trudny do NP. Na szczęście wiemy, że SUBSET-SUM jest NP-zupełny i rzeczywiście jest to szczególny przypadek KNAPSACK. Redukcja
wystarcza; to instancja KNAPSACK, która pyta, czy możemy osiągnąć co najmniej wartość z wartościami przedmiotów w tak aby odpowiednie wagi z pozostały poniżej w sumie. Nie potrzebujemy ograniczeń wagi do symulacji SUBSET-SUM, więc po prostu ustawiliśmy je na wartości tautologiczne.v V W w(V,W,v,w) v V W w
Prosty problem z ćwiczeniami
Rozważ problem MAX-3SAT: biorąc pod uwagę formułę zdań i liczbę całkowitą , zdecyduj, czy istnieje interpretacja spełniająca co najmniej klauzule . Pokaż, że jest to trudne NP.k φ kφ k φ k
Przykład
Załóżmy, że badamy problem SUBSET-SUM i chcemy pokazać, że jest to trudny NP.
Mamy szczęście i wiemy, że problem PARTYCJI jest NP-zupełny. Potwierdzamy, że rzeczywiście jest to szczególny przypadek SUBSET-SUM i formułujemy
gdzie jest zestawem wejściowym PARTITION, a jest instancją dla SUBSET-SUM, która pyta po podzbiorze sumującym do . Tutaj musimy zająć się sprawą, w której nie ma pasującego ; w takim przypadku dajemy arbitralną niewykonalną instancję.A (A,k) A k k
Problem z ćwiczeniami
Rozważmy problemu najdłuższej ścieżki: podany skierowany wykres węzły o i liczby całkowitej , decyduje, czy istnieje prosta droga od do w o długości co najmniej .G s,t G k s t G k
Pokaż, że NAJDŁUŻSZA ŚCIEŻKA jest NP-trudna.
źródło
Wykorzystanie znanego problemu w pobliżu
W obliczu problemu, który jest trudny, często dobrym pomysłem jest poszukiwanie podobnego problemu, który już okazał się trudny. Być może od razu zauważysz, że problem jest bardzo podobny do znanego problemu.
Przykładowy problem
Rozważ problem
chcemy pokazać -kompletny. Szybko zauważamy, że jest bardzo blisko problemu, który już wiemy, że jest trudny, a mianowicie problemu satysfakcji (SAT) .NP
Przynależność do jest łatwa do pokazania. Certyfikat to dwa zadania. Oczywiście w czasie wielomianowym można sprawdzić, czy przypisania spełniają formułę.NP
Wynika z tego, że jest -kompletny, co chcieliśmy pokazać.DOUBLE-SAT NP
Znajdowanie problemów w pobliżu
Zmniejszanie problemów jest rodzajem sztuki i często potrzebne jest doświadczenie i pomysłowość. Na szczęście wiele trudnych problemów jest już znanych . Komputery i nienaruszalność Gareya i Johnsona: Przewodnik po teorii kompletności NP jest klasyczny, a dodatek zawiera wiele problemów. Google Scholar jest także przyjacielem.
źródło
W obliczeniach często badamy zestawy maszyn Turinga. Oznacza to, że nasze obiekty są funkcjami i mamy dostęp do numeracji Gödla . To świetnie, ponieważ możemy robić, co chcemy, korzystając z funkcji wprowadzania danych, pod warunkiem, że pozostajemy obliczeniowi.
Załóżmy, że chcemy pokazać, że nie jest rozstrzygalne. Naszym celem jest osiągnięcie równoważności zagładyL
z problem zatrzymania (lub inny niezdecydowany język / problem).K={⟨M⟩∣M(⟨M⟩) halts}
Dlatego musimy wymyślić obliczalne¹ mapowanie , aby zawsze był obliczalny. Jest to akt twórczy oparty na równoważności zagłady. Zobacz kilka przykładów, aby dowiedzieć się, jak to działa:⟨M⟩↦⟨fM⟩ fM
To samo działa, aby wykazać, że nie jest częściowo rozstrzygalny, wybierając języki nierozstrzygalne jako partner redukcji, np. :L K¯¯¯¯¯
źródło
to zależy od złożoności klas zaangażowanych i czy ktoś chce zmniejszyć z danym do nieznanego lub nieznanym do danego . częstym scenariuszem jest udowodnienie problemów NP Hard lub NP Complete. powszechną techniką jest konstruowanie „gadżetów” w jednej domenie, które zachowują się w określony sposób, naśladując zachowanie innej domeny. na przykład, aby przekonwertować SAT na pokrycie wierzchołka, konstruuje się w gadżecie „gadżety”, które zachowują się podobnie do klauzul SAT, np. w następującym pokazie slajdów: NP Całkowite redukcje według Krishnamoorthy (również z przykładem ścieżki Hamiltona).A B B A
użyteczną strategią jest praca z dużymi kompilacjami problemów z danej klasy złożoności i znajdowanie „pozornie najbliższych problemów” do badanego problemu. doskonałym odniesieniem do tych linii jest Komputery i nienaruszalność, przewodnik po teorii kompletności NP, Garey i Johnson zorganizowane według różnych typów problemów.
źródło