《近似算法设计》第二章习题

2.3

首先有

\[OPT\geq \frac{1}{m} \sum w_i\]

同时对于最长的链 \(\ell\)

\[OPT\geq \sum_{i\in \ell}w_i\]

考虑在 \([a_i,b_i]\) 时段每一个 processor 都在工作。

\[|\cup [a_i,b_i]|\leq \frac{1}{m}\sum w_i\leq OPT\]

同时对于 \((b_{i+1},a_{i+2})\) 里面的每一个工作,他一定有 \((b_i,a_{i+1})\) 里的前序,否则他就可以在 \((b_{i},a_{i+1})\) 里处理。

所以这些位置的长度之和不超过最长链,不超过 \(OPT\)

所以是 2-approximation.

2.5

取欧拉序,依次连边

2.10

考虑第一次最优选择是 \(e_1\) ,第二次最优选择是 \(e_2\)

\[f(S+e_1+e_2)+f(S)\leq f(S+e_1)+f(S+e_2)\]

整理得

\[f(S+e_1+e_2)-f(S+e_1)\leq f(S+e_2)-f(S)\leq f(S+e_1)-f(S)\]

所以 \(f\) 的选择是“凸”的。

所以他满足 2.6 中的条件

\[f(S+e)-f(S)\geq \frac{1}{k}(f(O)-f(S))\]

所以就得到了 \((1-1/e)\)-approximation

2.11

  1. 和 2.10 类似

假设存在一个 \((1-1/e+\epsilon)\)-approximation,我们给出一个 Set Cover 的 \(O(n^{O(\log\log n)})\) 的做法。

显然 Set Cover 可以很快转化成 Coverage Problem

我们可以从 \(1\)\(m\) 调用这个算法,设第一次得到一个大于 \((1-1/e+\epsilon)m\) 的返回值时,记录 \(k_0\),显然 \(OPT\geq k_0\)

然后把覆盖的这些位置全部都扔掉,然后再调用,再扔掉,最多调用

\[\ell\leq \log_{1/(1-\frac{1}{e}+\epsilon)}n<\ln n\]

次,最后得到的近似解 \(\leq \ell k_0\leq c\ln n\cdot OPT(c<1)\)

2.16

CF600F