BellmanFord为什么只需松弛V-1次

首先s不用松弛,V-=1

然后对于其他的顶点。。每次都至少能完全松弛一个顶点。。

为什么呢。。因为初始d[s]=0,所以和s相邻接的边都将被松弛完全。。无论松弛的顺序

那么对于这个图,无论松弛的顺序都能松弛至少一个点。。

当经过一轮之后,情况就可以规约到产生新的d[x]!=INF的情况,所以我们仍然至少能完全松弛一个点(不能再被松弛)

最短路还有一个性质,那就是不走回头路,不含回路,最短路不会经过同一个点两次,也就是说最多松弛|V|-1条边,我们就能跑完整个算法

 

posted @ 2017-03-14 01:09  狡啮之仰  阅读(470)  评论(0编辑  收藏  举报