首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最小集覆盖算法:寻找最优覆盖的大小

最小集覆盖算法:寻找最优覆盖的大小
EN

Stack Overflow用户
提问于 2015-04-19 05:30:42
回答 1查看 804关注 0票数 0

套盖问题包括以下几个方面:

给予:

  1. 一组物品。
  2. 一组集合S,其中每个集合都包含来自U.

找到C集集,以便:

  1. C是S的一个子集。
  2. C中的集合包含U中的所有项(至少一次)。

可以选择地,可以找到最小 C,也就是,在这里,c_x是尽可能小的。

Wiki链接设置封面问题

据我所知,SCP是NP-完全的,MSCP (或最优SCP)是NP-硬的,可以使用多种技术之一(贪婪算法、遗传算法、人工神经网络)。

然而,我想问的是,找出C的大小(即C_c)是否也是NP-难。

举一个例子:

代码语言:javascript
复制
Given the following S:
[2 4 6], [1 3 5], [3 2 1], [5 4 6], [2 3 5]

And U being: 
1 2 3 4 5 6

A possible Set-Cover (C) is:
[2 4 6], [1 3 5], [2 3 5]

However, the Optimal Set-Cover (C) is:
[3 2 1], [5 4 6]

Thus |C|, the size of the Optimal Set-Cover is 2.

我想在不解决问题的情况下找到C。这是NP难吗?如果没有,怎么才能找到这个呢?

EN

回答 1

Stack Overflow用户

发布于 2015-04-19 05:54:40

如果可以在P时间内找到最小覆盖的大小,那么也可以在P时间内找到最小覆盖。

对于S中的每一个X,求出U-X的最小覆盖的大小。如果它比U的最小覆盖小一个,那么你就知道有一个包含X的最小覆盖(注:U-X的最小覆盖从来不包括集合X)。重复,直到你找到最低限度的掩护。

请注意,封面的大小最多是x,每一次迭代都需要考虑,所以整个过程是P-时间,如果您有一种P-时间的方法来找到最小覆盖的大小。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29726190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档