Dijkstra算法实际上是可以解决单源最短路径问题,但在含有负权边的图中会失效。这是因为Dijkstra算法贪心地选择当前最短路径的顶点,无法处理路径总权值会因为负权边而减少的情况。
而Floyd-Warshall算法是用于解决全源最短路径问题的,虽然它能处理负权边,但计算复杂度较高,不适合单纯的单源最短路径计算。
你混淆了算法的适用范围,建议重点复习各种最短路径算法的适用场景和限制条件。
根据你的学习记录和错题模式,建议你:
你混淆了TCP拥塞控制中的两种情况:
根据你最近的错题和学习记录,AI助手为你整理了以下关于图论最短路径算法的知识点总结:
| 算法 | 适用场景 | 是否支持负权边 | 时间复杂度 |
|---|---|---|---|
| Dijkstra | 单源最短路径,无负权边 | 否 | O(E log V) |
| Bellman-Ford | 单源最短路径,有负权边 | 是 | O(VE) |
| Floyd-Warshall | 全源最短路径 | 是 | O(V³) |
Dijkstra算法处理单源最短路径效率较高,但不能处理负权边,此时应该选择Bellman-Ford算法。