碰撞集与有界搜索树法
选自《Parameterized Complexity Theory》Fixed-Parameter Tractability 1.3
让我们考虑下面的问题,我们可以称之为“专家组问题”:我们需要组建一个在某个我们不太了解的研究领域A中的小型专家小组。我们手头只有该领域的出版物数据库。以下是三种解决该问题的思路:
(1) 我们可以尝试找到一个小型的专家小组,使得领域A中的每篇论文都由该小组的某位科学家共同撰写。显然,这样一个小组的成员必须对该领域非常了解。
(2) 我们可以尝试找到一个小型的小组,使得该领域中的每个人都与至少一个小组成员有共同的出版物。然后,小组成员应该对该领域有一个良好的概述(也许不如方法1那样好,但仍足够好)。
(3) 如果方法(1)和(2)都行不通,我们可以尝试组建一个在该领域工作的科学家小组,使得他们之间没有共同的出版物。为了保证小组的广度,该小组应该有一个合理的规模。
但是,我们如何在只有出版物数据库的情况下找到满足这三种方法之一的专家小组呢?作为训练有素的复杂性理论家,我们将需要解决的问题建模为著名的碰撞集、支配集和独立集问题。
对于方法(1),我们考虑出版物数据库的协作超图(hypergraph)。超图是一个由顶点集合 V V V和超边集合 E E E组成的二元组,其中每个超边(hpyeredges)(有时也称为边)是 V V V的一个子集。因此,图是具有基数为2的(超)边的超图。在超图 H = ( V , E ) \mathcal{H} =(V,E) H=(V,E)中,碰撞集是一组顶点 S ⊆ V S ⊆ V S⊆V,它与每个超边相交(即对于所有 e ∈ E , S ∩ e ≠ ∅ e ∈ E,S ∩ e ≠ ∅ e∈E,S∩e=∅)。碰撞集问题是在给定超图 H \mathcal{H} H中找到给定基数 k k k的碰撞集。协作超图的顶点是出现在出版物数据库中的所有作者,超边是数据库中出版物的作者集合。方法(1)解决专家组问题相当于在协作超图和所需专家组大小 k k k中解决碰撞集问题。
对于方法(2)和(3),我们所需的所有信息都包含在协作图中。该图的顶点仍然是所有作者,并且如果两个作者有共同的出版物,则它们之间有一条边。回顾一下,在图 G = ( V , E ) G =(V,E) G=(V,E)中,支配集是一组顶点 S ⊆ V S ⊆ V S⊆V,使得 V S V \ S V S中的每个顶点都与S中的顶点相邻。支配集问题是在给定图G中找到给定基数k的支配集。方法(2)解决专家组问题相当于在协作图和专家组大小 k k k中解决支配集问题。最后,方法(3)解决专家组问题相当于在协作图和专家组大小 k k k中解决独立集问题。
不幸的是,所有这三个问题都是
N
P
NP
NP完全的。乍一看,这表明除非出版物数据库相当小,否则用这三种方法解决面板问题几乎没有希望。然而,我们只需要针对小的专家组大小
k
k
k解决问题。我们通过
k
k
k参数化这些问题,并考虑以下参数化问题:
在例子1.3中,我们已经定义了
p
−
I
n
d
e
p
e
n
d
e
n
t
−
S
e
t
p-Independent-Set
p−Independent−Set。
如果我们假设专家组的规模较小,对于这三个问题中的任何一个,一个好的FPT算法将能让我们用相应的方法解决专家组问题。不幸的是,我们在本书后面会看到,很可能这三个问题都不是固定参数可解的。
参数化算法设计方法的一个巨大优势在于其灵活性。如果对于某个问题最初明显的参数化分类为“难解”,我们无需放弃。我们总是可以寻找更多,也许是“隐藏”的参数。在我们的例子中,我们注意到我们可以预期协作超图的超边,也就是数据库中的出版物作者集合,相对较小。这暗示了以下更精细的参数化击中集问题(我们用
∣
M
∣
| M |
∣M∣表示有限集
M
M
M的基数):
在这里,我们实际上想要通过两个参数
k
k
k和
d
d
d来对问题进行参数化。然而,允许多个参数会进一步复杂化理论,为了避免这种情况,我们可以将所有意图参数的和作为唯一的实际参数。无论何时我们考虑具有多个参数的问题,我们都会采用相同的方法。对于我们的所有目的来说,这已经足够了,并且保持了理论的可行性。
超图 H = ( V , E ) H =(V,E) H=(V,E)的大小是数:
∣ ∣ H ∣ ∣ : = ∣ V ∣ + ∑ e ∈ E ∣ e ∣ ||\mathcal{H}|| := |V| + \mathop{\sum}\limits_{{e \in E} }|e| ∣∣H∣∣:=∣V∣+e∈E∑∣e∣,
这大致对应于 H \mathcal{H} H的合理表示的大小。
定理1.14.
p
−
c
a
r
d
−
H
i
t
t
i
n
g
−
S
e
t
p-card-Hitting-Set
p−card−Hitting−Set是固定参数可解的。更准确地说,存在一个算法在时间
O
(
d
k
∗
∣
∣
H
∣
∣
)
O(d^k* ||\mathcal{H}||)
O(dk∗∣∣H∣∣)
内解决了 H i t t i n g − S e t Hitting-Set Hitting−Set问题。
证明:不失一般性,我们总是假设 d ≥ 2 d ≥ 2 d≥2。对于基数最多为1的超图,碰撞集问题可以在线性时间内轻松解决。
我们使用一个直接的递归算法。设
e
e
e是输入超图
H
\mathcal{H}
H的一个超边。我们知道每个
H
\mathcal{H}
H碰撞集至少包含
e
e
e中的一个顶点。我们在这些顶点上进行分支:对于
e
e
e中的
v
v
v(For
e
∈
v
e\in v
e∈v),令
H
v
\mathcal{H}_v
Hv为通过删除
v
v
v和包含
v
v
v的所有超边而得到的超图。那么
H
\mathcal{H}
H为包含
v
v
v的
k
k
k元碰撞集,当且仅当
H
v
\mathcal{H}_v
Hv为
(
k
−
1
)
(k-1)
(k−1)元碰撞集。因此,
H
\mathcal{H}
H为
k
k
k元碰撞集当且仅当存在
v
∈
e
v ∈ e
v∈e,使得
H
v
\mathcal{H}_v
Hv具有
(
k
−
1
)
(k-1)
(k−1)元碰撞集。基于这一观察的递归算法如下所示(算法1.1)。如果输入超图具有基数为
k
k
k的碰撞集,则该算法返回
t
r
u
e
true
true,否则返回
f
a
l
s
e
false
false。
算法的正确性可以从上面的讨论中得出。为了分析运行时间,我们设
T
(
k
,
n
,
d
)
T(k, n, d)
T(k,n,d)为
H
S
(
H
′
,
k
′
)
HS(\mathcal{H}', k')
HS(H′,k′)的最大运行时间,其中
H
′
=
(
V
′
,
E
′
)
\mathcal{H}' = (V', E')
H′=(V′,E′),满足
∣
V
′
∣
≤
n
,
m
a
x
{
∣
e
∣
∣
e
∈
E
′
∣
}
≤
d
|V'| ≤ n,max\{|e| \ \ | e ∈ E'|\} ≤ d
∣V′∣≤n,max{∣e∣ ∣e∈E′∣}≤d,以及
k
′
≤
k
k' ≤ k
k′≤k。我们得到以下递推关系:
T
(
0
,
n
,
d
)
=
O
(
1
)
(
1.1
)
T (0, n, d) = O(1) \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1.1)
T(0,n,d)=O(1) (1.1)
T
(
k
,
n
,
d
)
=
d
⋅
T
(
k
−
1
,
n
,
d
)
+
O
(
n
)
(
1.2
)
T (k, n, d) = d · T (k − 1, n, d) + O(n)\ \ \ \ \ (1.2)
T(k,n,d)=d⋅T(k−1,n,d)+O(n) (1.2)
对于
n
,
k
∈
N
n,k ∈ N
n,k∈N,这里,
d
⋅
T
(
k
−
1
,
n
,
d
)
d · T(k - 1, n, d)
d⋅T(k−1,n,d)是第8行的递归调用数量的上界d。超图
H
v
\mathcal{H}_v
Hv可以在
O
(
n
)
O(n)
O(n)的时间内轻松计算,而所有其他操作都可以在常数时间内执行。设
c
∈
N
c ∈ N
c∈N为常数,使得
(
1.1
)
(1.1)
(1.1)中的
O
(
1
)
O(1)
O(1)项和
(
1.2
)
(1.2)
(1.2)中的
O
(
n
)
O(n)
O(n)项都被
c
⋅
n
c · n
c⋅n所限制。我们声称对于所有
d
≥
2
d ≥ 2
d≥2和
k
≥
0
k ≥ 0
k≥0,以下不等式成立:
T
(
k
,
n
,
d
)
≤
(
2
d
k
−
1
)
⋅
c
⋅
n
.
(
1.3
)
T (k, n, d) ≤ (2d^k − 1) · c · n. \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (1.3)
T(k,n,d)≤(2dk−1)⋅c⋅n. (1.3)
我们通过对k的归纳证明来证明这个断言。对于
k
=
0
k = 0
k=0,由于
c
c
c的定义,不等式成立。对于
k
>
0
k > 0
k>0,我们有:
T
(
k
,
n
,
d
)
≤
d
⋅
T
(
k
−
1
,
n
,
d
)
+
c
⋅
n
T (k, n, d) ≤ d · T (k − 1, n, d) + c · n
T(k,n,d)≤d⋅T(k−1,n,d)+c⋅n
≤
d
⋅
(
2
d
k
−
1
−
1
)
⋅
c
⋅
n
+
c
⋅
n
≤ d · (2d^{k−1} − 1) · c · n + c · n
≤d⋅(2dk−1−1)⋅c⋅n+c⋅n
=
(
2
d
k
−
d
+
1
)
⋅
c
⋅
n
= (2d^k − d + 1) · c · n
=(2dk−d+1)⋅c⋅n
≤
(
2
d
k
−
1
)
⋅
c
⋅
n
.
≤ (2d^k − 1) · c · n.
≤(2dk−1)⋅c⋅n.
这证明了 ( 1.3 ) (1.3) (1.3),从而证明了该定理。
例子1.16. 设
H
:
=
(
{
a
,
b
,
c
,
d
,
e
,
f
,
g
,
h
}
,
{
e
1
,
.
.
.
,
e
5
}
)
H :=( \{a, b, c, d, e, f, g, h\}, \{e1,...,e5 \})
H:=({a,b,c,d,e,f,g,h},{e1,...,e5}),
其中
e
1
:
=
{
a
,
b
,
c
}
e1 := \{a, b, c\}
e1:={a,b,c},
e
2
:
=
{
b
,
c
,
d
}
e2 := \{b, c, d\}
e2:={b,c,d},
e
3
:
=
{
c
,
e
,
f
}
e3 := \{c, e, f\}
e3:={c,e,f},
e
4
:
=
{
d
,
f
}
e4 := \{d, f\}
e4:={d,f},以及
e
5
:
=
{
d
,
g
}
e5 :=\{d, g\}
e5:={d,g}。该超图显示在图1.2中。
我们算法在输入为
(
H
,
3
)
(H, 3)
(H,3)的情况下执行的搜索树显示在图1.3中。我们假设在树的所有分支上,边的处理顺序都是
e
1
,
.
.
.
,
e
5
e1,...,e5
e1,...,e5。树的每个内部节点由在该节点处处理的超边
e
e
e标记,树的每条边由决定下一个递归调用的顶点
v
∈
e
v ∈ e
v∈e标记。我们留给读者计算用于递归调用的子超图
H
v
\mathcal{H}_v
Hv。叶子的颜色表示返回值:黑色和灰色叶子返回
t
r
u
e
true
true,白色叶子返回
f
a
l
s
e
false
false。每个黑色或灰色的叶子对应于
H
\mathcal{H}
H的一个碰撞集,其中包含从根到该叶子的路径上标记边的顶点。如果该击中集相对于集合包含是最小的,该叶子是黑色的。
引理1.17. 存在一个算法,给定一个超图 H \mathcal{H} H和一个自然数 k k k,能够在时间 O ( d k ⋅ k ⋅ ∣ ∣ H ∣ ∣ ) O(d^k · k · ||\mathcal{H}||) O(dk⋅k⋅∣∣H∣∣)内计算 H \mathcal{H} H的所有最小(相对于集合包含)基数不超过 k k k的碰撞集的列表,其中 d d d是最大超边基数。该列表最多包含 d k d^k dk个集合。
证明:考虑算法 E n u m e r a t e H S EnumerateHS EnumerateHS,如算法1.4所示。
断言1. 设
H
=
(
V
,
E
)
\mathcal{H} = (V,E)
H=(V,E)为一个超图,
k
∈
N
0
k ∈ \mathbb{N}_0
k∈N0。则
E
n
u
m
e
r
a
t
e
H
S
(
H
,
k
,
∅
)
EnumerateHS(\mathcal{H}, k, ∅)
EnumerateHS(H,k,∅)
返回一个碰撞集的集合
S
S
S,使得
H
\mathcal{H}
H的每个基数不超过
k
k
k的最小碰撞集都出现在
S
S
S中。
证明:我们通过对
H
\mathcal{H}
H的超边数
∣
E
∣
|E|
∣E∣进行归纳来证明略微更强的陈述,对于所有与
V
V
V不交的集合
X
X
X,
E
n
u
m
e
r
a
t
e
H
S
(
H
,
k
,
X
)
EnumerateHS(\mathcal{H}, k, X)
EnumerateHS(H,k,X)
返回一个集合
S
S
S,满足:
P16续