首页 > 其他分享 >图论 学习笔记(省选+)

图论 学习笔记(省选+)

时间:2023-06-25 19:36:23浏览次数:29  
标签:图论 最大 省选 新图 路径 Flow 笔记 算法 流量

网络流

最大流问题(Maximum Flow Problem)
有向有权图
给定起点s和终点t
预期:求出从s到t的最大流
ps.有些“管道”达不到其最大容量

朴素的匹配算法(Naive Algorithm):未必能找到最大流,其结果往往比最优解差一点,但是其他更好的算法都基于此算法
构建一个和原图(Original Graph)相同的新图(Residual Graph),在新图上找出一条从s到t的简单无环图(Augmenting path),可以通过例如当做无权图然后求最短路的方式
由于短板效应,这条路径上的最大流量是边权的最小值 Flow = Capacity - Residual;
然后将新图的该路径上都减少这个数字,然后按照此规则进行迭代
找不到路径时,终止程序,最大流即为减少的数字之和;某条边的流量即为上述 Flow
(算法)不漏水时,流出等于流入
由于该图是有向图,具有不可逆性,算法不能反悔,因而结果不一定是最优解
Naive求出的不一定是最大流,求出的被称为阻塞流(Blocking Flow)
阻塞流:有了这些流量,就不能增加到终点的流量了;虽然它不是最优的,但是把管道都给堵住了;最大流也是阻塞流

Ford-Fulkerson Algorithm:正确性有保障,一定能找到最大流
主要流程和朴素算法相似,但是在选择简单无环图、使此路径同时减小x之后,需要构建权值为x的反向路径;这样可以使之前选择的路径即使不好也可以撤销(构建反向路径时,不能和已有正向路径抵消。但是可以和同为反向路径的边叠加)
时间复杂度:

标签:图论,最大,省选,新图,路径,Flow,笔记,算法,流量
From: https://www.cnblogs.com/coper/p/graph_theory_note_level_4.html

相关文章

  • 线性规划学习笔记
    线性规划学习笔记1 线性规划定义定义1.1已知一组实数\(a_1,a_2,\cdots,a_n\),以及一组变量\(x_1,x_2,\cdots,x_n\),在这些变量的一个线性函数定义为\(f(x_1,x_2,\cdots,x_n)=\sum_{i=1}\limits^na_ix_i\)。等式\(f(x_1,x_2,\cdots,x_n)=b\),不等式\(f(x_1,x_2,\cdots......
  • opencv学习笔记(十二)
    harris角点检测:#角点检测importcv2importnumpyasnp"""cv2.cornerHarris()img:数据类型为float32bolckSize:角点检测中指定区域的大小ksize:Sobel求导中使用的窗口大小,一般为3K:取值参数为[0.04,0.06]"""img=cv2.imread('C:/Users/hellou/Deskt......
  • P5JS学习笔记
    //启动方法,自动执行functionsetup(){createCanvas(400,400);}//绘画执行方法,自动执行,按设定好的帧数绘制functiondraw(){background(25);ellipse(50,50,80,80);//画圆//鼠标按下事件if(mouseIsPressed){//改变背景色fill(0);}else{fill(255......
  • C# Dapper和DapperExtensions笔记
    一、DapperDapper是一个简单的.NET对象映射器,在速度方面具有"KingofMicroORM"的头衔,几乎与使用原始的ADO.NET数据读取器一样快。ORM是一个对象关系映射器,它负责数据库和编程语言之间的映射。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。1.安装Dapp......
  • Rust学习笔记——基于官网和Rust语言圣经(二、猜数游戏)
    前面的helloworld项目还是太oldschool了,这样用一个猜数字的游戏来快速了解下rust语言,以及为啥cargo那么好用的原因。不要拘束新的语法点,后面都会详细介绍!2.1猜数游戏:一次猜测-本节您将学会:·let、match等方法·相关的函数·外部的crate·...猜数游戏-目标-生成一个1到10......
  • opencv学习笔记(十一)
    傅里叶变换:作用:高频:变化剧烈的灰度分量,例如边界;低频:变化缓慢的灰度分量,例如大海滤波:低通滤波器:只保留低频,会使图像模糊高通滤波器:只保留高频,会使图像细节增强opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换为np.floa32的格式;得到的结果中,频率为0的部分......
  • 函数对象与闭包(笔记整理)
    一、函数对象1.什么是函数对象函数对象是指:将函数作为变量保存在内存中的一种对象。就是把函数当成变量去使用,就是在函数调用阶段,将调用的函数赋一个变量名definner():print('函数名也是不加括号,其实就是一个地址')#print(inner)#<functioninnerat0x7f80180......
  • 装饰器(笔记整理)
    一、装饰器介绍为何要用装饰器Python中的装饰器是一种语法糖,可以在运行时,动态的给函数或类添加功能。装饰器本质上是一个函数,使用**@+函数名**就是可实现绑定给函数的第二个功能。将一些通用的、特定函数的功能抽象成一个装饰器,可以重复利用这些功能什么是装饰器......
  • PaddleOCR学习笔记1
    尝试使用PaddleOCR方法,如何使用自定义的模型方法,参数怎么配置,图片识别尝试简单提高识别率方法。目前仅仅只是初步学习下如何使用PaddleOCR的方法。 一,测试识别图片:1.png:正确文本内容为“哲学可以帮助辩别现代科技创新发展的方向” 二,测试代码:paddleocr_test2.py:结......
  • 笔记本输入python无提示、也无报错(不提示“不是内部或外部命令,也不是可运行的程序”)
    最近在安装Python的时候发生了很奇怪的现象(安装前):从命令行执行python并不会输出python版本信息,似乎也没有其他反应,也无报错(不提示“不是内部或外部命令,也不是可运行的程序”),再次输入命令wherepython显示C:\Users\quxw\AppData\Local\Microsoft\WindowsApps\python.exe,如下......