7---------迪杰斯特拉算法的简单应用
来源:互联网 发布:公孙止 知乎 编辑:程序博客网 时间:2024/05/18 13:29
使用迪杰斯特拉算法解决任意两点间的最短路径问题
package list;import java.util.Scanner;/** * 稍微修改迪杰斯特拉算法即可得出结论 * 思路:从该结点出发,依次向外探测,并与修正与当前生成路径的最短路径 * @author 哑元 * */public class Test1 { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n,m,s,e; System.out.println("n、m、s、e的信息"); n = scan.nextInt(); //顶点数 m = scan.nextInt(); //边数 s = scan.nextInt() - 1; //当前结点 e = scan.nextInt() - 1; //要去的结点 //定义一个数组,用来存放顶点 int total[] = new int[n]; //用来存放到每个结点的路径长度 int edges[][] = new int[n][n]; //初始化边表 for (int i = 0; i < edges.length; i++) { for (int j = 0; j < edges[i].length; j++) { edges[i][j] = 0; //0表示没有边 } } //输入边表信息 System.out.println("请输入边信息"); for (int i = 0; i < m; i++) { System.out.println("请输入(vi,vj)的下标"); int a = scan.nextInt() - 1; int b = scan.nextInt() - 1; edges[a][b] = 1; edges[b][a] = 1; } boolean isFinal[] = new boolean[n]; //是否已经求得该结点的最短路径 for (int i = 0; i < isFinal.length; i++) { isFinal[i] = false; total[i] = edges[s][i]; ///将所有与初始结点相关的结点存放到表中 } total[s] = 0; isFinal[s] = true; //先标记初始结点 for (int j = 0; j < n; j++) { if(j == s) continue; int v = 0; for (int i = 0; i < n; i++) { //从初始结点开始 if(!isFinal[i] && total[i] != 0){ //==1表示当前路是通的 v = i; } } isFinal[v] = true; //将找到最近的结点标记 for (int i = 0; i < n; i++) { //修正当前生成路径到其他结点的距距离 if(!isFinal[i] && edges[v][i] == 1){ total[i] = total[v] + edges[v][i]; } } } System.out.println("输出当前结点到其余各节点的最短路径长度:"); for (int i = 0; i < n; i++) { System.out.println(total[i]); } if(total[e] != 0){ System.out.println("两点间的最短路径长度为:" + total[e]); }else{ System.out.println("你就在那里或者你永远也到不了那里"); } }}
输入模式和输出模式
n、m、s、e的信息
5
4
1
5
请输入边信息
请输入(vi,vj)的下标
1
2
请输入(vi,vj)的下标
2
3
请输入(vi,vj)的下标
3
4
请输入(vi,vj)的下标
4
5
输出当前结点到其余各节点的最短路径长度:
0
1
2
3
4
两点间的最短路径长度为:4
阅读全文
0 0
- 7---------迪杰斯特拉算法的简单应用
- 递归算法的简单应用
- 分治算法的简单应用
- Q_Learning算法的一个简单的应用。
- 泛型算法的简单应用
- C++容器排序算法的简单应用
- 哈希算法的又一简单应用
- 6---------prim算法的简单应用
- 蒙特卡洛算法简单应用
- 回溯算法简单应用
- 贪心算法简单应用
- 10---------二叉树的算法的简单应用
- kmp算法的思想及其简单应用(java版)
- poj 3020(匈牙利算法的简单应用,关键是构图)
- 应用算法的实际情况——简单就是美
- 凸优化收缩算法的简单统一与应用
- KWIC算法(置换索引)的一个简单应用
- 浅谈算法-简单倍增及st表的应用
- 模板基础知识3——《C++程序设计语言(第四版)》第25章 特例化 笔记
- 为项目添加广告
- shape简单绘制圆形背景
- 第一篇
- MySQL远程授权
- 7---------迪杰斯特拉算法的简单应用
- 捋一下最近做的东西
- 机器学习中的范数规则化之(一)L0、L1与L2范数
- 【MATLAB入门】半波整流和全波整流
- 自定义View 波浪
- IO操作-BufferedInputStream,InputStreamReader,DataInputStream基本演示
- Lasso regression(稀疏学习,R)
- 循环外定义count=0,循环执行count=count++后,输出count仍是0
- 静态资源版本化