带权 dilworth

有传递闭包 DAG \(G\),求最大带权独立集 \(MIS(G)\)

dilworth: 传递闭包图的最大独立集等于最小链覆盖。证明

不难发现对于一个权值为 \(w\) 的点,可以拆成 \(w\) 个等价的点(之间两两无边),这不会影响独立集(最优方案如果不全选某类点则改成全选更优)。

从而可以用二分图多重匹配求 \(G\) 的最大带权独立集。

构造也和正常的是一样的:先求拆点后图 \(B\) 的最小带权点覆盖(用最小割,左侧 \(S\) 表示不选,右侧 \(T\) 表示不选,边两侧不能同时不选转成左向右连大权边),再取补转成最大带权独立集。\(u \in MIS(G) \iff u_l \in MIS(B) \land u_r \in MIS(B)\) (证明:鸽巢原理),然后就做完了。

posted @ 2022-07-08 16:42  RiverHamster  阅读(99)  评论(0编辑  收藏  举报
\