我一直试图找出一个多项式时间算法来解决这个问题,但是徒劳无功。我不熟悉NP完全的东西。只是想知道这个问题是否实际上是NP完全的,我不应该浪费任何进一步的努力试图提出一个多项式时间算法。
这个问题很容易描述和理解。给定bipartite graph,您必须从一个顶点集中选择最小顶点数,例如A,以便B中的每个顶点与至少一个选定顶点相邻。
答案 0 :(得分:1)
不幸的是,这是NP难的;从Set Cover轻松减少(实际上它可以说是表达同一问题的另一种方式)。在Set Cover中,我们给出了一个地面集F,一个F子集的集合C和一个数字k,我们想知道我们是否可以通过选择最多k个集来覆盖F的所有n个地面集元素。 C.为了减少这个问题:在B中为每个地面元素创建一个顶点,在A中为C中的每个集合创建一个顶点,并在地面元素v在集合u中时添加边缘uv。如果有一些算法可以有效地解决你描述的问题,它可以解决我刚刚描述的实例,它会立即解决原始的Set Cover问题(已知是NP-hard)。
有趣的是,如果允许我们从整个图形中选择顶点 (而不仅仅是从A),那么使用二分最大匹配算法可以在多项式时间内解决问题,因为{{3} }。