NPC规约问题 - 8.20

一、题目大意

证明支配集 (Dominanting Set) 问题是一个 NP 完全问题。

支配集的定义如下:

对于一个无向图 G=(V,E),对于 D⊆V,如果图 D 是图 V 的一个支配集,则对于 V 中的任意一个顶点 v,总有 1 或 2 成立。
1. v 是图 D 中的顶点;
2. v 与图 D 相邻。

支配集问题是指给出一个图 G 和一个预算 b,如果存在顶点数不大于 b 的支配集,找出其中一个;否则证明不存在满足预算的支配集。

二、规约目标

将 3SAT 问题规约为支配集问题。

三、构造方法

以一个例子说明构造方法,示例 3SAT 问题为 (a∨b∨c)∧(b∨~c∨d)∧(~a∨c∨d)

NPC规约问题 - 8.20_第1张图片

如上图所示,对逻辑式中出现的每一个变量 v,构建一个 3 阶完全图,三个节点分别为 v~vv',分别表示 v 为真v 为假v不确定;称 v~v 节点为文字节点,称 v' 为不确定节点。

对逻辑式中的每一个子句,构建一个节点,子句节点与子句中出现的每一个文字相连。

则对一个具有 k 个变量的 3SAT 问题,可以通过上述方法构造图 G 并寻找在预算为 k 下的支配集 D,如果 D 中包含文字 v,则对应 3SAT 问题中的 v为真;如果 D 中包含文字 ~v,则对应 3SAT 问题中的 v为假;如果 D 中包含节点 v',则变量 v 可以任选真或假;D 中不可能包含子句节点。

四、证明

1. 在预算为 k 的条件下,子句节点不可能出现在支配集中并且每个变量对应的三个节点恰好占据一个顶点

对于一个变量 v,因为其对应的不确定节点只与两个文字节点相邻,所以要使得不确定节点被支配,只可能有三种情况:

  1. v 在支配集中;
  2. ~v 在支配集中;
  3. v’ 在支配集中。

因为预算为 k,而每个变量的 3 阶完全图至少对应支配集中的一个顶点,因此如果支配集存在的话,每个变量恰好占据一个预算。

2. 子句节点均被支配当且仅当每个 3 阶完全图对应的选值使得 3SAT 问题成立

要使得所有子句成立,即子句中至少一个文字成立,即至少有一个与之相邻的文字被选中,也即是子句节点被支配。

综合 1 和 2 可以知道,3SAT 问题可以规约为支配集问题进行求解,也即是支配集问题是 NP 完全问题。

你可能感兴趣的:(算法设计与应用基础)