算法作业8.9

这是一次期末作业,是使用规约来证明NP完全问题的,关于判定问题规约的定义大概意思就是可以使用一个多项式时间内的算法将问题1的实例装换问问题2的实例,,最后答案还是一致的,对于刚学完近世代数的我来说感觉就是在证明问题1和问题2是同构的,然后需要找到一个同构映射。而证明NP完全问题则是需要证明这个问题可以规约为一个已知的NP完全问题。下面还是先上题目吧。

----------------------题目---------------------

In the HITTING SET problem,we are given a family of sets{s1,s2,.......,sn}and a budget b,and we wish to find a set H of size <=b which intersects every Si,if such an H exists. In other words.show that HITTING SET is NP-complete.

---------------------题解-----------------------

大概意思就是给定一组集合{S1,S2,......,Sn},还有一个预算b,然后求一个集合H,和所有的Si相交,但是规模是不超过b的。这种问题的模式是不是很熟悉,没错,就是顶点覆盖问题,最小顶点覆盖的描述是,给定一个图G,如果图中每一条边至少有一个端点在S中,那么S就是一个顶点覆盖问题,最小顶点覆盖自然就是用最少的顶点覆盖图中所有的边。有没有觉得两个问题很相似,如果你还没看出来,给一个直观一点的解释就是,将Si看作图G的边,然后我们要求的H就是这么一个顶点覆盖S,H要和所有的Si相交,大概就对应着每一条边都至少有一个端点在S中。这样一来就很明显了,而这个给出的b也就是最小顶点覆盖了。现在我们是已知最小顶点覆盖是一个NP完全问题,因此这个所谓的碰撞集问题也是一个NP完全问题。

----------------------手动分割线------------------

see you next illusion


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