Rundung, um die Summe der Fehler in paarweisen Abständen zu minimieren


25

Was ist über die Komplexität des folgenden Problems bekannt:

  • Gegeben: rationale Zahlen .x1<x2<<xn
  • Ausgabe: Ganzzahlen .y1y2yn
  • Ziel: minimiere wobei
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

Das heißt, wir möchten die rationalen Zahlen auf ganze Zahlen runden, um die Summe der Fehler in paarweisen Abständen zu minimieren. Für jedes Paar möchten wir den gerundeten Abstand so nahe wie möglich am wahren Abstand .y j - y i x j - x ii,jyjyixjxi


Motivation: Eine langweilige U-Bahn-Fahrt und ein Plakat, auf dem die "Standorte" der Bahnhöfe in einer Minute Fahrzeit dargestellt sind. Hier minimieren wir den Fehler, den Menschen machen, wenn sie das Poster verwenden, um die Reisezeit zwischen den Stationen und , wobei der Durchschnitt über alle Paare .j i < jiji<j

Straßenkarte

(Quelle)

Zum Beispiel können wir hier die folgenden Näherungen der paarweisen Abstände zwischen den vier Stationen lesen (wobei der Kürze halber A, B, C, D verwendet wird):

  • A – B ≤ 1 Minute, B – C ≤ 2 Minuten, C – D ≤ 2 Minuten
  • A – C ≈ 3 Minuten, B – D ≈ 4 Minuten
  • A – D ≈ 5 Minuten

Ist das die bestmögliche Annäherung? Wenn Sie die tatsächlichen Reisezeiten kennen, könnten Sie eine bessere Lösung finden?


Anfangs klang dies wie eine einfache Übung in dynamischer Programmierung, aber jetzt scheint es, dass ein gewisses Maß an tatsächlichem Denken erforderlich ist.

Kennt jemand dieses Problem? Oder sehen Sie einen cleveren Algorithmus, um das Problem zu lösen?


Bearbeiten: Es gibt einige natürliche Varianten der Frage, die in den Kommentaren erwähnt wurden; Geben wir ihnen einige Namen:

  • Boden- / Deckenversion : Es ist erforderlich, dass für alle .iyi{xi,xi}i

  • Ganzzahlige Version: Es ist ausreichend, dass für alle . iyiZi

  • monotone Version: es ist erforderlich, dass .y1y2yn

  • nicht monotone Version: wir können für . i < jyi>yji<j

Die ursprüngliche Frage berücksichtigt die monotone Integer-Version. Antworten zu diesen Versionen sind jedoch willkommen.


Funktioniert der DP für den Fall, dass Sie sich nur um benachbarte Messungen kümmern?
Suresh Venkat

1
@SureshVenkat: Tatsächlich wird das Problem in diesem Fall sehr einfach: Sie wählen einfach den besten Integralabstand für jedes . Das heißt, Sie können jedes unabhängig voneinander minimieren . i e ( i - 1 , i )yiyi1ie(i1,i)
Jukka Suomela

4
Dieser Bericht von Estie Arkin scheint verwandt zu sein: ams.sunysb.edu/~estie/papers/beautification.pdf Es ist bewiesen, dass die Minimierung der Anzahl unterschiedlicher Zwischenpunktabstände in der Ausgabe NP-schwer ist. Dies ist nicht die Gesamtsumme der Verschiebungen, wie in diesen Fragen dargestellt, aber die Härte-Gadgets im Bericht könnten möglicherweise einen Härtegewinn für dieses Problem anzeigen.
val

2
Ich habe das Gefühl, dass dieses Problem mit bekannten Techniken sicher lösbar sein sollte. Mal sehen, ob das Kopfgeld ausreicht, um die Leute zur Lösung dieses Problems zu motivieren. :)
Jukka Suomela

1
@vzn: Ich interessiere mich für die rechnerische Komplexität dieses Problems. Wenn Sie nachweisen können, dass es einen lokalen Suchansatz für Polynome gibt, mit dem Sie garantiert das globale Optimum finden, liegt die Prämie bei Ihnen.
Jukka Suomela

