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}xi⌊xi⌋+vivivivi
Betrachten Sie nun die Kosten für ein Paar , x j, wenn Sie diese Rundung durchführen. Die Kosten sollten seinxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
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
|vi−vj−({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 i ≥ v j haben müssen , wenn .{xi}>{xj}vi≥vj
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 }ijvi−vj{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 } ) | + ||vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|.|vj−vk−({xi}−{xk})|+|vi−vk−({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|A−B|≥|C−D||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=vi−1 . 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=vi−1 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)