关于floyd算法距离更新过程的一点思考
我们知道floyd算法的迭代过程是每次迭代,令一个节点加入“路由节点的集合”,并围绕这一点进行更新。
假设有一个图,floyd算法运行到2节点,(1,5)之间的路由节点是2。
如果将3节点加入“路由节点的集合”后,(1,2)之间的距离w2(1,2)被改变了,得到w3(1,2),那么是否需要围绕2节点更新,来修正(1,5)之间的距离呢?
答案是否定的,尽管3节点在第二次迭代不参加路由,我们还是记录了(3,5)之间的距离,如果w2(1,3)+w2(3,5)确实小于w2(1,2)+w2(2,5),那么可以直接对w3(1,5)进行更新,同时路由记录也要改变。如果是前向路由的策略,那么更新后的r3(1,5)将等于r2(1,3)。
这种更新过程与3是否在(1,2)之间,或者说2是否在(3,5)之间都是无关的。所以对于操作和编程都十分方便。
这是我的一点理解,希望对后来的同学们有所帮助。