Dijkstra单源最短路径
来源:互联网 发布:淘宝上的宝贝怎么上架 编辑:程序博客网 时间:2024/06/05 21:16
暑假写的,主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。描述就不写了,看相关书籍吧。
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算法)
- hdu2680(Dijkstra+单源最短路径)
- 单源最短路径 : Dijkstra 算法
- Dijkstra单源最短路径算法
- 算法 单源最短路径Dijkstra
- 单源最短路径-Dijkstra算法
- Java学习笔记-对象与类
- 蓝桥杯常用算法知识点:【递归】m个A与n个B的全排列个数
- Codeforces Round #334 (Div. 2) B C D
- hdu ACMSteps 5.3.8 Rotate
- 三色排序(荷兰国旗问题)
- Dijkstra单源最短路径
- CodeForces 148BEscape(数学)
- scrollview的相关问题
- java7新特性之Diamond syntax
- 蓝桥杯 算法训练 大小写转换
- Wu-Manber字符串多模式匹配
- poj3928 Ping pong 树状数组
- 第一章“写给-1到3岁的产品经理”读后感
- 冒泡排序思想解析及其实现(java)(2)