我有图表
使用起始节点“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之内)
非常感谢帮助!
答案 0 :(得分:0)
你的问题是NP难的。要看到这一点,假设您有节点S,并且每个其他节点都通过边连接到S,并且没有其他边。进一步假设每个节点的权重等于其边缘的成本。然后,对于给定的目标最大成本B,如果您可以解决您的问题,那么您可以解决子集求和问题(给定B,确定是否存在与B完全相加的成本子集)。因此,你的问题是NP难的,可能没有快速算法来解决它。蛮力方法很简单,可能最终成为最佳方式。