Effizienter Algorithmus für dieses Optimierungsproblem? Dynamische Programmierung?

9

Ich habe ein Diagramm erstellt, das zeigt, was ich erreichen möchte.

Diagramm

Bild in voller Größe

In der Eingabesequenz sind die Knoten so nah wie möglich beieinander. Aber ich möchte, dass die weißen Knoten so nah wie möglich an ihren jeweiligen schwarzen Knoten sind. Die Kanten zwischen Knoten können verlängert werden, um diesen Fehler zu minimieren. Sie können nicht gekürzt werden. So 1 -> 2kann zum Beispiel nicht weniger als 4 sein.

Ich habe eine mögliche Lösung aufgenommen. Die verlängerten Kanten sind beschriftet. Beachten Sie, dass durch das Verlängern einer Kante alle Knoten nach rechts verschoben werden.

Diese Achse ist durchgehend, aber ich könnte sie möglicherweise diskretisieren, wenn das hilft.

Ich denke, ein dynamischer Programmieransatz könnte hier funktionieren, bin mir aber nicht sicher - ich war nie sehr gut mit DP.

Was ist der am schnellsten laufende Algorithmus, der dies lösen kann? Kann dies als bekanntes Problem eingestuft / umrahmt werden?

FogleBird
quelle
Um dies mit DP zu lösen, denken Sie einfach an die Struktur / Unterstruktur der Lösung und lösen Sie von unten nach oben. Das sollte eine lineare Laufzeit ergeben. Ich denke, es ist im Allgemeinen auch als lineares Gleichungssystem lösbar, aber das Lösen / Optimieren hat möglicherweise keine bessere Laufzeit.
Jason
1
Bitte setzen Sie keine wichtigen Details in den Bildtext. Außerdem haben Sie das Problem nicht formell beschrieben (in mathematischen Begriffen), das ist die halbe Miete. "Minimieren Sie den mittleren quadratischen Fehler" von was? es sieht jedoch aus wie eine 1d-Version des "Facility Location Problem"
vzn

Antworten:

5

Dies ist nur eine Erweiterung der Antwort von @ Sébastien Loisel.

Beachten Sie minimieren (xich- -yich)2 vorbehaltlich xich- -xich- -1cich ist gleichbedeutend mit minimieren (xich- -(yich- -cich))2 vorbehaltlich xichxich- -1. Lasseneinich=yich- -cichdann ist dies genau das isotonische Regressionsproblem . Es gibt eineÖ(n) Zeitalgorithmus.

Chao Xu
quelle
1
Hervorragend - Ich habe eine isotonische Regression (Algorithmus für Pool-benachbarte Übertreter) implementiert, die perfekt und viel schneller funktioniert als mein gespeicherter Suchalgorithmus. Vielen Dank!
FogleBird
4

Wenn Sie die Achse diskretisieren, können Sie die dynamische Programmierung verwenden. Für jeden Ballb und machbarer Ort Berechnen Sie (innerhalb einiger vernünftiger Grenzen) den besten mittleren quadratischen Fehler für den ersten bBälle. Dies kann in der Regel nur die gleiche Art von Informationen für Ball erfolgenb- -1.

Yuval Filmus
quelle
Können Sie sich den Code ansehen, den ich geschrieben habe, und mir sagen, wie sich ein DP-Ansatz in Bezug auf die Leistung unterscheiden kann?
FogleBird
Wenn Ihr Ansatz für Sie funktioniert, großartig. Können Sie die Komplexität abschätzen? Können Sie die Komplexität meines Vorschlags abschätzen? Das kann Ihnen bei der Entscheidung helfen, ob es sich lohnt, meinen Ansatz zu programmieren. Wenn Sie entscheiden, dass es sich lohnt, können Sie die beiden Ansätze empirisch vergleichen. Welcher Ansatz besser funktioniert, hängt auch von der Größe und Art der Eingaben ab. Stellen Sie sicher, dass Sie Ihren Ansatz anhand der tatsächlichen Eingaben testen.
Yuval Filmus
2

Dies ist ein quadratisches Programm. Sie versuchen, die Summe von zu minimieren(xich- -yich)2 vorbehaltlich xich- -xich- -1cich.

Sébastien Loisel
quelle
Dies antwortet: "Kann dies als bekanntes Problem eingestuft / umrahmt werden?" aber es wäre schön, mehr Details zu geben.
David Richerby