首页 > 其他分享 >Floyd-Warshall

Floyd-Warshall

时间:2024-08-03 21:51:17浏览次数:8  
标签:dist Warshall ++ int Floyd INF

Floyd-Warshall

Floyd-Warshall 算法的核心思想是利用动态规划的思想,通过逐步更新距离矩阵来求解所有节点对之间的最短路径。它适用于解决图中节点对数量较小且权重可以为负的情况。
时间复杂度为 O (n^3)。

java 代码模板

static final int INF = Integer.MAX_VALUE;
// graph中无边的权重为INF
static void floydWarshall(int[][] graph, int V) {
 int[][] dist = new int[V][V];
 // 初始化距离矩阵
 for (int i = 0; i < V; i++) {
  for (int j = 0; j < V; j++) {
   dist[i][j] = graph[i][j];
  }
 }
 // 计算最短路径
 for (int k = 0; k < V; k++) {
  for (int i = 0; i < V; i++) {
   for (int j = 0; j < V; j++) {
    // 如果节点k是最短路径上的中间节点,更新最短路径
    if (dist[i][k] != INF && dist[k][j] != INF 
     && dist[i][k] + dist[k][j] < dist[i][j]) {
     
     dist[i][j] = dist[i][k] + dist[k][j];
    }
   }
  }
 }
}

标签:dist,Warshall,++,int,Floyd,INF
From: https://www.cnblogs.com/licwuu/p/18341151

相关文章

  • Luogu P1613 跑路 题解 [ 蓝 ] [ 倍增 ] [ Floyd 最短路 ] [ 状压 dp ]
    跑路:绝佳倍增好题,思路是化\(2^k\)为\(1\),倍增起预处理作用。最近不知道是撞了什么运,前一脚看的是绿题,写完之后交一发,发现直接被lxl升蓝了,血赚。思路:Floyd首先观察到每次走\(2^k\)的代价为\(1\),我们可以预处理出每次走\(2^i\)能到哪些点。但为了让这题的代码更好实......
  • 排序 floyd 拓扑排序
    //排序.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。///**https://www.acwing.com/problem/content/345/给定n个变量和m个不等式。其中n小于等于26,变量分别用前n的大写英文字母表示。不等式之间具有传递性,即若A>B且B>C,则A>C。请从前往后遍......
  • Floyd算法——AcWing 343. 排序
    目录Floyd算法定义运用情况注意事项解题思路基本步骤AcWing343.排序 题目描述运行代码代码思路改进思路Floyd算法定义Floyd算法,全称Floyd-Warshall算法,是一种用于解决图中所有顶点对之间的最短路径问题的动态规划算法。它适用于带权有向图,且可以处理负权重边(......
  • (4-5)Floyd-Warshall算法:高速公路路线查询系统
    4.5 高速公路路线查询系统本项目基于阿鲁巴岛的实际公路数据,实现了Floyd-Warshall算法来计算所有高速公路节点之间的最短路径。通过解析包含路线和节点地理位置信息的文本文件,程序构建了一个加权邻接矩阵,并利用哈佛赛因距离计算路径权重。最终,项目输出展示了阿鲁巴岛上各......
  • (4-3)Floyd-Warshall算法:Floyd-Warshall算法的应用案例
    4.3 Floyd-Warshall算法的应用案例Floyd-Warshall算法在许多实际应用中都有着广泛的应用,特别是在需要计算图中所有顶点对之间的最短路径时,它是一种非常有效的解决方案。4.3.1  自驾线路规划暑假来临,家庭A决定自驾旅行,计划去四个城市:A、B、C、D,每个城市之间的行车距离如......
  • 最短路径问题——Floyd算法,dijkstra算法
    7-16最短路径算法(Floyd-Warshall)在带权有向图G中,求G中的任意一对顶点间的最短路径问题,也是十分常见的一种问题。解决这个问题的一个方法是执行n次迪杰斯特拉算法,这样就可以求出每一对顶点间的最短路径,执行的时间复杂度为O(n3)。而另一种算法是由弗洛伊德提出的,时间复杂度......
  • 多源最短路径算法 -- 弗洛伊德(Floyd)算法
    1. 简介        Floyd算法,全名为Floyd-Warshall算法,亦称弗洛伊德算法或佛洛依德算法,是一种用于寻找给定加权图中所有顶点对之间的最短路径的算法。这种算法以1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德的名字命名。2.核心思想    ......
  • 最短路算法之:floyd 算法
    最短路系列:floyd算法大家好,我是Weekoder!最近学了最短路,我来出一个最短路系列辣!今天的算法是:floyd算法!我会用我自己的理解尽量让大家搞懂floyd算法。floyd算法的用处floyd算法是最短路算法之一,适合求解多源最短路径问题。什么是多源最短路径呢?其实就是起点和终点都有......
  • 多源最短路径算法–Floyd算法
    多源最短路径算法–Floyd算法Floyd算法是为了求出每一对顶点之间的最短路径它使用了动态规划的思想,将问题的求解分为了多个阶段先来个例子,这是个有向图Floyd算法的运行需要两个矩阵最短路径矩阵从当前这个状态看各顶点间的最短路径长度例如初始状态可以看出这是该......
  • Floyd判圈算法 leetcode
    龟兔赛跑/Floyd判圈算法概述判断一个链表是否存在环画图演示两个指针相遇的情况:查找链表中环的首个节点在这里插入图片描述数学公式表示为:(对应力扣142.环形链表II,141.环形链表I)判断一个链表是否存在环龟兔赛跑/Floyd判圈算法转换成判断链表是否存......