OKAY. El algoritmo DP parece ser innecesariamente complicado. Después de leer los comentarios, creo que esto podría resolver la versión monotónica del problema (pero no he verificado todos los detalles).
Primero, suponga que cada , donde ⌊ x i ⌋ es la parte integral, { x i } es la parte fraccionaria. Supongamos que x i se redondea a ⌊ x i ⌋ + v i , donde v i es un número entero no negativo (por supuesto, en general v i puede ser negativo, pero siempre podemos cambiar para que v i sea 0).xi=⌊xi⌋+{xi}⌊xi⌋{xi}xi⌊xi⌋+vivivivi
Ahora, considere el costo de un par , x j al hacer este redondeo. El costo debe serxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
La expresión es complicada debido a los valores absolutos. Sin embargo, tenga en cuenta que tenemos monotonicidad, por lo que las cosas dentro de los dos valores absolutos internos deben tener el mismo signo. Como tenemos un valor absoluto externo, realmente no importa cuál sea ese signo, la expresión simplemente se simplifica a
|vi−vj−({xi}−{xj})|
De ahora en adelante no asumimos que la solución es monotónica, sino que cambiamos el objetivo de minimizar la suma del término anterior para todos los pares. Si la solución a este problema resulta ser monótona, entonces, por supuesto, también es la solución óptima para la versión monotónica. (Piense en esto como: el problema original tiene una penalización infinita cuando la solución no es monotónica, el nuevo problema tiene una penalización menor, si una solución monotónica gana incluso en la nueva versión, debe ser la solución a la versión monotónica)
Ahora nos gustaría probar, si , en la solución óptima debemos tener v i ≥ v j .{xi}>{xj}vi≥vj
Suponga que esto no es cierto, que tenemos un par pero v i < v j . Mostraremos que si intercambiamos v i v j la solución mejora estrictamente.{xi}>{xj}vi<vjvi vj
Primero comparamos el término entre y j , aquí está realmente claro que el intercambio es estrictamente mejor porque en la versión sin intercambio, v i - v j y { x j } - { x i } tiene el mismo signo, el absoluto El valor será la suma de los dos valores absolutos.ijvi−vj{xj}−{xi}
Ahora para cualquier , comparamos la suma de pares ( i , k ) y ( j , k ) . Es decir, tenemos que comparark(i,k)(j,k)
y | 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 para denotar los cuatro términos en el interior del valor absoluto, está claro que A + B = C + D . También está claro que | A - B | ≥ | C - D | . Por convexidad del valor absoluto, sabemos | A | + | B | ≥ | C | + | D | . Toma la suma sobre todo x kABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xkSabemos que el intercambio solo puede ser mejor.
Tenga en cuenta que ahora ya tenemos una solución para la versión monotónica de piso / techo: debe haber un umbral, cuando es más grande siempre redondeado, cuando es más pequeño siempre redondeado hacia abajo, cuando es igual redondear hacia arriba abajo, mientras que la calidad de la solución solo depende del número. Enumeramos todas estas soluciones y elegimos la que tiene la función objetivo más pequeña. (Todas estas soluciones son necesariamente monótonas).{xi}
Finalmente, nos gustaría ir a la versión entera monotónica del problema. De hecho, podemos demostrar que la solución óptima es la misma que la versión monotónica de piso / techo.
vixivik v i > k v i = v i - 1 | { x i } - { x j } | < 10,1,2,...,max{vi}kvi>kvi=vi−1|{xi}−{xj}|<1
Ahora demostraremos que el promedio de en el grupo es al menos el promedio de en el grupo más . Si esto no es cierto, simplemente deje para todos , el cálculo nuevamente muestra que la función objetivo mejora.k + 1 { x i } k 1 / 2 v i = v i - 1 v i > k{xi}k+1{xi}k1/2vi=vi−1vi>k
Dado que el promedio de está en el rango , realmente hay a lo sumo dos grupos, que corresponde a la versión de piso / techo.[ 0 , 1 ){xi}[0,1)