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.
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.
quelle
Antworten:
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] Ci Cost(i,j) die minimalen Kosten einer Sequenz über die ersten Sätze, die mit . Die folgende Rekursion beschreibt :i Cij Cost
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 )minmj=1Cost(n,j) O(nm) .
quelle
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 ∈n G=(⋃ni=1Vi,E) v∈Vi x∈Ci u∈Vi,v∈Vi+1 (u,v) ℓ1 ℓ2 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 ).s V1 t Vn G O(V+E)
quelle