最短路之Dijkstra(迪杰斯特拉)
一般用法:
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。Dijkstra算法是很有代表性的最短路径算法,在很多专业课程中都作为基本内容有详细的介绍,如数据结构,图论,运筹学等等。重点-----》》》》注意该算法要求图中不存在负权边。
问题描述:在无向图 G=(V,E) 中,假设每条边 E[i] 的长度为 w[i],找到由顶点 V0 到其余各点的最短路径。(单源最短路径)
算法实现:
int map[110][110]; //图
int dis[110]; //记录下从起点到各点的最短距离
int visited[110]; //记录点是否存入
void Dijkstra(int n,int x) //起点为X,共有n个点
{
int i,p,j,min;
for (i=1;i<=n;i++) //初始化
{
dis[i]=map[x][i];
visited[i]=0;
}
visited[x]=1;
for (i=1;i<=n;i++)
{
min=INF;
for (j=1;j<=n;j++)
{
if(!visited[j] && dis[j]<min) //找'到已加入点'的最小边
{
p=j;
min=dis[j];
}
}
visited[p]=1; //记录下遍历的点
for (j=1;j<=n;j++)
{
if(!visited[j] && dis[p]+map[p][j]<dis[j])//更新从起点到该点的最短距离
{
dis[j]=dis[p]+map[p][j];
}
}
}
最新文章
- Convert between cv::Mat and QImage 两种图片类转换
- 找规律 ZOJ3498 Javabeans
- LINQ浅析
- 广州项目实施步骤I_练习安装 CentOS x64 6.4
- ping命令的用法大全!
- 实现c++的string的split功能
- Ubuntu 14.04 LAMP搭建小记
- vc调用BCB的dll 参数传递 报错
- windows 10 install oracle 12c error:[ INS-30131 ]
- [Angular Tutorial] 5-Filtering Repeaters
- IDEA插件和快捷设置
- drools 手动创建kmoudle.xml文件
- Pygame常用方法
- 小甲鱼Python第十二讲课后习题---013元组
- HDFS-Architecture剖析
- Hiero扩展工具包开发小结
- feign的hystrix不起作用.
- 配置React的Babel 6和Webpack 2环境
- Python中的编码问题(encoding与decode、str与bytes)
- Asp.Net计算程序执行速度
热门文章
- 翻译:A Tutorial on the Device Tree (Zynq) -- Part III
- linux输入子系统(5) - 学习框架
- Chrome浏览器V43版本号不支持silverlight 5.0的解决的方法
- Android GUI系统学习1:Gralloc
- Spark SQL is a Spark module for structured data processing.
- if return 和 if else
- Android 源码架构
- YTU 2577: 小数计算——结构体
- Python机器视觉编程常用数据结构与示例
- HDFS之二:HDFS文件系统JavaAPI接口