Zaokrąglanie w celu zminimalizowania sumy błędów w odległościach parami

25

Co wiadomo na temat złożoności następującego problemu:

  • Biorąc pod uwagę: liczby wymierne x1<x2<<xn .
  • Wyjście: liczby całkowite y1y2yn .
  • Cel: zminimalizować
    1i<jne(i,j),
    gdzie
    e(i,j)=|(yjyi)(xjxi)|.

Oznacza to, że chcielibyśmy zaokrąglić liczby wymierne do liczb całkowitych, aby zminimalizować sumę błędów w odległościach parowych. Dla każdej pary i,j chcielibyśmy mieć zaokrągloną odległość yjyi możliwie najbliższą rzeczywistej odległości xjxi .


Motywacja: nudna podróż metrem i plakat przedstawiający „lokalizacje” stacji w rozdzielczości jednej minuty podróży. Tutaj minimalizujemy błąd popełniany przez ludzi, którzy używają plakatu do wyszukiwania czasu podróży między stacjami i i j , uśredniając dla wszystkich par i<j .

Mapa trasy

(źródło)

Na przykład tutaj możemy odczytać następujące przybliżenia odległości parami między czterema stacjami (używając zwięzłości A, B, C, D):

  • A – B ≈ 1 minuta, B – C ≈ 2 minuty, C – D ≈ 2 minuty
  • A – C ≈ 3 minuty, B – D ≈ 4 minuty
  • A – D ≈ 5 minut

Czy to najlepsze możliwe przybliżenie? Jeśli znasz rzeczywisty czas podróży, czy możesz znaleźć lepsze rozwiązanie?


Na początku wydawało się to prostym ćwiczeniem w programowaniu dynamicznym, ale teraz wydaje się, że potrzebne jest trochę myślenia.

Czy ktoś rozpoznaje ten problem? Lub zobaczyć sprytny algorytm do jego rozwiązania?


Edycja: Istnieje kilka naturalnych wariantów pytania, które zostały wspomniane w komentarzach; nadajmy im kilka nazw:

  • wersja podłogowa / sufitowa : wymagane jest, aby dla wszystkich i .yi{xi,xi}i

  • wersja całkowita : wystarczy, że dla wszystkich i .yiZi

  • wersja monotoniczna : wymagane jest, aby .y1y2yn

  • wersja niemonotoniczna : możemy mieć dla i < j .yi>yji<j

Oryginalne pytanie dotyczy monotonicznej liczby całkowitej, ale mile widziane są odpowiedzi dotyczące dowolnej z tych wersji.

Jukka Suomela
źródło
Czy DP działa w przypadku, gdy zależy Ci tylko na sąsiednich pomiarach?
Suresh Venkat
1
@SureshVenkat: Właściwie w takim przypadku problem staje się bardzo prosty: wystarczy wybrać najlepszą całkowitą odległość dla każdego i . Oznacza to, że można zminimalizować każdy e ( i - 1 , i ) niezależnie. yiyi1ie(i1,i)
Jukka Suomela,
4
Ten raport Estie Arkin wydaje się powiązany: ams.sunysb.edu/~estie/papers/beautification.pdf Udowodniono, że minimalizowanie liczby wyraźnych odległości między punktami na wyjściu jest trudne dla NP. To nie jest całkowita suma przesunięć, jak w tych pytaniach, ale może gadżety twardości w raporcie mogą sugerować dowód twardości dla tego problemu.
val
2
Mam wrażenie, że ten problem z pewnością można rozwiązać za pomocą dobrze znanych technik. Zobaczmy, czy nagroda wystarcza, aby zmotywować ludzi do rozwiązania tego problemu. :)
Jukka Suomela
1
@vzn: Interesuje mnie złożoność obliczeniowa tego problemu. Jeśli możesz udowodnić, że istnieje metoda wyszukiwania lokalnego w czasie wielomianowym, która gwarantuje znalezienie globalnego optimum, nagroda jest twoja.
Jukka Suomela

Odpowiedzi:

9

DOBRZE. Algorytm DP wydaje się niepotrzebnie skomplikowany. Po przeczytaniu komentarzy myślę, że może to rozwiązać monotoniczną wersję problemu (ale nie sprawdziłem każdego szczegółu).

Najpierw załóżmy, że każdy , gdzie x i jest częścią integralną, { x i } jest częścią ułamkową. Załóżmy, że x i jest zaokrąglone do x i+ v i , gdzie v i jest nieujemną liczbą całkowitą (oczywiście ogólnie v i może być ujemna, ale zawsze możemy przesunąć tak, aby najmniejsza v i wynosiła 0).xi=xi+{xi}xi{xi}xixi+vivivivi

