我有一个有向无环加权图,我想遍历。
有效解决方案路线的约束是:
通常,图形将具有大量的顶点和边缘,因此尝试所有可能性不是一种选择,并且需要非常有效的算法。
寻找针对此问题的一些指针或合适的算法。我知道使用Dijkstra算法很容易实现第一个条件,但我不确定如何合并第二个条件,甚至不知道从哪里开始看。
如果需要任何其他信息,请与我们联系。
答案 0 :(得分:0)
我不确定您是否对图中的任何长度 N 路径感兴趣,或者只是对两个特定顶点之间的路径感兴趣;我怀疑后者,但你没有在你的问题中提到这个限制。
如果是前者,解决方案应该是一个简单的Dijkstra算法,您可以根据边缘权重开始的潜在路径值对所有边缘进行排序,并通过已构建的adjecent路径进行调整。在每次迭代中,获取具有最佳潜在路径值的节点并将其添加到adjecent路径。当你得到一条长度为N的路径时停止(或者在两侧切断的路径更长)。还有其他一些技术细节。 WRT。创造长路径,但我不会详细说明,因为我怀疑这不是你感兴趣的。: - )
如果你有固定的源和接收器,我认为没有深入的魔法 - 只需运行一个基本的Dijkstra,其中路径将与添加到队列的每个顶点相关联,但不要插入路径长度为> =的顶点N进入队列,除非路径长度为N,否则不要将接收器插入队列。