[另开新坑] 算导v3 #26 最大流 翻译
26 最大流
就像我们可以对一个路网构建一个有向图求最短路一样,我们也可以将一个有向图看成是一个"流量网络(flow network)",用它来回答关于流的问题.
Just as we can model a road map as a directed graph in order to find the shortest path from one point to another, we can also interpret a directed graph as a “flow network” and use it to answer questions about material flows.
想像一下在一个流量系统中,一种物质从一个源点,那个物质产生的地方,流向一个汇点,也就是物质流向的地方.源点以一个固定的速率产生那种物质,汇点以相同的速度消耗那种物质.
The source produces the material at some steady rate, and the sink consumes the material at the same rate.
在这个流量系统的每一个点上,这种物质的流速(flow)顾名思义,就是这种物质移动地多快.流量网络可以为许多问题建立模型,包括流经管道的液体的速度,流水线的组装,流经电路的电流,以及信息穿过联络网络.
The “flow” of the material at any point in the system is intuitively the rate at which the material moves.Flow networks can model many problems, including liquids flowing through pipes,parts through assembly lines, current through electrical networks, and information
through communication networks.
可以想像,我们的流量网络的每一条边(edge),都对物质流动有一个限制.每一个限制都给出了一个额定流量(stated capacity),也就是这种物质可以流经这条边的最大速度,比如每小时有200加仑液体可以流经一个管道或一条电线可以通过20安培的电流.顶点(vertex/vertices(复数))是限制连接的地方,除非是源点或者汇点,流经这些顶点的流是不会改变的.换句话说,流入一个顶点的流等于流出一个顶点的流.我们将这个性质称为流量保护(flow conservation),这与在此流量网络是一个电路时,应用在这个电路上的基尔霍夫电压定律是等价的.
We can think of each directed edge in a flow network as a conduit for the material. Each conduit has a stated capacity, given as a maximum rate at which the material can flow through the conduit, such as 200 gallons of liquid per hour through a pipe or 20 amperes of electrical current through a wire. Vertices are conduit junctions, and other than the source and sink, material flows through the vertices without collecting in them. In other words, the rate at which material enters a vertex must equal the rate at which it leaves the vertex. We call this property “flow conservation,” and it is equivalent to Kirchhoff’s current law when the material is electrical current.
在最大流问题中,我们将要计算的,是从源点到汇点不触犯这个网络中任何限制的最大流量.这是对于流量网络最简单的应用.正如我们将在这章中看到的,这个问题可以通过一些十分有效率的算法来解决.更进一步的说,我们将用这些基础的网络流算法来解决一些更加复杂的网络流问题.
这个章节将要叙述两种不同的解决最大流问题的算法.#26.1将网络流问题中可能用到的记号和这个问题本身形式化了.#26.2描述了传统的FFF(Ford and Fulkerson for Finding maximum flows)算法.这种算法的一个应用,就是寻找一个二分无向图的最大匹配,将在#26.3中出现.#26.4呈现了pr(push relabel)算法,是构成当今最快的几种最大流算法的基础.#26.5则描述了rtf(relabel-to-front)算法,是一种prpr算法的特殊实现,可以在O(V3)的时间内跑出来.虽然这不是已知最快的算法,它勾勒了一些渐进意义上最快的算法的一些技巧,而且在实际使用中,rtf是足够快的.
[先更新这些吧..//亮点自寻]
[另开新坑] 算导v3 #26 最大流 翻译的更多相关文章
- C++模板元编程 - 挖新坑的时候探索到了模板元编程的新玩法
C++真是一门自由的语言,虽然糖没有C#那么多,但是你想要怎么写,想要实现什么,想要用某种编程范式或者语言特性,它都会提供. 开大数运算类的新坑的时候(又是坑),无意中需要解决一个需求:大数类需要分别 ...
- 【C#】无损转换Image为Icon 【C#】组件发布:MessageTip,轻快型消息提示窗 【C#】给无窗口的进程发送消息 【手记】WebBrowser响应页面中的blank开新窗口及window.close关闭本窗体 【手记】调用Process.EnterDebugMode引发异常:并非所有引用的特权或组都分配给呼叫方 【C#】DataRowState演变备忘
[C#]无损转换Image为Icon 如题,市面上常见的方法是: var handle = bmp.GetHicon(); //得到图标句柄 return Icon.FromHandle(handle ...
- 关于C++默认初始化的总结——开个坑
关于C++初始化总结的博客,其实以前在我的独立博客上写过相关的内容,可惜呀,没有续费,腾讯回收了我的空间, 到现在,关于C++初始化的内容,一直是我的心头病,现在准备开个坑,慢慢的总结进来吧. 1.关 ...
- 新坑:c#弄微信公众号
微信公众号作为一个平台级别的产品,对商业应用来说,有很大的吸引力.如何让公众号更好的吸粉?靠内容不是一般小商户可以做到的,那是网红自媒体的强项.一般商户要怎么突围?那就是提供实用,有意义的功能给粉丝. ...
- 安全 流程服务器开新机器 内外网 iptables 安全组 用户安全root用户的使用.
安全 流程服务器开新机器 内外网 iptables 安全组 用户安全root用户的使用.
- vueRouter点击打开新页签
一.vue 路由使用 vue是单页面SPA,一般我们使用vue-router 设定路由进行页面跳转的时候,都是直接覆盖当前页面.比如,在a页面中有如下超链接 <router-link to=&q ...
- JavaScript-打开新窗口(window.open)和 关闭窗口(window.close)
JavaScript-打开新窗口 open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL:可选 ...
- webstorm 开新项目 setting 设置@目录别名 add @ (languages & Framewors - Javascript - Webpack 4. setting eslint enable
webstorm 开新项目 setting 设置@目录别名 add @ (languages & Framewors - Javascript - Webpack 4. setting esl ...
- SSM久别遇新坑
SSM久别遇新坑 久别个锤子,也就几天没看,改bug改到怀疑人生 maven的父子模块问题 众所周知,用maven建立一个空的模块,在它之下,将原本的各层次结构分别新建为一个子模块,就能够将各业务进行 ...
随机推荐
- PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
一.中文截取:mb_substr() mb_substr( $str, $start, $length, $encoding ) $str,需要截断的字符串 $start,截断开始处,起始处为0 $l ...
- 开课选课系统APP基本功能实现
队员:031302511 031302505 效果图如下: 上述功能分析: 功能分析:我们考虑到手机自带的SQLite会被清理软件清理掉数据,这样就没有实际用处.所以我们就自己搭建服务器 ...
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
Java语言是静态类型的(statical typed),也就是说所有变量和表达式的类型再编译时就已经完全确定.由于是statical typed,导致Java语言也是强类型(Strong typed ...
- POJ1067 取石子游戏
Description 有两堆石子,数量任意,可以不同.游戏开始由两个人轮流取石子.游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子:二是可以在两堆中同时取走相同数量的石子.最后 ...
- newinstance和new有什么区别
用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两种创建对象方式?这个就要从可伸缩.可扩展,可重用等软件思想上解释了.Java中工厂模式经 ...
- groovy-真值
Boolean expressions Groovy支持标准的条件运算符的布尔表达式: 1 def a = true 2 def b = true 3 def c = false 4 assert a ...
- git分支与版本管理、版本回退、冲突解决记录
一.基础使用 1.初始化本地仓库 git init 2.关联远程仓库 git remote add origin git@github.com:用户名/仓库名.git 3.添加远程仓库文件到本地 gi ...
- SOAP 格式设置选项
SOAP 格式设置选项 两个格式设置选项为: Style:适用于 SOAP 消息中 Body 元素的子元素(也可能是孙级).此选项指定为 binding WSDL 元素(通常情况下)或 operati ...
- 升级centos6.5系统的gcc为4.8.5的简易步骤
Centos6.5_64位升级gcc为4.8.2的简易步骤 一.安装依赖包 yum install texinfo-tex flex zip mpfr-devel libgcc.i686 glibc- ...
- python多线程备份MYSQL数据库并删除旧的备份。
#!/usr/bin/python # -*- coding=utf-8 -*- import time import os import datetime import threading from ...