如何判断图中存环(正负)
1.正环
用 SPFA不断的进行松弛操作,发现当前金额可以比本身大就更新,同时记录更新次数。如果更新次数超过n次,说明存在”正“环。
2.负环
这里先说明下负环。(求最短距离的时候)
在我们用SPFA求最短路径的时候,如果存在负环,在松弛操作的时候总会加入队列 因为最小距离会越来越小,同样这里如果经过一次次的转换,如果可以使本金增大,那么松弛操作也会无限进行下去,我们以n为界限,超过n就说明存在正环,也就说明可以使本金增大。
用spfa算法。经验证:当一个点重复进入队列n次以上,就存在负环。
题目大意:
有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 B币。问s币的金额经过交换最终得到的s币金额数能否增加?
货币的交换是可以重复多次的,所以我们需要找出是否存在正权回路,且最后得到的s金额是增加的
怎么找正权回路呢?(正权回路:在这一回路上,顶点的权值能不断增加即能一直进行松弛)
解题思路:单源最短路径算法,因为题目可能存在负边,所以用Bellman Ford算法,
原始Bellman Ford可以用来求负环,这题需要改进一下用来求正环
本题是“求最大路径”,之所以被归类为“求最小路径”是因为本题题恰恰与bellman-Ford算法的松弛条件相反,
求的是能无限松弛的最大正权路径,但是依然能够利用bellman-Ford的思想去解题。
因此初始化dis(S)=V 而源点到其他点的距离(权值)初始化为无穷小(0),当s到其他某点的距离能不断变大时,
说明存在最大路径;如果可以一直变大,说明存在正环。判断是否存在环路,用Bellman-Ford和spfa都可以。
转载于:https://www.cnblogs.com/Roni-i/p/9445634.html
如何判断图中存环(正负)相关推荐
- 判断图中是否存在环的方法
判断图中是否存在环一般有四种方法:① 拓扑排序(对于有向图来说的),一般会结合dp求解最长/短路径: ② 强连通分量算法/双连通分量算法: ③ spfa判环 :④ 直接dfs遍历一遍,在遍历节点的过程 ...
- Leetcode 1559二维网格图中探测环 技巧DFS|剪枝
二维网格图中探测环 给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在 相同值 形成的环. 一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径.对 ...
- 用两种遍历方法判断图中两点是否有路径
用两种遍历方法判断图中两点是否有路径(可直接测试) 邻接表.图.图的两种遍历以及图中路径的基本概念,可以去自行了解和学习(下面是代码实践)可直接在自己主机测试 #include <iostrea ...
- jquery判断方法是否存在_判断图中是否有环的三种方法
0.什么是环? 在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径. 在有向图中,一个结点经过两种路线到达另一个结点,未必形成环. 1.拓扑排序 1.1.无向图 使用拓扑排序 ...
- aop判断方法是否执行成功_判断图中是否有环的三种方法
0.什么是环? 在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径. 在有向图中,一个结点经过两种路线到达另一个结点,未必形成环. 1.拓扑排序 1.1.无向图 使用拓扑排序 ...
- java判断图中两点是否连通_连通分量(求有几个连通分量+判断是否两点连通+是否为强联通图 相应例子)...
参考博客: https://blog.csdn.net/jinzk123/article/details/52231527 https://blog.csdn.net/qq_40998706/arti ...
- 图11——判断图中是否为一棵树
编写算法,判断一个无向图是否是一颗树. [分析] 一个无向图G是一棵树的条件为:G必须是无回路的连通图或n-1条边的连通图,这里我们采用后者作为判断条件.例如下图所示: 上面的无向图就是一棵树,它有6 ...
- ~~spfa判断图中是否存在负环
时间复杂度是 O(nm), n 表示点数,m 表示边数 int n; // 总点数 int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边 int dist[N], ...
- python networkx 求图中的环_python – 在NetworkX图中获取连接的节点
假设图形是无向的,则有一个内置的networkx命令: node_connected_component(G, n) 文档是here.它返回包含n的G的连通组件中的所有节点. 它不是递归的,但我认为你 ...
最新文章
- AI芯片的“战国时代”:计算力将会驶向何方?
- Bayer Pattern to RGB
- Github 最新 AI 开源项目了解一下?
- qrp文件如何用excel打开_问与答66: 如何不打开Excel文件删除行?
- 在echarts图表外调用echarts的下载功能以及echarts getDataURL图表数据不显示的问题的解决方案...
- GitHub教程手册、使用流程
- [Search Engine] 搜索引擎技术之倒排索引
- Excel绘制双坐标抽图表
- Java优秀员工自我评价_年度优秀员工自我评价
- Shopee虾皮怎么发货?虾皮物流
- JVM虚拟机安装苹果系统
- 如何快速建立一个优秀的账号体系
- 微型计算机曾经使用过的字长,自考《计算机应用基础》模拟试题七
- 【08】英语词汇速记大全1词根词缀记忆法
- 设置ubuntu系统中vi的默认模板文件
- 批量获取唯品会商品链接,详情页图片及视频保存技巧
- android mvp mvvm ppt,还在用 MVP?快来试试 MVVM! Relight:轻量级 MVVM 框架
- spaceclaim简单建模5
- 使用pykinect2+pyqt5开发kinect v2采集程序
- html怎么插入avi视频,视频剪辑很简单,送你88集PR影视后期全能剪辑教程:从入门到高级...