总结:网络流的最小路径覆盖模型
或许只是一个非常简单的题目类型,但是我智商太低,花了好久才理解这类模型之间的关联。
所以简单总结一下,欢迎指出错误。
原版问题#
问题 1:给定一张 ,需要选出最少的路径,覆盖所有点,路径不可有交。
这里直接给出做法:将每个点 拆成左部点 和右部点 ,对于原图中的一条边 ,在新图中连接 。之后新建源汇,连接所有 ,,则最小路径覆盖 。
蓝书上的理解方式是二分图最大匹配,这里之所以直接写作最大流,是为了更好地扩展到必须使用网络流算法求解的其他变种。
事实上,如果从“匹配”的角度来理解,那么一对匹配点的本质即为选出了某条路径上的一条边。对于未匹配点,未匹配的一个右侧点代表一条所选路径的起点,左端点代表终点。
因此一种天然的构造答案方式是:找出所有未匹配的右侧点,然后顺着往下把路径找出来即可。
这个经典问题可以被视为一类模型极其特殊的例子:对于给定的 ,选出一些路径,覆盖所有点。而在这个特例中,每条边费用均为 ,每个点选择次数均恰好为 。正是因为有这两个条件,我们才可以用“"计算最小路径覆盖。
问题 2:给定一张 ,需要选出最少的路径,覆盖所有点,允许路径相交。
对原图进行传递闭包之后就可以转化为上一个问题。
下面总结该问题的几种变式。这几种变式在原版的基础上对一些条件进行了限制。
变式 1:边带权与起点代价#
“瞬间移动”的本质即在经典问题的基础上增加了起点选取的代价。
考虑经典问题的建模方式。 的边本质上代表了 不是某条路径的起点,也就是说到达 的方式是“从某条路径走过来”。
那么我们同样连边 ,含义为点 的到达方式为“作为起点到达”。
再来考虑“边带权”的问题。类比普通二分图匹配与二分图带权匹配的关系,经典问题带权后,我们将最大流改为最小费用最大流即可。
另外,这种变式存在另一种理解方式(最小费用可行流),参见洛谷题解区 zyb 的题解。我没有细看,不知道这种理解方式能不能推广到其他几种变式。
变式 2:限制路径条数#
如果没有路径条数限制,那么本题与变式 1 完全一致。
处理方式也很简单:建一个新点 ,连边,容量为 。接着将所有 全部改为 。
不过在这道题中,我们没有必要特意将 建出,只需要让 号点承担 的功能即可。
变式 3:多次覆盖,限制结点覆盖次数#
所谓的“快洗”“慢洗”本质上就是从 向所有 的 连边,因此这仍然是一个路径覆盖问题。
大部分题解的理解角度是拆成“早上”“晚上”,如果从路径覆盖的视角理解这种建模方式,“晚上”就是路径覆盖的左部点,“早上”是右部点。
每个点覆盖次数有下限无上限,但显然最优方案下每个点覆盖次数都等于这个下限。
类比普通二分图匹配与二分图多重匹配的关系,修改 的容量即可。
另外,在题解区的一些代码中,左部点集出现了顺次向后连边的情况,这似乎与我们最初建立的二分图匹配模型并不一致。这种现象出现的原因是,如果按照套路建边(),边数将会非常多,不可接受。由于本题中左、右部点间的边容量均为 ,费用均为 ,我们可以采取这种方式减少边数。
边数有限,多次覆盖,每个点覆盖次数钦定。
有关边数的问题这里不再讨论,参见变式 。
本题中每个点覆盖次数同时存在上下限且相等。我们将 的容量同时修改为限制即可。
对于覆盖次数只有上限的问题,我还没做到过,不过我估摸着类似地改改边权就行了。
变式 4:限制路径数,求最多覆盖点数#
依照原题给出的限制和关系,我们不难将数字间的匹配关系建成一张 。下面我们要依次覆盖这张 中的点。
一种比较暴力的思路是,二分答案,然后直接建图跑经典模型。
但显然这样做的时间开销是极大的,不可取。
发现随着覆盖点数的增加,需要的路径数单调不增。因此考虑动态地建出这张图。
具体地,我们从小到大一个个加入新点并建边,然后寻找增广路。如果找不到增广路,说明必须增加一条路径。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?