佛洛依德算法求各个结点到各个结点的最短路径
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();}}
}
佛洛依德算法求各个结点到各个结点的最短路径相关推荐
- 佛洛依德算法求最短路径实例
佛洛依德算法求最短路径实例 #include <iostream> #include <string.h> #include <stdlib.h> #include ...
- 佛洛依德算法求最短路径(记录路径信息)
佛洛依德算法: 利用D矩阵拿到邻接矩阵中的权值.path矩阵记录两点之间的移动中转点(初始值为起点). 对于邻接矩阵中 i 到 j 点的权值进行比较,若加上一个中转点 k 后的权值小于原本的权值,则对 ...
- 推免复习之数据结构与算法 佛洛依德算法
佛洛依德算法算法作为一个经典的求最短路径的算法,思路其实很简单,就是不停地进行"松弛操作",直到全部遍历一遍.那么什么是松弛操作呢?比如说我们的图存在一个邻接矩阵graph中,gr ...
- 最短路径算法之迪杰斯特拉算法(Dijkstra)和佛洛依德算法(Floyd)
今天学习了这两种算法,都是用来求最小路径的算法,但是迪杰斯特拉算法只能从某个特定点到所有点的最短路径,而佛洛依德算法可以查出任意点到任意点的最小路径. 迪杰斯特拉: package dijkstra; ...
- 十大常用算法之佛洛依德算法
十大常用算法的完整实现 一.二分查找算法:https://blog.csdn.net/weixin_46635575/article/details/121532149 二.分治算法:https:// ...
- 迪杰斯特拉算法与佛洛依德算法
迪杰斯特拉算法用于计算:某点v0到其他所有点的最短路径,时间复杂度为O(n^2) 初态: 设定V为所有顶点的集合. 设定S为已经得到的最短路径的顶点vi的集合.即S中的顶点vi,都是已经确定下来v0到 ...
- Java实现佛洛依德算法(floyd)的完整代码
Java实现佛洛依德算法(floyd)的完整代码 /*** 弗洛伊德(floyd)算法求图中所有点对之间的最短路径:* 其中'-1'表示两点之间目前还没有联通的路径:* 结论:如果A点到G点之间有最短 ...
- 佛洛依德算法C语言简单实现
计算图中每个顶点间的最短路径及路径长度 采用邻接矩阵表示图 代码如下: #include <stdio.h> #include <windows.h> #include < ...
- 佛洛依德算法的学习与实现
1.问题引入 带权有向图中单源点的最短路径问题可以用地杰斯特拉算法求解,如果要求解图中每一对顶点之间的最短路径,类似可以想到的方法为:每次以一个顶点为源点,重复执行地杰斯特拉算法算法n次,这样,便可以 ...
最新文章
- graphs菜单_图形用户界面菜单全面解析
- 【LeetCode】136. Single Number 解题小结
- android sqlite操作(2)
- java二维对象数组存入文件_关于Java:将2D数组保存到磁盘文件
- python语言怎么用-学习如何使用 Python 程式语言
- 邮件发送打印机更改打印机连接的通知
- java datainputstream_Java DataInputStream readUnsignedByte()方法
- Electron是个啥?
- leetcode - 617. 合并二叉树
- Java程序运行时,没有赋值的基本类型变量会在内存中分配空间吗?
- .NET Framework 3.5 SP1的图表控件——Chart (转)
- Linux学习笔记(五):less|more的命令使用
- Collections 常用方法
- view转换成html字符串,从Webview获取html字符串并将其存储为html文件
- JAVA调用WebService的三种方法
- 微信之父:张小龙并不孤独
- iOS事件传递链与响应链
- 移动技术开创互联网奇迹
- opencv_图像修复
- 用JS做10以内的加法(带按钮)
热门文章
- ZigBee协议介绍
- 不是我穷,是他真的很好用!
- 22.11.25打卡 2022河南萌新联赛第(二)场:河南理工大学 AFJL
- cockroachdb mysql_[Translate] CockroachDB: 示例集
- ESP32 超声波测距
- jenkins备份和发布
- 数值分析笔记(考试极简版附教程视频链接)
- BSTR LPSTR LPWSTR CString VARIANT COleVariant variant t CC
- 人生苦短我用python壁纸_人生苦短我用Python分分钟下载知乎美图给你看
- 基于Android的校园跳蚤二手闲置市场的设计与实现