划分问题

划分问题表述为:

实例: 有限集合 AA ,对应于每个 aAa \in A,有正整数价值 S(a)Z+S(a) \in Z^{+}

询问: 是否存在子集 AAA^{\prime} \subseteq A,使得

aAS(a)=aAAS(a)\sum_{a \in A^{\prime}} S(a)=\sum_{a \in A-A^{\prime}} S(a)

划分问题可以看成的将一堆价值不等的物体分成两堆价值相等的,每一堆的价值是总价值的一半

核心思路

要将 3DM 问题多项式变换 PAR 问题的核心思想如下:

  1. W,X,YW,X,Y 中的每一个元素依次按顺序定义为一个只有一位为 1,其余位皆为 0 ,且不可能通过有限次进位互相得到的二进制值(目的是为了让其他元素没有办法通过累加得到其他元素的值,也即让这些元素唯一)。

  2. MM 中的每一个元素 mim_i 都作为 PAR 问题中集合 AA 的元素 aia_i,此时元素 aia_i 的价值 S(ai)S(a_i) 可以通过将 mim_i 中的三个元素分配的二进制值加起来得到。

  3. 当完美对集 MM' 存在时,将 MM' 中的所有元素相加,就可以以此得到一个唯一的由 MM' 确定的二进制串,其值确定,表示为 BB。此时将 MM 中的所有元素相加,也可以以此得到一个二进制串,值为 S(M)S(M),即