Antworten:


9

OKAY. Der DP-Algorithmus scheint unnötig kompliziert zu sein. Nach dem Lesen von Kommentaren denke ich, dass dies die monotone Version des Problems lösen könnte (aber ich habe nicht jedes Detail überprüft).

Nehmen wir zunächst an , dass jedes , wobei x i der integrale Teil ist, { x i } der gebrochene Teil ist. Angenommen, x i ist auf to x i+ v i gerundet , wobei v i eine nichtnegative ganze Zahl ist (natürlich kann v i im Allgemeinen negativ sein, aber wir können immer so verschieben, dass das kleinste v i 0 ist).xi=xi+{xi}xi{xi}xixi+vivivivi

Betrachten Sie nun die Kosten für ein Paar , x j, wenn Sie diese Rundung durchführen. Die Kosten sollten seinxixj

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

Der Ausdruck ist wegen der absoluten Werte kompliziert. Beachten Sie jedoch, dass wir Monotonie haben, sodass die Dinge in den beiden inneren absoluten Werten das gleiche Zeichen haben sollten. Da wir einen äußeren absoluten Wert haben, ist es wirklich egal, was dieses Zeichen ist, der Ausdruck vereinfacht sich nur

|vivj({xi}{xj})|

Von nun an gehen wir nicht mehr davon aus, dass die Lösung monoton ist, sondern ändern stattdessen das Ziel, die Summe des obigen Terms für alle Paare zu minimieren. Wenn die Lösung für dieses Problem monoton ist, ist es natürlich auch die optimale Lösung für die monotone Version. (Stellen Sie sich das vor: Das ursprüngliche Problem hat eine unendliche Strafe, wenn die Lösung nicht monoton ist. Das neue Problem hat eine geringere Strafe. Wenn eine monotone Lösung auch in der neuen Version gewinnt, muss es die Lösung der monotonen Version sein.)

Nun möchten wir beweisen, dass wir in der optimalen Lösung v iv j haben müssen , wenn .{xi}>{xj}vivj

Angenommen, dies ist nicht wahr, wir haben ein Paar aber v i < v j . Wir werden zeigen, dass die Lösung strikt besser wird, wenn wir tauschen .{xi}>{xj}vi<vjv jvi vj

Zuerst vergleichen wir den Ausdruck zwischen und , hier ist es wirklich klar, dass das Tauschen strikt besser ist, da in der Nicht-Tausch-Version und das gleiche Vorzeichen haben, das Absolute value ist die Summe der beiden absoluten Werte.j v i - v j { x j } - { x i }ijvivj{xj}{xi}

