SPFA之差分约束

这篇具有很好参考价值的文章主要介绍了SPFA之差分约束。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

S P F A —差分约束 \color{0000FF}{SPFA—差分约束} SPFA—差分约束

功能:

  1. 求不等式的可行解
  2. 最大值与最小(重点)

(一)不等式的可行解 \color{92D050}{(一)不等式的可行解} (一)不等式的可行解

步骤:

  1. 将每个不等式 x i ≤ x j + c k x_i\le x_j + c_k xixj+ck,转化为一条从 x j x_j xj x i x_i xi 的一条长度为 c k c_k ck 的边
  2. 找到一个超级源点,使得该源点一定可以遍历到所有边
  3. 从源点求一遍单源最短路

无解情况: 负环 \color{0000FF}{负环} 负环

(二)最大值与最小值(指每一个变量的最值) \color{92D050}{(二)最大值与最小值(指每一个变量的最值)} (二)最大值与最小值(指每一个变量的最值)

结论:

若求最小值,则选择最长路;若求最大值,则选择最短路

存在性:

满足有至少一个条件 x i ≥ c x_i\ge c xic x i ≤ c x_i\le c xic,其中 c c c 为常数,保证了最值,否则就是相对的大小,无最值

问题1:如何转化 x i ≤ c x_i\le c xic,其中 c c c 为常数

方法:建立一个超级源点( 0 0 0 号点),并创建 x 0 ∼ x i x_0\sim x_i x0xi 的一条边,长度为 c c c 即可

问题2:结论的证明

以最大值为例:求出所有从 x i x_i xi 出发,构成的不等式链 x i ≤ x j + c 1 ≤ x k + c 1 + c 2 ≤ ⋯ ≤ c 1 + c 2 + c 3 + … x_i\le x_j + c_1 \le x_k + c_1 + c_2\le\dots\le c_1+c_2 + c_3 + \dots xixj+c1xk+c1+c2c1+c2+c3+,计算出所有的上界, x i x_i xi 的最大值即为所有上界的最小值,故选用最短路。文章来源地址https://www.toymoban.com/news/detail-638098.html

到了这里,关于SPFA之差分约束的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SPFA算法详解

    SPFA 算法是Bellman-ford算法的 队列优化 算法的别称,通常用于求 含负权边的单源最短路径 ,以及 判负权环 。 前置知识:Bellman-ford算法详解_真的没事鸭的博客-CSDN博客 SPFA算法其实就是在Bellman-ford算法基础上的优化。Bellman-ford算法看起来比较傻,每次迭代的话是遍历所有边来

    2023年04月23日
    浏览(49)
  • SPFA 算法:实现原理及其应用

    SPFA算法,全称为Shortest Path Faster Algorithm,是求解单源最短路径问题的一种常用算法,它可以处理有向图或者无向图,边权可以是正数、负数,但是不能有负环。 1、SPFA算法的基本流程 1. 初始化 首先我们需要起点s到其他顶点的距离初始化为一个很大的值(比如9999999,像是

    2024年02月08日
    浏览(87)
  • 「学习笔记」SPFA 算法的优化

    与其说是 SPFA 算法的优化,倒不如说是 Bellman-Ford 算法的优化。 将原本的 bfs 改为 dfs,在寻找负环时可能有着更高效的效率,但是最坏复杂度为指数级别。 将 queue 换成 deque ,判断与队首元素的 dis 的大小,小的就放队首,大的就放队尾。 将 queue 换成 deque ,判断一个点是否

    2024年02月02日
    浏览(95)
  • 图论:最短路(dijkstra算法、bellman算法、spfa算法、floyd算法)详细版

    终于是学完了,这个最短路我学了好几天,当然也学了别的算法啦,也是非常的累啊。 话不多说下面看看最短路问题吧。 最短路问题是有向图,要求的是图中一个点到起点的距离,其中我们要输入点和点之间的距离,来求最短路。 下面分为几类题目: 单源汇最短路--一个起

    2024年01月21日
    浏览(44)
  • 第十八章 SPFA算法以及负环问题(利用dijkstra推导出该算法,超级详细!!)

    我们回顾一下之前的dijkstra算法的证明过程。如果大家没看过之前的dijkstra算法的简易证明的话,作者在这里建议先去看一下。 传送门: 第十六章 Dijkstra算法的讲解以及证明(与众不同的通俗证明) 那么假设你已经看过这篇文章,我们发现,我们将每次松弛操作后的最小距离

    2024年02月02日
    浏览(57)
  • 最短路径算法( Dijkstra + Bellman-Ford + SPFA + Floyd)

       文章目录 一、Dijkstra 算法 1、1 朴素版Dijkstra算法 1、1、1 Dijkstra求最短路 I 1、1、2 题解关键思路与与解答 1、2 堆优化版Dijkstra算法 1、2、1 Dijkstra求最短路 II 1、2、2 题解关键思路与答案 二、Bellman-Ford 算法 2、1 Bellman-Ford算法求有边数限制的最短路 2、1、1 题目描述 2、

    2023年04月08日
    浏览(36)
  • 最短路Dijkstra,spfa,图论二分图算法AYIT---ACM训练(模板版)

    最短路Dijkstra,spfa,图论二分图算法AYIT—ACM训练(模板版) A — Dijkstra B — spfa/Dijkstra C — 二分图 D — 二分图 E — 二分图 F — 二分图 G — Dijkstra H — Topsort Dijkstra算法基础模板题 💬 模板演示: 朴素版本Dijkstra: 💬 代码演示: 🚩 运行结果: spfa算法: 💬 代码演示: 🚩

    2024年02月10日
    浏览(49)
  • 【算法基础:搜索与图论】3.4 求最短路算法(Dijkstra&bellman-ford&spfa&Floyd)

    关于最短路可见:https://oi-wiki.org/graph/shortest-path/ 无向图 是一种 特殊的 有向图。(所以上面的知识地图上没有区分边有向还是无向) 关于存储:稠密图用邻接矩阵,稀疏图用邻接表。 朴素Dijkstra 和 堆优化Dijkstra算法的 选择就在于图 是 稠密的还是稀疏的。 算法步骤: 有一

    2024年02月16日
    浏览(44)
  • 算法基础复盘笔记Day06【搜索与图论】—— Dijkstra、bellman-ford、spfa、Floyd

    ❤ 作者主页:欢迎来到我的技术博客😎 ❀ 个人介绍:大家好,本人热衷于 Java后端开发 ,欢迎来交流学习哦!( ̄▽ ̄)~* 🍊 如果文章对您有帮助,记得 关注 、 点赞 、 收藏 、 评论 ⭐️⭐️⭐️ 📣 您的支持将是我创作的动力,让我们一起加油进步吧!!!🎉🎉 1. 题目

    2023年04月22日
    浏览(46)
  • 二维差分算法详解

    二维差分模板 给定一个n行m列的矩阵,下标从1开始。接下来有q次操作,每次操作输入5个参数x1, y1, x2, y2, k,表示把以(x1, y1)为左上角,(x2,y2)为右下角的子矩阵的每个元素都加上k。请输出操作后的矩阵。 第一行包含三个整数n,m,q。接下来n行,每行m个整数,代表矩阵的元素。接

    2024年01月20日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包