关于无向图的最短路径问题:

这个程序输出:最短路径矩阵

例如:W[0][5]=9 代表vo->v5的最短路径为9

W=:

0 1 3 7 4 9

1 0 2 6 3 8

3 2 0 4 1 6

7 6 4 0 3 2

4 3 1 3 0 5

9 8 6 2 5 0

package com.xh.Floyd;

import java.util.ArrayList;

public class Floyd_01 {

public static int M = Integer.MAX_VALUE;

public static int MAXSUM(int a,int b){

return (a!=M&&b!=M)?(a+b):M;

}

public static ArrayList flody(Integer[][] dist){

Integer[][] path=new Integer[6][6];//存储的是从i->j经过的最后一个节点

for (int i = 0; i

for (int j = 0; j

path[i][j]=i;

}

}

for(int k=0;k<6;k++){

for (int i = 0; i

for (int j = 0; j

if(dist[i][j]>MAXSUM(dist[i][k], dist[k][j])){

path[i][j]=path[k][j];//存储的是从i->j经过的最后一个节点

dist[i][j]=MAXSUM(dist[i][k], dist[k][j]);

}

}

}

}

ArrayList list =new ArrayList();

list.add(dist);

list.add(path);

return list;

}

public static Integer[] reverse(Integer[] chain,int count){

int temp;

for(int i=0,j=count-1;i

temp=chain[i];

chain[i]=chain[j];

chain[j]=temp;

}

return chain;

}

public static void display_path(ArrayList list){

Integer[][] dist=list.get(0);

Integer[][] path=list.get(1);

Integer[] chain=new Integer[6];

System.out.println("orign->dist"+" dist "+" path");

for (int i = 0; i <6; i++) {

for (int j = 0; j

if(i!=j){//只是避免了vi->vi的输出

//输出源到目的地

System.out.print("\n   "+(i)+"->"+(j)+"     ");

//输出最短路径的长度

if(dist[i][j]==M){

System.out.print(" NA ");

}else{

System.out.print(dist[i][j]+"      ");

int count=0;

int k=j;

do {

k=chain[count++]=path[i][k];

} while (i!=k);

chain=reverse(chain,count);

//输出路径

System.out.print(chain[0]+"");

for(k=1;k

System.out.print("->"+(chain[k]));

}

System.out.print("->"+j);

}

}

}

}

}

public static void main(String[] args) {

Integer[][] dist = {

{ 0, 1, 4, M, M, M },

{ 1, 0, 2, 7, 5, M },

{ 4, 2, 0, M, 1, M },

{ M, 7, M, 0, 3, 2 },

{ M, 5, 1, 3, 0, 6 },

{ M, M, M, 2, 6, 0 } };// 建立一个权值矩阵

ArrayList  list=flody(dist);

display_path(list);

}

}

最短路径 floyd java_java实现Floyd算法求最短路径相关推荐

  1. C++floyd warshall算法求最短路径(附完整源码)

    C++floyd warshall算法求最短路径 floyd warshall算法求最短路径的完整源码(定义,实现,main函数测试) floyd warshall算法求最短路径的完整源码(定义,实现 ...

  2. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

  3. .弗洛伊德算法求最短路径

    5. 弗洛伊德算法求最短路径 [问题描述] 对于下面一张若干个城市,以及城市之间距离的地图,请采用弗洛伊德算法求出所有城市之间的最短路径. [输入形式] 顶点个数n,以及n*n的邻接矩阵,其中不可达使 ...

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

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

  5. _DataStructure_C_Impl:Dijkstra算法求最短路径

    // _DataStructure_C_Impl:Dijkstra #include<stdio.h> #include<stdlib.h> #include<strin ...

  6. prim求最短路径C语言,[图论]Prim算法求最小支撑树和最短路径

    这个是以前所学,现在总结成博文一篇. 对于图论中的求解最小支撑树问题和最短路径问题都有比较经典的算法,比如最小支撑树可以采用"破圈法",求解最短路径可以用"Dijkstr ...

  7. Java图结构-模拟校园地图-迪杰斯特拉(Dijkstra)算法求最短路径 #谭子

    目录目录 一.前言 二.模拟校园地图描述 三.分析题目及相关绘图 四.代码部分 1.GraphNode类 2.Menu类(管理文字) 3.Attraction类 4.AttractionGraph类( ...

  8. 使用A*算法求最短路径

    图论中最短路径的求解之A*算法实现 代码链接 利用A*算法找到从A城市到B城市的最短路径,以及代价,其中A *算法中的h也就是从当前点到目标点的距离已经给出.程序要有通用性,即其中城市A.B可以为下图 ...

  9. python基于广度优先(BFS)的迪杰斯特拉(Dijkstra)算法 求最短路径

    python深度优先与广度优先的遍历算法区别 首先要理解搜索步,一个完整的搜索步包括两个处理: a) 获得当前位置上,有几条路可供选择 b) 根据选择策略,选择其中一条路,并走到下个位置 广度优先:就 ...

最新文章

  1. 缅甸公民法(1982年人民议会第4号法令)罗伯特 译
  2. pythonzerojudge题库及答案_大学mooc2020用Python玩转数据试题及答案
  3. PHP源码分析-PHP的生命周期
  4. 八个老师随机分配三个办公室
  5. Linux的10个最危险的命令
  6. 遍历磁盘扩展分区_win7系统如何创建磁盘管理扩展分区【图文教程】
  7. 成为百万富翁的25种方法
  8. 【Presto】http-worker-103 com.facebook.presto.execution.SqlTaskManager Switching coordinator affinity
  9. 将TensorFlow训练的模型移植到Android手机
  10. Mysql JOIN连接算法
  11. 算法第四版_第二章_练习题_2.1.1~2.1.12
  12. 二次规划(QP)与OSQP求解器
  13. UltraEdit使用正则表达式(通配符)进行查找和替换
  14. windows Servers服务器系统时间总是自动更新为错误时间,修改了还是不对解决办法
  15. 2022年全球100个可持续发展城市榜公布,挪威首都奥斯陆排第一,中国有十个城市入选 | 美通社头条...
  16. 如何使用微信开发者工具查看Appid以及SECRET
  17. HBase Shell 命令
  18. 【企业安全运营】安全攻防背景下如何做好安全运营(一)
  19. Android Dialog隐藏消失时软键盘无法收回问题解决
  20. 【云原生之企业级容器技术 Docker实战一】Docker 介绍

热门文章

  1. Java Duration类| isZero()方法与示例
  2. Java BigInteger类| 带有示例的减去()方法
  3. 重邮2019计算机考研复试名单,重庆邮电大学2019年硕士研究生招生复试通知
  4. php session redis db,php session redis 配置
  5. dom属性和html属性_HTML属性
  6. python中acosh_acosh()函数以及C ++中的示例
  7. 华为交换机telnet和ftp服务开启/关闭命令
  8. html5 java 图片上传_java实现图片上传至服务器并显示,如何做?希望要具体的代码实现...
  9. jq获取页面高度_JQ获取窗口文档等等高度总结!
  10. maya批量操作mel_MAYA对多个模型使用当前设置批量渲染并保存图片的MEL脚本