@Simon-Sun
2025-04-09T00:46:56.000000Z
字数 2321
阅读 154
当算法跑到 i= 1,j = 2; k = 4;时
k循环在内部:
点1-2的路径只能通过单一的点,要么3(3-2路径还没被优化,所以没有路),要么4(1-4路径还没被优化,所以没有路)来优化路径,没有考虑到同时使用3,4来优化,于本意相反
k循环在最外部:
先用 k = 3优化 使得i->j->k :1->3->4 这样点对1-4就有路径了
k = 4 时 就可以得到 1->4->2; (1->4已经通过3优化了,相当于3也优化了1->2),所以点对1-2的路径可以被3,4共同优化
统计当前每个点的最短路中所包含的边数,如果某点的最短路所包含的边数大于等于 ,则也说明存在负环
注:
spfa在众多问题中的广泛应用,较大程度上得益于他的优秀的复杂度 。但在大多数时候,spfa的复杂度是趋近于 的。
所以在某些题目中我们可以是用些取巧的玄学做法。
例如说,在spfa求负环的大多数问题中,当所有点的入队次数超过 时,我们就认为图中有很大可能时存在负环的,当 的范围很大时,我们可以使用这种方法,以避免超时。(若不是到逼不得已不要用……)
还可以将spfa中的队列换成栈 , 这样可以大大降低复杂度,在有负环的情况下跑的飞快。(别用STL里的栈)(慎用)
1、很多时候,题目中的负环不一定能从起点走到,所以在进行 的时候我们可以先将所有的节点入队。之后正常跑 就ok了。
2、 数组不需要赋初值

01分数规划问题就是求一个类似
咕咕……
差分约束问题就是给你一个不等式组,让你求这个不等式组的一组可行解。
首先,可以想到,在求解最短路问题时我们使用的三角不等式。若此时的 表示起点到 点的单源最短路的长度, 表示 的一个入度点,两点之间的边权为 。
在差分约束问题中常见一种求解变量最值的题型。这种题型
必会给出至少一个类似 的方程。
因为,若无此类方程多个不等式组之间的关系都是相对的,此时求出的一组解任意同时加或减不等式仍然成立(不等式的性质),所以如果有一组最小或最大的解时,必须要有类似 方程来对求出的解进行限制(这类方程是绝对的)。
对于这类方程的连边,我们采用建立虚拟源点的方式,例如 ,可以建立一个 边,将方程变成 的形式,即建立一条由 点至 边权为 的边 。
结论:
1、求某点最大值跑最短路
2、求某点最小值跑最长路
证明:
以求解最大值为例,在求解最短路时我们需要将每个不等式转化成 的形式这里我们建的每一条边 > ,因为在建边的时候我们是类比最短路三角不等式的未松弛之前的状态,所以说图上每条边的距离都是在满足不等式的情况下理论上最长的。在跑最短路的过程中,我们每一次松弛操作更新出的 都是 的一个可行解,但在跑完最短路后的 一定是 的一组最小可行解。结合上述建图的含义,这里的 就是 的一个最小的最大值。也就是 的最大值。
为什么要找最小的最大值呢?我们这里同样结合连边建图的含义,现在将 数组 从图上的转化到不等式层面来,跑最短路过程中的每一个时间点的 都代表了一个不等式组 我们找出一个满足所有的不等式的解,即 的最小值。跑完最短路后的 就是最小的 。
最小值同理。
简单的记忆方法
1、在求解最短路时我们需要将不等式转化为类似

sat问题是适应性问题的简称,一般有单sat问题,2-sat问题,和k-sat问题三种 ,其中 问题是 完全的 ,好像还是21世纪几个未解数学难题之一。所以这里我们讨论 问题 。 给出几个变量和关系表达式(每个表达式只会有2个变量),每个变量只有两种状态 , 求解满足要求的一组解 。
1、第一步,如下图所示
图片来自@Anguei的博客,如有侵权请联系删除
2、第二步,考虑多解成立的情况
采用数学方法“带入解看方程是否成立”
截图来自@暗ざ之殇的博客,如有侵权请联系删除
(我只是懒~而且人家讲的已经很好了~)
连着写了三道 ,感觉这种题有很明显的特征,你可以很容易的看出来。但是我们还要仔细分析题目找出一种具有传递性的关系。用连边的方式表示该关系。这个关系还要能够较简单的判断出答案。