网络流/二分图建模方法小结(不完全)

网络流/二分图建模方法小结(不完全)

  1. 二分图最大匹配: S ⟶ 1 X , X ⟶ 1 / I N F Y , Y ⟶ 1 T S \stackrel{1}\longrightarrow X,X\stackrel{1/INF}\longrightarrow Y,Y \stackrel{1}\longrightarrow T S1X,X1/INFY,Y1T
  2. 二分图最小覆盖:选择尽量少的点,使得每条边至少一个端点被覆盖。最小覆盖 = = =最大匹配(原理:最小割)
  3. 二分图最大独立集:选择尽量多的结点,使得任意两点不相邻。与最小覆盖互补。( X + Y − X+Y- X+Y最小覆盖)。
  4. DAG的最小路径覆盖:在图中找尽量少的路径,使得每个结点恰好在一条路径上。
  • 不相交路径覆盖:将所有结点拆为 X X X结点 i i i Y Y Y结点 i ′ i' i,如果原图有 i → j i\rightarrow j ij,那么加边 i → j ′ i\rightarrow j' ij,最小路径覆盖 = = =结点数 − - 最大匹配数。
  • 可相交路径覆盖:先 F l o y d Floyd Floyd求传递闭包,将所有连通的点之间加边,转化为上面的问题。
  1. 网格模型常见二分图建图方法:
  • 按照 ( r + c ) % 2 (r+c)\%2 (r+c)%2 0 / 1 0/1 0/1作为 X / Y X/Y X/Y结点(原理: X X X结点之间/ Y Y Y结点之间互不相邻)
  • 每行作为 X X X结点,每列作为 Y Y Y结点
  1. 最大权闭合子图:给定带权图 G G G,求权和最大的点集,使得起点在该点集中的任意边,终点也在该点集。建图方法:将所有正权点与 S S S相连,负权点与 T T T相连,容量为权值的绝对值,保留原图的边,则最大权闭合子图 = = =正权点的权和 − - 最小割
  2. 固定流量k的最小费用流:增广时检查一下如果 f l o w + a > k flow+a>k flow+a>k,则只增广 k − f l o w k-flow kflow单位
  3. 二分图的最大团:选最多点,使得这些点诱导的子图是完全图。最大团 = = =补图的最大独立集
  4. 二分图最小覆盖/最大独立集输出方案:DFS,从Y列的所有非匹配点出发,依次走非匹配边,匹配边,非匹配边,匹配边…最后以匹配边结尾,并把路径上的点均标记。这样,{ Y Y Y 列未标记+ X X X 列标记 }就是最小覆盖,{ Y Y Y 列标记+ X X X列未标记 } 就是最大独立集。
  5. 无源无汇有容量上下界网络的可行流:(原理:下界流满+所有点流量守恒,即:将新建的图的所有必要弧合并回原图的这一过程,满足所有边的下界必定流满 + + +所有点入流量 = = =出流量)
    ①增加一个附加源和汇S,T。
    ②把每个节点的 ∑ b u , i \sum{b_{u,i}} bu,i ∑ b i , v \sum{b_{i,v}} bi,v求出来, b b b是指下界。
    ③对于每个节点,若 ∑ b u , i − ∑ b i , v > 0 \sum{b_{u,i}}-\sum{b_{i,v}}>0 bu,ibi,v>0,则添一条从 S S S i i i,容量为 ∑ b u , i − ∑ b i , v \sum{b_{u,i}}-\sum{b_{i,v}} bu,ibi,v的边。
    ∑ b u , i − ∑ b i , v < 0 \sum{b_{u,i}}-\sum{b_{i,v}}<0 bu,ibi,v<0,则添一条从 i i i T T T,容量为 ∑ b i , v − ∑ b u , i \sum{b_{i,v}}-\sum{b_{u,i}} bi,vbu,i的边。
    ④对于原网络中的点,连一条容量为 c − b c-b cb 的边。
    ⑤求从 S S S T T T的最大流,若所有与 S S S相连的边或与 T T T相连的边都满载,则这是一个可行解,方案为④中所连边的剩余流量 + b +b +b
  6. 有源汇有容量上下界网络的最大/最小流:先求有源汇的网络有上下界的可行流,这一问题与上面问题的唯一不同在于,并非所有点满足流量守恒,那么,我们连接 t → s t \rightarrow s ts,下界为 0 0 0,上界为 I N F INF INF,就转化为了前述问题。建好图后,运行最大流,这个可行流的大小就是 t → s t \rightarrow s ts这条边的流量。然后删去 t → s t \rightarrow s ts这条边(必须删,并且清掉 G [ s ] G[s] G[s] G [ t ] G[t] G[t]对应的,若要求最大流,就求 s − t s-t st最大流,答案就是可行流+{ s − t s-t st最大流};若要求最小流,就求 t − s t-s ts最大流答案就是可行流-{ t − s t-s ts最大流}。
  7. 费用与流量平方成正比的最小费用流:设流量为 x x x时,费用为 a x 2 ax^2 ax2。用拆边法,容量为 c c c的边拆成 c c c条容量均为1的边,费用分别为 a , 3 a , 5 a , 7 a . . . a,3a,5a,7a... a,3a,5a,7a...,转化为最小费用最大流问题。
  8. 流量不固定的最小费用流:费用关于流量是下凸函数,因此不断增广,直到 S P F A SPFA SPFA中单位流量费用为正时停止。
  9. 区间k覆盖问题:数轴上有一些左闭右开/左开右闭/左开右开的区间,选出权和最大的区间集,使得数轴上任一点最多被k个选中的区间覆盖。建图:所有的区间 ( u → v ) (u \rightarrow v) (uv)加边 u ⟶ 1 , − w v u\stackrel{1,-w}\longrightarrow v u1,wv,所有相邻点 i ⟶ k , 0 i + 1 i\stackrel{k,0}\longrightarrow i+1 ik,0i+1
  10. 最大密度子图:给定一个无向图,要求它的一个子图,使得子图中边数 ∣ E ∣ |E| E 与点数 ∣ V ∣ |V| V 的比值最大,即最大化: ∣ E ∣ ∣ V ∣ \frac{|E|}{|V|} VE。二分答案为k ,则要求解的问题是:选出一个合适的点集 V V V 和边集 E E E,令 ( ∣ E ∣ − k ∗ ∣ V ∣ ) (|E|−k∗|V|) (EkV) 取得最大值。所谓“合适”是指满足如下限制:若选择某条边,则必选择其两端点。 建图:以原图的边作为左侧顶点,权值为1;原图的点作为右侧顶点,权值为 −k。若原图中存在边 ( u , v ) (u,v) (u,v),则新图中添加两条边 ( [ u v ] − > u ) , ( [ u v ] − > v ) ([uv]−>u),([uv]−>v) ([uv]>u),([uv]>v),,转换为最大权闭合子图。
  11. 给定图 G = < V , E > G=<V,E> G=<VE>,初始时 1 1 1属于 A A A, n n n属于 B B B,对于点 i i i,划给 A A A集合得 V A i V_{A_i} VAi分,划给 B B B集合得 V B i V_{B_i} VBi分,对于一条边 i i i,若它连接两个 A A A集合点,得 E A i E_{A_i} EAi分,若连接两个 B B B集合点,得 E B i E_{B_i} EBi分,分别连接 A , B A,B A,B点,扣除 E C i E_{C_i} ECi分,求最大总得分。建图方法: s ⟶ V A i i , i ⟶ V B i t s \stackrel{V_{A_i}}\longrightarrow i,i\stackrel{V_{B_i}}\longrightarrow t sVAii,iVBit ,例外的, s ⟶ I N F 1 s \stackrel{INF}\longrightarrow 1 sINF1, n ⟶ I N F t n \stackrel{INF}\longrightarrow t nINFt,对于原图的每条边,将其转化为容量为 E A i 2 + E B i 2 + E C i \frac{E_{A_i}}{2}+\frac{E_{B_i}}{2}+E_{C_i} 2EAi+2EBi+ECi的双向边,并且对于两个端点,再连边 s ⟶ E A i 2 i , i ⟶ E B i 2 t s \stackrel{\frac{E_{A_i}}{2}}\longrightarrow i,i\stackrel{\frac{E_{B_i}}{2}}\longrightarrow t s2EAii,i2EBit,求出最小割,答案就是 ∑ V A i + ∑ V B i + ∑ E A i + ∑ E B i − \sum{V_{A_i}}+\sum{V_{B_i}}+\sum{E_{A_i}}+\sum{E_{B_i}}- VAi+VBi+EAi+EBi最小割。
  12. Dilworth定理:对于任意偏序集都有,最大反链(最大独立集)=最小链的划分(最小可相交路径覆盖). 通过Dilworth定理, 我们就可以把偏序集(DAG)的最大独立集问题转化为最小可相交路径覆盖问题了。
  13. 霍尔定理:二分图G中的两部分顶点组成的集合分别为 X , Y X, Y X,Y(假设有 ∣ X ∣ ≤ ∣ Y ∣ |X|≤|Y| XY)。G中有一组无公共点的边,一端恰好为组成X的点(也就是存在完美匹配)的充分必要条件是:X中的任意k个点至少与Y中的k个点相邻,即对于X中的一个点集W ,令 N ( W ) N(W) N(W)为W的所有邻居, 霍尔定理即对于任意W, ∣ W ∣ ≤ ∣ N ( W ) ∣ |W|≤|N(W)| WN(W)。推论:假设两边的点集分别为X,Y,则二分图的最大匹配数为 ∣ X ∣ − m a x { ∣ W ∣ − ∣ N ( W ) ∣ } |X|−max\{|W|−|N(W)|\} Xmax{WN(W)},其中W是X的子集
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值