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

0: 基本概念

  • ** 松弛操作:更新节点的值 : v_end=min(v_end, v_source +v_side)
    v_end:表示边的终点(需要更新的节点值);
    v_source: 表示 边的源点;
    v_source:表示边的终点
    注:若节点值无变化,则表示
    松弛不成功**
  • 队列 : 先进先出
    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%;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容