繁体   English   中英

最小化和差的绝对值

[英]Minimizing the absolute value of the difference of the sums

我有一个包含 N 个元素的数组(N 是偶数): [2, 4, 8, ..., 2^N] 我需要将它拆分为2 arrays,每个都有N/2元素,并获得此 arrays 之和之间的差的最小绝对值。

对于2, 4, 8, 16答案是(2+16)-(4+8)=6 谁能向我解释解决这个问题的数学方面(没有蛮力)? 如果原始数组是range[1, N] ,解决方案是否相同?

它看起来相当微不足道,因为2^N > sum(2..2^(N-1) 。因此,为了最小化差异,你想把2^(N/2)+..._2^(N-1)在与2^N不同的集合中。

如果原始数组是 range[1, N],解决方案是否相同?

在数组1, 2, ... N的情况下,答案是01 ,具体取决于N mod 4

  • 如果N = 4k ,则最小差异为0并且(例如)通过分区获得:

     1 3 5... (2k - 1) (2k + 2) (2k + 4)... 4k 2 4 6... 2k (2k + 1) (2k + 3) (2k + 5)... (4k - 1)
  • 如果N = 4k + 2则最小差异为1并且(例如)通过分区获得:

     1 3 5... (2k + 1) (2k + 4) (2k + 6)... (4k + 2) 2 4 6... (2k + 2) (2k + 3) (2k + 5)... (4k + 1)

任意数组的一般情况被称为具有相等大小约束分区问题,被证明是弱 NP 完全的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM