浅谈网络流

news2024/11/22 19:45:17

网络

网络是一张单向图 , 每条边都有一个权值 c ( u , v ) c(u,v) c(u,v) 表示边 ( u , v ) (u,v) (u,v) 的容量. 特别的 , 图上有源点 ( s ) (s) (s) 和汇点 ( t ) (t) (t).

网络流

在一张网络上 , 从源点流出 , 最终流入汇点的流.

f ( u , v ) f(u,v) f(u,v) 表示 ( u , v ) (u,v) (u,v) 的流量.

满足 :

  1. 容量限制 : f ( u , v ) ≤ c ( u , v ) f(u,v)\le c(u,v) f(u,v)c(u,v)
  2. 流量平衡 : 对于非 s , t s,t s,t 的点 x x x 要求流入 x x x 的流量量等于流出 x x x 的流量 , 即 ∑ f ( u , x ) = ∑ f ( x , u ) \sum f(u,x)=\sum f(x,u) f(u,x)=f(x,u).
  3. 斜对称性 : f ( u , v ) = − f ( v , u ) f(u,v)=-f(v,u) f(u,v)=f(v,u) ( 相当于反悔机制 )

网络流的应用

网络最大流

在一张网络上 , 给定源点 s s s 汇点 t t t , 要求 f ( u , v ) ≤ c ( u , v ) f(u,v)\le c(u,v) f(u,v)c(u,v) , 求一条 s s s t t t 的最大流

题目

若边 ( u , v ) (u,v) (u,v) 满足 f ( u , v ) < c ( u , v ) f(u,v)<c(u,v) f(u,v)<c(u,v) 我们称这条边是有潜力的 , c ( u , v ) − f ( u , v ) c(u,v)-f(u,v) c(u,v)f(u,v) 称为这条边的潜力值

如果存在一条从 s s s t t t 的路径 , 该路径上的所有边都有潜力 , 我们显然可以将这条路径上的流增加这些边中最小的潜力值 , 该操作称为增广. 可用 dfs 或 bfs 判断网络上是否存在可增广的路径.

在反悔机制的基础上 , 保证了该策略的正确性 , 该算法称为 E K EK EK 算法

那么核心代码即为

while( 可增广 )
	增广 ;

时间复杂度 O ( n 2 m ) O(n^2m) O(n2m)

code

无源汇有上下界可行流

题目 / 题目

在一张网络上 , 要求 l ( u , v ) ≤ f ( u , v ) ≤ r ( u , v ) l(u,v)\le f(u,v)\le r(u,v) l(u,v)f(u,v)r(u,v) , 问是否存在可行流

l ≤ f ( u , v ) ≤ r l \le f(u,v) \le r lf(u,v)r , 记 f ′ ( u , v ) = f ( u , v ) − l f'(u,v)=f(u,v)-l f(u,v)=f(u,v)l

0 ≤ f ′ ( u , v ) ≤ r − l 0\le f'(u,v) \le r-l 0f(u,v)rl 即为一般网络流形式

例如 :
在这里插入图片描述
根据流量平衡 , 有 :
f ′ ( 1 , a ) + f ′ ( 2 , a ) + i n a = f ′ ( a , 3 ) + f ′ ( a , 4 ) + o u t a f'(1,a)+f'(2,a)+in_a=f'(a,3)+f'(a,4)+out_a f(1,a)+f(2,a)+ina=f(a,3)+f(a,4)+outa

i n a = l ( 1 , a ) + l ( 2 , a ) , o u t a = l ( 1 , a ) + l ( 2 , a ) in_a=l(1,a)+l(2,a), out_a=l(1,a)+l(2,a) ina=l(1,a)+l(2,a),outa=l(1,a)+l(2,a)

因此我们可以建立一个超级源点与超级汇点

在这里插入图片描述

原方程 f ( 1 , a ) + f ( 2 , a ) = f ( a , 3 ) + f ( a , 4 ) f(1,a)+f(2,a)=f(a,3)+f(a,4) f(1,a)+f(2,a)=f(a,3)+f(a,4) 有解

当且仅 f ′ ( 1 , a ) + f ′ ( 2 , a ) + i n a = f ′ ( a , 3 ) + f ′ ( a , 4 ) + o u t a f'(1,a)+f'(2,a)+in_a=f'(a,3)+f'(a,4)+out_a f(1,a)+f(2,a)+ina=f(a,3)+f(a,4)+outa 有解.

( s , a ) (s,a) (s,a) 的上限为 i n a in_a ina , ( a , t ) (a,t) (a,t) 的上限为 o u t a out_a outa . 根据上文的代码 , 满足平衡条件的情况下保证了流量最大 , 因此如果最大流达到了所有 i n a in_a ina 的上限 (此时同样满足所有 o u t a out_a outa 的上限) , 方程一定有解.

记录
code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/197489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【测试总结系列-1】质量保障之测试左移和右移

在开发一个系统或者说软件&#xff0c;需求分析、软件设计、程序编码、软件测试、运行维护&#xff0c;这些阶段必不可少。整个周期中&#xff0c;作为测试人员&#xff0c;不是只在测试阶段才能发挥作用&#xff0c;也不是仅有测试对软件质量负责&#xff0c;一个项目团队&…

关于图片上传和在页面显示问题

最近在工作中遇到一个关于图片上传的问题。根据之前项目的经验&#xff0c;我知道目前这个公司上传图片有两种方式&#xff0c; 一种是把图片上传到公司服务器上&#xff0c;然后把图片放在服务器上的地址存在数据库中&#xff0c;要获得图片的时候直接从库中拿地址就行了另一…

分析网络抓包用 python 更高效

Abstract分析网络抓包用 python 更高效AuthorsWalter FanCategorylearning noteStatusv1.0Updated2023-01-10LicenseCC-BY-NC-ND 4.0 网络抓包分析用的最多的两大工具是 tcpdump 和 wireshark. 一般我们通过 tcpdump 或者 wireshark 来捕获网络包为 *.pcap 或者 *.pcapng 文件 …

Elasticsearch:在 Elasticsearch 中按距离有效地对地理点进行排序

计算搜索中两点之间的距离有很多用例。 如果你正在处理地理数据&#xff0c;那么无论你从事何种业务&#xff0c;这都必然会出现。 然后&#xff0c;在对这些点进行排序时&#xff0c;你可能需要考虑距离&#xff0c;因为……好吧&#xff0c;为什么不呢&#xff1f; 所以这里…

算法训练营DAY48|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

这一期到了买卖股票专题&#xff0c;买卖股票的有一些题型&#xff0c;可以使用贪心算法来求解&#xff0c;甚至有时候比动态规划更简单一些&#xff0c;但是本期是讲动态规划的运用&#xff0c;所以不做对于贪心的分析。今天只讲两道例题&#xff0c;其中第二题是第一题的变种…

[NeurIPS 2017] Poincaré Embeddings for Learning Hierarchical Representations

ContentsIntroductionPoincar EmbeddingsThe Limitations of Euclidean Space for Hierarchical DataEmbedding Hierarchies in Hyperbolic SpaceEvaluationReferencesIntroduction 如今&#xff0c;表征学习变得越来越重要 (e.g. word embedding, embeddings of graphs, embe…

如何在电脑上安装 Windows 版桌面编辑器 v7.3

线上编辑器的桌面端版本不需要持续的互联网连接&#xff0c;还可在计算机上处理脱机文件。因此&#xff0c;如果您需要此类功能&#xff0c;可从我们的网站中下载并安装桌面编辑器。 ONLYOFFICE桌面编辑器最新版 最近 ONLYOFFICE 发布了 v7.3&#xff0c;最新版本的桌面编辑器…

SpringBoot+Vue点餐系统

简介&#xff1a;本项目采用了基本的springbootvue设计的点餐。系统。详情请看截图。经测试&#xff0c;本项目正常运行。本项目适用于Java毕业设计、课程设计学习参考等用途。 项目描述 项目名称SpringBootVue点餐系统源码作者LHL项目类型Java EE项目 &#xff08;前后分离&a…

ESP-IDF:命令模式测试

ESP-IDF:命令模式 /命令模式/ /设计模式之开闭原则&#xff0c;对增加开放对修改关闭/ #include #include class ClientCommands{ //统一管理命令&#xff0c;这是比观察者模式多出来的地方 public: void AddMoney(){ cout<<“add money”<<endl; } void AddEqu…

图解LeetCode——1145. 二叉树着色游戏(难道:中等)

一、题目 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中&#xff0c;给出二叉树的根节点 root&#xff0c;树上总共有 n 个节点&#xff0c;且 n 为奇数&#xff0c;其中每个节点上的值从 1 到 n 各不相同。 最开始时&#xff1a; 「一号」玩家从 [1, n] 中取一个值…

Ubuntu22.04安装nvidia显卡驱动

Ubuntu22.04安装nvidia显卡驱动 目录 方法一&#xff1a;使用官方的NVIDIA驱动进行手动安装&#xff08;稳定、靠谱&#xff09; 方法二&#xff1a;使用系统自带的“软件和更新”程序-附加驱动更新&#xff08;需要联网&#xff0c;稳定性无法验证&#xff09; 浓缩极简方法…

MySQL入门篇-视图简介

备注:测试数据库版本为MySQL 8.0 这个blog我们来聊聊MySQL视图。 前言: 视图是从一个或几个基本表导出的表。视图本身不独立存储在数据库中&#xff0c;是一个虚表。 即数据库中只存放视图的定义而不存放视图对应的数据&#xff0c;这些数据仍存放在导出视图的基本表中。 视…

[Windows] 微信超级管家,自动好友回复、计数、自动同意、群发、好友导出、消息日志、无限多开

简介 微信超级管家是一款大神针对微信制作的工具&#xff0c;它的主要功能包括了自动回复、好友计数、自动同意、群发、好友导出、消息日志、无限多开等等&#xff0c;让你拥有无限潜力哈&#xff0c;经常使用微信电脑版的朋友一定会用的上。 下载 微信超级管家 软件功能 1…

安全测试之浅析静态应用

SAST&#xff0c;Static Application Security Testing&#xff0c;即静态应用安全测试&#xff0c;也叫静态分析&#xff0c;是一种测试方法&#xff0c;一直是应用程序安全性工作的核心部分。根据Forrester的 The State Of Application Security, 2022一文的预测&#xff0c;…

云计算|OpenStack|社区版OpenStack安装部署文档(七--- 仪表盘服务dashboard的安装部署---Rocky版)

前言&#xff1a; 仪表盘是一般项目的标配&#xff0c;有了仪表盘可以降低运维工作&#xff0c;并且很多的管理工作是可以可视化的。本节计划在控制节点安装openstack官网的仪表盘项目 openstack由于是一个开源的社区版本云计算项目&#xff0c;因此&#xff0c;它的web仪表盘…

【Core】.net core 3.1 api 返回实体类数据存在null,导致小程序调用接口也直接显示了null,原来要这样设置才可

对接过API接口的小伙伴都知道&#xff0c;接口返回的Json格式数据&#xff0c;有些字段可能会出现null的情况&#xff0c;并且还是个字符串&#xff0c;直接显示在用户界面上给人感觉出bug了 文章目录【开发环境】【场景描述】【返回null值重现】1&#xff09;创建新项目2&…

细讲TCP三次握手四次挥手(二)

TCP/IP 协议族 应用层 应用层( application-layer &#xff09;的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程&#xff08;进程&#xff1a;主机中正在运行的程序&#xff09;间的通信和交互的规则。 对于不同的网络应用需要不同的应用层协议…

基本放大器电路- (一)

运算放大器组成的电路五花八门&#xff0c;令人眼花瞭乱&#xff0c;是模拟电路中学习的重点。在分析它的工作原理时倘没有抓住核心&#xff0c;往往令人头大。为此本人特搜罗天下运放电路之应用&#xff0c;来个“庖丁解牛”&#xff0c;希望各位从事电路板维修的同行&#xf…

精讲rpc框架,这么讲不怕你不明白!

谈到rpc框架可能有点陌生感&#xff0c;但是如果换成框架语言Ocaml&#xff0c;大家一定不陌生。 众所周知&#xff0c;ocaml是一款专门做functional programming的一款软件&#xff0c;尤其是它的界面非常简洁&#xff0c;还是专门的server进行线上编写。 rpc框架和ocaml是什…

一篇就看懂的文件操作

文件操作1为什么使用文件我们前面学习结构体时&#xff0c;写了通讯录的程序&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删除数据&#xff0c;此时数据是存放在内存中&#xff0c;当程序退出的时候&#xff0c;通讯录中的数据自然就不存在了&#xff…