我们将ROMAN-SUBSET定义为以下问题:
INPUT:有向图G =(V,E)和正整数k
输出:如果存在V的子集R,那么| R | < = k,和 这样G中的每个有向电路都包括至少一个顶点 从R开始,输出应该是" TRUE"否则,它应该是 " FALSE"
假设顶点覆盖(VC)问题是NP完全的,我必须证明ROMAN-SUBSET也是NP完全的。根据我的理解,这意味着接受VC输入,修改它,然后显示将其插入ROMAN-SUBSET算法将产生VC问题的结果。
我很难实现转型。我知道VC输入是图G和整数k,问题在于是否存在覆盖G中每个边的V的子集R,使得| R | < = k。很明显,R和k在ROM和VC之间是相似的,但我很难确定如何转换图形,以便每个有向周期(对于ROM)中的1个顶点对应于每个边缘(对于VC)。如何修改图形以证明VC可以简化为ROM?
谢谢!
答案 0 :(得分:3)
这是建筑。
在VC中选择无向图G = (V, E)
。
现在定义有向图G1 = (V, E1)
,对于(u,v)
中的每个边E
,(u,v)
中有两条边(v,u)
和E1
。
换句话说,新图形与旧图形相同,但每个无向边缘都被两个形成2个周期的有向边缘替换。
声明是G1
上的ROM跟随G
上的VC。
实际上,假设G1
上ROM的答案是假的。然后,对于一组小于k
个顶点的每个选择,都存在一个不在此集合中的循环。因此存在一个边缘,其端点不在集合中。但这意味着,对于k
中小于G
个顶点的集合的相同选择,存在一个边缘,其端点不在集合中,因此VC的答案为FALSE。
相反,假设G1
上的ROM答案为TRUE。然后存在包含少于V
个顶点的k
的子集,因此在给定任何循环的情况下,循环中存在至少一个顶点,该顶点位于集合中。但这意味着,对于E
中其中一个端点的任何边缘,因为E
中的边对应E1
中的2个周期。因此VC的答案是真的。