NP完全问题的归约-碰撞集(HITTING SET)

原题:
在碰撞集(HITTING SET)问题中,给定一组集合{S1, S2, S3, …, Sn}和预算b,我们希望求一个与所有Si相交且规模不超过b的集合H(H与所有Si相交不为空)。

证明:
(1)hitting set问题是NP问题
只需要验证H的大小是否不超过b,以及验证H与Si的交不为空。
时间复杂度O(nHS)。
所以,hitting set问题为NP问题。
(2)所有问题可以归约到Hitting set问题
课本(《算法概论》)中已经证明,所有问题都可以归约到vertex cover问题。
所以,此处只要证明vertex cover问题可以归约到hitting set问题,则所有问题可以归约到hitting set问题。
以下证明vertex cover问题可以归约到hitting set问题。

  • 构建一个图G到hitting set的映射:G中的每个点对应hitting set中的每个元素,每条边对应一个Si
  • b个点的vertex cover对应大小为b的hitting set:对于G中每一条边,至少有一个端点在b个点的vertex cover集合中,所以这个集合与Si的交集不为空,即此集合对应hitting set
  • 大小为b的hitting set对应b个点的vertex cover:任意的Si与hitting set相交不为空,则每条边至少有一个端点被选中,即hitting set集合对应vertex cover

综上所述,vertex cover可以归约到hitting set问题。所以,hitting set问题是NP完全问题。

你可能感兴趣的:(算法)