S(M)=i=1KS(ai)S(M) = \sum_{i=1}^{K} S\left(a_{i}\right)

  1. 此时,在 AA 中额外构建两个辅助元素 b1b_1b2b_2(也即 A 集合的总大小为 M+2|M| + 2

S(b1)=2i=1KS(ai)B,S(b2)=i=1KS(ai)+BS\left(b_{1}\right)=2 \sum_{i=1}^{K} S\left(a_{i}\right)-B, \quad S\left(b_{2}\right)=\sum_{i=1}^{K} S\left(a_{i}\right)+B

4i=1KS(ai)4 \sum_{i=1}^{K} S\left(a_{i}\right)

  1. 最后,通过方法不等式和推导可以证明,仅完美对集 MM' 存在时候, 可以找出一个 BBb1b_1 一起, MMM-M'b2b_2 一起。

NPC 证明

首先构建一个 3DM3 DM 问题实例, 即

实例: 集合 MW×X×Y,M \subseteq W \times X \times Y, 其中 WXYW 、 X 、 Y 是互不相交的集合, \quadW=X=Y=q|W|=|X|=|Y|=q 。 其中, W={w1,w2,,wq},X={x1,,xq},Y={y1,,yq},W=\left\{w 1, w 2_{,} \ldots, wq\right\}, X=\{x 1, \ldots, xq\}, Y=\{y 1, \ldots, yq\},M={m1,,mk}M=\{m 1, \ldots, mk\}


定义 pp

p=log2(K+1)p=\left\lceil\log _{2}(K+1)\right\rceil

据此可得 K2p1K \leq 2^{p}-1

随后, 为 W1X,YW_{1} X, Y 中的每个元素分配一个二进制值。将 W,X,YW, X, Y 中元索按顺序重新排列 为 w1,w2,,wq,xq+1,xq+2,,x2q,y2q+1,,y3q,w_{1}, w_{2}, \ldots, w_{q}, x_{q+1}, x_{q+2}, \ldots, x_{2 q}, y_{2 q+1}, \ldots, y_{3 q}, 定义函数 V()V(\cdot) 表示每一元素的值, 则 V(w1)V(y3q)V(w 1) \ldots V(y 3 q) 依次为 2p(3q1),2p(3q2),,2p(2q),,2p,20,2^{p(3 q-1)}, 2^{p(3 q-2)}, \ldots, 2^{p(2 q)}, \ldots, 2^{p}, 2^{0},3q3 q 个元素。

其值可以看做是下图每一元素的最右边的第一个格子。


据此, 定义 PAR 的实例 A={a1,a2,,ak,b1,b2}A=\{a_1, a_2, \ldots, a_k, b_1,b_2\}, 定义 S(ai)S(a_i) 的值为相应 mim_i 中的三个分 量对应的二进制值之和。即令 mi={wf(i),xg(i),yh(i)},f,g,hm_{i}=\left\{w_{f(i)}, x_{g(i)}, y_{h(i)}\right\}, f, g, h 分别表示 mimi 元素中三个分量在其对应集合中的下标, 则

S(ai)=V(w)+V(x)+V(h)S(ai)=V(w)+V(x)+V(h)

此时, 因为 M=K2p1|M|=K \leq 2^{p}-1, 而 V(wi)V(wi+1)=2p(3qi)2p(3qi+1)=12p\frac{V\left(w_{i}\right)}{V\left(w_{i+1}\right)}=\frac{2^{p(3 q-i)}}{2^{p(3 q-i+1)}}=\frac{1}{2^{p}},因此 KV(wi)<V(wi+1)KV(wi)<V(wi+1)

由于 KKMM 的数量, 也即每个 V(w),V(x),V(y)V(w), V(x), V(y) 在该集合内, 不可能由其他的 V(w)V(w) 累加得到。

BBW,X,YW, X, Y 中所有元素二进制值之和, 表示为:

B=j=03q12pjB=\sum_{j=0}^{3 q-1} 2^{p j}

因为所有元素唯一,所以只有完美对集中所有元素的二进制值之和为 BB


现在定义 AA 中剩余的两个元素 b1,b2b_1,b_2 的值分别为:

S(b1)=2i=1KS(ai)B,S(b2)=i=1KS(ai)+BS\left(b_{1}\right)=2 \sum_{i=1}^{K} S\left(a_{i}\right)-B, \quad S\left(b_{2}\right)=\sum_{i=1}^{K} S\left(a_{i}\right)+B

此时,得 A 中所有元素长度之和为

S(A)=i=1KS(ai)+S(b1)+S(b2)=4i=1KS(ai)S(A)=\sum_{i=1}^{K} S\left(a_{i}\right)+S\left(b_{1}\right)+S\left(b_{2}\right)=4 \sum_{i=1}^{K} S\left(a_{i}\right)

若实例 AA 存在完美划分 AA'

S(A)=2i=1KS(ai)S(A')=2 \sum_{i=1}^{K} S\left(a_{i}\right)

所以,若存在完美划分 AA',则 b1 和 b2 两个元素不可能同时在 AA' 中。因为 S(b1)+S(b2)=3i=1KS(ai)S(b_1)+S(b_2) =3 \sum_{i=1}^{K} S\left(a_{i}\right)


多项式时间证明: 在极限情况下, w1=2p(3q1),\quad w_{1}=2^{p(3 q-1)},MM 中所有元素均存在 w1,w_1, 此时

K2p(3q1)<2q2p(3q1)=23pq,K 2^{p(3 q-1)}<2^{q} 2^{p(3 q-1)}=2^{3 p q},

因此 S(M)<23pq+1,S(b2)<2S(M),S(b1)<2 S(M)S(M)<2^{3 p q+1}, \quad S(b_2)<2S(M), S(b_1)<2 ~S(M)

2S(M)<23pq+22 S(M)<2^{3 p q+2},因此这两个数,以及其他的数均可用不多于 3pq+13 pq+1 位的二进制数表示,这说明这项变换是多项式时间的。


(->) 若在 3DM 问题的这个实例中, MMM^{\prime} \subseteq MMM 的完美匹配,则在 PARPAR 问题相应实例中, 设 A={aimiM}{b1}A^{\prime}=\left\{a_{i} \mid m_{i} \in M^{\prime}\right\} \cup\left\{b_{1}\right\},则

S(A)=miMS(ai)+S(b1)=B+2i=1KS(ai)B=2i=1KS(ai)S\left(A^{\prime}\right)=\sum_{m_{i} \in M^{\prime}} S\left(a_{i}\right)+S\left(b_{1}\right)=B+2 \sum_{i=1}^{K} S\left(a_{i}\right)-B=2 \sum_{i=1}^{K} S\left(a_{i}\right)

于是我们证明了 3DMPAR,3DM \propto PAR, \quadPARNPCPAR \in NPC 。

(<-) 假设集合 AA 中存在子集 A,A^{\prime}, 使

aAS(a)=aAAS(a)=2i=1KS(ai)\sum_{a \in A^{\prime}} S(a)=\sum_{a \in A-A^{\prime}} S(a)=2 \sum_{i=1}^{K} S\left(a_{i}\right)

成立。那么在子集 AAAAA-A '中必有一个含有元索 b1b_{1} 但不含有元素 b2b_{2}。 不妨假设 AA' 中含有元素 b1b_{1} 而不含有元素 b2,b_{2}, 那么 A{ai1iK}A^{\prime} \cap\left\{a_{i} \mid 1 \leqslant i \leqslant K\right\} 中元索长度之和应该等于 B,B, 根据 上面讨论, A{ai1iK}A^{\prime} \cap\left\{a_{i} \mid 1 \leqslant i \leqslant K\right\} 中的元素所对应的 MM 中的子集 MM^{\prime} 是一个完美对集。