Floyd算法又称为插点法,是一种用于寻找给定的加权图中多源点之间最短路径的算法。
算法思想: https://upimg.baike.so.com/doc/5450540-5688910.html
图演示:
代码实现:
public void floyd() {int[] vertex = graph.getVertex();int[][] edges = graph.getEdges();for (int i = 0; i < vertex.length; i++) {for (int j = 0; j < vertex.length; j++) {// k 为 中间节点,查看for (int k = 0; k < vertex.length; k++) {if (edges[i][k] != Integer.MAX_VALUE && edges[k][j] != Integer.MAX_VALUE) {// 松弛操作,如果 A,B 的距离 > AC + CA的距离,更新AB最短距离为 AC + CAif (edges[i][j] > edges[i][k] + edges[k][j]) {edges[i][j] = edges[i][k] + edges[k][j];}}}}}}