弗洛伊德算法怎么理解_弗洛伊德算法思想

弗洛伊德算法怎么理解_弗洛伊德算法思想这个方法中,其中每一个顶点到另一个顶点最多就是两步。所以就是找到两个顶点的最近距离packagea;importjava.lang.reflect.Array;importjava.util.Arrays;publicclassFloydDemo{publicstaticvoidmain(String[]args){char[]di…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

这个方法中,其中每一个顶点到另一个顶点最多就是两步。
所以就是找到两个顶点的最近距离

package a;
import java.lang.reflect.Array;
import java.util.Arrays;
public class FloydDemo { 

public static void main(String[] args) { 

char[] diots = { 
'A', 'B', 'C', 'D', 'E', 'F', 'G'};
int[][] edges = new int[diots.length][diots.length];
final int N = 65535;
edges[0]=new int[]{ 
0,5,7,N,N,N,2};//注意这个自身到自身的距离是0 ,并不是N 和地杰斯特拉的区别
edges[1]=new int[]{ 
5,0,N,9,N,N,3};
edges[2]=new int[]{ 
7,N,0,N,8,N,N};
edges[3]=new int[]{ 
N,9,N,0,N,4,N};
edges[4]=new int[]{ 
N,N,8,N,0,5,4};
edges[5]=new int[]{ 
N,N,N,4,5,0,6};
edges[6]=new int[]{ 
2,3,N,N,4,6,0};
FGraph fGraph = new FGraph(diots, edges, diots.length);
fGraph.floyd();
fGraph.show();
}
}
class FGraph{ 

char [] data;
int [] [] dis;
int [][] pre;
public FGraph(char[] data, int[][] dis, int len) { 

this.data = data;
this.dis = dis;
pre = new int[len][len];
for (int i = 0; i < data.length; i++) { 

Arrays.fill(pre[i],i);//每个顶点的前驱节点默认值是自身的下标。和地杰斯特拉不一样,地杰斯特拉默认不初始化。
}
}
public void show(){ 

for (int i = 0; i < data.length; i++) { 

for (int j = 0; j < data.length; j++) { 

System.out.print(data[pre[i][j]]+"\t");
}
System.out.println();
for (int j = 0; j < data.length; j++) { 

System.out.print("("+data[i]+"-->"+data[j]+":"+dis[i][j]+"|\t");
}
System.out.println();
}
}
public void floyd(){ 

int len =0;//变量保存距离
for (int i = 0; i < data.length; i++) { 
//中间
for (int j = 0; j < data.length; j++) { 
//起点
for (int k = 0; k < data.length; k++) { 
//终点
len = dis[j][i]+dis[i][k];
if (len < dis[j][k]) { 

dis[j][k] = len;
pre[j][k] = pre[i][k];//这个是更新前一个顶点。在初始化的时候pre 的每一行都是 自身。所以,这个第一次是自身。然后变成了中间的这个点。
}
}
}
}
}
}

Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/203585.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • XML格式化的一段代码

    XML格式化的一段代码起因没有找到android有相关的工具类,又不要为了格式化个xml导入一个jar包。于是自己写了个xml格式化的代码。代码如下:/***格式化xml**@return*/publicStringformat(Stringstr){StringBufferbuffer=…

  • python移动app开发_神奇的Kivy,让Python快速开发移动app

    python移动app开发_神奇的Kivy,让Python快速开发移动app随着移动互联网的不断发展,手机、Pad等移动终端已经被普遍使用,充斥在人们的工作、学习和生活中,越来越多的程序都转向移动终端,各类app应用相拥而至。Kivy作为Python的Android和IOS的app应用开发利器,有着跨平台开发优势,很快得到了普遍运用,并逐渐占据了核心地位。下面我们就看看用Python的Kivy模块是如何开发移动App应用的。Kivy的安装。与Python的其他模块安装一样…

  • 433MHz LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)

    433MHz LoRa/FSK 无线频谱波形分析(频谱分析仪测试LoRa/FSK带宽、功率、频率误差等)1、测试环境频谱分析仪:安捷伦N9020A无线通信频段:433MHz射频芯片:Sx1278天线:433MHz弹簧天线2、测试方法模仿国内测试机构的步骤:使用频谱分析仪,设置分析仪参数分别为RBW=300Hz,VBW=1kHz,Span=30kHz,Detector=Peak,Tracemode=Maxhold,Sweep=Autocou…

  • Python元组_python排列组合多少种怎么写

    Python元组_python排列组合多少种怎么写元组元组的特点:是一种不可变序列,一旦创建就不能修改拆包将元组的元素取出赋值给不同变量>>>a=('hello','world',1

  • ctk加载插件「建议收藏」

    ctk加载插件「建议收藏」用ctk加载插件有两种方法,第一种需要自己创建ctkPluginFramework://ctkpluginctkPluginFrameworkFactory*ctkFrameWorkFactory=newctkPluginFrameworkFactory;QSharedPointerframework=ctkFrameWorkFactory->getFram

  • 并行编程中的lock free技术

    并行编程中的lock free技术lockfree(中文一般叫“无锁”,一般指的都是基于CAS指令的无锁技术)是利用处理器的一些特殊的原子指令来避免传统并行设计中对锁(lock)的使用。众所周知,锁在解决并行过程中资源访问问题的同时可能会引入诸多新的问题,比如死锁(deadlock),另外锁的申请/释放对性能也有不小的影响,当然最大的问题还在于使用锁的代码模块通常难以进行组合。lockfree的目标就是要消除锁对编程

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号