集合覆盖问题

来自testwiki
imported>Sw7772023年5月30日 (二) 11:38的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:Multiple issues 集合覆盖问题Set covering problemSCP)是组合数学计算机科学计算复杂性理论中的一个经典问题。

集合覆盖的决定性问题卡普的二十一个NP-完全问题之一。

定义

给定全集𝒰,以及一个包含n个集合且这n个集合的并集为全集的集合𝒮。集合覆盖问题要找到𝒮的一个最小的子集,使得他们的并集等于全集。

例如𝒰={1,2,3,4,5}𝒮={{1,2,3},{2,4},{3,4},{4,5}},虽然𝒮中所有元素的并集是𝒰,但是我们可以找到𝒮的一个子集{{1,2,3},{4,5}},我们称其为一个集合覆盖。

形式化的定义,给定全集𝒰和他的一组子集组成的集合𝒮覆盖指一个集合𝒞𝒞𝒮,且𝒞的元素的并集为𝒰

集合覆盖问题的决定性问题为,给定(𝒰,𝒮)和一个整数k,求是否存在一个大小不超过k的覆盖。集合覆盖的最佳化問題为给定(𝒰,𝒮),求使用最少的集合的一个覆盖。

决定性问题的集合覆盖是NP完全问题最佳化问题的集合覆盖是NP困难问题

此外,问题可以在每个集合上添加权值而变为带权集合覆盖问题。

Template:Authority control