ESTÁ BEM. O algoritmo DP parece ser desnecessariamente complicado. Depois de ler os comentários, acho que isso pode resolver a versão monotônica do problema (mas não verifiquei todos os detalhes).
Primeiro, assuma que , onde ⌊ x i ⌋ é a parte integrante, { x i } é a parte fracionária. Suponha x i é arredondado para ⌊ x i ⌋ + v i , onde v i é um inteiro não negativo (é claro que, em geral, v i pode ser negativo, mas podemos sempre mudar, de modo que o menor v i é 0).xi=⌊xi⌋+{xi}⌊xi⌋{xi}xi⌊xi⌋+vivivivi
Agora, considere o custo de um par , x j ao fazer esse arredondamento. O custo deve serxixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
A expressão é complicada por causa dos valores absolutos. No entanto, observe que temos monotonicidade; portanto, as coisas dentro dos dois valores absolutos internos devem ter o mesmo sinal. Como temos um valor absoluto externo, realmente não importa qual é esse sinal, a expressão simplesmente simplifica
|vi−vj−({xi}−{xj})|
A partir de agora, não assumimos que a solução seja monotônica, mas alteramos o objetivo de minimizar a soma do termo acima para todos os pares. Se a solução para esse problema for monotônica, é claro que também é a solução ideal para a versão monotônica. (Pense nisso como: o problema original tem uma penalidade infinita quando a solução não é monotônica, o novo problema tem uma penalidade menor, se uma solução monotônica vence mesmo na nova versão, deve ser a solução para a versão monotônica)
Agora gostaríamos de provar, se , na solução ótima, devemos ter v i ≥ v j .{xi}>{xj}vi≥vj
Suponha que isso não seja verdade, que temos um par mas v i < v j . Mostraremos que, se trocarmos v i v j, a solução ficará estritamente melhor.{xi}>{xj}vi<vjvi vj
Primeiro vamos comparar o prazo entre e j , aqui é muito claro que a troca é estritamente melhor porque na versão não-swap, v i - v j e { x j } - { x i } tem o mesmo sinal, o absoluto value será a soma dos dois valores absolutos.ijvi−vj{xj}−{xi}
Agora, para qualquer , comparamos a soma dos pares ( i , k ) e ( j , k ) . Ou seja, precisamos comparark(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 para denotar as quatro condições no interior do valor absoluto, é evidente que A + B = C + D . Também está claro que | A - B | ≥ | C - D | . Pela convexidade do valor absoluto, sabemos | Um | + | B | ≥ | C | + | D | . Assuma a soma de todos os x kABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xksabemos que a troca só pode ser melhor.
Observe que agora já temos uma solução para a versão monotônica de piso / teto: deve haver um limite, quando for maior sempre arredondado, quando for menor sempre arredondado, quando for igual arredondado alguns e outros enquanto a qualidade da solução depende apenas do número. Enumeramos todas essas soluções e escolhemos a que tem a menor função objetiva. (Todas essas soluções são necessariamente monotônicas).{xi}
Finalmente, gostaríamos de ir para a versão inteira monotônica do problema. Na verdade, podemos provar que a solução ideal é a mesma da versão monotônica de piso / teto.
Como assumimos, o menor é 0. Grupo todo o x i 's de acordo com sua v i ' s, e chamá-los grupo 0 , 1 , 2 , . . . , max { v i } . Primeiro provaremos que não há grupos vazios, mas isso é simples, se o ésimo grupo estiver vazio, pois qualquer deixe . É fácil ver que a função objetivo sempre melhora (basicamente porque ).vixivi0,1,2,...,max{vi}v i > k v i = v i - 1 | { x i } - { x j } | < 1kvi>kvi=vi−1|{xi}−{xj}|<1
Agora vamos provar que a média de no grupo é pelo menos a média de no grupo mais . Se isso não for verdade, basta deixar para todos os , o cálculo novamente mostra que a função objetivo melhora.k + 1 { x i } k 1 / 2 v i = v i - 1 v i > k{xi}k+1{xi}k1/2vi=vi−1vi>k
Como a média de está no intervalo , realmente existem no máximo dois grupos, o que corresponde à versão de piso / teto.[ 0 , 1 ){xi}[0,1)