如果你用了堆优化SPFA,且WA9
查看原帖
如果你用了堆优化SPFA,且WA9
1101254
Louisdlee楼主2024/7/24 15:43

用普通队列queue。

原因是优先队列和SPFASPFA的原理无关。

SPFASPFA的原理是基于BellmanFordBellmanFord,BellmanFordBellmanFord的原理是每次更新用所有的结点去松弛边。松弛V−1V-1轮。

每一轮松弛的时间复杂度是O(V+E)O(V+E),总时间复杂度是:O((V−1)×(V+E))O((V-1)\times(V+E)),为了在稀疏图中减少时间复杂度,我们才提出了SPFA。

SPFA优化的点是将已经更新过的点存入队列,用队列里面的点松弛边,减少了用未更新过的点去松弛边的情况,但最坏情况仍与Bellman相同。

所以我们根本不需要最小优先队列,因为增加了"最小"的性质反而会使得算法发生错误,但是具体错误我不知道。

2024/7/24 15:43
加载中...