【问题标题】:Minimizing the absolute value of the difference of the sums最小化和差的绝对值
【发布时间】:2020-08-21 17:15:32
【问题描述】:

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

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

【问题讨论】:

    标签: algorithm math


    【解决方案1】:

    自从2^N > sum(2..2^(N-1) 以来,它看起来相当微不足道。因此,为了最小化差异,您希望将2^(N/2)+..._2^(N-1) 放在与2^N 不同的集合中。

    【讨论】:

      【解决方案2】:

      如果原数组是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)
        

      任意数组的一般情况称为partition problemwith constraint of equal size,证明是weakly NP-complete

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多