package Algorithm;import java.util.Arrays;public class Floyd {public static void main(String[] args) {char [] vertex = {'A','B','C','D','E','F','G'};//顶点final int N = 65535;//邻接矩阵,N 表示不可达int [][] matrix = {{0,5,7,N,N,N,2},{5,0,N,9,N,N,3},{7,N,0,N,8,N,N},{N,9,N,0,N,4,N},{N,N,8,N,0,5,4},{N,N,N,4,5,0,6},{2,3,N,N,4,6,0}};//测试FGraph fGraph = new FGraph(vertex,matrix);fGraph.floyd();fGraph.show(vertex);}
}//图
class FGraph{private char [] vertex;//顶点的数组private int [][] dis;//各个顶点到各顶点的距离数组private int [][] pre;//顶点的前驱数组//构造public FGraph(char [] vertex, int [][] matrix){this.vertex = vertex;this.dis = matrix;//各个顶点到各顶点的距离数组 初始化为邻接矩阵//初始化前驱数组pre = new int[vertex.length][vertex.length];for(int i = 0; i < vertex.length; i++){Arrays.fill(pre[i],i);}}public void floyd(){int len;//记录中间距离//遍历中间顶点for(int k = 0; k < vertex.length; k++){//遍历出发顶点for(int i = 0; i < vertex.length; i ++){//遍历终点for(int j = 0; j < vertex.length; j++){len = dis[i][k] + dis[k][j];//i 到 j 经过顶点 k 的距离if(len < dis[i][j]){dis[i][j] = len;//更新距离pre[i][j] = pre [k][j];//更新前驱}}}}}//显示结果,dis 和 prepublic void show(char [] vertex){for(int i = 0; i < vertex.length; i++){//显示一行prefor(int j = 0; j < vertex.length; j++){System.out.print(vertex[ pre[i][j] ] + "  ");}System.out.println();//显示一行disfor(int j = 0; j < vertex.length; j++){System.out.print(vertex[i] + "--" + vertex[j] + "的 dis = " + dis[i][j] + "  ");}System.out.println();System.out.println();}}
}

佛洛依德算法求各个结点到各个结点的最短路径相关推荐

  1. 佛洛依德算法求最短路径实例

    佛洛依德算法求最短路径实例 #include <iostream> #include <string.h> #include <stdlib.h> #include ...

  2. 佛洛依德算法求最短路径(记录路径信息)

    佛洛依德算法: 利用D矩阵拿到邻接矩阵中的权值.path矩阵记录两点之间的移动中转点(初始值为起点). 对于邻接矩阵中 i 到 j 点的权值进行比较,若加上一个中转点 k 后的权值小于原本的权值,则对 ...

  3. 推免复习之数据结构与算法 佛洛依德算法

    佛洛依德算法算法作为一个经典的求最短路径的算法,思路其实很简单,就是不停地进行"松弛操作",直到全部遍历一遍.那么什么是松弛操作呢?比如说我们的图存在一个邻接矩阵graph中,gr ...

  4. 最短路径算法之迪杰斯特拉算法(Dijkstra)和佛洛依德算法(Floyd)

    今天学习了这两种算法,都是用来求最小路径的算法,但是迪杰斯特拉算法只能从某个特定点到所有点的最短路径,而佛洛依德算法可以查出任意点到任意点的最小路径. 迪杰斯特拉: package dijkstra; ...

  5. 十大常用算法之佛洛依德算法

    十大常用算法的完整实现 一.二分查找算法:https://blog.csdn.net/weixin_46635575/article/details/121532149 二.分治算法:https:// ...

  6. 迪杰斯特拉算法与佛洛依德算法

    迪杰斯特拉算法用于计算:某点v0到其他所有点的最短路径,时间复杂度为O(n^2) 初态: 设定V为所有顶点的集合. 设定S为已经得到的最短路径的顶点vi的集合.即S中的顶点vi,都是已经确定下来v0到 ...

  7. Java实现佛洛依德算法(floyd)的完整代码

    Java实现佛洛依德算法(floyd)的完整代码 /*** 弗洛伊德(floyd)算法求图中所有点对之间的最短路径:* 其中'-1'表示两点之间目前还没有联通的路径:* 结论:如果A点到G点之间有最短 ...

  8. 佛洛依德算法C语言简单实现

    计算图中每个顶点间的最短路径及路径长度 采用邻接矩阵表示图 代码如下: #include <stdio.h> #include <windows.h> #include < ...

  9. 佛洛依德算法的学习与实现

    1.问题引入 带权有向图中单源点的最短路径问题可以用地杰斯特拉算法求解,如果要求解图中每一对顶点之间的最短路径,类似可以想到的方法为:每次以一个顶点为源点,重复执行地杰斯特拉算法算法n次,这样,便可以 ...

最新文章

  1. graphs菜单_图形用户界面菜单全面解析
  2. 【LeetCode】136. Single Number 解题小结
  3. android sqlite操作(2)
  4. java二维对象数组存入文件_关于Java:将2D数组保存到磁盘文件
  5. python语言怎么用-学习如何使用 Python 程式语言
  6. 邮件发送打印机更改打印机连接的通知
  7. java datainputstream_Java DataInputStream readUnsignedByte()方法
  8. Electron是个啥?
  9. leetcode - 617. 合并二叉树
  10. Java程序运行时,没有赋值的基本类型变量会在内存中分配空间吗?
  11. .NET Framework 3.5 SP1的图表控件——Chart (转)
  12. Linux学习笔记(五):less|more的命令使用
  13. Collections 常用方法
  14. view转换成html字符串,从Webview获取html字符串并将其存储为html文件
  15. JAVA调用WebService的三种方法
  16. 微信之父:张小龙并不孤独
  17. iOS事件传递链与响应链
  18. 移动技术开创互联网奇迹
  19. opencv_图像修复
  20. 用JS做10以内的加法(带按钮)

热门文章

  1. ZigBee协议介绍
  2. 不是我穷,是他真的很好用!
  3. 22.11.25打卡 2022河南萌新联赛第(二)场:河南理工大学 AFJL
  4. cockroachdb mysql_[Translate] CockroachDB: 示例集
  5. ESP32 超声波测距
  6. jenkins备份和发布
  7. 数值分析笔记(考试极简版附教程视频链接)
  8. BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC
  9. 人生苦短我用python壁纸_人生苦短我用Python分分钟下载知乎美图给你看
  10. 基于Android的校园跳蚤二手闲置市场的设计与实现