设
G(V,E)
,带有加权边的有向和强连通图(可以是负数)。G
中没有负循环。找到一个获取参数k
的算法,其中k
介于2
和|V|-1
之间,并返回{{1}中最轻路径的权重最多使用x
个边缘的y
。
现在,解决方案是创建另一个图层,其中包含k
个图层。第一层是|V|
。每个其他图层包含x
的所有顶点。我们定义边缘如下:
V
连接到某些x
,如果在原始图表中它们之间存在边缘(具有相同的权重)v
与u
(不同于v
)联系起来,如果在原始图表中它们之间存在边缘(使用相同的重量)u
到下一个图层的u
,我们连接了一个权重为u
的边。现在,我们只需要归纳地评估每一层(根据前一个计算每个顶点的最短路径)
时间复杂度为0
。
我们没有得到改进的Dijkstra算法吗? 因为我们现在可以使用负边(即使我们无法处理负循环)