Teraz weź pod uwagę koszt pary , x j podczas wykonywania tego zaokrąglania. Koszt powinien wynosićxixj

||vivj+xixj||{xi}{xj}+xixj||

Wyrażenie jest skomplikowane ze względu na wartości bezwzględne. Zauważ jednak, że mamy monotoniczność, więc rzeczy wewnątrz dwóch wewnętrznych wartości bezwzględnych powinny mieć znak SAM. Ponieważ mamy zewnętrzną wartość bezwzględną, tak naprawdę nie ma znaczenia, czym jest ten znak, wyrażenie to po prostu upraszcza

|vivj({xi}{xj})|

Odtąd nie zakładamy, że rozwiązanie jest monotoniczne, ale zamiast tego zmieniamy cel, aby zminimalizować sumę powyższego terminu dla wszystkich par. Jeśli rozwiązanie tego problemu okaże się monotoniczne, to oczywiście jest to również optymalne rozwiązanie dla wersji monotonicznej. (Pomyśl o tym jako: oryginalny problem ma nieskończoną karę, gdy rozwiązanie nie jest monotoniczne, nowy problem ma mniejszą karę, jeśli rozwiązanie monotoniczne wygrywa nawet w nowej wersji, musi to być rozwiązanie monotonicznej wersji)

Teraz chcielibyśmy udowodnić, że jeśli , w optymalnym rozwiązaniu musimy mieć v iv j .{xi}>{xj}vivj

Załóżmy, że to nieprawda, że ​​mamy parę ale v i < v j . Pokażemy, że jeśli zamienimy v i v j, rozwiązanie stanie się zdecydowanie lepsze.{xi}>{xj}vi<vjvi vj

Najpierw porównujemy termin między i j , tutaj jest naprawdę jasne, że zamiana jest zdecydowanie lepsza, ponieważ w wersji bez zamiany, v i - v j i { x j } - { x i } ma ten sam znak, absolut wartość będzie sumą dwóch wartości bezwzględnych.ijvivj{xj}{xi}

Teraz dla dowolnego porównujemy sumę par ( i , k ) i ( j , k ) . Oznacza to, że musimy porównaćk(i,k)(j,k)

i | v j - v k - ( { x i } - { x k } ) | + ||vivk({xi}{xk})|+|vjvk({xj}{xk})|.|vjvk({xi}{xk})|+|vivk({xj}{xk})|

Zastosowanie , B , C , D , oznaczające cztery warunki wewnątrz wartości bezwzględnej, to jest oczywiste, że + B = C + D . Jest również jasne, że | A - B | | C - D | . Dzięki wypukłości wartości bezwzględnej wiemy | A | + | B | | C | + | D | . Weź sumę nad wszystkimi x kABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xkWiemy, że zamiana może być tylko lepsza.

Zauważ, że teraz mamy już rozwiązanie dla monotonicznej wersji podłogi / sufitu: musi istnieć próg, gdy jest większy zawsze zaokrągla w górę, gdy jest mniejszy zawsze zaokrągla w dół, gdy jest równy zaokrągla w górę, a niektóre w dół, podczas gdy jakość rozwiązania zależy tylko od liczby. Wymieniamy wszystkie te rozwiązania i wybieramy jedno z najmniejszą funkcją celu. (Wszystkie te rozwiązania są z konieczności monotoniczne).{xi}

Na koniec chcielibyśmy przejść do monotonicznej liczby całkowitej problemu. Możemy faktycznie udowodnić, że optymalne rozwiązanie jest takie samo jak wersja monotoniczna podłogi / sufitu.

Ponieważ zakładamy, najmniejsza 0. Grupa wszystkich x i jest zgodnie z ich v i 's, które nazywają grupę 0 , 1 , 2 , . . . , max { v i } . Najpierw udowodnimy, że nie ma pustych grup, ale jest to proste, jeśli k-ta grupa jest pusta, dla dowolnego v i > k po prostu pozwól v i = v i - 1vixivi0,1,2,...,max{vi}kvi>kvi=vi1. Łatwo jest zauważyć, że funkcja celu zawsze się poprawia (zasadniczo dlatego, że ).|{xi}{xj}|<1

Teraz udowodnimy, średnia w grupie k + 1 jest co najmniej średnią { x i } w grupie k powiększonej o 1 / 2 . Jeśli nie jest to prawdą, po prostu pozwól v i = v i - 1 dla wszystkich v i > k , obliczenia ponownie pokazują poprawę funkcji celu.{xi}k+1{xi}k1/2vi=vi1vi>k

Ponieważ średnia mieści się w przedziale [ 0 , 1 ) , tak naprawdę istnieją co najwyżej dwie grupy, co odpowiada wersji podłoga / sufit.{xi}[0,1)

