【面试算法题】实现狄杰斯特拉算法
原理
注意他是求一个节点到剩余节点的最短路径
https://www.jianshu.com/p/ff6db00ad866
实现代码
package qiuzhaoprepare;public class Dijkstra {public static int M = 10000; public static void main(String[] args) {int[][] weight = {{0,4,M,2,M}, {4,0,4,1,M}, {M,4,0,1,3}, {2,1,1,0,7}, {M,M,3,7,0} };int start = 0;int[] shortPath = dijkstra(weight, start);for (int i = 0; i < shortPath.length; i++)System.out.println("从" + start + "出发到" + i + "的最短距离为:" + shortPath[i]);}public static int[] dijkstra(int[][] weight, int start) {int n = weight.length;int[] visited = new int[n];int[] shortPath = new int[n];String[] path = new String[n]; for(int i=0;i<n;i++)path[i] = new String(start + "-->" + i);shortPath[0] = 0;visited[0] = 1;for(int i=1;i<n;i++) {int minLen = Integer.MAX_VALUE;int minNode = -1;for(int j=0;j<n;j++) {if(visited[j]==0 && weight[start][j]<minLen) {minLen = weight[start][j];minNode = j;}}visited[minNode] = 1;shortPath[minNode] = minLen;// 修正最短路径for(int k=0;k<n;k++) {if(visited[k]==0 && (weight[start][minNode] + weight[minNode][i] < weight[start][i])) {weight[start][i] = weight[start][minNode] + weight[minNode][i];path[k] = path[minNode] + "-->" + k;}}}for(int i=0;i<n;i++)System.out.println("从"+start+"到"+i+"最短路径为:"+path[i]);return shortPath;}
}
【面试算法题】实现狄杰斯特拉算法相关推荐
- VC++2012编程演练数据结构《31》狄杰斯特拉算法
狄杰斯特拉算法 Dijkstra(狄杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很 ...
- C++狄杰斯特拉算法(Dijkstra)实现最短路问题
狄杰斯特拉算法(Dijkstra): 基本思想: 看不懂?没关系,i哲来带你通过具体问题理解这个算法 问题描述: 找出从商家到学校的最短路径 多组输入,对于每组数据. 第一行输入N,M,分别表示大街上 ...
- c++ 单源最短路径-狄杰斯特拉算法
文章目录 源码 输出 狄杰斯特拉算法 适用范围:没有负权重的图, 可以有环,有向无向图均可 求解问题:单源最短路径 时间复杂度:V^2 源码 #include <iostream> #in ...
- 最短路径算法---狄杰斯特拉算法
最短路径算法-狄杰斯特拉算法 一.介绍 这是一种按照路径长度递增的次序产生最短路径的算法,采用的是贪心的思想,对带权图(有向和无向均可)寻找最短路径;该算法对于不含负权的网来说,是目前已知的最快的单源 ...
- 狄杰斯特拉算法 vs A_star 算法
杂谈 狄杰斯特拉算法(以下简称为D 算法)和A* 算法,网上的学习资料很多,在此不在赘述.以下做出几点总结: 1.D 算法 是可以可以获取一个全局最优解. 2.但是A* 算法 只有在 启发代价h &l ...
- 算法图解---狄杰斯特拉算法(原理+代码)
要编写解决这个问题的代码,需要三个散列表. 随着算法的进行,你将不断更新散列表costs和parents.首先,需要实现这个图,为此可像第6章那样使用一个散列表,样将节点的所有邻居都存储在散列表中.但 ...
- 狄杰斯特拉算法-----Python
狄克斯特拉算法-----Python 1.狄克斯塔拉算法介绍 如果要找出段数最小的路径,我们可以使用广度优先搜索(上节介绍过哦).但如果要找出最快的路径,该怎么办呢? 为次我们可以使用另一种算法,狄克 ...
- 数据结构与算法 25 狄杰斯特拉算法 dijkstra
迪杰斯特拉算法 Dijkstra算法:用于计算一个节点到其它节点的最短路径,主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),知道扩展到终点为止 应用:最短路径问题 七个村庄(A,B,C,D, ...
- 迪杰斯特拉c++_常用十大算法之 其九·迪杰斯特拉算法【日后详细补充】
介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 问题-最短路径 ...
- 算法(四):图解狄克斯特拉算法
算法简介 狄克斯特拉算法(Dijkstra )用于计算出不存在非负权重的情况下,起点到各个节点的最短距离 可用于解决2类问题: 从A出发是否存在到达B的路径: 从A出发到达B的最短路径(时间最少.或者 ...
最新文章
- 自动计算表格html,表格怎么自动计算加减
- 数据库系统概论:第十一章 并发控制
- loadrunner录制事件为0_利用LoadRunner编写Socket性能测试脚本简述
- 虚拟机服务器配置毕业论文,基于Vmware的服务器虚拟化管理-毕业论文.doc
- 如何解决logcat TAG过长时Android studio提示错误的问题
- xjad java反编译工具使用
- 数模电路基础知识 —— 8. PN结与三极管的工作原理
- Java实现mds降维_降维算法MDS
- Python将string转换到float的实例方法
- 零基础教程-如何快速将EXCEL表格数据拆分成多个文件
- jvm原理解析--不疯魔不成活
- 程序员兼职可以从什么平台接私活?
- Greenplum中的vacuum
- 异构神经网络(3)MAGNN: Metapath Aggregated Graph Neural Network for Heterogeneous Graph Embedding
- 华为认证的含金量和报考流程
- YOLOv1论文翻译解读
- 【嵌入式】伺服无刷电机相关
- 测试用例——一个杯子的测试用例设计
- 《.net/C#项目总结--基于asp.netMVC小型网上购物系统的模块》
- 智能语音导航与呼叫中心对接图解