SPFA的两个优化

来源:互联网 发布:淘宝客服权重分流 编辑:程序博客网 时间:2024/05/21 11:37
SPFA与堆优化的Dijkstra的速度之争不是一天两天了,SPFA用在分层图上会比较慢。SPFA是按照FIFO的原则更新距离的,没有考虑到距离标号的作用。实现中 SPFA 有两个非常著名的优化:SLF 和 LLL。

  SLF:Small Label First 策略。
  实现方法是,设队首元素为i,队列中要加入节点j,在d_j le d_i 时加到队首而不是队尾,否则和普通的 SPFA 一样加到队尾。

  LLL:Large Label Last 策略。
  实现方法是,设队列Q 中的队首元素为 i,距离标号的平均值为overline d = frac {sumlimits_{j in Q} {d_j } }{left| Q right|},每次出队时,若d_i le overline d,把i 移到队列末尾,如此反复,直到找到一个 i 使 d_i le overline d,将其出队。
原创粉丝点击