0-1 Programowanie liniowe: obliczanie optymalnej formuły

14

Rozważmy n -wymiarowej przestrzeni {0,1}n , niech c być liniowy ograniczenie formy 1 x 1 + 2 x 2 + 3 x 3 + . . . + a n - 1 x n - 1 + a n x nk , gdzie a iR , x ia1x1+a2x2+a3x3+ ... +an1xn1+anxnkaiR a K R .xi{0,1}kR

Najwyraźniej powoduje podział { 0 , 1 } n na dwa podzbiory S c i S ¬ c . S c zawiera wszystkie i tylko punkty spełniające c , podczas gdy S ¬ c zawiera wszystkie i tylko te punkty fałszujące c .c{0,1}nScS¬cSccS¬cc

Załóżmy, że |Sc|n . Teraz niech O będzie podzbiorem Sc tak że wszystkie trzy następujące instrukcje będą zawierały:

  1. O zawiera dokładnien punktów.
  2. Takie n punktów jest liniowo niezależnych.
  3. Takie punktów to punkty w minimalnej odległości od hiperpłaszczyzny reprezentowane przez c . Dokładniej, niech d ( x , c ) będzie odległością punktu x { 0 , 1 } n od hiperpłaszczyzny c . Następnie, B S c tak, że B spełnia 1 i 2, jest tak, że x B d ( x , c ) x O dncd(x,c)x{0,1}ncBScB . Innymi słowy O jest spośród wszystkich podzbiorów S c spełniające oba warunki 1 i 2, jeden, który minimalizuje sumę odległości punktami z hiperpłaszczyznę C .xBd(x,c)xOd(x,c)OScc

pytania

  1. Biorąc pod uwagę , czy możliwe jest wydajne obliczenie O ? cO
  2. Jaki jest najbardziej znany algorytm do jego obliczania?

 

Przykład z n=3

Przykład z n = 3

, O = { ( 0 , 0 , 1 ) , ( 1 , 1 , 1 ) , ( 1 , 0 , 0 ) } .S¬c={(1,0,1)}O={(0,0,1),(1,1,1),(1,0,0)}

 

Aktualizacja 05.12.2012

Motywacja

Motywacja jest, że za pomocą powinno być możliwe do określenia optymalnego wiązania c * , a powinien on być określony przez hiperpłaszczyzna n punktów O . OcnO

Optymalne ograniczenie to takie, które prowadzi do optymalnego polytopu P .cP

Optymalnym polytopem jest ten, którego wierzchołki są wszystkie i tylko wierzchołkami całkowitymi początkowego polytopu P (wierzchołek całkowity jest wierzchołkiem, którego współrzędne są liczbami całkowitymi).PP

Optymalne sformułowanie

Proces można iterować dla każdego ograniczenia instancji I 0-1 L P , za każdym razem zastępując c odpowiadającym mu ograniczeniem optymalnym c . Na koniec, doprowadzi to do optymalnego Polytope P * z I . Następnie, ponieważ wierzchołki P są jedynymi wierzchołkami liczb całkowitych początkowego politopu P z I , można zastosować dowolny algorytm dla L P do obliczenia optymalnego rozwiązania liczby całkowitej. Wiem, że umiejętność skutecznego obliczenia P oznaczałaby PcLPIccPIPPILPP , jednak nadal pojawia się następujące dodatkowe pytanie:P=NP

Dodatkowe pytanie

Czy są jakieś wcześniejsze prace w tym zakresie? Czy ktoś badał już zadanie obliczeniowe, biorąc pod uwagę polytop , odpowiadający mu optymalny polytop P ? Który algorytm jest najbardziej znany?PP

Giorgio Camerani
źródło
Wydaje się, że jest to trudne do zrobienia dokładnie przez redukcję sumy podzbioru. Biorąc pod uwagę binarne liczby całkowite , aby sprawdzić, czy istnieje podzbiór sumujący się do s , możemy przetestować, czy istnieje punkt na hiperpłaszczyźnie v 1 x 1 + + v 1 x n = s . Czy jesteś zainteresowany przybliżeniami? v1,,vnsv1x1++v1xn=s
Colin McQuillan,
@ColinMcQuillan: Pytanie miało na celu dokładne rozwiązanie, jednak z pewnością interesują mnie również przybliżenia. Dlaczego nie zmienisz komentarza w odpowiedź?
Giorgio Camerani,
@ColinMcQuillan: Również twoja hiperpłaszczyzna jest definiowana przy użyciu równości, podczas gdy moja jest definiowana przy użyciu nierówności. Czy jesteś pewien, że nie ma to różnicy pod względem twardości? Jeszcze tego nie sprawdziłem, więc tylko pytam.
Giorgio Camerani,
Jestem trochę mylić o wszystkich ograniczeń . Jeśli szukasz informacji o wypukłym kadłubie S c, w literaturze dotyczącej badań operacyjnych jest wiele wyników dotyczących plecaka 0-1. Pod względem przybliżonych preparatów zobaczyć . OSc
Austin Buchanan,

Odpowiedzi:

6

Wydaje się, że jest to trudne do zrobienia dokładnie przez redukcję sumy podzbioru. Załóżmy, że mieliśmy skuteczną procedurę, aby obliczyć . Biorąc pod uwagę dodatnie liczby całkowite v 1 , , v n zakodowane binarnie, chcemy przetestować, czy istnieje podzbiór sumujący do s . Przetwarzaj wstępnie, wyrzucając liczby całkowite większe niż s .Ov1,,vnss

Wywołaj procedurę, aby uzyskać mały zbiór punktów spełniających v 1 x 1 + + v 1 x ns , spełniających twoje warunki minimalności (wstępne przetwarzanie zapewnia | S c |n ). Ten zestaw z pewnością będzie zawierał punkt na hiperpłaszczyźnie v 1 x 1 + + v 1 x n = s, jeśli taki istnieje.Ov1x1++v1xns|Sc|nv1x1++v1xn=s

Colin McQuillan
źródło
Może pomijam tutaj coś makroskopowego, ale mam 2 pytania: 1) Kiedy mówisz „Biorąc pod uwagę liczby całkowite binarne ”, co rozumiesz przez binarny ? należą do badań . Może masz na myśli kodowanie binarne? A może chciałeś powiedzieć pozytywnie? 2) Po co wyrzucać liczby całkowite większe niż s ? Mogą przyczynić się do rozwiązania. Na przykład: v 1 = - 3 , v 2 = 7 , v 3 = - 5 ,v1,...,vnRs jeśli wyrzucisz v 2 , tracisz jedyne rozwiązanie { v 2 , v 3 } . v1=3,v2=7,v3=5,s=2v2{v2,v3}
Giorgio Camerani,
2
Myślę, że Colin ma na myśli to, że jeśli współczynniki ograniczenia są liczbami wymiernymi, w ich zwykłej reprezentacji binarnej, wtedy twój problem wydaje się NP-trudny. (Mieszanie liczb rzeczywistych i twardości NP jest zawsze trudne.)ai
Jeffε
1
@GiorgioCamerani: Musiałem powiedzieć pozytywnie - zaktualizowałem swoją odpowiedź.
Colin McQuillan,
1

Wydaje mi się, że próbujesz dostać się do wypukłego kadłuba IP - w zasadzie to właśnie próbują osiągnąć algorytmy cięcia. Mimo, że te metody są atrakcyjne, w praktyce źle się sprawdzają.

Istnieje cała teoria na temat generowania ważnych nierówności. Dobrym punktem wyjścia będzie książkowa teoria programowania liczb całkowitych Shrijvera.

AJ Student
źródło