当前位置: 首页 > news >正文

Java版-图论-最短路-Floyd算法

实现描述

网络延迟时间示例

在这里插入图片描述

在这里插入图片描述
根据上面提示,可以计算出,最大有100个点,最大耗时为100*wi,即最大的耗时为10000,任何耗时计算出来超过这个值可以理解为不可达了;从而得出实现代码里面的:

int maxTime = 10005; //这里是题目给出的最大距离
  1. 定义数组w[i][j]=weight; 其中,表示从i->j需要耗时weight;
  2. 求解从k出发,到其他各个点的最短时间,需要算出从k出发到其余各个点的时间取最大值;
  3. 利用中间点middle,从i->j的距离,如果经过中间点middle,则w[i][j]=w[i][middle]+w[middle][j];
  4. 利用状态转移,可以dp出w的矩阵值,然后计算从k出发到各个点的时间,进而求出时间的最大值;

实现代码

 public static void main(String[] args) {
//        int[][] times = {
//                {2, 1, 1},
//                {2, 3, 1},
//                {3, 4, 1}};
//        int n = 4; //4个节点
//        int k = 2; //从2int[][] times = {{1, 2, 1}};int n = 2; int k = 2; System.out.println(new Floyd().networkDelayTime(times, n, k));}int[][] matrix;public int networkDelayTime(int[][] times, int n, int k) {int result = -1;matrix = new int[n + 1][n + 1];int maxTime = 10005; //这里是题目给出的最大距离for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {if (i == j) {matrix[i][j] = 0;} else {matrix[i][j] = maxTime;}}}//初始化矩阵实际值for (int[] time : times) {int from = time[0], to = time[1];matrix[from][to] = time[2];}floydAlgorithm(n, matrix);for (int i = 1; i <= n; i++) {result = Math.max(result, matrix[k][i]);}return result >= maxTime ? -1 : result;}void floydAlgorithm(int n, int[][] matrix) {for (int middle = 1; middle <= n; middle++) {  //中转点for (int i = 1; i <= n; i++) { //起点for (int j = 1; j <= n; j++) { //终点matrix[i][j] = Math.min(matrix[i][j], matrix[i][middle] + matrix[middle][j]);}}}}
http://www.lryc.cn/news/501279.html

相关文章:

  • 可视化建模以及UML期末复习篇----UML图
  • HTML常见标签列表,涵盖了多种用途的标签。
  • FPGA 16 ,Verilog中的位宽:深入理解与应用
  • vue-生命周期
  • 浅谈Kubernetes(K8s)之RC控制器与RS控制器
  • 本题要求采用选择法排序,将给定的n个整数从大到小排序后输出。
  • Linux: glibc: 频繁调用new/delete会不会导致内存的碎片
  • 量子变分算法---损失函数
  • 计算机的性能评估
  • 大数据之国产数据库_OceanBase数据库002_在centos7.9上_安装部署OceanBase001_踩坑指南_亲测可用
  • 【ETCD】【源码阅读】深入解析 EtcdServer.run 函数
  • springboot/ssm校内订餐系统Java代码web项目美食外卖点餐配送源码
  • floodfill算法
  • 【JAVA】六亮增加贴
  • git提交时出现merge branch main of xxx
  • lstm 输入数据的形状是怎么样的,他有两种输入方式,通过参数 batch_first来设置 默认是False
  • Apache Doris 数据类型
  • 编译问题 fatal error: rpc/rpc.h: No such file or directory
  • linux 安装composer
  • 数据库公共字段自动填充的三种实现方案
  • 《MySQL 入门:数据库世界的第一扇门》
  • Qt之第三方库QCustomPlot使用(二)
  • JAVA-类与继承
  • SSH连接报错,Corrupted MAC on input 解决方法
  • 【C++】8___继承
  • C# 中的异常处理:构建健壮和可靠的程序
  • 基于智能合约的医院凭证共享中心路径探析
  • vba学习系列(9)--按需求计数单元格数量
  • scale index的计算
  • 鸿蒙实现Web组件开发