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

弗洛伊德算法怎么理解_弗洛伊德算法思想这个方法中,其中每一个顶点到另一个顶点最多就是两步。所以就是找到两个顶点的最近距离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,售后保障稳定

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux修改ftp密码_linux系统sftp使用方法

    linux修改ftp密码_linux系统sftp使用方法需求描述:  今天一个同事,遇到个问题,程序连接sftp服务器连接不上,问我端口号是多少,  我想了一下是21还是22,所以就做了测试,发现sftp默认的连接端口号是22,  在此做下记录.操作过程:1.使用sftp默认的端口号进行登录aiuap_cj@cuchc802:~>sftpaisftp@10.124.163.133aisftp@10.124.163….

    2022年9月14日
    0
  • 一文搞懂什么是粒子群优化算法(Particle Swarm Optimization,PSO)【附应用举例】「建议收藏」

    一文搞懂什么是粒子群优化算法(Particle Swarm Optimization,PSO)【附应用举例】「建议收藏」粒子群优化算法1.1粒子群优化算法简介粒子群优化算法(ParticleSwarmOptimization,PSO)是进化计算的一个分支,是一种模拟自然界的生物活动的随机搜索算法。PSO模拟了自然界鸟群捕食和鱼群捕食的过程。通过群体中的协作寻找到问题的全局最优解。它是1995年由美国学者Eberhart和Kennedy提出的,现在已经广泛应用于各种工程领域的优化问题之中。1.1.1思想来源从动物界中的鸟群、兽群和鱼群等的迁移等群体活动而来。在群体活动中,群体中的每一个个体都会受益于所有成员在

    2022年10月11日
    0
  • stunnel+CCProxy:搭建加密代理

    stunnel+CCProxy:搭建加密代理冒着SC的风险再次上传一篇局域网安全的代理教程….[注意拉几个大字]总所周知,不可抗拒的特别有用心的原因,我们无法访问youtube,picasa,Twitter……国外优秀网站,很多人采用了代理服务器的方法访问。如果您有一台放在海外的服务器,这个就好办了。下载一个CCProxy,设置成代理服务器就可以了。不过好像总是有问题,比较明显的是在访问的页面含有一些敏感词语的时候会被无法访…

    2022年9月9日
    0
  • hadoop 面试题_小学教师面试考试题库

    hadoop 面试题_小学教师面试考试题库Hadoop的高频考点,必知必会!

    2022年10月22日
    0
  • 交换芯片架构 (一)「建议收藏」

    交换芯片架构 (一)「建议收藏」交换芯片由GE/XE接口(MAC/PHY)模块、CPU接口模块、输入输出匹配/修改模块、MMU模块、L2转发模块、L3转发模块、安全模块、流分类模块等模块组成,其结构如图1所示:                                                   图1 交换芯片的组成56504包含24个GE端口,4个10G端口,10G端口既可以用于堆叠【什么

    2022年9月6日
    3
  • 基于java的项目开发过程_软件开发项目管理整个流程图

    基于java的项目开发过程_软件开发项目管理整个流程图完整项目开发过程原型的设计有产品经理负责。界面的美化有专门的美工负责。前端有专门的前端开发人员负责。研发:研发主要工作就是根据项目的需求文档设计系统架构、设计数据库、编写调试程序代码。对于普通的码农来说,主要的就是编写和调试程序。基于Java的项目开发:1、要想编写程序,需要一个能编写源代码的编辑工具。例如:Notepad++;2、要想测试程序,需要一个编译、执行

    2022年10月26日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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