Minimierung der Gesamtvariation einer Folge diskreter Auswahlmöglichkeiten

8

Mein Setup sieht ungefähr so ​​aus: Ich habe eine Folge von Mengen von ganzen Zahlen mitrelativ klein - in der Größenordnung von vier oder fünf Artikeln für alle . Ich möchte eine Folge mit jedem so wählen, dass die (entweder oder , dh oder ) wird minimiert. Während es so aussieht, als ob die Auswahl für jedes x_i 'lokal' ist, besteht das Problem darin, dass sich Auswahlmöglichkeiten ausbreiten und nicht lokale Auswirkungen haben können, sodass das Problem von Natur aus globaler Natur zu sein scheint.Ci(1in)|Ci|ixi(1in)xiCi12i=1n1|xixi+1|i=1n1(xixi+1)2xi

Mein Hauptanliegen ist ein praktischer Algorithmus für das Problem; Im Moment verwende ich Annealing-Methoden, die auf der Mutation kurzer Teilsequenzen basieren, und obwohl sie in Ordnung sein sollten, scheint es, als ob ich es besser machen sollte. Ich interessiere mich aber auch für die abstrakte Komplexität - meine Vermutung wäre, dass die Standard-Abfrageversion ('Gibt es eine Lösung für die Gesamtvariation ?') Durch eine Reduzierung von einem Einschränkungsproblem wie 3 NP-vollständig wäre. SAT aber ich kann die Reduktion nicht ganz sehen. Hinweise auf frühere Studien wären willkommen - es scheint ein so natürliches Problem zu sein, dass ich nicht glauben kann, dass es noch nicht untersucht wurde, aber meine bisherigen Suchanfragen haben nichts Vergleichbares ergeben.k

Steven Stadnicki
quelle
Gute Frage! Nur eine klärende Frage: Die Länge von ist , aber müssen Sie aus jedem Element auswählen ? Oder ist es in Ordnung, eine Reihe von Sets zu haben, aus denen Sie überhaupt nicht auswählen? n C.xinCi
Juho
@mrm Es muß von jedem ein Element sein - die s sind direkt von indexierten ebenso wie die s sind. x 1 n C.Cix1nC
Steven Stadnicki

Antworten:

4

Hier ist ein dynamisches Programm. Angenommen, für alle der Klarheit halber; Das Folgende kann an die Arbeit angepasst werden, wenn die unterschiedliche Kardinalitäten haben. Seii [ n ] C i Kosten ( i , j ) i C i j KostenCi={Ci1,,Cim}i[n]CiCost(i,j) die minimalen Kosten einer Sequenz über die ersten Sätze, die mit . Die folgende Rekursion beschreibt :iCijCost

Cost(1,j)=0,1jmCost(i,j)=mink=1m(Cost(i1,k)+|C(i1)kCij|) ,2in,1jm.

Die minimalen Gesamtkosten ; Die tatsächliche Reihenfolge der Auswahlmöglichkeiten kann durch Untersuchen der Argmins auf dem Weg bestimmt werden. Die Laufzeit istO ( n m )minj=1mCost(n,j)O(nm) .

Rechnung
quelle
Ich habe versucht, die Klarheit Ihrer Antwort sowohl bei der Formatierung als auch bei der Präsentation zu verbessern. Bitte überprüfen Sie, ob ich die Dinge nicht durcheinander gebracht habe. Es wäre schön, wenn Sie ein Argument einfügen würden, warum das, was Sie vorschlagen, richtig ist.
Raphael
In Anbetracht der Antwort von Nicholas ähnelt dies dem Bellman-Ford-Algorithmus, der auf das jeweilige Problem zugeschnitten ist.
Raphael
Beide Antworten sind wirklich ausgezeichnet (und wie Raphael bemerkt, sehr ähnlich), aber obwohl ich die breite Anwendbarkeit der anderen mag, bevorzuge ich diese für ihre direkte Anwendung auf meine spezielle Frage. Vielen Dank!
Steven Stadnicki
4

Es scheint, dass dies gelöst werden kann, indem einfach ein kürzester Weg in einem gerichteten azyklischen Graphen berechnet wird. Der Grund dafür ist, dass Ihre Zielfunktion den Gesamtabstand zwischen ausgewählten "Nachbarn" in Ihren Mengen minimiert.C={C1,,Cn} .

Konstruieren Sie einen stufigen Graphen wobei jedes einem eindeutigen Element . für jedes eine gerichtete Kante die Kosten entweder oderG = ( n i = 1 V i , E ) v V i x C i u nG=(i=1nVi,E)vVixCiuVi,vVi+1(u,v)12 Abstand .

Fügen Sie nun einen Quellscheitelpunkt mit 0-Kosten-Kanten zu und einen Senkenscheitelpunkt mit 0-Kosten-Kanten von . Da eine DAG ist und beide Distanzfunktionen die Kantenkosten nicht negativ erzwingen, können Sie den kürzesten Pfad in mit topologischer Sortierung und dynamischer Programmierung berechnen (ähnlich wie hier beschrieben ).sV1tVnGO(V+E)

Nicholas Mancuso
quelle