让我尽力解释一下这种情况。
假设我有3个值
1, 2, 3
我告诉算法将这些值拆分为x列。让我们说x = 2澄清。
算法确定这组值最好按以下方式放入两列。
1st column 2nd column
---------------------------
1 3
2
每列都有一个偶数(总数,而不是文字)值。
现在假设我有以下值
7, 8, 3, 1, 4
我告诉算法我希望将值拆分为3列。该算法现在告诉我以下是最合适的。
1st column 2nd column 3rd column
8 7 3
1 4
注意列甚至不安静,但它尽可能接近。只要列表尽可能接近即可,只需稍微过一点就可以了。
有人有任何建议吗?知道这样做的好方法吗?
答案 0 :(得分:3)
我会这样做:
答案 1 :(得分:2)
如果你想要完全相同的值,那么对于列数x = 2,它是经典的Partition Problem,它是NP-Complete,但是有伪多项式解。
更多列(即x> 2),它变为强NP完全。 3-Partition Problem
对于x> 3,我怀疑它仍将是强NP完全。
由于x分区问题可以解决你的问题,它会像上面的问题一样难。
您可能需要一些启发式方法来帮助您。
答案 2 :(得分:2)
我回答了一个类似的问题。
我可以想到一个贪婪的次优解决方案。
这永远不会给你最佳解决方案。
对于您的情况,8 7 4 3 1将是订单。你会(幸运的是)得到与你提到的相同的结果。
8 = 8
7 1 = 8
4 3 = 7
这并不总能为您提供最佳解决方案