图:仅访问那些最大化效用函数的节点

时间:2013-04-23 14:00:28

标签: java algorithm graph graph-theory

起初我遇到了来自不同域的问题,但现在它被简化并转换为图形。

图表是

  • 双向
  • 完全连接
  • 每个顶点都有正成本
  • 每个边缘都有负成本
  • 开始和结束顶点是相同的

我只需遍历那些最大化总效用成本的节点。

听起来像任何众所周知的图形问题吗?

示例:

V = {A, B, C}

vertex points = {0, 6, 5}

edge cost = {[A,B]=-8, [A,C]=-2, [B,C]=-10}

所以解决方案:只访问顶点C并返回。它总共会得到1分。

如果访问了顶点,则它指向0。

2 个答案:

答案 0 :(得分:3)

这被称为收集旅行商问题。

答案 1 :(得分:1)

我认为这对于一般图表来说应该是NP难的,因为它可以被重新描述为最长的路径问题。为了了解如何,我们改变了边和顶点的成本。

c(e)为边e的费用,让e = {u,v}c(u), c(v)分别为顶点uv的费用。将每个边的新成本设置为c_new(e) = c(e) + 1/2*(c(u)+c(v))。这背后的直觉是,在从顶点到自身的循环中,您使用的两条边与您传递的每个顶点一起入射,因此您只能计算每条边的顶点成本的一半;我认为它是在到达时支付一半的费用,而在离开顶点时则是另一半。

更改边的成本后,可以忽略顶点成本,因为现在将考虑边的成本。现在你的问题就是找到一条最大化其边权重之和的简单路径,这就是称为最长路径问题的NP难问题。