zoukankan      html  css  js  c++  java
  • [研究笔记]SPFA加上SLF时判负环的条件

    Abstract

    SLF作用于SPFA。

    Body

    研究发现,SPFA加上SLF(Small Label First)优化时,是不能用“某个点的入队列次数>点数”这一条件来判负环的。

    数据举例如下:

    (u, v, d)

    V=4, E=6

    0 1 0

    0 2 0

    0 3 0

    2 1 -1

    3 1 -2

    3 2 -2

    则按照SLF,1这个点将被入队5次,而图显然不存在负环(根本不存在环)。

    究其原因在于SLF不保证被松弛点在被另外一个点松弛时还在队列中。

    那么必须换一种方法判负环。wikipedia提供了一种不错的选择:

    易知,无论在什么样的情形下,最短路径本身都不可以包含环。因此,最短路径上的节点个数永远不会超过图中节点的总数。因此,在求解的同时我们可以维护到达某一个节点的当前最短路径所需要经过的节点数,一旦发现到达某一个节点所需要的当前最短路径上的节点总数超过了图中节点的总数,就可以立即判定原图中存在负权回路,因而最短路径不存在。

    当然,最好的方法就是不用SLF……因为其实它也快不了多少……

    Reference

    http://zh.wikipedia.org/wiki/SPFA%E7%AE%97%E6%B3%95

  • 相关阅读:
    1600802101
    Android第二次作业
    android 第一次作业
    团队作业—项目答辩
    软件工程—团队作业2.2
    软件工程—团队作业2
    软件工程—团队作业1
    第一篇博客
    Android第四次作业
    作业3
  • 原文地址:https://www.cnblogs.com/jffifa/p/2291061.html
Copyright © 2011-2022 走看看