好。DP算法似乎不必要地复杂。阅读评论后,我认为这可能会解决问题的单调版本(但我尚未检查所有细节)。
首先,假设各,其中⌊ X 我 ⌋是不可或缺的一部分,{ X 我 }是小数部分。假设X 我被四舍五入为⌊ X 我 ⌋ + v 我,其中v 我是一个非负整数(当然在一般的v 我可以是负的,但我们可以总是移动,使得最小的v 我是0)。xi=⌊xi⌋+{xi}⌊xi⌋{xi}xi⌊xi⌋+vivivivi
现在,在进行四舍五入时考虑对,x j的成本。费用应该是xixj
||vi−vj+⌊xi⌋−⌊xj⌋|−|{xi}−{xj}+⌊xi⌋−⌊xj⌋||
由于绝对值,表达式很复杂。但是,请注意,我们具有单调性,因此两个内部绝对值内部的事物应具有SAME符号。由于我们有一个外部绝对值,因此该符号实际上并不重要,该表达式可以简化为
|vi−vj−({xi}−{xj})|
从现在开始,我们不假定解决方案是单调的,而是改为更改目标,以使所有对的上述总和最小。如果此问题的解决方案恰好是单调的,那么它当然也是单调版本的最佳解决方案。(以此类推:当解决方案不是单调时,原始问题的惩罚是无限的,新问题的惩罚是较小的,如果单调解决方案即使在新版本中获胜,也必须是单调版本的解决方案)
现在,我们想证明,如果,在最佳的解决方案,我们必须有v 我 ≥ v Ĵ。{xi}>{xj}vi≥vj
假设这是不正确的,我们有一对但是v i < v j。我们将证明,如果交换v i v j,则解决方案将变得更好。{xi}>{xj}vi<vjvi vj
首先我们比较一下和j之间的项,在这里很明显交换是严格更好的,因为在非交换版本中,v i − v j和{ x j } − { x i }具有相同的符号,即绝对值将是两个绝对值的总和。ijvi−vj{xj}−{xi}
现在对于任何,我们比较(i ,k )和(j ,k )对的总和。也就是说,我们需要比较k(i,k)(j,k)
和 | v j − v k − ({ x i } − { x k } )| + ||vi−vk−({xi}−{xk})|+|vj−vk−({xj}−{xk})|。|vj−vk−({xi}−{xk})|+|vi−vk−({xj}−{xk})|
使用,乙,Ç,d来表示的绝对值内的四个术语,很显然,甲+ 乙= Ç + d。也很明显,| A − B | ≥ | C − D | 。通过绝对值的凸度,我们知道| A | + | B | ≥ | C | + | D | 。取所有x k的总和ABCDA+B=C+D|A−B|≥|C−D||A|+|B|≥|C|+|D|xk是的,我们知道交换只会更好。
请注意,现在我们已经有了单调地板/天花板版本的解决方案:必须有一个阈值,当较大时,总是向上舍入;当{ x i }较小时,总是向下舍入;当相等时,向上舍入某些值。下来,而解决方案的质量仅取决于数量。我们列举了所有这些解决方案,并选择了目标函数最小的解决方案。(所有这些解决方案都必须是单调的)。{xi}
最后,我们想转到问题的单调整数版本。实际上,我们可以证明最佳解决方案与单调地板/天花板版本相同。
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
现在我们将证明,平均的在组至少是平均的在组加。如果不是这样,则对于所有,简单地让,计算再次表明目标函数得到了改善。ķ + 1 { X 我 } ķ 1 / 2 v 我 = v 我 - 1 v 我 > ķ{xi}k+1{xi}k1/2vi=vi−1vi>k
由于的平均值在范围内,所以实际上最多有两个组,它们对应于下限/上限版本。[ 0 ,1 ){xi}[0,1)