Łańcuch dodatek jest ciągiem liczb naturalnych , gdzie x 1 = 1 , a każdy wskaźnik i ≥ 2 mamy x ı = x j + x k kilku wskaźników 1 ≤ j , k < i . Długość łańcucha addycji N ; docelowej sieci addycji x .
Co wiadomo na temat złożoności następującego problemu: Biorąc pod uwagę liczbę całkowitą , jaka jest długość najkrótszego łańcucha dodawania, którego celem jest N ? Czy to trudne NP?
Wikipedia wskazuje na artykuł Downeya, Leonga i Sethiego z 1981 r., Który dowodzi, że następujący pokrewny problem jest trudny do NP: biorąc pod uwagę liczbę całkowitą, jaka jest minimalna długość łańcucha dodatków obejmującego cały zestaw? Kilku autorów najwyraźniej twierdzi, że ten dokument dowodzi, że problem z jednym celem jest trudny do NP, ale tak nie jest.
Odpowiedzi:
Problem jest wspomniany jako otwarty w pracy doktorskiej Erica Lehmana „Algorytmy aproksymacyjne do kompresji danych opartych na gramatyce” w 2002 r. Z p35 pracy:
„Niemniej jednak dokładne rozwiązanie problemu łańcucha addycyjnego pozostaje dziwnie nieuchwytne. Metoda M-ary działa w czasie polilogu (n) i daje przybliżenie 1 + o (1). Jednakże, nawet jeśli wykładniczo więcej czasu jest dozwolone, poli ( n) nie jest znany dokładny algorytm. ”
źródło
A w głównym artykule pracy Lehmana znajduje się dobry przegląd problemu (sekcja VB) z odniesieniami.
źródło
Chciałbym udokumentować pewne częściowe postępy - na pozór obiecujące - w kierunku algorytmu wielomianowego czasu. AKTUALIZACJA : Dodano pewne szczegóły dotyczące usterki wskazanej przez @David (dzięki!).
Podejście polega na zredukowaniu tego do wystąpienia CSP MIN-ONES EVEN-3 (MOEC), który okazuje się być rozwiązaniem problemu wielomianowego. Dowód redukcji jest trochę niewyraźny, ale mam nadzieję, że istnieje!
Instancja MOEC to rodzina -sized podzbiorów wszechświecie zmiennych i liczb całkowitych k . Pytanie brzmi, czy istnieje zadowalające przypisanie wagi co najwyżej k , gdzie przypisanie jest funkcją wszechświata do { 0 , 1 } , waga przypisania jest liczbą zmiennych, które przypisuje jednej, a przypisanie jest spełniające, jeśli dla każdego podzbioru zmiennych { x , y , z } przypisanie (powiedzmy f ) ma właściwość, która:3 k k {0,1} {x,y,z} f
.f(x)+f(y)+f(z)=0(mod 2)
Możesz to sobie wyobrazić jako 3-SAT z innym pojęciem satysfakcji - wybierz brak lub wybierz dwa. Będę trochę rozluźniony w związku z wystąpieniem MOEC, ponieważ pozwolę, oprócz zwykłych podzbiorów, implikacji, rozbieżności długości drugiej i ograniczenia ( x = 1 ) . Wierzę, że te proste dodatki utrzymają problem wielomianowy czas.3 (x=1)
Powiedzmy, że zmniejszamy problem łańcucha dodatków dla liczby . Zmienna ustawiona dla tej redukcji jest następująca:n
Dla każdego zmienna N i . I ponownie zapisu zmiennej N n a N . Dla każdej pary i , j takiej, że 1 ≤ i , j ≤ k , wprowadź zmienne P i j i Q i j .1≤i≤n Ni Nn N i,j 1≤i,j≤k Pij Qij
Wprowadź następujące podzbiory dla każdego tak aby k = i + j :i,j,k k=i+j
i następujące implikacje:
i P i j ⇒ N jPij⇒Ni Pij⇒Nj
oraz następujące ograniczenia:
.(N1=1),(N=1)
Wreszcie, musimy dodać ograniczenia, które zapewnią, że przynajmniej jedna z zmiennych zostanie wybrana, gdy przypisana zostanie „odpowiadająca” zmienna N (wybacz nadużycie notacji). Można tego dokonać dodając zwykłe ograniczenie OR do wszystkich P i j, tak że i + j sumuje się do danej zmiennej N. Musimy jednak znaleźć sposób na ponowne zakodowanie tego w ramach MOEC.P N Pij i+j N
Pozwólcie, że nakreślę ogólny sposób powiedzenia, biorąc pod uwagę zestaw zmiennych:
,(X,l1,l2,…,lt)
jak ograniczenie „jeśli przypisanie jest satysfakcjonujące i zestawy do jednego, a następnie dokładnie z L I „s musi być ustawiony na jeden przez przypisanie”mogą być kodowane ze składnią MOEC. Pamiętaj, że wystarczy to dla naszych wymagań, po prostu wprowadzamy ograniczenia:X li
.(Nk,{Pij | i+j=k})
Kodowanie odbywa się w następujący sposób. Niech będzie ukorzenionym kompletnym drzewem binarnym na t liściach. Wprowadzenie nowej zmiennej T d ı dla wszystkich 1 ≤ d ≤ log t i 1 ≤ i ≤ l ( d ) , w których L ( d ) oznacza liczbę węzłów T X na głębokości d .TX t Tdi 1≤d≤logt 1≤i≤L(d) L(d) TX d
Dla każdego węzła , jeżeli p i q będą jego potomkami w drzewie, wprowadź ograniczenie EVEN-3:Tdi p q
Oznacza to, że jeśli zmienna odpowiadająca węzłowi jest ustawiona na true, wówczas dokładnie jedno z jej potomków również musi być ustawione na true. Teraz dodaj implikacje:
i ( d log t , j ) ⇒ l j (przecinek dla przejrzystości).(X⇒T11) (dlogt,j)⇒lj
Ta kombinacja ograniczeń EVEN-3 i implikacji jest równoważna ograniczeniom, które chcieliśmy zakodować.
źródło