起初我遇到了来自不同域的问题,但现在它被简化并转换为图形。
图表是
我只需遍历那些最大化总效用成本的节点。
听起来像任何众所周知的图形问题吗?
示例:
V = {A, B, C}
vertex points = {0, 6, 5}
edge cost = {[A,B]=-8, [A,C]=-2, [B,C]=-10}
所以解决方案:只访问顶点C
并返回。它总共会得到1分。
如果访问了顶点,则它指向0。
答案 0 :(得分:3)
这被称为收集旅行商问题。
答案 1 :(得分:1)
我认为这对于一般图表来说应该是NP难的,因为它可以被重新描述为最长的路径问题。为了了解如何,我们改变了边和顶点的成本。
让c(e)
为边e
的费用,让e = {u,v}
和c(u), c(v)
分别为顶点u
和v
的费用。将每个边的新成本设置为c_new(e) = c(e) + 1/2*(c(u)+c(v))
。这背后的直觉是,在从顶点到自身的循环中,您使用的两条边与您传递的每个顶点一起入射,因此您只能计算每条边的顶点成本的一半;我认为它是在到达时支付一半的费用,而在离开顶点时则是另一半。
更改边的成本后,可以忽略顶点成本,因为现在将考虑边的成本。现在你的问题就是找到一条最大化其边权重之和的简单路径,这就是称为最长路径问题的NP难问题。