核心代码只有5行的FLOYD算法
定义:
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名
转载于Floyd算法_百度百科
思想:
FLOYD是一种动态规划的思想,说实在点,就是填表,然后不断更新(松弛)。
我们这个图一共有4个地方,分别是1,2,3,4,要求每两个点的最短路径,就要用到FLOYD算法
要求一个点到另一个点,无非就是i->j或者是i->k->j
所以先枚举k,然后是i,最后是j
状态转移方程: mg [i,j]:=min {mg [i,k]+mg [k,j],mg [i,j]};//i是一个点,j是要到达的点,k是中转站
关键:根据判断是i->j的值小还是i->k->j,得出该不该经过点k。
这样下来,mg[i][j]的值就为i到j的最短路径。
代码:
#include
共有 0 条评论