算法学习笔记:网络流#1——有关内容+算法导航

算法学习笔记:网络流#1——有关内容+算法导航

1. 前言

网络流,属于图论的一种。

网络流看上去是一个新的东西,实际上就是新瓶装旧酒,相信讲完之后你会发现这玩意的一些基础定义什么的跟 有向图 没啥差别。

因为网络流算法有点多,于是本文在讲述基础定义之外同时提供算法导航,将后续的算法学习笔记添加入本博客中。

2. 详解

首先我们需要明白一点:网络流是个啥?

实际上,网络流就是一张无向图,只不过给图上的东西换了换名字。

比如看看下面这张图。

在这里插入图片描述

(绘图工具:Graph Editor

看一下这张有向图,这在网络流里面叫做『网络』。

扫描二维码关注公众号,回复: 12749087 查看本文章

仔细看一下,你会发现图中有两个特别节点: s , t s,t s,t

s s s 叫做『源点』, t t t 叫做『汇点』。

图上的边权叫做『流量』。

看不懂没关系,我初学的时候也看不懂,接下来拿一个例子来说明网络流到底是个啥:

假设 s s s 是一座水库,含有无穷多的水, t t t 是你家所在的位置,途中有 5 个湖,标号为 1 , 2 , 3 , 4 , 5 1,2,3,4,5 1,2,3,4,5,假设湖能够存下无穷多的水。

当然,水要流到你家是需要经过一些路径的,但是这些路径不是无限量送水的,比如说从 s s s 1 1 1 就只能送 2 2 2 单位的水,多的也不能送。

这样就能理解网络流了吧?

这张有向图就是网络流中的『网络』,在网络中『源点』就是水库,『汇点』就是你家,而『流量』就是每条边最多能够通过的水量。

网络流的基础定义就是这些。

3. 算法导航

导航之前先简要给出网络流中的几个算法:

  1. 最大流
    最大流就是问从源点到汇点最多能够通过多少流量,也就是到你家最多还剩多少水。
  2. 最小割
    最小割有一点抽象,主要就是问删掉哪些边使得源点与汇点不再连通,输出边权最小值。
    可以证明,最大流=最小割。
  3. 最小费用最大流
    比如说现在运输要钱了,从一个湖到另一个湖运输是要钱的,请问在满足最大水量的前提下最小的钱数。
  4. 上下界网络流
    这个时候,每一条边的流量需要在一定范围 [ l , r ] [l,r] [l,r] 内,不能少于 l l l 也不能多于 r r r
    或者你可以简单理解为连接湖的路径上面有些发电站,为了保证发电站正常工作,通过的水流量最少为 l l l,但是不能太多以免损坏机器,最多为 r r r

算法导航:

有些算法还没有学习,没有放出标题,等以后吧。

猜你喜欢

转载自blog.csdn.net/BWzhuzehao/article/details/114949992