SPFA 算法详细,(有举例说明,包你懂)

0: 基本概念

  • ** 松弛操作:更新节点的值 : v_end=min(v_end, v_source +v_side)
    v_end:表示边的终点(需要更新的节点值);
    v_source: 表示 边的源点;
    v_source:表示边的终点
    注:若节点值无变化,则表示
    松弛不成功**
  • 队列 : 先进先出
    《SPFA 算法详细,(有举例说明,包你懂)》 image.png
一、用武之地:
  • 给定的图G存在负权边,但不存在负权回路
二、参考此链接

SPFA算法详解–点开,包你懂

直接从实验方法看起

三、SPFA算法有两个优化算法 SLF 和 LLL:

SLF:
Small Label First 策略,设要加入的节点是j,队首元素为i,若dist(j)<dist(i),则将j插入队首,否则插入队尾。

LLL:
Large Label Last 策略,设队首元素为i,队列中所有dist值的平均值为x,若dist(i)>x则将i插入到队尾,查找下一元素,直到找到某一i使得dist(i)<=x,则将i出对进行松弛操作。

引用网上资料,SLF 可使速度提高 15 ~ 20%;

    原文作者:hw_zhu
    原文地址: https://www.jianshu.com/p/18028aed9486
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