Rong Ge
źródło
1

Tylko rozszerzony komentarz ... (może trywialny i / lub zły :)

Jeśli i M jest najmniejszą wspólną wielokrotnością B i S, to możemy pozbyć się rationals: x ' I = M * x í .xi=ai/biMbixi=Mxi

Jeżeli (podłoga, ograniczenie ceil), następnie można użyć zmiennych binarnych v i wyrazić Y ' i za pomocą jego odległości od X " I ( L I = x " i - M x i lub R i = x i - M x iyi{xi,xi}viyixiLi=xiMxiRi=xiMxi):

yi=xi+Livi+Ri(1vi)=xi+(LiRi)vi+Ri=xi+Divi+Ri

Pierwotny problem powinien (?!?) Być równoważny ze znalezieniem minimalizujących:vi

1i<jn|DiviDjvj|

z vi{0,1},DiZ

Marzio De Biasi
źródło
rozszerzając swoje ostatnie podsumowanie za pomocą powyższego pomysłu błędu , czy można wykazać, że optymalne jest właściwie tylko wyborem, w którym każda zmienna binarna podłoga / sufit jest bliższa x n ? tak więc pozostawia jedynie przypadek zaokrąglenia dla x n w postaci m n + 1e(i,j)xnxn gdziemjest liczbą całkowitą. mn+12m
vzn
1
@vzn: Myślę, że to kontrprzykład. Jeśli zaokrąglimy za pomocą kryteriów zaokrąglania x i otrzymamy ( 0 , 1 , 9 ), który ma błąd 1,4 , ale ( 0 , 2 , 9 ) ma błąd 1,2 (wynik jest taki sam jeśli wyeliminujemy mnożniki racjonalne przez LCM). (0,1.4,8.7)xi(0,1,9)1.4(0,2,9)1.2
Marzio De Biasi,
ok, jednak nowy pomysł. ponownie rozważ . rozwiń podsumowanie. zmniejszy się do wielu warunków z v i, a także v 2 i . ale ten ostatni jest równy v i ! dlatego sprowadza się do problemu w postaci minimalizacji X D, gdzie X jest wektorem wiersza 0/1, a D jest wektorem stałej kolumny . prawdziwe? to jest trywialne i po prostu wybierz X tak, aby wynosił 1, jeśli odpowiedni element w De(i,j)vivi2viXDXDXDjest ujemny i 0, jeśli jest dodatni .... QED?
vzn
1
@vzn: jeśli użyjesz błędu aby wyeliminować funkcję wartości bezwzględnej, otrzymasz wyrażenia takie jak - 2 D iD jv iv j ; jak sobie z nimi radzić w minimalizacji? ((yiyj)(xixj))22DiDjvivj
Marzio De Biasi
ups! odpowiedziałeś, zanim zdążyłem usunąć ten komentarz, gdy zdałem sobie sprawę, że… w każdym razie nadal wydaje się, że sprowadza się on do prawie liniowego problemu optymalizacji macierzy? również z terminem gdzie V jest wektorem kolumny ...? VVTV
vzn
1

Kolejny rozszerzony komentarz ... Może się mylić.

Rozważam również przypadek z ograniczeniami podłogi / sufitu i próbuję go rozwiązać za pomocą programowania dynamicznego (nie mogę, ale może to działa, gdy wspólny dzielnik jest mały).

Niech będzie ułamkową częścią x i , rozważamy rzeczy od najmniejszej { x i } do największej. Załóżmy, że największy jest { x k } , a ponieważ robimy programowania dynamicznego wiemy już „coś” (I wyjaśni, co to coś jest) o optymalnych rozwiązań dla wszystkiego z wyjątkiem x k .{xi}xi{xi}{xk}xk

xkxixixkxi2{xk}2{xi}1. Tak więc: wiemy, jaką decyzję powinniśmy podjąć, jeśli znane są następujące trzy ilości:

  1. ile rzeczy jest zaokrąglonych w górę
  2. ile rzeczy jest zaokrąglonych w dół
  3. {xi}xi

{xi}xi{xi}

Problem polega oczywiście na tym, że Sdown może mieć wykładniczo wiele wartości. Ale działa, gdy wspólny dzielnik jest mały, lub możemy najpierw zaokrąglić wszystko do punktu siatki i uzyskać FPTAS (jeśli powyższy program dynamiczny jest poprawny ...)

Rong Ge
źródło
DiDivi(N1)DkDivi
Di|Divi|Ndown|Dk|+NupDkDivivjvj
xi=1.1xk=1.9xixkxk
Jukka Suomela
1
{xi}{xi}
1
{xi}<{xj}{xk}{xi}{xj}{xk}xixjxjxi
Rong Ge