⌨️算法模板(Java版)_图的最短路径
2025-2-19
| 2025-2-19
字数 1437阅读时长 4 分钟
type
status
date
slug
summary
tags
category
icon
password
@ZZHow(ZZHow1024)
💡
图的最短路径问题:
  • 单源最短路
    • 所有边权都是正数
      • 朴素 Dijkstra 算法
      • 堆优化版 Dijkstra 算法
    • 存在负权边
      • Bellman-Ford 算法
      • SPFA 算法
  • 多源汇最短路
    • Floyd 算法

朴素 Dijkstra

💡
迪杰斯特拉算法采用的是一种贪心的策略。进行 n 次迭代去确定每个点到起点的最小值,最后输出的终点的即为我们要找的最短路的距离。

堆优化版 Dijkstra

💡
对朴素版 Dijkstra 进行优化,在时间复杂度最高的寻找距离最短的点 时可以使用小根堆优化,Java 语言可使用优先队列(PriorityQueue),配合自定义的 Pair 类实现。

bellman-ford

💡
迭代 次,每次循环所有边,更新路径:dist[b] = min(dist[b], dist[a] + w);(松弛操作)。全部操作完后满足三角不等式:

SPFA

💡
针对 bellman-ford 算法的 dist[b] = Math.min(dist[b], backup[a] + w); 使用队列进行优化。

Floyd

💡
基于动态规划。枚举 更新路径:d(i, j) = min(d(i, j), d(i, k) + d(k, j));
  • 算法
  • Java
  • 学技术
  • Tips-如何修改GitHub提交记录中用户名和邮箱算法模板(Java版)_DFS与BFS
    Loading...