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

【数据结构与算法】最短路径,Floyd算法,Dijkstra算法 详解

Floyd算法

for (int k = 0; k < n; k++) {for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {if (d[i][k] != INF && d[k][j] != INF) {d[i][j] = min(d[i][j], d[i][k] + d[k][j]);}}}
}

Dijkstra算法(基于最小堆)

void dijkstra(int start) {vis.reset();// 初始化for (int i = 0; i < n; i++) {if (i == start) {dist[i] = 0;hmin.push({i, 0});} else {dist[i] = INF;prior[i] = -1;}}while (hmin.size()) {auto t = hmin.top();hmin.pop();int u = t.v;int du = t.d;if (vis[u]) {continue;}vis[u] = 1;// 访问邻接节点for (int i = head[u]; ~i; i = edge[i].next) {int v = edge[i].to;if (dist[v] > du + 1) {// 更新最短距离dist[v] = du + 1;prior[v] = u;hmin.push({v, du + 1});}}}
}

Dijkstra算法和弗洛伊德(Floyd)算法是如何求最短路径的?两种算法各自的优缺点是什么?

  • Dijkstra算法:是一种单源最短路径算法,即从图中的一个节点到其他所有节点的最短路径。它的基本思想是每次找到离源节点最近的一个节点,然后以该节点为中心进行扩展,最终得到源节点到其他所有节点的最短路径。

    • 优点:当只需要求解单源最短路径问题时,效率较高。
    • 缺点:
      • 不能处理存在负权边的图。
      • 只能求解单源最短路径问题,不能求解多源最短路径问题。
  • 弗洛伊德(Floyd)算法:是一种多源最短路径算法,即求图中任意两点之间的最短路径。它的基本思想是从 vi 到 vj 的所有可能存在的路径中,选出一条长度最短的路径。

    • 优点:容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。
    • 缺点:时间复杂度比较高,不适合计算大量数据。
http://www.lryc.cn/news/382881.html

相关文章:

  • PHP中如何进行网络爬虫和数据抓取?
  • 【Hadoop集群搭建】实验3:JDK安装及配置、Hadoop本地模式部署及测试
  • 分布式锁在Spring Boot应用中的优雅实现
  • 常用框架-Spring Boot
  • AttributeError: module ‘cv2‘ has no attribute ‘face‘
  • 不管你是普本还是双一流,建议你一定要尝试一下学习GIS开发
  • OurBMC大咖说丨第5期:BMC开发中的非标准化问题探讨
  • 空调制冷剂泄漏引发健康隐患,冷媒传感器实时监测至关重要
  • 开源TinyFSM状态机适用于嵌入式工业平台吗?
  • EE trade:利弗莫尔三步建仓法
  • Java中Callable的应用
  • 测试卡无法仪表注册问题分析
  • 【扩散模型(一)】Stable Diffusion中的重建分支(reconstruction branch)和条件分支(condition branch)
  • WPF——Binding
  • linux与windows环境下qt程序打包教程
  • LeetCode21-合并两个有序链表
  • 嵌入式学习——数据结构(双向无头无环链表)——day47
  • MYSQL 将某个字段赋值当前时间
  • ModelSim® SE Command Reference Manual : find命令的用法
  • PHPMailer发送的中文内容乱码如何解决
  • .npmrc配置文件
  • 无线桥接两个路由器 实现全屋网络全覆盖
  • qt开发-14_QListwidget 仿qq好友列表制作
  • 基于hutool的sm2非对称加密使用示例
  • 深入Scala的变量声明与类型推断:语法糖下的智能推导
  • ATA-4052C高压功率放大器在新能源汽车安全测试中的应用
  • liunx打开谷歌报错
  • ICMAN液位检测大盘点
  • 2024软件设计师笔记之考点版(一考就过):1-10
  • Java中的性能优化技巧