原理

注意他是求一个节点到剩余节点的最短路径
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;}
}

【面试算法题】实现狄杰斯特拉算法相关推荐

  1. VC++2012编程演练数据结构《31》狄杰斯特拉算法

    狄杰斯特拉算法 Dijkstra(狄杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Dijkstra算法是很 ...

  2. C++狄杰斯特拉算法(Dijkstra)实现最短路问题

    狄杰斯特拉算法(Dijkstra): 基本思想: 看不懂?没关系,i哲来带你通过具体问题理解这个算法 问题描述: 找出从商家到学校的最短路径 多组输入,对于每组数据. 第一行输入N,M,分别表示大街上 ...

  3. c++ 单源最短路径-狄杰斯特拉算法

    文章目录 源码 输出 狄杰斯特拉算法 适用范围:没有负权重的图, 可以有环,有向无向图均可 求解问题:单源最短路径 时间复杂度:V^2 源码 #include <iostream> #in ...

  4. 最短路径算法---狄杰斯特拉算法

    最短路径算法-狄杰斯特拉算法 一.介绍 这是一种按照路径长度递增的次序产生最短路径的算法,采用的是贪心的思想,对带权图(有向和无向均可)寻找最短路径;该算法对于不含负权的网来说,是目前已知的最快的单源 ...

  5. 狄杰斯特拉算法 vs A_star 算法

    杂谈 狄杰斯特拉算法(以下简称为D 算法)和A* 算法,网上的学习资料很多,在此不在赘述.以下做出几点总结: 1.D 算法 是可以可以获取一个全局最优解. 2.但是A* 算法 只有在 启发代价h &l ...

  6. 算法图解---狄杰斯特拉算法(原理+代码)

    要编写解决这个问题的代码,需要三个散列表. 随着算法的进行,你将不断更新散列表costs和parents.首先,需要实现这个图,为此可像第6章那样使用一个散列表,样将节点的所有邻居都存储在散列表中.但 ...

  7. 狄杰斯特拉算法-----Python

    狄克斯特拉算法-----Python 1.狄克斯塔拉算法介绍 如果要找出段数最小的路径,我们可以使用广度优先搜索(上节介绍过哦).但如果要找出最快的路径,该怎么办呢? 为次我们可以使用另一种算法,狄克 ...

  8. 数据结构与算法 25 狄杰斯特拉算法 dijkstra

    迪杰斯特拉算法 Dijkstra算法:用于计算一个节点到其它节点的最短路径,主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),知道扩展到终点为止 应用:最短路径问题 七个村庄(A,B,C,D, ...

  9. 迪杰斯特拉c++_常用十大算法之 其九·迪杰斯特拉算法【日后详细补充】

    介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 问题-最短路径 ...

  10. 算法(四):图解狄克斯特拉算法

    算法简介 狄克斯特拉算法(Dijkstra )用于计算出不存在非负权重的情况下,起点到各个节点的最短距离 可用于解决2类问题: 从A出发是否存在到达B的路径: 从A出发到达B的最短路径(时间最少.或者 ...

最新文章

  1. 自动计算表格html,表格怎么自动计算加减
  2. 数据库系统概论:第十一章 并发控制
  3. loadrunner录制事件为0_利用LoadRunner编写Socket性能测试脚本简述
  4. 虚拟机服务器配置毕业论文,基于Vmware的服务器虚拟化管理-毕业论文.doc
  5. 如何解决logcat TAG过长时Android studio提示错误的问题
  6. xjad java反编译工具使用
  7. 数模电路基础知识 —— 8. PN结与三极管的工作原理
  8. Java实现mds降维_降维算法MDS
  9. Python将string转换到float的实例方法
  10. 零基础教程-如何快速将EXCEL表格数据拆分成多个文件
  11. jvm原理解析--不疯魔不成活
  12. 程序员兼职可以从什么平台接私活?
  13. Greenplum中的vacuum
  14. 异构神经网络(3)MAGNN: Metapath Aggregated Graph Neural Network for Heterogeneous Graph Embedding
  15. 华为认证的含金量和报考流程
  16. YOLOv1论文翻译解读
  17. 【嵌入式】伺服无刷电机相关
  18. 测试用例——一个杯子的测试用例设计
  19. 《.net/C#项目总结--基于asp.netMVC小型网上购物系统的模块》
  20. 智能语音导航与呼叫中心对接图解

热门文章

  1. 未来之星破解版计算机二级,又获奖了,他们是计算机界的未来之星!
  2. 从零学Java(11)之算术运算符(加减乘除余、字符连接)
  3. Win11如何跳过系统检测
  4. Stellarium 1.2 正式发布
  5. 李开复谈成长:如何避免人生的不幸
  6. Openwrt学习笔记(四)——系统开机启动 (续)
  7. TIA博途中对OB组织块进行加密和解密的具体步骤
  8. Nero9 刻录APE(附插件下载)
  9. web前端之2048网页版游戏
  10. matlab修改图像分辨率_[转载]Matlab图片保存指定分辨率(图片dpi设置)