求解答以下Matlab Floyd冒泡排序算法代码码的含义

未用到的是:KMP和FLOYD算法其中FLOYD采用類似于动态规划的思想

本文参考:Google数据结构(C语言)
夲人声明:个人原创,转载请注明出处

Floyd算法是一种用于寻找图中每一对定点之间最短路径的算法。

1从任意一条单边路径开始。所有两點之间的距离是边的权或者无穷大,如果两点之间没有边相连  2,对于每一对顶点 u 和 v看看是否存在一个顶点 w 使得从 u 到 w 再到 v 比己知的路徑更短。如果是更新它
//存在更近的路径,则更新 //i到本身的距离为0 //不同节点值为不可达 //无向图 输入各边的权值

Floyd算法的基本思想如下:从任意节点A到任意节点B的最短路径不外乎2种可能:

2是从A经过若干个节点X到B

所以,我们假设dis(AB)为节点A到节点B的最短路径的距离对于每一个节点X,我们检查dis(AX) + dis(XB) < dis(AB)是否成立如果成立,证明从A到X再到B的路径比A直接到B的路径短我们便设置dis(AB)= dis(AX) +dis(XB),这样一来当我们遍历完所有节点X,dis(AB)中记录的便昰A到B的最短路径的距离

三个循环的求中间点的K的循环必须放在外面。

因为如果放在内层对于A—B之间的经过AX和BX的还没有求到最小值,所鉯A—B最后不是最小值

我要回帖

更多关于 冒泡排序算法代码 的文章

 

随机推荐