Dokładne algorytmy czasu wykładniczego dla programowania 0-1


10

Czy są znane algorytmy dla następującego problemu, które pokonały naiwny algorytm?

Dane wejściowe: system o nierówności liniowych.ZAxbm

Wynik: wykonalne rozwiązanie jeśli takie istnieje.x{0,1}n

Załóżmy, że i mają wpisy liczb całkowitych. Interesują mnie granice najgorszego przypadku.ZAb

Odpowiedzi:


14

Jeśli jest superliniowe, taki algorytm obaliłby hipotezę silnego czasu wykładniczego, ponieważ formuły w spójnej postaci normalnej są szczególnym przypadkiem programowania 0-1, a lemat sparsyfikacyjny pozwala nam zredukować -SAT do CNF-SAT na liniowo wielu klauzulach .mk

Istnieje jednak algorytm związany z Impagliazzo, Paturi i mną, który może rozwiązać taki system nierówności, jeśli liczba drutów, tj. Liczba niezerowych współczynników w jest liniowa. W szczególności, jeśli liczba drutów wynosi , algorytm działa w czasie , gdzie s = 1c n 2 ( 1 - s ) nAcn2(1s)n .s=1cO(c2)


1

Jeśli jest wystarczająco małe, możesz zrobić lepiej niż naiwny algorytm, tj. Lepiej niż 2 n razy. Tutaj „wystarczająco mały” oznacza, że m jest mniejsze niż coś takiego jak n / lg n . Czas działania będzie nadal wykładniczy - np. Może być 2 n / 2 - ale będzie szybszy niż naiwny algorytm.m2)nmn/lgn2)n/2)

Nawiasem mówiąc, wygląda na to, że pozwala nam to rozwiązać problem szybciej niż czasu w niektórych przypadkach, gdy macierz A ma superliniową liczbę wpisów. Nie wiem, jak to zrównoważyć z inną podaną tutaj odpowiedzią. W związku z tym należy dokładnie sprawdzić moją odpowiedź: może to wskazywać, że gdzieś popełniłem poważny błąd.2)nZA


Podstawowe podejście: napisz , gdzie x 0 zawiera pierwsze n / 2 składowe x, a x 1 zawiera ostatnie n / 2 składowe; podobnie = ( 0 , 1 ) , w którym 0 ma lewe n / 2 kolumny A oraz A 1 prawo nx=(x0,x1)x0n/2)xx1n/2)ZA=(ZA0,ZA1)ZA0n/2)ZAZA1 kolumny. Teraz A x b można ponownie zapisać w formularzun/2)ZAxb

ZA0x0+ZA1x1b,

lub równoważnie

ZA0x0b-ZA1x1.

Wymień wszystkie możliwości dla A 0 x 0 i niech S oznacza zbiór możliwych wartości, tj.2)n/2)ZA0x0S.

S.={ZA0x0:x0{0,1}n/2)}.

Podobnie wyliczyć zestaw wszystkich możliwości 2 n / 2 dla b - A 1 x 1 , tj.T.2)n/2)b-ZA1x1

T.={b-ZA1x1:x1{0,1}n/2)}.

Teraz problem się pojawia

Biorąc pod uwagę zbiory o wielkości 2 n / 2 , czy istnieją s S i t T takie, że s t ?S.,T.Zm2)n/2)sS.tT.st

(Tutaj przyjmuje się punktowo, tzn. Wymagamy, aby s it i dla wszystkich i .)sjatjaja

Ten ostatni problem jest omawiany na CS.StackExchange i najwyraźniej istnieje dla niego algorytm działający w czasie . Jeśli m jest wystarczająco małe (powiedzmy, mniejsze niż n / lg n ), oznacza to, że całkowity czas pracy będzie mniejszy niż 2 n , zgodnie z życzeniem.O(2)n/2)(n/2))m-1)mn/lgn2)n


Aby ten wynik brzmiał bardziej realistycznie, oto bardzo prymitywna intuicja. Jeśli weźmiemy ekstremalny przypadek, w którym , oczywiście można to szybko rozwiązać. (W rzeczywistości istnieje znacznie prostszy algorytm dla specjalnego przypadku, w którym m = 1 : niech x i = 1, jeśli A 1 , i0 , w przeciwnym razie x i = 0 ; teraz, jeśli istnieje jakieś możliwe rozwiązanie, to ten x będzie jeden.)m=1m=1xja=1ZA1,ja0xja=0x


1
Algorytm z mojej odpowiedzi sprowadza się również do problemu wektorowego opisanego w twojej odpowiedzi przy użyciu tej samej metody, tj. Podziel zmienne i wypisz wszystkie ich przypisania.
Stefan Schneider

2
Istnieją algorytmy ogólnego problemu programowania liczb całkowitych, którego czas działania zależy od wymiaru , a zależność wielomianowa od wszystkiego innego. Zobacz dl.acm.org/citation.cfm?id=380857 . 2)O(m)
Sasho Nikolov
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.