当前位置: 首页 > news >正文

最短路径问题的经典算法——Dijkstra[被证明具有普遍最优性(Universal Optimality)]

Dijkstra被证明具有普遍最优性

  • 前言
  • 举例子
  • 总结

前言

具备普遍最优性意思,就是不论该算法面对多复杂的结构,即便在最坏的情况下都能达到理论上的最优性能。一言蔽之,现在的Dijkstra算法,已经被证明是解决单源最短路径问题的“近乎理想”的方法。

举例子

首先,我们先通过一个例子,简单回顾一下Dijkstra算法。
如下图所示,Dijkstra算法寻找最短路径的方法,大致可以分为四步:
从起点出发:选择起点A。计算从A到邻近点的距离,例如到B的距离为1,到C的距离为5。选择较短的路径,即先前往B。
继续探索:从新的点(B)继续查找邻近点的距离,并将这些距离加上从A到B的距离。例如,从A到B的距离是1,B到D的距离是1,因此A到D的总距离为2(1 + 1 = 2)。更新已知的最短路径。
记录新的最短路径:在探索过程中发现更短的路径时,更新记录。例如,A到C的原始距离是5,但通过B和D的路径到C的总距离是3(1 + 1 + 1 = 3),比原来的距离短,因此更新A到C的距离为3。
重复步骤,直到覆盖所有点:算法继续遍历,


http://www.mrgr.cn/news/59844.html

相关文章:

  • list使用
  • 华为OD机试真题-考勤信息
  • TCPL-Telecommunications Policy
  • 比较C/C++、Java与Python编译运行的异同
  • 基于Springboot的图书个性化推荐系统【源码】+【论文】
  • rabbitmq 使用注意事项
  • JavaCV 之均值滤波:图像降噪与模糊的权衡之道
  • Python之Excel自动化处理(三)
  • ReactNative 启动应用(2)
  • Java的访问修饰符
  • 快速入门HTML
  • dd命令简介
  • FreeRTOS 6:任务创建函数xTaskCreate分析
  • 用canvas对图片压缩
  • 零基础Java第十一期:类和对象(二)
  • 面试题:ABCD四个线程,A线程最后执行
  • 「C/C++」C++标准库之#include<fstream>文件流
  • Grid View 网格视图
  • 一文带你搞懂RabbitMQ 如何保证消息不丢失
  • 为什么STM32在构建工程时候,没有用到core_cm3.c 只用到了core_cm3.h?
  • 使用AVPlayer进行音频播放开发基础设计
  • 安全运营 -- 监控linux命令history
  • [LVGL] 自定义控件例子
  • Meta分析(荟萃分析)
  • 数据挖掘(二)
  • nodejs 基础