具有约束的有向无环加权图的遍历

时间:2012-09-29 21:54:01

标签: graph directed-acyclic-graphs graph-traversal

我有一个有向无环加权图,我想遍历。

有效解决方案路线的约束是:

  1. 路线中遍历的所有边的权重之和必须是图中可能的最高值,同时考虑到第二个约束。
  2. 必须在所选路线(包括起点和终点)中访问过N个顶点。
  3. 通常,图形将具有大量的顶点和边缘,因此尝试所有可能性不是一种选择,并且需要非常有效的算法。

    寻找针对此问题的一些指针或合适的算法。我知道使用Dijkstra算法很容易实现第一个条件,但我不确定如何合并第二个条件,甚至不知道从哪里开始看。

    如果需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

我不确定您是否对图中的任何长度 N 路径感兴趣,或者只是对两个特定顶点之间的路径感兴趣;我怀疑后者,但你没有在你的问题中提到这个限制。

如果是前者,解决方案应该是一个简单的Dijkstra算法,您可以根据边缘权重开始的潜在路径值对所有边缘进行排序,并通过已构建的adjecent路径进行调整。在每次迭代中,获取具有最佳潜在路径值的节点并将其添加到adjecent路径。当你得到一条长度为N的路径时停止(或者在两侧切断的路径更长)。还有其他一些技术细节。 WRT。创造长路径,但我不会详细说明,因为我怀疑这不是你感兴趣的。: - )

如果你有固定的源和接收器,我认为没有深入的魔法 - 只需运行一个基本的Dijkstra,其中路径将与添加到队列的每个顶点相关联,但不要插入路径长度为> =的顶点N进入队列,除非路径长度为N,否则不要将接收器插入队列。