专栏文章

有度数限制的最小生成树

算法·理论参与者 9已保存评论 8

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
7 条
当前快照
1 份
快照标识符
@mibysept
此快照首次捕获于
2025/11/24 01:00
3 个月前
此快照最后确认于
2025/12/01 19:31
3 个月前
查看原文
以下所有令有度数限制的点为 ss,常数为 kk

例 1 P5633(某一点度数恰好为一个常数)

考虑把 ss 从做法中独立出来,即建立一个以 ss 为根的生成树。
如果某一个非 ss 的点与 ss 间有直接连边,则它可以构成 ss 的一度,规定点权就是这条边的边权,如果没有直接连边点权为正无穷。
显然最后只能选 kk 个点权非正无穷的点当做 ss 的直接孩子。
先对非 kk 点求最小生成树(森林),组成答案的边也一定在最小生成树(森林)上,显然每一棵生成树中一定有一个点权非正无穷的,我们令点权最小的点为树根。
如果此时森林中树的个数大于 kk,则一定不可能存在答案。
因为此时我们需要增加树的个数,所以一定要破坏原有最小生成树(森林)。
考虑加点的代价,即为 +Euw(u,v)+E_u-w(u,v),注意能加树的当且仅当 EuE_u 不为正无穷。
所以排序做一下即可。

例 2 P5633(某一点度数小于等于一个常数)

与例 1 基本相同。
这里不必须加点,但是 +Euw(u,v)+E_u-w(u,v) 不一定为正,所以还需要加点求最小。

更深的思考

如果有多个点有度数限制,能不能有可靠解法?如果生成树是 kk 叉树,有没有非 NP-Hard 解法?
希望读者能够思考出这些问题,并拿到图灵奖!

评论

8 条评论,欢迎与作者交流。

正在加载评论...