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

如何判断图中存环(正负)相关推荐

  1. 判断图中是否存在环的方法

    判断图中是否存在环一般有四种方法:① 拓扑排序(对于有向图来说的),一般会结合dp求解最长/短路径: ② 强连通分量算法/双连通分量算法: ③ spfa判环 :④ 直接dfs遍历一遍,在遍历节点的过程 ...

  2. Leetcode 1559二维网格图中探测环 技巧DFS|剪枝

    二维网格图中探测环 给你一个二维字符网格数组 grid ,大小为 m x n ,你需要检查 grid 中是否存在 相同值 形成的环. 一个环是一条开始和结束于同一个格子的长度 大于等于 4 的路径.对 ...

  3. 用两种遍历方法判断图中两点是否有路径

    用两种遍历方法判断图中两点是否有路径(可直接测试) 邻接表.图.图的两种遍历以及图中路径的基本概念,可以去自行了解和学习(下面是代码实践)可直接在自己主机测试 #include <iostrea ...

  4. jquery判断方法是否存在_判断图中是否有环的三种方法

    0.什么是环? 在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径. 在有向图中,一个结点经过两种路线到达另一个结点,未必形成环. 1.拓扑排序 1.1.无向图 使用拓扑排序 ...

  5. aop判断方法是否执行成功_判断图中是否有环的三种方法

    0.什么是环? 在图论中,环(英语:cycle)是一条只有第一个和最后一个顶点重复的非空路径. 在有向图中,一个结点经过两种路线到达另一个结点,未必形成环. 1.拓扑排序 1.1.无向图 使用拓扑排序 ...

  6. java判断图中两点是否连通_连通分量(求有几个连通分量+判断是否两点连通+是否为强联通图 相应例子)...

    参考博客: https://blog.csdn.net/jinzk123/article/details/52231527 https://blog.csdn.net/qq_40998706/arti ...

  7. 图11——判断图中是否为一棵树

    编写算法,判断一个无向图是否是一颗树. [分析] 一个无向图G是一棵树的条件为:G必须是无回路的连通图或n-1条边的连通图,这里我们采用后者作为判断条件.例如下图所示: 上面的无向图就是一棵树,它有6 ...

  8. ~~spfa判断图中是否存在负环

    时间复杂度是 O(nm), n 表示点数,m 表示边数 int n; // 总点数 int h[N], w[N], e[N], ne[N], idx; // 邻接表存储所有边 int dist[N], ...

  9. python networkx 求图中的环_python – 在NetworkX图中获取连接的节点

    假设图形是无向的,则有一个内置的networkx命令: node_connected_component(G, n) 文档是here.它返回包含n的G的连通组件中的所有节点. 它不是递归的,但我认为你 ...

最新文章

  1. AI芯片的“战国时代”:计算力将会驶向何方?
  2. Bayer Pattern to RGB
  3. Github 最新 AI 开源项目了解一下?
  4. qrp文件如何用excel打开_问与答66: 如何不打开Excel文件删除行?
  5. 在echarts图表外调用echarts的下载功能以及echarts getDataURL图表数据不显示的问题的解决方案...
  6. GitHub教程手册、使用流程
  7. [Search Engine] 搜索引擎技术之倒排索引
  8. Excel绘制双坐标抽图表
  9. Java优秀员工自我评价_年度优秀员工自我评价
  10. Shopee虾皮怎么发货?虾皮物流
  11. JVM虚拟机安装苹果系统
  12. 如何快速建立一个优秀的账号体系
  13. 微型计算机曾经使用过的字长,自考《计算机应用基础》模拟试题七
  14. 【08】英语词汇速记大全1词根词缀记忆法
  15. 设置ubuntu系统中vi的默认模板文件
  16. 批量获取唯品会商品链接,详情页图片及视频保存技巧
  17. android mvp mvvm ppt,还在用 MVP?快来试试 MVVM! Relight:轻量级 MVVM 框架
  18. spaceclaim简单建模5
  19. 使用pykinect2+pyqt5开发kinect v2采集程序
  20. html怎么插入avi视频,视频剪辑很简单,送你88集PR影视后期全能剪辑教程:从入门到高级...

热门文章

  1. MAC如何查看某个端口的占用情况
  2. 【干货合辑】+你有什么独家数据库优化技巧?
  3. eclipse中svn插件的安装
  4. windows服务,安装、启动、停止,配置,一个批处理文件搞定
  5. Java虚拟机JVM学习05 类加载器的父委托机制
  6. [算法] 求环形数组中和值最大子段
  7. jQuery Masonry 一个 jQuery动态网格布局的插件
  8. client-go入门之1:创建连接Kubernetes集群的客户端
  9. libpcap 源代码分析(二)
  10. 理解jmeter聚合报告