随机游走找到成本较高的路径

时间:2013-01-26 17:52:57

标签: algorithm graph-theory

我有一个非循环有向图,其中包含一个起始顶点和一个顶点以及一些未知数量的顶点。路径从起始顶点开始,在结束顶点结束。众所周知,沿起始顶点和末端顶点之间的任何路径的顶点数量<100,但可能顶点的数量可能非常大。每个顶点都有一个分配给它的成本,路径的成本是两者之间顶点成本的总和。有没有办法使用随机游走或任何其他方法(这是为了避免探索所有顶点)来找到具有最高(或接近最高)成本的路径?

1 个答案:

答案 0 :(得分:2)

此问题已在Geekviewpoint.com上得到详细解释。它增强了Dijkstra的算法。 http://www.geekviewpoint.com/java/graph/dijkstra_constrained

编辑:在每条路径之间考虑100个顶点。

最初你的问题是开始和结束顶点之间有100条路径。但通过校正,它实际上是路径上的100个顶点。在这种情况下,使用DFS可以直接进行优化。

在尝试组装路径时,跟踪您看到的顶点数。如果数字达到99并且没有链接从头到尾,则中止该路径并尝试另一个单元,如果存在,则得到答案。您需要修改的算法是DFS,用于循环检测。任何算法教科书都将具有其中之一。由于您还需要在找到的路径中选择最佳路径,因此您还应该查看http://www.geekviewpoint.com/java/graph/count_paths

我不知道我是否应该告诉你如何做到这一点,但是你会跟踪你发现的过去路径,就像你在阵列中找到最大元素一样。代码并不难,你只需要结合一些小想法:

  • DFS(类似于周期检测和similar to counting paths,两者重叠)

  • 跟踪您看到的最佳路径:一个条目地图,其中的想法是地图,如果您找到较短的路径,您将继续替换。