最近开始学算法,感觉存在电脑总有些不安全,没办法,这不是自己的电脑。
对于最短路径算法,floyd的算法的代码无疑是最容易写出来的,代码量少,而且很简洁。
首先要明确floyd算法的思想:从Vi到Vj的所有可能存在的路径中,选出一条长度最短的路径。
若<vi,vj>存在,则存在路径{vi,vj}。// 路径中不含其它顶点
若<vi,v1>,<v1,vj>存在,则存在路径{vi,v1,vj}。// 路径中所含顶点序号不大于1
若{vi, …, v2}, {v2, …, vj}存在,则存在一条路径{vi, …, v2, …, vj}。 // 路径中所含顶点序号不大于2
…
依次类推,则 vi 至 vj 的最短路径应是上述这些路径中,路径长度最小者。
下为简单的测试图,有点难看,蛋定蛋定,代码中有解释