网络流--建图

网络流算法特点就是看看模板很简单,真要做网络流的题如果题目不告诉你甚至想不到这题是网络流,因此建图是网络流重中之重.
建图方法:
1.把有关系的点之类的建边,对于题目条件转化成对于流量或费用的的限制.
2.搞清楚是最大流还是费用流…
3.其实网络流题目还有很多类似的,名字很高端,什么最小割,二分图,这里给出定义(转载)

点覆盖、最小点覆盖:

  点覆盖集即一个点集,使得所有边至少有一个端点在集合里。或者说是“点” 覆盖了所有“边”。。

最小点覆盖(minimum vertex covering):

  点最少的点覆盖。

点覆盖数(vertex covering number):

  最小点覆盖的点数。

独立集:

  独立集即一个点集,集合中任两个结点不相邻,则称V为独立集。或者说是导出的子图是零图(没有边)的点集。

最大独立集(maximum independent set):

  点最多的独立集。

独立数(independent number):

  最大独立集的点。

若把上面最小点覆盖和最大独立集中的端点数改成点的权值,分别就是最小点权覆盖和最大点权独立集的定义。

然后通过推导,我们可以证明一下公式:(具体证明请看胡伯涛《最小割模型在信息学竞赛中的应用》,这里只考虑应用)

最大点权独立集=总权值-最小点权覆盖集。
最小点权覆盖集=图的最小割值=最大流。

4.学会转化的一些技巧,比如要求最大费用流可以把所有边费用取负后做,答案再取负,还有一些对于点的限制,可以把点一分为二,在拆出来的两个点间建边作为原来限制…

猜你喜欢

转载自blog.csdn.net/caoyang1123/article/details/79546221
今日推荐