……很久没更新了,随手更一发 →_→ 这次选取的题是 UyHiP 2016 Feb 的题,然而我并不会做。
Problem
给定一个 n 维的 0/1 cube,要求找若干个不过原点的超平面,使得这些超平面能够覆盖除了原点以外任意 {0,1}n 的整点。求至少要多少个超平面。
Solution
不妨设 k 个超平面能满足要求。考虑一个超平面,其方程为 wTx+b=0。则所有被这 k 个超平面覆盖的点即为满足 f(x)=∏_i=1k(w_iTx+bi)=0 的所有点。
我们把 f(x) 展开,写成一个关于 x=x1,2,…,n 的多项式。如果我们只关注 {0,1}n 上面的点的话,可以发现 xit=xi 。这关键的一步成为 Arithmetical method,还记得 TQBF 是 PSPACE-complete 的证明的同学应该知道这货。于是我们可以把 f(x) 化简为
f(x)=S∈[n]∑cSi∈S∏xi,
其中 cS 为对应的系数。注意到 f(0)=0,故 c∅=0。不妨把 f(x) 的常数项归一化,则我们有 2n−1 个未知的 cS,另外由于除原点以外的其余所有点都有 f(x)=0,我们还可以列出 2n−1 个方程,且这些方程之间是线性无关的(原因请自行思考)。故 cS 的解是唯一的。又有
∏_i=1n(1−xi)
能满足要求,故有
c∗S=(−1)∣S∣c∗∅=0.
注意到 f(x) 的每个单项式至多包含 k 个不同的 xi ,但是算术化之后的 f(x) 却有一项 x1x2⋯xn ,所以我们有 k≥n。
找出 n 个超平面满足给定条件是很简单的事,例如 ∀i∈[n],xi=1 或者 ∀t∈[n],∑xi=t 。