D'ACCORD. L'algorithme DP semble être inutilement compliqué. Après avoir lu les commentaires, je pense que cela pourrait résoudre la version monotone du problème (mais je n'ai pas vérifié tous les détails).
Supposons d'abord que chaque , où est la partie intégrale, est la partie fractionnaire. Supposons que est arrondi à , où est un entier non négatif (bien sûr, en général, peut être négatif, mais nous pouvons toujours déplacer de sorte que le plus petit soit 0).xi=⌊xi⌋+{xi}{ x i } x i ⌊ x i ⌋ + v i v i v i v i⌊xi⌋{xi}xi⌊xi⌋+vivivivi
Maintenant, considérez le coût d'une paire , lors de cet arrondi. Le coût devrait êtrex jxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
L'expression est compliquée à cause des valeurs absolues. Cependant, notez que nous avons la monotonie, donc les choses à l'intérieur des deux valeurs absolues intérieures devraient avoir le même signe. Puisque nous avons une valeur absolue extérieure, peu importe ce que ce signe est, l'expression se simplifie simplement pour
|vi−vj−({xi}−{xj})|
À partir de maintenant, nous ne supposons pas que la solution est monotone, mais à la place, nous changeons l'objectif pour minimiser la somme du terme ci-dessus pour toutes les paires. Si la solution à ce problème se trouve être monotone, alors bien sûr, c'est aussi la solution optimale pour la version monotone. (Considérez ceci comme: le problème d'origine a une pénalité infinie lorsque la solution n'est pas monotone, le nouveau problème a une pénalité plus petite, si une solution monotone gagne même dans la nouvelle version, elle doit être la solution à la version monotone)
Maintenant, nous voudrions prouver, si , dans la solution optimale, nous devons avoir .v i ≥ v j{xi}>{xj}vi≥vj
Supposons que ce ne soit pas vrai, que nous avons une paire mais . Nous montrerons que si nous échangeons la solution devient strictement meilleure.v i < v j v i v j{xi}>{xj}vi<vjvi vj
Nous comparons d'abord le terme entre et , ici, il est vraiment clair que l'échange est strictement meilleur car dans la version non-swap, et a le même signe, l'absolu valeur sera la somme des deux valeurs absolues.j v i - v j { x j } - { x i }ijvi−vj{xj}−{xi}
Maintenant, pour tout , nous comparons la somme des paires et . Autrement dit, nous devons comparer( i , k ) ( j , k )k(i,k)(j,k)
| v j - v k - ( { x i } - { x k } ) | + | v|vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|et.|vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
Utilisation , , , pour désigner les quatre termes à l' intérieur de la valeur absolue, il est clair que . Il est également clair que. Par convexité de la valeur absolue, nous savons. Prenez la somme sur tous les , nous savons que l'échange ne peut être que mieux.B C D A + B = C + D | A - B | ≥ | C - D | | A | + | B | ≥ | C | + | D | x kABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xk
Notez que maintenant nous avons déjà une solution pour la version plancher / plafond monotone: il doit y avoir un seuil, quand est plus grand toujours arrondi, quand il est plus petit toujours arrondi, quand il est égal arrondi et certains vers le bas, tandis que la qualité de la solution ne dépend que du nombre. Nous énumérons toutes ces solutions et choisissons celle qui a la plus petite fonction objective. (Toutes ces solutions sont nécessairement monotones).{xi}
Enfin, nous aimerions passer à la version entière monotone du problème. Nous pouvons en fait prouver que la solution optimale est la même que la version Monotonic sol / plafond.
Comme nous l'avons supposé, le plus petit est 0. Regroupez tous les fonction de leurs et appelez-les groupe . Nous allons d'abord prouver qu'il n'y a pas de groupes vides, mais c'est simple, si le ème groupe est vide, pour tout suffit de laisser . Il est facile de voir que la fonction objectif s'améliore toujours (essentiellement parce que ).ix i Iv i 0 , 1 , 2 , . . . , max { v i }vixivi0,1,2,...,max{vi}v i > k v i = v i - 1 | { x i } - { x j } | < 1kvi>kvi=vi−1|{xi}−{xj}|<1
Nous allons maintenant prouver que la moyenne de dans le groupe est au moins la moyenne de dans le groupe plus . Si ce n'est pas vrai, laissez simplement pour tout , le calcul montre à nouveau que la fonction objectif s'améliore.k + 1 { x i } k 1 / deux v i = v i - 1 v i > k{xi}k+1{xi}k1/2vi=vi−1vi>k
Puisque la moyenne de est dans l'intervalle , il y a vraiment au plus deux groupes, ce qui correspond à la version plancher / plafond.[ 0 , 1 ){xi}[0,1)