这不是家庭作业,而是我在研究过程中遇到的一个问题。我需要知道这个问题是否是 NP 难的。在第一种情况下,我需要一个近似算法,而在后一种情况下,我需要一个有效的算法,为我提供最佳解决方案。
非正式描述:
想象 p 个人使用一些 t 工具。每个人只使用几种工具,但不是全部。有人写下谁使用了哪个工具。问题:如何找到最大的一组人,每个人至少使用了 k 个其他人也使用的工具?【之前的问题描述:和大家一样的工具?】工具数量限制为t'
我对此问题进行了正式描述,这可能会有所帮助:
令 G=(P,T,E) 是一个二分图,其中 P 代表人的集合,T 代表工具的集合。如果该人使用该工具,则在 P 中的节点 p 和 T 中的节点 t 之间存在一条边。目标是找到满足以下条件的集合 P',T': 1) 从 P' 中的任何 p',T' 中的任何 t' 都可以通过一条边到达。2)|P'|,即P'中的节点数最大。
一种低效的方法是获取每个子集 P' 并计算与 P' 中的 p' 相关联的每个 t' 的交集。不幸的是,此类子集的数量呈指数增长,计算很快变得难以处理。
非常感谢!