我们可以假设所有边权重都是正数,并且可以枚举从顶点向外引出的边,以及在O(1)时间内向内引导的边。例如,您可以执行Dijkstra遍历(或带有可容许启发式的A *),并标记每个顶点的距离,直到您找到结束顶点,然后在它们描述可能的前辈时反转这些标记在最佳路径上。也就是说,对于每个可能的前驱,如果标记的距离之间的差等于连接它们的边的权重,则可以确定它是否在贪婪的最优路径上找到。在未知大小的加权有向图上,如何迭代两个顶点之间从最短到最长的所有可能的非循环路径?
当考虑可能的前辈时,进入边的成本加上到每个顶点的最优距离之间的差值等于将该边包含在解中导致的最优性损失(最优路径上的边为零)。所以也许这个问题变成:如何才能最大限度地延长产量全部可能的路径按优化程度递减排列?是否有一种干净的方式来执行这种元图的最佳优先遍历?
这似乎是一个有用的解决方案的正确方向。也许是为了记住一个有用的事情是,如果到目前为止,你已经探索路径的一部分可能是一个解决方案的一部分是由至少X欠佳,检查周期只需要沿最后X完成访问距离(x次优的任何路径不可能包含比x更长的周期)。
有没有更高效的方法?
作为一个奖励问题,是否也可以在具有负边权重的图形上(已知大小)执行此操作?如果引入负循环,它会变得更加困难吗? (请记住,因为我们只查找非循环路径,所以这并不一定意味着最佳解决方案会失控。)
https://en.m.wikipedia.org/wiki/K_shortest_path_routing –
@ n.m。谢谢,完美 – Mumbleskates