图---Floyd

来源:互联网 发布:厦门小青柑普茶淘宝 编辑:程序博客网 时间:2024/06/15 03:56

前面介绍过Dijstra算法,该算法主要用于求单源最短路径。

对于求任意两点间的最短路径,这里介绍一种新的算法 Floyd。

算法比较简单:

Floydfor ( int k = 0; k < 节点个数; ++k ){for ( int i = 0; i < 节点个数; ++i ){for ( int j = 0; j < 节点个数; ++j ){if ( Dis[i][k] + Dis[k][j] < Dis[i][j] ){// 找到更短路径Dis[i][j] = Dis[i][k] + Dis[k][j];}}}}


大家注意循环的层次,最外层循环式k,不是i

如果k放在最内层就会使得Dis[i][j]的大小被过早的定下来了,后面遇到更小的将无法刷新。

0 0
原创粉丝点击