Dijkstra算法亲自实践
/**
* @moudle: DijkstraTest
* @version:v1.0
* @Description: TODO
* @author: HeroZearin
* @date: 2016年8月19日 下午2:56:27
*
*/
public class DijkstraTest { /**
*
* <p>Title: main</p>
* <p>author : HeroZearin</p>
* <p>date : 2016年8月19日 下午2:56:27</p>
* @param args
*/
public static void main(String[] args) {
int n = 6;
int max = Integer.MAX_VALUE;
//初始化路径,都为最大值。
int path[][]={
{ 0, 3, 2, 1, max, max},
{ 3, 0, max, max, 3, max},
{ 2, max, 0, max, 3, 2},
{ 1, max, max, 0, 3, max},
{max, 3, 3, 3, 0, 4},
{max, max, 2, max, 4, 0},
};
System.out.println("邻接矩阵详情");
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(String.format("%010d", path[i][j]) + ", ");
}
System.out.print("\r\n");
} //这里需要输入path[i][j]的具体内容,如果有重复数据的话,需要更新路径为最小值。
int minLen[]=new int[n];
//visit初始为0,表示处于集合T中
//求得距离定点S0最短距离后则加入到集合S中,visit设置为1
//此过程不可逆,当所有顶点都加入到集合S中时,算法结束。
int visit[]=new int[n];
//初始化1到其他点的距离。
for(int i=0;i<n;i++){
minLen[i]=path[0][i];
}
// void Dijkstra(){
minLen[0]=0;
visit[0]=1;
int minj=1;
for(int i=0;i<n;i++){
int min=Integer.MAX_VALUE;
for(int j=0;j<n;j++){
if(visit[j]==0&&minLen[j]<min){
min=minLen[j];
minj=j;
}
}
visit[minj]=1;
for(int j=0;j<n;j++){
if(visit[j]==0&&minLen[minj]!=Integer.MAX_VALUE&&path[minj][j]!=
Integer.MAX_VALUE&&minLen[j]>(minLen[minj]+path[minj][j])){
minLen[j]=minLen[minj]+path[minj][j];
}
}
}
// }
System.out.println("-------------------------------------------");
for(int idx = 0 ; idx < n ; idx ++ ){
System.err.println("minLen[" + idx + "] is " + minLen[idx] );
}
} }
Dijkstra算法亲自实践的更多相关文章
- (转)最短路径算法-Dijkstra算法分析及实践
原地址:http://www.wutianqi.com/?p=1890 这篇博客写的非常简洁易懂,其中各个函数的定义也很清晰,配合图表很容易理解这里只选取了 其中一部分(插不来图片). Dijkstr ...
- Dijkstra算法and Floyd算法 HDU 1874 畅通工程续
Dijkstra算法描述起来比较容易:它是求单源最短路径的,也就是求某一个点到其他各个点的最短路径,大体思想和prim算法差不多,有个数组dis,用来保存源点到其它各个点的距离,刚开始很好办,只需要把 ...
- Cocos2d-x 地图步行实现1:图论Dijkstra算法
下一节<Cocos2d-x 地图行走的实现2:SPFA算法>: http://blog.csdn.net/stevenkylelee/article/details/38440663 本文 ...
- AI贪吃蛇前瞻——基于Dijkstra算法的最短路径问题
在贪吃蛇流程结构优化之后,我又不满足于亲自操刀控制这条蠢蠢的蛇,干脆就让它升级成AI,我来看程序自己玩,哈哈. 一.Dijkstra算法原理 作为一种广为人知的单源最短路径算法,Dijkstra用于求 ...
- Dijkstra 算法——计算有权最短路径(边有权值)
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在理解 Dijkstra 的思想并用源代码加以实现: 0.2)最短路径算法的基础知识,参见 http://blog. ...
- Dijkstra算法与堆(C++)
Dijkstra算法用于解决单源最短路径问题,通过逐个收录顶点来确保得到以收录顶点的路径长度为最短. 图片来自陈越姥姥的数据结构课程:https://mooc.study.163.com/l ...
- 求两点之间最短路径-Dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.D ...
- Dijkstra算法优先队列实现与Bellman_Ford队列实现的理解
/* Dijkstra算法用优先队列来实现,实现了每一条边最多遍历一次. 要知道,我们从队列头部找到的都是到 已经"建好树"的最短距离以及该节点编号, 并由该节点去更新 树根 到其 ...
- 关于dijkstra算法的一点理解
最近在准备ccf,各种补算法,图的算法基本差不多看了一遍.今天看的是Dijkstra算法,这个算法有点难理解,如果不深入想的话想要搞明白还是不容易的.弄了一个晚自习,先看书大致明白了原理,就根据书上的 ...
随机推荐
- Overview Of Portal Registry And Content References
Portal Registry Each portal is defined by a portal registry.A portal registry has a tree-like struc ...
- Delete PeopleSoft Query From the Database
There could be different reasons why a PeopleSoft developer would like to delete a query from the da ...
- jquery二级目录选中当前页的样式
<div class="navlist clear"> <span><a href="/M/Page_32.html" title ...
- 【转】详解JavaScript中的this
ref:http://blog.jobbole.com/39305/ 来源:foocoder 详解JavaScript中的this JavaScript中的this总是让人迷惑,应该是js众所周知的坑 ...
- http://www.shanghaihaocong.com-WORDPRESS开发的企业主题站
wordpress是世界上使用最多的php开源博客系统,功能强大,而且拥有众多的插件,可扩展性强. 最近,我也用它做了一个企业网站,欢迎浏览:http://www.shanghaihaocong.co ...
- Varint编码
LevelDB内部通过采用变长编码,对数据进行压缩来减少存储空间,采用CRC进行数据正确性校验.下面就对varint编码进行学习. 传统的integer是以32位来表示的,存储需要4个字节,当如果整数 ...
- Linux rabbitmq的安装和安装amqp的php插件
RabbitMQ是一个消息代理.它的核心原理非常简单:接收和发送消息.你可以把它想像成一个邮局:你把信件放入邮箱,邮递员就会把信件投递到你的收件人处.在这个比喻中,RabbitMQ是一个邮箱.邮局.邮 ...
- BT9034: 仅 IE 和 Opera 支持 HTMLFrameElement 和 HTMLIFrameElement 的 document 属性
标准参考 根据 DOM-2 中的描述,HTMLFrameElement 和 HTMLIFrameElement 都没有 'document' 属性. 关于 HTMLFrameElement 对象的详细 ...
- [Prism框架实用分享]如何在主程序中合理的弹出子窗体
大家好 说起子窗体,大家都会想到ChildWindow,多熟悉的一个控件.不错,Sliverlight中已经提供了子窗体的具体实现,而在WPF中却没有这么好的事情(有的第三方控件商已经提供此控件).最 ...
- WPF:将HTML RGB颜色值转化为Color对象的两种方式
(1)方式一: Color color1 = (Color)System.Windows.Media.ColorConverter.ConvertFromString("#E0E0E0&qu ...