社区讨论

(自己想出来的一个最短路算法

灌水区参与者 33已保存回复 63

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
63 条
当前快照
1 份
快照标识符
@lo9hiv5q
此快照首次捕获于
2023/10/28 11:30
2 年前
此快照最后确认于
2023/10/28 11:30
2 年前
查看原帖
众所周知,BFS 算法可以解决没有边权的最短路问题,例如下图有边权就无法解决:
但是我们可以拆边!
上图可以转化为:
这样就可以用 BFS 解决带边权的最短路问题了!
然后来计算一下复杂度
因为边权是多少就会拆成多少条边,题目规定 wi109\sum w_i \leq 10^{9},所以会有 10910^{9} 条边。
BFS 的时间复杂度为 O(n+m)O(n+m),带入得到该算法最坏时间复杂度为 O(n+109)O(n+10^{9}),众所周知常数可以忽略不计,所以我们就得到了 O(n)O(n) 的单元最短路算法!常数只有 10910^{9}!非常的优秀!O(n)O(n) 的单元最短路比那个 dijkstra 好不知道多少倍!妙!!!

回复

63 条回复,欢迎继续交流。

正在加载回复...