弗洛伊德算法

1、求无向图中两节点的最短距离算法

  

 1.要实现Floyd算法,首先须要构建带权图的邻接矩阵:spa

在邻接矩阵当中,每个数字表明着从某个顶点到另外一个顶点的直接距离,这个距离是没有涉及到任何中继顶点的3d

 

 2.此时假定只容许以顶点A做为中继顶点,那么各顶点之间的距离会变成什么样子呢?blog

  B和C之间的距离本来是无穷大,此时以A为中继,距离缩短为AB距离+AC距离=5+2=7。更新对应矩阵元素(橙色区域表明顶点A到其余顶点的临时距离):get

 

 

 3.接下来以顶点A、B做为中继顶点,那么各顶点之间的距离会变成什么样子呢?class

  A和D之间的距离本来是无穷大,此时以B为中继,距离缩短为AB距离+BD距离=5+1=6。im

  A和E之间的距离本来是无穷大,此时以B为中继,距离缩短为AB距离+BE距离=5+6=11。qq

  更新对应矩阵元素(橙色区域表明顶点B到其余顶点的临时距离):img

 

 

 4.接下来以顶点A、B、C做为中继顶点,那么各顶点之间的距离会变成什么样子呢?di

  A和F之间的距离本来是无穷大,此时以C为中继,距离缩短为AC距离+CF距离=2+8=10。

  更新对应矩阵元素(橙色区域表明顶点C到其余顶点的临时距离):

 

 

 以此类推,咱们不断引入新的中继顶点,不断刷新矩阵中的临时距离。最终,当全部顶点均可以做为中继顶点时,咱们的距离矩阵更新以下:

此时,矩阵中每个元素,都对应着某顶点到另外一个顶点的最短距离

相关文章
相关标签/搜索