贪心算法-Dijkstra单源最短路径
来源:互联网 发布:漫画形象设计软件 编辑:程序博客网 时间:2024/05/17 02:09
暑假写的,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。描述就不写了,看相关书籍吧。
Dijkstra是一个贪心算法。
package Section9; /*第九章 贪婪算法 Dijkstra单源最短路径*/ public class Dijkstra { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[][] weight = { {0,3,2000,7,9999999}, {3,0,4,2,9999999}, {9999999,4,0,5,6}, {7,2,5,0,4}, {9999999,9999999,4,6,0} }; int[] path = Dijsktra(weight,0); for(int i = 0;i < path.length;i++) System.out.print(path[i] + " "); } public static int[] Dijsktra(int[][] weight,int start){ //接受一个有向图的权重矩阵,和一个起点编号start(从0编号,顶点存在数组中) //返回一个int[] 数组,表示从start到它的最短路径长度 int n = weight.length; //顶点个数 int[] shortPath = new int[n]; //存放从start到其他各点的最短路径 int[] visited = new int[n]; //标记当前该顶点的最短路径是否已经求出,1表示已求出 //初始化,第一个顶点求出 shortPath[start] = 0; visited[start] = 1; for(int count = 1;count <= n - 1;count++) //要加入n-1个顶点 { int k = -1; //选出一个距离初始顶点start最近的未标记顶点 int dmin = 1000; for(int i = 0;i < n;i++) { if(visited[i] == 0 && weight[start][i] < dmin) { dmin = weight[start][i]; k = i; } } //将新选出的顶点标记为已求出最短路径,且到start的最短路径就是dmin shortPath[k] = dmin; visited[k] = 1; //以k为中间点想,修正从start到未访问各点的距离 for(int i = 0;i < n;i++) { if(visited[i] == 0 && weight[start][k] + weight[k][i] < weight[start][i]) weight[start][i] = weight[start][k] + weight[k][i]; } } return shortPath; }}
注释很清楚了~~
0 0
- 贪心算法--Dijkstra单源最短路径
- 贪心算法 - 单源最短路径 Dijkstra
- 贪心算法 Dijkstra 单源最短路径
- 贪心算法-Dijkstra单源最短路径
- 贪心算法 - 单源最短路径 Dijkstra
- Dijkstra算法|单源最短路径|贪心算法
- 单源最短路径---贪心法实现(Dijkstra算法)
- 贪心算法——单源最短路径 dijkstra
- 单源最短路径---贪心法实现(Dijkstra算法)
- 贪心算法——单源最短路径 dijkstra
- 贪心算法------单源最短路径问题(Dijkstra)
- 贪心算法之单源最短路径Dijkstra
- 单源最短路径(Dijkstra算法)贪心策略
- 算法java实现--贪心算法--单源最短路径问题--Dijkstra算法
- 贪心算法--Dijkstra算法(单源最短路径算法)
- 单源最短路径(Dijkstra算法,贪心算法的应用)
- 贪心算法实例 单源最短路径 Dijkstra算法(c++实现)
- 贪心算法——单源最短路径(Dijkstra算法)
- Jquery 1.6+ 以上 attr("checked") 返回的不是 bool 类型!!!
- navicat 11.0 for linux 破解误区
- 安装Nginx作为Windows服务自启动运行
- 动态规划入门1
- 关于java web中get方法的解决中文乱码问题
- 贪心算法-Dijkstra单源最短路径
- 请保证您的文章为原创作品
- Codeforces 39J Spelling Check hash
- html代码设置textview字体颜色
- 面向对象——String类综述。
- 应用 yacc 和lex 实现 语法分析与词法分析 之复杂四则运算
- js判断为空Null与字符串为空简写方法
- SetEvent与PulseEvent区别
- javascript 密码强度验证