`
java-mans
  • 浏览: 11430811 次
文章分类
社区版块
存档分类
最新评论

SPFA的两个优化

 
阅读更多
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,将其出队。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics