这个二分图优化任务是 NP 完全的吗?
Is this bipartite graph optimization task NP-complete?
我一直在试图找出一个多项式时间算法来解决这个问题,但没有成功。我不熟悉 NP 完全的东西。只是想知道这个问题是否真的是 NP 完全问题,我不应该浪费任何进一步的努力来尝试提出多项式时间算法。
这个问题很容易描述和理解。给定一个 bipartite graph,你必须从一个顶点集(比如 A)中 select 的最小顶点数是多少,这样 B 中的每个顶点都至少与一个 selected 顶点相邻.
不幸的是,这是 NP-hard;从 Set Cover 可以轻松减少(事实上,可以说这只是表达同一问题的不同方式)。在 Set Cover 中,我们给定了一个基础集 F、F 子集的集合 C 和一个数字 k,我们想知道是否可以通过选择至多 k 个集合来覆盖 F 的所有 n 个基础集元素C. 将此简化为您的问题:为每个地面元素在 B 中创建一个顶点,为 C 中的每个集合在 A 中创建一个顶点,并在地面元素 v 位于集合 u 中时添加边 uv。如果有某种算法可以有效地解决您描述的问题,它可以解决我刚才描述的实例,这将立即给出原始 Set Cover 问题(已知是 NP-hard)的解决方案。
有趣的是,如果允许我们从整个图(而不是仅从 A)中选择顶点,则该问题可以使用二分最大匹配算法在多项式时间内解决,因为至 Kőnig's Theorem.
我一直在试图找出一个多项式时间算法来解决这个问题,但没有成功。我不熟悉 NP 完全的东西。只是想知道这个问题是否真的是 NP 完全问题,我不应该浪费任何进一步的努力来尝试提出多项式时间算法。
这个问题很容易描述和理解。给定一个 bipartite graph,你必须从一个顶点集(比如 A)中 select 的最小顶点数是多少,这样 B 中的每个顶点都至少与一个 selected 顶点相邻.
不幸的是,这是 NP-hard;从 Set Cover 可以轻松减少(事实上,可以说这只是表达同一问题的不同方式)。在 Set Cover 中,我们给定了一个基础集 F、F 子集的集合 C 和一个数字 k,我们想知道是否可以通过选择至多 k 个集合来覆盖 F 的所有 n 个基础集元素C. 将此简化为您的问题:为每个地面元素在 B 中创建一个顶点,为 C 中的每个集合在 A 中创建一个顶点,并在地面元素 v 位于集合 u 中时添加边 uv。如果有某种算法可以有效地解决您描述的问题,它可以解决我刚才描述的实例,这将立即给出原始 Set Cover 问题(已知是 NP-hard)的解决方案。
有趣的是,如果允许我们从整个图(而不是仅从 A)中选择顶点,则该问题可以使用二分最大匹配算法在多项式时间内解决,因为至 Kőnig's Theorem.