我想为这个问题想出一个合理的算法:这个问题NP-hard?
假设你有一堆球。每个球至少有一种颜色,但也可以是多彩的。每个球上还有一个数字。还有一堆只有一种颜色的盒子。我们的目标是最大限度地提高盒中的球数的总和,唯一的规则是:
- ,以便放置一个球在一个盒子里,它 必须至少有框的颜色
- 您只能在每个 框中放置一个球。
例如,您可以将蓝色和绿色的球放入蓝色框或绿色框中,但不能放入红色框中。
我已经想出了一些优化,在运行时间方面有很大帮助。例如,您可以按照点值的降序排列球。然后,当你从最高到最低,如果球只有一种颜色,并且没有其他高点球含有这种颜色,你可以把它放在那个盒子里(并且因此从那个盒子中移除那个盒子和那个球)其余组合)。
我只是好奇是否有这种类型的问题的动态算法,或者如果它只是旅行推销员问题的伪装。如果我知道最多只有X种颜色,会有帮助吗?任何帮助是极大的赞赏。谢谢!
编辑 - 这里有一个简单的例子:
球:
- 1红球 - 5分
- 1个蓝色球 - 3分
- 1绿/红球 - 2分
- 1绿色/蓝色球 - 4分
- 1红/蓝色球 - 1点
盒:
- 1红
- 1蓝
- 1绿色
最优解:
- 红球在红色框
- 蓝色球在蓝色框
绿色/蓝色球在绿色框
总价值:12分(5 + 3 + 4)
由于所有的球都有一个盒子,所有的组织都有相同的分值,对吧?或者我错过了什么? – TaslemGuy 2010-10-03 00:03:33
您能否详细说明“最大限度地提高箱子中所有人数的总和”。你想最大化一个盒子吗?你总是使用所有可用的球吗? – JoshD 2010-10-03 00:04:30
你想要优化什么?特定框中的值总和?所有盒子上的数值总和? – liori 2010-10-03 00:04:51