前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >弗洛伊德算法怎么理解_弗洛伊德算法思想

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

作者头像
全栈程序员站长
发布2022-11-01 10:08:05
3460
发布2022-11-01 10:08:05
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

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

代码语言:javascript
复制
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 的每一行都是 自身。所以,这个第一次是自身。然后变成了中间的这个点。
}
}
}
}
}
}

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档