带你读《图解算法小抄》二十五、图(1)https://developer.aliyun.com/article/1347772?groupCode=tech_library
3.Dijkstra 算法
Dijkstra 算法是一种用于在图中寻找节点之间最短路径的算法,该图可以表示道路网络等。
算法存在多个变种;Dijkstra 最初的变种用于找到两个节点之间的最短路径,但更常见的变种将某个节点固定为“源”节点,并找到源节点到图中所有其他节点的最短路径,生成一个最短路径树。
Dijkstra 算法用于找到 a 到 b 的最短路径。它选择未访问的具有最低距离的顶点,计算通过它到达每个未访问邻居的距离,并且如果较小则更新邻居的距离。完成邻居的处理后,将其标记为已访问(设置为红色)。
参考资料
- Wikipedia
- YouTube 上的 Nathaniel Fan 视频
- YouTube 上的 Tushar Roy 视频
4.Bellman-Ford 算法
Bellman-Ford 算法是一种计算带权有向图中单个源顶点到其他所有顶点的最短路径的算法。相比于相同问题的 Dijkstra 算法,Bellman-Ford 算法更为灵活,因为它能够处理某些边权重为负数的图。
1)复杂度
最坏情况下的时间复杂度:O(|V||E|) 最佳情况下的时间复杂度:O(|E|) 最坏情况下的空间复杂度:O(|V|)
2)参考资料
- Wikipedia
- YouTube 上的 Michael Sambol 视频
带你读《图解算法小抄》二十五、图(3)https://developer.aliyun.com/article/1347770?groupCode=tech_library