Miałem nadzieję, że ktoś może mi wyjaśnić, dlaczego dokładnie problem produktu z podzbiorem jest silnie trudny do NP, podczas gdy problem sumy z podzbiorem jest trudny do NP.
Podzbiór Suma: Biorąc pod uwagę, i T , czy istnieje podzbiór X ' , tak że Σ i ∈ X ' x I = T .
Podzbiór produktu: Biorąc pod uwagę, i T , czy istnieje podzbiór X ' , tak że Π i ∈ X ' x I = T .
Zawsze uważałem, że dwa problemy są równoważne - instancja SS może zostać przekształcona w instancję SP za pomocą potęgowania, a instancja SP w SS za pomocą logarytmów. Doprowadziło mnie to do wniosku, że oba należały do tej samej klasy NP-twardych - tj. Oba były słabo NP-twarde.
Ponadto wydaje się, że ta sama rekurencja może być wykorzystana do rozwiązania obu problemów za pomocą programowania dynamicznego z bardzo małą zmianą (zastępując odejmowanie w SS dzieleniem w SP).
Tak było, dopóki nie przeczytałem rozdziału 8 „Teorii obliczeń” Bernarda Moreta (dla tych, którzy nie mają książki, ma dowód twardości podzbioru przez X3C - problem silnie NP).
Rozumiem redukcję, ale nie mogę zrozumieć, co było nie tak z moim wcześniejszym wnioskiem (równoważność dwóch problemów).
AKTUALIZACJA : Okazuje się, że produkt podzbioru słabo uzupełnia NP (produkt docelowy jest wykładniczy w ). Gary i Johnson opublikowali to w kolumnie NP-zupełność w 1981 r. , Ale myślę, że było to mniej widoczne niż ich wcześniejsze twierdzenie w ich książce.
Odpowiedzi:
Odnośnie do problemu równoważności sumy podzbioru i produktu podzbioru Istnieją techniczne dane techniczne dotyczące podzbioru produktu. Iloczyn x = T jest faktycznie Psuedopolynomialem, jeśli T nie jest wykładniczy! Tak więc dowody na to, że Subset Product jest NP Hard, nie są (z przyczyn technicznych !!!) całkiem poprawne!
Jednak biorąc pod uwagę obietnicę, że T jest duża, wówczas redukcja za pomocą logarytmów do sumy podzbioru daje NADZWYCZAJNĄ SUMĘ SUBSETOWĄ, która jest ponad rzeczywiste! Oznacza to, że algorytm Psuedopolynomial dla sumy podzbiorów nie ma zastosowania! Chociaż logarytmy są małe, miejsca dziesiętne zaburzają dynamiczne programowanie Psuedopolynomial!
mam nadzieję, że to pomoże
Zelah
źródło
Po pierwsze, użycie potęgowania w celu przejścia z SS do SP działa (przy użyciu podstawy 2 zamiast zasady ), ale wysadza rozmiar zaangażowanych liczb. Słaba twardość NP oznacza, że jeśli liczby są małe (a dokładniej oznaczane jako jednoargumentowe), problem nie jest już trudny. Dlatego użycie potęgowania tworzy instancje wielkości SP o wykładniczej wielkości, nawet dla łatwych instancji SS, w których liczby zapisywane są w jedności.e
Po drugie, używanie logarytmów do przejścia ze SP do SS nie działa, ponieważ logarytmy zwykle generują wartości niecałkowite. SS i SP są definiowane za pomocą liczb całkowitych, a logarytmy często prowadzą do transcendentalnych wartości, które są trudne do przedstawienia lub wykonania matematyki.
Niech będzie liczbą całkowitą, A > 0 , to log 2 A jest racjonalny, jeśli i tylko jeśli A jest potęgą 2, a transcendentalny w przeciwnym razie. Po pierwsze, jeśli log 2 A = pA A>0 log2A A dla niezerowych liczb całkowitychpiq, a następnieA=2 plog2A=pq p q ,Aq=2p. Dlatego mamyA=2rprzez rozkład pierwotny. Ponadtorq=2p, więc punktacjęAmożemy odebraćq=1ip=rudowodnićlog2jest racjonalne.A=2pq Aq=2p A=2r Arq=2p A q=1 p=r log2A
Musimy tylko pokazać, że nigdy nie jest transcendentalny inaczej. Wynika to z twierdzenia Gelfonda-Schneidera , ponieważ równoważne sformułowanie (jak można znaleźć na stronie Wiki) brzmi „jeśli α i γ są niezerowymi liczbami algebraicznymi, i przyjmujemy dowolny niezerowy logarytm α , to ( log γ ) / ( log α ) = log α γ jest albo racjonalny, albo transcendentalny. ” Łatwo to również zweryfikować, biorąc odwrotność twierdzenia i ustawiając α β = γ, a zatem βlog2A α γ α (logγ)/(logα)=logαγ αβ=γ .β=logαγ
Na koniec zastanów się, co się stanie, gdy wypróbujemy algorytm programowania dynamicznego z SS na SP. Ponieważ korzystamy z produktów, a nie z sum, dane liczbowe ulegają ogromnemu wysadzeniu, a wymagana matematyka precyzji nagle staje się czynnikiem wpływającym na czas działania. Właśnie dlatego algorytm nie może szybko rozwiązać wystąpień SP, nawet jeśli liczby są jedności.
źródło
Dosłowne wyjaśnienie polega na tym, że problem produktu podzbioru jest NP-zupełny przez redukcję z problemu silnie NP-zupełnego, takiego jak dokładna ochrona przez 3 zestawy. W przypadku takiej „silnej” redukcji wejściowe liczby całkowite są ograniczone pewną funkcją wielomianową w liczbie całkowitej w wynikowym wystąpieniu problemu produktu podzbioru.
źródło