资源简介
解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。Floyd-Warshall算法的时间复杂度为O(N3),空间复杂度为O(N2)。
java代码实现。算法详解,参考技术文档
https://www.jianshu.com/p/db0df9197073
代码片段和文件信息
package a;
/**
* ┏┓ ┏┓+ +
* ┏┛┻━━━┛┻┓ + +
* ┃ ┃
* ┃ ━ ┃ ++ + + +
* ████━████ ┃+
* ┃ ┃ +
* ┃ ┻ ┃
* ┃ ┃ + +
* ┗━┓ ┏━┛
* ┃ ┃
* ┃ ┃ + + + +
* ┃ ┃ Code is far away from bug with the animal protecting
* ┃ ┃ + 神兽保佑代码无bug
* ┃ ┃
* ┃ ┃ +
* ┃ ┗━━━┓ + +
* ┃ ┣┓
* ┃ ┏┛
* ┗┓┓┏━┳┓┏┛ + + + +
* ┃┫┫ ┃┫┫
* ┗┻┛ ┗┻┛+ + + +
*
* @Author:Halburt
* @Date:2019-04-23 下午 1:52
* @Description: Floyd算法demo
*/
public class FloydDemo {
// 表示无穷大 即不可达
public static int MAX = Integer.MAX_VALUE;
// 距离矩阵
public int[][] dist;
// 路径Path矩阵
public int[][] path;
/**
* 按点初始化
*
* @param size
*/
public FloydDemo(int size) {
this.path = new int[size][size];
this.dist = new int[size][size];
}
public static void print(int[][] arrs) {
System.out.println(“------------------------“);
for (int[] arr : arrs) {
for (int a : arr) {
if (a == FloydDemo.MAX) {
System.out.print(“∞ “);
} else {
System.out.print(a + “ “);
}
}
System.out.println();
}
System.out.println(“------------------------“);
}
/**核心算法
* 构建距离矩阵和路径矩阵
* @param matrix
*/
public void floyd(int[][] matrix) {
// matrix和path length不一致可处理异常
int size = matrix.length;
//初始化 dist 和 path
for(int i = 0;i< size;i++){
相关资源
- java 深度优先遍历、广度优先遍历、
- java地铁票价计算器dijkstra算最短路径
- Java求两顶点间最短路径和距离
- java 具有图形界面的最短路径问题的求
- 带权图的多种算法有向图,无向图,
- 基于J2EE的公交查询系统的设计与实现
- 用java写的查询某市地铁的最短路径,
- 用java写的查询某市地铁的最短路径。
- 利用JAVA和Floyd算法实现上海地铁最短
- dijkstra算法返回多条最短路径
- 迷宫随机生成和寻找最短路径
- floyd算法java描述
- 最短路算法.rar
- 外卖最短路径计算
- 矩阵方格中求两点之间的最短路径j
- 最短路径算法实现 java 版
- java实现的求迷宫最短路径算法
- Java实现的等距网格A-Star最短路径规划
评论
共有 条评论