OK. L'algoritmo DP sembra essere inutilmente complicato. Dopo aver letto i commenti, penso che questo potrebbe risolvere la versione monotonica del problema (ma non ho controllato tutti i dettagli).
Innanzitutto, supponi che ogni , dove sia la parte integrale, è la parte frazionaria. Supponiamo che sia arrotondato a , dove è un numero intero non negativo (ovviamente in generale può essere negativo, ma possiamo sempre spostare in modo che il più piccolo sia 0).⌊ x i ⌋ { x i } x i ⌊ x i ⌋ + v i v i v i v ixi=⌊xi⌋+{xi}⌊xi⌋{xi}xi⌊xi⌋+vivivivi
Ora, considera il costo per una coppia , x j quando esegui questo arrotondamento. Il costo dovrebbe esserexixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
L'espressione è complicata a causa dei valori assoluti. Tuttavia, nota che abbiamo la monotonia, quindi le cose all'interno dei due valori assoluti interni dovrebbero avere il segno SAME. Dato che abbiamo un valore assoluto esteriore, non importa davvero quale sia quel segno, l'espressione semplifica semplicemente
|vi−vj−({xi}−{xj})|
D'ora in poi non assumiamo che la soluzione sia monotonica, ma cambiamo invece l'obiettivo per ridurre al minimo la somma del termine sopra indicato per tutte le coppie. Se la soluzione a questo problema sembra essere monotona, allora ovviamente è anche la soluzione ottimale per la versione monotonica. (Pensa a questo come: il problema originale ha una penalità infinita quando la soluzione non è monotonica, il nuovo problema ha una penalità minore, se una soluzione monotonica vince anche nella nuova versione, deve essere la soluzione alla versione monotonica)
Ora vorremmo dimostrare, se , nella soluzione ottimale dobbiamo avere v i ≥ v j .{xi}>{xj}vi≥vj
Supponiamo che ciò non sia vero, che abbiamo una coppia ma v i < v j . Mostreremo che se ci scambiamo v i v j la soluzione diventa strettamente migliore.{xi}>{xj}vi<vjvi vj
Innanzitutto confrontiamo il termine tra e j , qui è davvero chiaro che lo scambio è strettamente migliore perché nella versione non swap, v i - v j e { x j } - { x i } ha lo stesso segno, l'assoluto valore sarà la somma dei due valori assoluti.ijvi−vj{xj}−{xi}
Ora per ogni , confrontiamo la somma delle coppie ( i , k ) e ( j , k ) . Cioè, dobbiamo confrontarek(i,k)(j,k)
e | v j - v k - ( { x i } - { x k } ) | + ||vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|.|vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
Uso , B , C , D per indicare i quattro termini all'interno del valore assoluto, è chiaro che A + B = C + D . Inoltre è chiaro che | A - B | ≥ | C - D | . Per convessità del valore assoluto, sappiamo | A | + | B | ≥ | C | + | D | . Prendi la somma su tutti x kABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xkSappiamo che lo scambio non può che essere migliore.
Si noti che ora abbiamo già una soluzione per la versione monotonica floor / ceil: deve esserci una soglia, quando è più grande sempre arrotondato per eccesso, quando è più piccolo sempre arrotondato per difetto, quando è uguale arrotondato un po 'su e alcuni giù, mentre la qualità della soluzione dipende solo dal numero. Enumeriamo tutte queste soluzioni e scegliamo quella con la più piccola funzione oggettiva. (Tutte queste soluzioni sono necessariamente monotoniche).{xi}
Infine vorremmo passare alla versione intera monotonica del problema. Possiamo effettivamente dimostrare che la soluzione ottimale è la stessa della versione monotonica a pavimento / soffitto.
vixivik v i > k v i = v i - 1 |0,1,2,...,max{vi}kvi>kvi=vi−1|{xi}−{xj}|<1
Ora proveremo, la media di nel gruppo è almeno la media di nel gruppo più . Se ciò non è vero, lasciare semplicemente per tutti , il calcolo mostra di nuovo che la funzione obiettivo migliora.k + 1 { x i } k 1 / 2 v{xi}k+1{xi}k1/2v i > kvi=vi−1vi>k
Poiché la media di è nell'intervallo , in realtà ci sono al massimo due gruppi, che corrispondono alla versione floor / ceil.[ 0 , 1 ){xi}[0,1)