在遍历加权边时最大化节点权重和

时间:2014-07-23 17:49:25

标签: algorithm optimization graph

我有图表

  • 使用起始节点“S”。

  • 从'S'开始,图表中每个节点只有一条路径

  • 每个节点都有一个权重

  • 每个边都被称重,它是在它连接的节点之间移动的成本。而且这个成本是一次,即一旦我们从'S'移动到'N1','S'和'N1'之间的未来运动就没有成本

问题是 - 给定一个数字B,从'S'开始旅行,使得所访问节点的权重之和最大化,并且遇到的成本小于或等于B.

抱歉,我无权在此处发布图片。所以这里有一个外部链接:

http://postimg.org/image/4fpf0xtkp/

例如,在上图中,我可以如下所示:

S-> N1-> N2-> N1-> N3-> N4,节点重量= N1 + N2 + N3 + N4(最大化) 和总成本L1 + L2 + L3 + L4(在B之内)

非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

你的问题是NP难的。要看到这一点,假设您有节点S,并且每个其他节点都通过边连接到S,并且没有其他边。进一步假设每个节点的权重等于其边缘的成本。然后,对于给定的目标最大成本B,如果您可以解决您的问题,那么您可以解决子集求和问题(给定B,确定是否存在与B完全相加的成本子集)。因此,你的问题是NP难的,可能没有快速算法来解决它。蛮力方法很简单,可能最终成为最佳方式。