总结:网络流的最小路径覆盖模型

或许只是一个非常简单的题目类型,但是我智商太低,花了好久才理解这类模型之间的关联。

所以简单总结一下,欢迎指出错误。

原版问题

问题 1:给定一张 \(\text{DAG}\),需要选出最少的路径,覆盖所有点,路径不可有交。

这里直接给出做法:将每个点 \(u\) 拆成左部点 \(u\) 和右部点 \(u'\),对于原图中的一条边 \((u,v)\),在新图中连接 \((u,v')\)。之后新建源汇,连接所有 \((S,i)\)\((i',T)\),则最小路径覆盖 \(=n-maxflow\)

蓝书上的理解方式是二分图最大匹配,这里之所以直接写作最大流,是为了更好地扩展到必须使用网络流算法求解的其他变种。

事实上,如果从“匹配”的角度来理解,那么一对匹配点的本质即为选出了某条路径上的一条边。对于未匹配点,未匹配的一个右侧点代表一条所选路径的起点,左端点代表终点。

因此一种天然的构造答案方式是:找出所有未匹配的右侧点,然后顺着往下把路径找出来即可。

这个经典问题可以被视为一类模型极其特殊的例子:对于给定的 \(\text{DAG}\),选出一些路径,覆盖所有点。而在这个特例中,每条边费用均为 \(0\),每个点选择次数均恰好为 \(1\)。正是因为有这两个条件,我们才可以用“\(n-maxflow\)"计算最小路径覆盖。

问题 2:给定一张 \(\text{DAG}\),需要选出最少的路径,覆盖所有点,允许路径相交。

对原图进行传递闭包之后就可以转化为上一个问题。

下面总结该问题的几种变式。这几种变式在原版的基础上对一些条件进行了限制。

变式 1:边带权与起点代价

星际竞速

“瞬间移动”的本质即在经典问题的基础上增加了起点选取的代价。

考虑经典问题的建模方式。\(S\to u\) 的边本质上代表了 \(u\) 不是某条路径的起点,也就是说到达 \(u\) 的方式是“从某条路径走过来”。

那么我们同样连边 \(S\to u'\),含义为点 \(u\) 的到达方式为“作为起点到达”。

再来考虑“边带权”的问题。类比普通二分图匹配与二分图带权匹配的关系,经典问题带权后,我们将最大流改为最小费用最大流即可。

另外,这种变式存在另一种理解方式(最小费用可行流),参见洛谷题解区 zyb 的题解。我没有细看,不知道这种理解方式能不能推广到其他几种变式。

变式 2:限制路径条数

营救皮卡丘

如果没有路径条数限制,那么本题与变式 1 完全一致。

处理方式也很简单:建一个新点 \(S'\),连边\(S\to S'\),容量为 \(K\)。接着将所有 \(S\to u'\) 全部改为 \(S'\to u'\)

不过在这道题中,我们没有必要特意将 \(S'\) 建出,只需要让 \(0\) 号点承担 \(S'\) 的功能即可。

变式 3:多次覆盖,限制结点覆盖次数

餐巾计划问题

所谓的“快洗”“慢洗”本质上就是从 \(u\) 向所有 \([u+m,N]\)\(v'\) 连边,因此这仍然是一个路径覆盖问题。

大部分题解的理解角度是拆成“早上”“晚上”,如果从路径覆盖的视角理解这种建模方式,“晚上”就是路径覆盖的左部点,“早上”是右部点。

每个点覆盖次数有下限无上限,但显然最优方案下每个点覆盖次数都等于这个下限。

类比普通二分图匹配与二分图多重匹配的关系,修改 \(S\to u,u'\to T\) 的容量即可。

另外,在题解区的一些代码中,左部点集出现了顺次向后连边的情况,这似乎与我们最初建立的二分图匹配模型并不一致。这种现象出现的原因是,如果按照套路建边(\(u\to v',v\in[u+m,N]\)),边数将会非常多,不可接受。由于本题中左、右部点间的边容量均为 \(+\infty\),费用均为 \(0\),我们可以采取这种方式减少边数。

80 人环游世界

边数有限,多次覆盖,每个点覆盖次数钦定。

有关边数的问题这里不再讨论,参见变式 \(2\)

本题中每个点覆盖次数同时存在上下限且相等。我们将 \(S'\to u,u'\to T\) 的容量同时修改为限制即可。

对于覆盖次数只有上限的问题,我还没做到过,不过我估摸着类似地改改边权就行了。

变式 4:限制路径数,求最多覆盖点数

魔术球问题

依照原题给出的限制和关系,我们不难将数字间的匹配关系建成一张 \(\text{DAG}\)。下面我们要依次覆盖这张 \(\text{DAG}\) 中的点。

一种比较暴力的思路是,二分答案,然后直接建图跑经典模型。

但显然这样做的时间开销是极大的,不可取。

发现随着覆盖点数的增加,需要的路径数单调不增。因此考虑动态地建出这张图。

具体地,我们从小到大一个个加入新点并建边,然后寻找增广路。如果找不到增广路,说明必须增加一条路径。

posted @ 2021-12-09 14:52  LFCode  阅读(503)  评论(5编辑  收藏  举报