Nun vergleichen wir für jedes die Summe der Paare ( i , k ) und ( j ,k(i,k) . Das heißt, wir müssen vergleichen(j,k)

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

Verwenden Sie , B , C , D , um die vier Terme innerhalb des Absolutwerts zu bezeichnen. Es ist klar, dass A + B = C + D ist . Auch ist klar, dass | A - B | | C - D | . Durch die Konvexität des Absolutwertes wissen wir | A | + | B | | C | + | D |ABCDA+B=C+D|AB||CD||A|+|B||C|+|D|. Nimm die Summe über alle xkwir wissen tauschen kann nur besser sein.

Beachten Sie, dass wir jetzt bereits eine Lösung für die monotone Boden- / Deckenversion haben: Es muss eine Schwelle geben, wenn größer ist, immer auf- und abrunden , wenn es kleiner ist, immer auf- und abrunden nach unten, während die Lösungsqualität nur von der Anzahl abhängt. Wir führen alle diese Lösungen auf und wählen die mit der kleinsten Zielfunktion aus. (Alle diese Lösungen sind notwendigerweise monoton).{xi}

Zum Schluss möchten wir noch auf die monotone Integer-Version des Problems eingehen. Wir können tatsächlich nachweisen, dass die optimale Lösung mit der monotonen Boden- / Deckenversion identisch ist.

vixivi0,1,2,...,max{vi}v i > k v i = v i - 1 | { x i } - { x j } | < 1kvi>kvi=vi1 . Es ist leicht zu erkennen, dass sich die Zielfunktion immer verbessert (im Grunde genommen, weil ).|{xi}{xj}|<1

Nun wollen wir beweisen, dass der Durchschnitt von in Gruppe mindestens der Durchschnitt von in Gruppe plus . Wenn dies nicht zutrifft, sei einfachk + 1 { x i } k 1 / 2 v i = v i - 1 v i > k{xi}k+1{xi}k1/2vi=vi1 für alle , die Berechnung zeigt erneut, dass sich die Zielfunktion verbessert.vi>k

Da der Durchschnitt von im Bereich , gibt es tatsächlich höchstens zwei Gruppen, was der Boden- / Deckenversion entspricht.[ 0 , 1 ){xi}[0,1)


1

Nur ein ausführlicher Kommentar ... (vielleicht trivial und / oder falsch :)

Wenn und das am wenigsten verbreitete Vielfache von , können wir die loswerden: . M b i x ' i = M x ixi=ai/biMbixi=Mxi

Wenn (Boden, Ceil-Beschränkung), können wir die binären Variablen , um Verwendung seines Abstands von ( oderyi{xi,xi}viyixiLi=xiMxiRi=xiMxi ):

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

Und das ursprüngliche Problem sollte (?!?) Gleichbedeutend sein mit dem Finden des :vi

1i<jn|DiviDjvj|

mitvi{0,1},DiZ


Erweitern Sie Ihre letzte Summe mit der obigen Idee error fn. Könnte gezeigt werden, dass das Optimum tatsächlich nur die Wahl ist, bei der jede binäre Variable floor / ceil näher an ? Damit bleibt nur der Fall, wie für in der Form gerundet wird, wobei eine ganze Zahl ist. x n x n m n + 1e(i,j)xnxn mmn+12m
VZN

1
@vzn: Ich denke das ist ein Gegenbeispiel. Wenn wir mit den Rundungskriterien runden , erhalten wir mit einem Fehler von , aber mit einem Fehler von (das Ergebnis ist dasselbe, wenn Wir eliminieren die mit dem LCM multiplizierten Rationen. (0,1.4,8.7)xi(0,1,9)1.4(0,2,9)1.2
Marzio De Biasi

ok doch neue idee. Betrachte noch einmal . Erweitern Sie die Summe. es wird sich auf viele Terme mit und auch reduzieren . aber letztere ist gleich ! daher reduziert es sich auf ein Problem in Form der Minimierung von wobei ein 0/1- Zeilenvektor und ein konstanter Spaltenvektor ist . wahr? dann ist das trivial, und wählen Sie einfach das so, dass es 1 ist, wenn das entsprechende Element in negativ ist, und 0, wenn es positiv ist .... QED? e(i,j)vivi2viXDXDXD
VZN

1
@vzn: Wenn Sie den , um die Absolutwertfunktion zu eliminieren, erhalten Sie Terme wie ; Wie gehst du mit ihnen bei der Minimierung um? ((yiyj)(xixj))22DiDjvivj
Marzio De Biasi

Hoppla! Sie haben geantwortet, bevor ich die Gelegenheit hatte, diesen Kommentar zu löschen, nachdem mir klar wurde, dass es sich trotzdem um ein fast lineares Matrixoptimierungsproblem handelt. auch mit einem Term wobei ein Spaltenvektor ist ...? VVTV
VZN

1

Noch ein erweiterter Kommentar ... Könnte falsch sein.

Ich denke auch über den Fall mit Boden- / Deckenbeschränkungen nach und versuche, ihn mit dynamischer Programmierung zu lösen (ich kann nicht, aber vielleicht funktioniert es, wenn der gemeinsame Teiler klein ist).

Sei der Bruchteil von , betrachten wir die Dinge vom kleinsten bis zum größten. Angenommen, die größte ist , und weil wir dynamische Programmierung betreiben, wissen wir bereits "etwas" (ich werde erklären, was dies ist) über die optimale Lösung für alles andere außer .{xi}xi{xi}{xk}xk

Betrachten Sie nun den Unterschied in der Zielfunktion, wenn wir auf- oder abrunden. Wenn ursprünglich etwas aufgerundet ist, dann ist die Differenz einfach 1 (nicht wirklich sorgfältig geprüft, aber es scheint so, als ob dies der Fall ist, ist es wirklich wichtig, dass unabhängig davon, ob links oder rechts von , die Differenz ist immer gleich); Wenn ursprünglich etwas abgerundet ist, beträgt die Differenz . Also: Wir wissen, welche Entscheidung wir treffen sollen, wenn die folgenden drei Größen bekannt sind:xkxixixkxi2{xk}2{xi}1

  1. Wie viele Dinge sind aufgerundet
  2. Wie viele Dinge sind abgerundet
  3. Was ist die Summe von unter den , die abgerundet sind?{xi}xi

OK, 1 und 2 sind im Wesentlichen gleich, wir können f [N, Ndown, Sdown] die optimale Lösung für die ersten N Punkte sein lassen (wenn die Punkte in aufsteigender Reihenfolge von sortiert sind ), die Anzahl von ‚s abgerundet ist Ndown, und die Summe von für diejenigen , die abgerundet sind , ist Sdown. Dann ist es nicht schwer zu schreiben, wie man von f [N-1] nach f [N] geht.{xi}xi{xi}

Das Problem ist natürlich, dass Sdown exponentiell viele Werte haben kann. Aber es funktioniert, wenn entweder der gemeinsame Divisor klein ist, oder wir können alles zuerst auf einen Gitterpunkt runden und ein FPTAS erhalten (wenn das obige dynamische Programm korrekt ist ...)


Ich habe gerade den Kommentar von @Marzio De Biasi bemerkt. Mit dieser Zielfunktion ist es viel einfacher, über diese dynamische Programmierung nachzudenken. Da wir im Wesentlichen nach sortieren , verschwindet der gesamte absolute Wert, wenn wir versuchen, den letzten zu betrachten. Die zusätzlichen Kosten entweder oder . DiDivi(N1)DkDivi
Rong Ge

OK muss nicht positiv sein. Das geht aber auch. Wir müssen nur den Unterschied zwischen feststellen und . Ndown ist die Anzahl der vorherigen 's, die gleich 0 sind, Nup ist die Anzahl der vorherigen ' s, die gleich 1 sind.| D i v i | N d o w n | D k | + N u p D k - Σ D i v i v j v jDi|Divi|Ndown|Dk|+NupDkDivivjvj
Rong Ge

Das sieht vielversprechend aus, aber ich denke, es gibt einige weitere Schwierigkeiten, wenn die Eingabewerte zu nahe beieinander liegen. Betrachten Sie zB und . Wenn wir nun auf- und könnten, hätten wir nicht mehr die nette Eigenschaft, dass sich der Fehler um genau 1 ändert, je nachdem, ob auf- oder abgerundet ist. Wenn wir dagegen eine Rundung verbieten, die die Reihenfolge der Punkte ändert (wie ich es in der ursprünglichen Frage getan habe), müssen wir anscheinend mögliche Rundungen im Auge behalten, die im dynamischen Programm noch verfügbar sind. Können wir das tun? x k = 1,9 x i x k x kxi=1.1xk=1.9xixkxk
Jukka Suomela

1
@Jukka Suomela, Nachdem ich Ihren Kommentar gesehen hatte, wurde mir klar, dass wir niemals zulassen sollten, dass etwas mit größerem abgerundet wird, während etwas mit kleinerem aufgerundet wird. Dies kann bewiesen werden, wenn Sie alle Fälle untersuchen. Dann ist die Antwort auf das Problem (mit Rundenbeschränkungen) klar: Es muss einen Schwellenwert geben, der über dem Schwellenwert liegt, den Sie aufrunden sollten, unter dem Sie abrunden sollten, an dem Schwellenwert sollten möglicherweise einige auf- und einige abrunden, aber nur die Qualität abhängig von der Anzahl. Diese Lösungen können leicht aufgezählt werden. { x i }{xi}{xi}
Rong Ge

1
{xi}<{xj}{xk}{xi}{xj}{xk}xixjxjxi
Rong Ge
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.