题目:在一个无向图 G=(V,E) 中,我们称 D⊆V 为一个占优集,是指每个 v∈V 都属于D或与D中一个节点为邻。在占优集问题中,输入为一个图和预算b,目标是求图中的一个规模不超过b的控制集——如果该集存在,证明该问题是NP-完全的。
解:通过将顶点覆盖问题规约到此问题,来证明该问题是NP-完全的。
对于图
G=(V,E)
,做处理转化为图
G′=(V′,E′)
:对于图G中的每条边
uv∈E
,添加辅助顶点
w
和辅助边
如果图 G 有不大于b的顶点覆盖
S ,对于 G′ 中的每个顶点 v ,要么v∈S ,要么 v 与S 中的某个顶点为邻。用反证法来证明:假设此结论不成立,即存在顶点 v∈V′ , v∉S 并且 v 不与S 中的任一顶点相邻。 因为图 G′ 是连通的,所以一定存在边 uv∈E′ 且 u∉S 。 S 是图G 的顶点覆盖,所以 uv∉E ,也就是 uv 是一条添加的辅助边。- 假设u为辅助顶点, v为非辅助顶点。因为v为非辅助顶点,所以v的所有的非辅助边都被S所覆盖,v一定与S中的某个顶点相邻。这与假设矛盾。
- 假设u为非辅助顶点,v为辅助顶点。假设辅助顶点v所对应的非辅助边为uw。因为uw被S所覆盖, u∉S ,所以 w∈S 。对于v,存在边vw使得v与S中的某个顶点相邻。这与假设矛盾。
证得结论。
如果图G’有不大于b的控制集D,则对于G中的每条边uv,如果u,v中任意一个属于或者两个都属于D,那么边uv已经被D所覆盖。如果u,v都不属于D,那么需要调整D使得D覆盖边uv:如果uv边的辅助顶点w属于D,那么用u或v来替换w;如果w不属于D,那么对于辅助顶点w,不与D中的任一顶点相邻(仅与u,v相邻,u,v 不属于D),得出D不是覆盖集的结论,这与假设相矛盾。经过处理后可以G的不大于b的顶点覆盖。
已经证明得知顶点覆盖问题为NP完全问题,所以占优集问题也是一个NP完全问题。