目录
Floyd-Warshall(弗洛伊德)算法
- 求所有顶点到所有顶点的最短路径问题
- 弗洛伊德算法(Floyd-Warshall algorithm)是一种用于寻找图中所有顶点对之间最短路径的动态规划算法。
- 该算法可以处理带有负权边但不含负权环的加权有向图或无向图。
- 弗洛伊德算法的核心思想是利用三重循环遍历所有顶点,逐步更新每对顶点之间的最短路径的信息。
弗洛伊德算法的示例代码:
import java.util.Arrays;
public class FloydWarshall {
public static void main(String[] args) {
int INF = 99999; // 表示无穷大
int[][] graph = {
{0, 5, INF, 10},
{INF, 0, 3, INF},
{INF, INF, 0, 1},
{INF, INF, INF, 0}
};
floydWarshall(graph);
}
public static void floydWarshall(int[][] graph) {
int V = graph.length;
int[][] dist = new int[V][V];
// 初始化距离矩阵为图的邻接矩阵
for (int i = 0