`
yzmduncan
  • 浏览: 330317 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论
阅读更多

    最近开始学网络流了,原来或多或少接触过最简单的最大流问题:

    一个公路网,每条公路都有一定的车载上限,问整个网络最大的车流量是多少。这个问题可以形式化为:

定义:给有向图G中的每一条弧(u,v)赋予一个值f(u,v),并规定两个点s和t。如果除了s,t外的任意一个节点i,都有sum{f(u,i)}=sum{f(i,v)}。那么我们说f是一个流,并把s成为源(source),t称为汇(sink)。并把上式称为流量平衡条件。

 

最大流问题   

    求有向图G中的一个流,它满足容量限制条件f(u,v)<=c(u,v),且源点提供的流尽量大。

 

最小割最大流定理(重难点)

    s-t最大流的流值等于s-t的最小切割容量。证明略去。一般模型隐蔽的比较深。

 

最小费用最大流

    有向图G的边除了满足容量限制外,每条边也有费用,在最大流的基础上,求出费用和最小的的最大流。

 

有上下界的最大流(最小流)问题

    一般边的容量下限为0,此处将每条边的容量满足l(u,v)<=f(u,v)<=c(u,v),且l(u,v)>0。求可行流,或者最大流最小流。

 

顶点有容量限制的最大流

    顶点也有容量限制。

 

 /************************************just do it************************************/

 

下面依次对上述问题进行求解。

一. 最大流算法

     最简单的是EK算法,效率不高,我用的加gap优化的SAP,复杂度为(n*n*m)。

 

二. 有上下界的网络流

 

1.无源汇上下界的可行流

    没有源点和汇点,边的容量有上下界up,down。设立源点s和汇点t,计算每个顶点v的入边下界之和减去出边下界之和deg[v],若deg[v]>0,添加边(s,v,deg[v]);若deg[v]<0,添加边(v,t,-deg[v]),对于原图中的边,上界为up-down。在新图中跑一次最大流,若与s或t相连的边满载,则存在可行流,否则不存在。

 

2.有源汇上下界最大流

    主要思想是二分最大流mid,在无源汇的基础上,连接一条边(t,s,INF-mid,mid),即在[mid,INF]中二分搜索最大流。(注意枚举下边界时一定要从0开始)。最后若与s‘或者t’相连的边满载,存在最大流,最大流即为的mid。原图每条边的流量为新图的流量+该边的下界。

 

3.有源汇上下界最小流

    做法与有源汇上下界最大流相似,搜索的区间不同,是在[0,mid]中搜索,连接一条边(t,s,mid,0)。同时也要注意枚举的时候从0开始,否则你会很悲剧。。

 

三. 顶点有容量限制的最大流

    在原网络的基础上,将节点u拆成两个点u'和u'',新增加一条弧(u',u''),容量为u点的限制流量。对于原图中的边(i,j),变换为(i'',j'),即u点的入边=u'点的入边,出边转移到u''上。

 

 /***********************************just fuck it*************************************/

 

四. 目前学习内容

 

1. 最大流最小割(建模过程)

    具体看胡伯涛的论文,有下面几点技巧:

    a. (不连通)在给定网络流中,去掉割的边集,不存在任何一条由s到t的路径。

    b. (两类点)在给定网络中,任意一个割集将点划分成两部分。割为两部分的“桥梁”。

    c. 用正无限的容量排除不参与决策的边。这样它就不会被选入割集中。

    d. 利用源或汇关联的边容量来处理点权,如最大权闭合图。

    割边的求法:在残余图上从源开始dfs,将图分为两部分,这两部分节点的边集就是割边集。割边都是满流边,但满流边不一定是割边。

 

2. 最大流的0-1规划,参数搜索

    具体参看胡伯涛的论文,它是将最小割与0-1规划结合起来,通过参数搜索来解决问题。如ZOJ2676。

 

3. 最大权闭合图

    一个有向图G的闭合图是该图的一个点集,就是对图中属于闭合图的点u,若存在边(u,v),则v必属于闭合图中。给每一个点分配一个权值,求最大权闭合图。

    方法:利用最小割模型,设立源点s和汇点t,从s连边到正权值点,容量为该点的权值;对于权值为负的点,连到t,容量为该点的权值的绝对值,原图中的边容量设为正无穷。对新图求最小割,答案=正权值之和-最小割。

    技巧:理解现实生活中的必要条件。若a成立,需要b、c、d作为前提,那么连边(a,b),(a,c),(a,d)。如NOI2006最大获利,HDU3879。

 

4. 有上下界的网络流

    最基础的就是无源汇可行流,然后是有源汇的最大/最小流。如ZOJ2676,SGU176。

    技巧:二分的时候要从0开始,二分结束后,若要输出结果,必须再跑一遍。每条边的流量为:现流量+该边容量的下界。

 

 /************************************keep moving..*******************************/

 

五. 继续学习的内容

1. 混合图的欧拉回路

2. 最小费用最大流

3. 二分图最小点权覆盖和最大点独立集

4. 看论文,了解一些解题技巧,如建模过程中的拆点,拆边。

 

 

分享到:
评论

相关推荐

    C# Socket编程(4)初识Socket和数据流

    网络流是专门用于网络通信的流,如`NetworkStream`类,它是与Socket关联的流,用于读写网络上的字节流。在TCP通信中,我们通常使用`NetworkStream`与Socket配合,实现数据的发送和接收。 3.2 内存流 内存流是对内存...

    初识Flink.pdf

    在途牛App的例子中,如果用户的点击行为因网络不稳定而延迟回传,Watermark机制能够帮助系统正确处理这些乱序到达的日志。 Flink在途牛的实际生产实践证明了其在处理大规模实时数据流上的有效性。通过Flink的流处理...

    计算机网络实验报告整套

    附带的PKT文件是思科Packet Tracer项目的源文件,它们包含了具体的网络拓扑、设备配置和数据流信息。通过分析和修改这些文件,学习者可以深入理解网络设计和问题解决过程,提高动手能力和理论知识的结合。 总的来说...

    计算机网络模拟练习题.doc

    计算机网络是信息技术领域的重要组成部分,涉及网络的构建、通信协议、数据传输等方面。以下是对给定练习题中涉及的知识点的详细解释: 1. **以太网拓扑结构**:最流行的以太网组网拓扑是星型结构。这种结构中,每...

    计算机网络工程习题答案

    远程教育系统则更依赖于强大的网络服务,以支持实时的音频和视频流。 3. 系统集成与计算机网络工程密切相关,但并不完全相同。系统集成是一个在系统工程学指导下,将部件或子系统整合成满足需求的整体的过程,而...

    JAVA基础-初识JAVA

    6. **输入/输出流**:Java的I/O流体系是其强大的功能之一,可以处理文件读写、网络通信等多种数据传输。InputStream和OutputStream是所有字节流的基类,而Reader和Writer则是所有字符流的基类。 7. **JDK安装**:`...

    北大青鸟初识java

    掌握这些流的使用,能进行文件读写和网络通信。 9. **字符串处理**:String类是Java中的重要组成部分,学习它的不可变性、常用方法如concat、substring、indexOf、replace等,以及StringBuilder和StringBuffer的...

    第21课探索网络的小家庭——初识局域网工作原理整理.pdf

    **局域网(LAN)**是计算机网络的一种类型,它在一个有限的地理范围内,如办公室、建筑或校园内,将多台计算机连接在一起。局域网的特点在于它提供了高速的数据传输,通常在几公里的范围内,可以实现文件共享、...

    解析Python网络爬虫_复习大纲.docx

    解析Python网络爬虫_复习大纲.docx 本文档是关于Python网络爬虫的复习大纲,涵盖了爬虫的基本概念、实现原理、技术、网页请求原理、抓取网页数据、数据解析、并发下载、抓取动态内容、图像识别与文字处理、存储爬虫...

    初识大数据_课件.pptx

    大数据的时代背景是指21世纪的数据信息大发展的时代,移动互联、社交网络、电子商务等极大拓展了互联网的边界和应用范围,各种数据正在迅速膨胀并变大。互联网(社交、搜索、电商)、移动互联网(微博)、物联网...

    Maven3之初识

    **Maven3之初识** Maven,一个在Java开发领域广泛应用的项目管理和综合工具,是Apache软件基金会的一个重要项目。它的核心目标是简化构建过程,通过提供一套标准的方式来管理项目的构建、报告和文档。Maven3是Maven...

    FLASHCS4精L1初识Flashppt课件.ppt

    《初识Flash CS4:探索矢量多媒体创作的精髓》 Flash CS4是Adobe公司推出的一款强大而流行的交互式矢量多媒体创作软件,它以其独特的特点和广泛的应用领域,深受设计师和开发者的喜爱。让我们一起深入理解Flash CS4...

    初识通信——多线程服务器的建立

    总结来说,初识通信并建立多线程服务器需要理解网络编程的基本概念,掌握`ServerSocket`和`Socket`的使用,以及线程的管理。在实现过程中,合理使用如`StringBuffer`这样的线程安全类,能有效提升程序的性能和稳定性...

    Java基础精品课01-初识java.zip

    此外,Java提供了丰富的标准库,包括I/O流、网络编程、日期和时间API等。例如,`java.io`包提供了读写文件、输入输出流的功能,`java.net`包则支持TCP/IP网络通信。 最后,了解如何使用Java开发环境(如Eclipse或...

    01Spring初识.pdf

    Spring框架是Java开发领域非常著名的开源框架,它的初识主要可以分为两个部分:框架的基本概念和Spring框架的设计理念。 首先,从框架的基本概念来看,它是由一系列类和接口组成的集合,这些类和接口协调工作以完成...

    初识Hadoop.docx

    ### 初识Hadoop知识点详解 #### 一、大数据概览 **1. 大数据定义** - **概念解析**:大数据的概念并非特指某个具体的数据量级,而是指那些无法用传统的数据处理工具进行有效捕捉、管理和处理的数据集合。这种...

    初识数据库和Access.pdf

    【初识数据库和Access】 数据库是一个集合,包含了按照特定规则组织的数据,它的目的是方便数据的存储、管理和检索。比如,一个通讯录就是一个简单的数据库,它包含姓名、地址、电话等信息。数据库的概念不仅限于...

    访问控制列表-初识ACL

    - **资源管理**:为不同类型的数据流提供差异化的服务质量(QoS)。 - **策略实施**:根据公司政策限制内部员工访问外部网站或服务。 - **登录控制**:控制远程登录访问,比如通过Telnet或SSH。 - **文件传输控制**:...

    初识C#及其开发环境

    5. 网络编程:了解Socket通信和HTTP请求等网络编程基础知识。 6. Windows Forms:通过Windows Forms创建简单的桌面应用程序,学习控件使用和事件处理。 7. ASP.NET Web开发:初步接触Web开发,学习ASP.NET MVC或ASP...

    第一章-初识SEO.pptx

    【初识SEO】 SEO,全称Search Engine Optimization,中文译为“搜索引擎优化”,是一种通过深入研究搜索引擎的工作原理和用户搜索习惯,对网站进行相应的优化,以提高网站在搜索引擎中的可见性和排名的技术。优化...

Global site tag (gtag.js) - Google Analytics