Zminimalizuj maksymalny składnik sumy wektorów


11

Chciałbym dowiedzieć się czegoś o tym problemie optymalizacji: dla podanych nieujemnych liczb całkowitych znajdź funkcję minimalizującą wyrażenie fai,j,kf

maxkiai,f(i),k

Przykład użycia innej formuły może być jaśniejszy: Otrzymałeś zestaw zestawów wektorów takich jak

{
    {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
    {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
    {(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}

Wybierz jeden wektor z każdego zestawu, aby maksymalny składnik ich sumy był minimalny. Na przykład możesz wybrać

(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)

z maksymalną składową równą 2, co jest tutaj wyraźnie optymalne.

Jestem ciekawy, czy jest to dobrze znany problem i jakie są dostępne przybliżone metody rozwiązania problemu. Powinien być szybki i łatwy do zaprogramowania (bez solvera ILP itp.). Nie jest potrzebne dokładne rozwiązanie, ponieważ jest to jedynie przybliżenie prawdziwego problemu.


Widzę, że powinienem dodać kilka szczegółów na temat problemów, którymi jestem zainteresowany:

  • i{0,1,,63} , tzn. zawsze są 64 wiersze (przy zapisie jak w powyższym przykładzie).
  • j{0,1} , tzn. są tylko 2 wektory na wiersz.
  • Nk{0,1,,N1} gdzie (długość wektora) wynosi od 10 do 1000.N

Ponadto w każdym wierszu suma elementów wszystkich wektorów jest taka sama, tj.

i,j,j:kai,j,k=kai,j,k

a suma elementów wektora sumy jest mniejsza niż jego długość, tj.

kiai,f(i),k<N

4
Nie jest trudno zredukować problem z 3 partycjami do swojego problemu. Oznacza to, że twój problem jest NP-zupełny, nawet jeśli liczby są podane jednostronnie, a to wyklucza jedno z powszechnych podejść do algorytmu aproksymacji.
Tsuyoshi Ito,

Dzięki za poprawki i dzięki @Tsuyoshi Ito za wgląd. Jeśli dobrze to rozumiem, ograniczenie do dwóch wektorów na linię (o którym zapomniałem powiedzieć) unieważnia redukcję i może znacznie ułatwić problem.
maaartinus

Masz rację, redukcja problemu z 3 partycjami, o którym myślałem, nie działa, jeśli w wierszu są tylko dwa wektory.
Tsuyoshi Ito,

Czy istnieją kombinacje do porównania? ji
Jason Kleban

@ uosɐſ: Mówiąc dokładniej, istnieją możliwe kombinacje, gdzie to liczba możliwości dla a to liczba możliwości dla . J = 2 j I = 64 iJI=264J=2jI=64i
maaartinus

Odpowiedzi:


7

Redukcji z 3SAT wersji dwóch wektora: podany wzór, pozwalają zmienne indeks, i klauzule indeks. Niech będzie liczbą razy, gdy zmienna pojawia się dodatnio (jeśli ) lub ujemnie (jeśli ) w klauzuli . OPT jest mniejsze niż jeśli formuła jest zadowalająca (bijection jest oczywisty).j { 0 , 1 } k a i , j , k i j = 0 j = 1 k 3ij{0,1}kai,j,kij=0j=1k3

Jak zaatakowałbym ten problem: poszukiwanie dużych dzielnic. Zacznij od dowolnego rozwiązania. Wybierz wierszy losowo. Użyj brutalnej siły, aby znaleźć najlepsze rozwiązanie, w którym może zmienić się tylko w tych rzędach - bardzo wykonalne nawet dla umiarkowanego biorąc pod uwagę, że rozmiar problemu wynosi rzędy. Powtarzać.f k 64rfk64


1
To piękna redukcja. Nie jestem pewien, dlaczego nie ma żadnych głosów up. W każdym razie tutaj jest moja +1.
Tsuyoshi Ito

1
Myślę, że powinieneś rozwinąć odrobinę więcej na temat redukcji. W szczególności trzeba ukryte dobrze, może zbyt dobrze, a to sprawia, że bijection nieco trudno zobaczyć. f
Raphael

7

Nie możemy omawiać złożoności problemu, gdy rozmiar problemu jest ustalony na stałą, ponieważ (większość) teoria złożoności dotyczy asymptotycznego zachowania złożoności problemu, gdy rozmiar problemu zmierza do nieskończoności. Tutaj uważam zarówno liczbę wierszy, jak i wymiary wektorów za zmienne.

Wtedy problem jest NP-zupełny, nawet jeśli liczby na wejściu są podane pojedynczo. To nie jest odpowiedź na twoje pytanie, ponieważ pytasz o przybliżenie, ale jest coś.

Dokładnie zdefiniuj problem:

Instancja : n par wektorów a i , b i ∈ ℕ m ( i ∈ {1,…, n }) i K ∈ ℕ, wszystkie w jednym.
Pytanie : Czy możemy wybrać albo I lub b I dla każdego i tak, że suma tych n wektorów ma co najwyżej K w każdym współrzędnych?

Poniżej przedstawiono znany problem NP-complete zwany 3-partycjami :


Wystąpienie z 3 partycjami : B ∈ ℕ i 3 k liczb całkowitych c 1 ,…, c 3 k między B / 4 i B / 2, wyłączne, takie że ∑ i = 1 3 k c i = kB , wszystkie w jednym.
Pytanie : Czy multiset { c 1 ,…, c 3 k } można podzielić na k multisetów S 1 ,…, S k tak, aby suma każdego S j była równaB ?

Biorąc pod uwagę, przykładowo ( B , C, 1 , ..., C 3 K ) o 3 Problem partycji konstrukt wystąpienie powyższego problemu w sposób następujący. Dla każdego i = 1,…, 3 k i j = 1,…, k skonstruujemy parę 4 k wektorów wymiarowych, reprezentujących wybór, czy c i należy do S j, czy nie:

  • Wektor reprezentujący wybór „ c iS j ” ma tylko jeden niezerowy wpis, którym jest ( k- 1) c i na j- tej współrzędnej.
  • Wektor reprezentujący wybór „ c iS j ” ma również tylko jeden niezerowy wpis, którym jest B przy ( k + i ) -tej współrzędnej.

Nietrudno dostrzec, że wystąpienie ( B ; c 1 ,…, c 3 k ) problemu 3-partycji ma rozwiązanie wtedy i tylko wtedy, gdy istnieje sposób wyboru wektora z każdego zbudowanego 3 k 2 parami tak, że wszystkie współrzędne suma tych wektorów w najgorszym ( k -1) B . (W rzeczywistości, gdy tak się dzieje, wszystkie współrzędne sumy są równe ( k- 1) B ). Jest to więc redukcja problemu z 3-partycjami do powyższego problemu.

Do tej pory ignorowałem dwa dodatkowe ograniczenia podane na końcu pytania, ale oba są łatwe do wyegzekwowania poprzez nieznaczne zmodyfikowanie tej redukcji. Warunek, że suma elementów każdego wektora jest równa, może być wymuszony przez dodanie współrzędnych manekina, które zawierają tylko 0 lub 1. Warunek, że suma ta jest mniejsza niż wymiar, może zostać wymuszony przez dodanie współrzędnych manekina, które zawierają tylko 0.


Dobra odpowiedź, tylko kilka uwag: 1. Nie dbam o złożoność teoretyczną . 2. Liczba rzędów jest stała i może pozostać, ponieważ wystarcza zmianaTo powiedziawszy, wielkie dzięki. N
maaartinus,
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.