无向图独立集近似计数算法
对文章《Counting hypergraph matchings up to uniqueness threshold》的解读(算法部分)。
第 1 页
我们考虑如下问题:
给定一张简单无向图 \(G\),两个正整数 \(d,k\) 和一个正实数 \(\lambda>0\),其中结点分为两种:圆点和方点(共有 \(n\) 个圆点,编号为 \(1,\cdots,n\))。只存在圆点与方点之间的边(所以 \(G\) 是一张二部图)。所有圆点的点权都是 \(\lambda\)。
保证每个圆点的度数 \(\leq d+1\),每个方点的度数 \(\leq k+1\)。
定义一个方案为选择所有圆点的一个子集 \(S\)。我们称 \(S\) 是合法的,如果 \(S\) 中不存在两个圆点通过同一个方点相连(也就是说,\(S\) 是一个独立集);否则是不合法的。对于一个合法方案 \(S\),我们定义它的权重 \(w(S)\) 等于 \(S\) 中所有点权的乘积,也就是 \(\lambda^{|S|}\)。(换句话说,空集的权重是 \(1\);每选择一个圆点,方案的权重就会乘以 \(\lambda\)。)
我们现在想要计算
表示所有合法方案的权重之和。
当然,如果我们能精确计算 \(W\) 的值,那么就相当于可以求解最大独立集问题了,所以这是不可能的。
因此,我们的要求是:给定一个正实数 \(\varepsilon>0\),你需要输出两个非负实数 \(W^-,W^+\),使得 \(W^+\leq(1+\varepsilon)W^-\),并且 \(W^-\leq W\leq W^+\)。我们将这种答案称为对 \(W\) 的 \((1+\varepsilon)\)−近似。
如果你做不到,也可以退而求其次,输出对 \(\log W\) 的 \((1+\varepsilon)\)−近似。
你的算法的时间复杂度应与 \(n,d,k,\varepsilon^{-1}\) 的值有关。
考虑如下算法:我们记 \(F(u)\) 表示选用 \(u\) 这个点的赔率,即
如果我们能给出 \(F(1)\) 的 \((1+\varepsilon)\)−近似,那么其实就做完了。
为什么呢?先假设我们能给出的是 \(F(1)\) 的精确值。那么为了计算 \(W\),我们只需要计算 \(G\) 中所有不包含 \(1\) 的合法方案权值之和,然后再乘以 \(\big(1+F(1)\big)\) 即可。对于前者,我们只需要把 \(G\) 中的点 \(1\) 删掉,得到一张新图 \(G'\),然后调用完全相同的过程来计算 \(G'\) 的 \(W'\) 即可。
我们把上面的过程全部展开,也就是
其中 \(F(u,S_0,S_1)\) 表示在 \(G\) 中强制 \(S_0\) 里面的点全都不选、\(S_1\) 里面的点全都选,在此前提下选用 \(u\) 这个点的赔率,即
对于一般的 \(u,S_0,S_1\),\(F(u,S_0,S_1)\) 的值可能是一个正实数,或为 \(0,+\infty\),以及 \(\bot\)。
注意到如果 \(S_1\) 是独立集,\(S_0\cap S_1=\varnothing\),并且 \(u\notin S_0\cup N_G(N_G(S_1))\),那么 \(F(u,S_0,S_1)\) 的值一定是一个正实数,并且它等于把 \(G\) 中 \(S_0\cup N_G(N_G(S_1))\) 内的所有点全部删掉后得到的新图 \(G'\) 中 \(F(u)\) 的值。
这种「可以把原问题归约到形式完全相同、规模严格更小的子问题」的性质,我们称为「自归约性」。
但是现在我们给出的不是 \(F(1)\) 的精确值,而是 \(F(1)\) 的 \((1+\varepsilon)\)−近似。
那么,对于每个 \(i\),我们相当于给出了一对 \(F^-(i),F^+(i)\),使得 \(F^+(i)\leq(1+\varepsilon)F^-(i)\)(这里我们稍微滥用了 \(F\) 的记号)。全部乘起来以后,我们得到的 \(W^-,W^+\) 之间的比值为
(第一个不等号 \(\leq\) 成立,是因为 \(F^+(i)\geq F^-(i)\),由「糖水原理」可知。)
也就是说,我们只需要令 \(\varepsilon'=\sqrt[n]{1+\varepsilon}-1\),然后(在不同的图上)分别求 \(F(i)\) 的 \((1+\varepsilon')\)−近似即可。
第 2 页
那么现在我们的问题就只剩下:如何计算 \(F(1)\) 的 \((1+\varepsilon)\)−近似。
假设 \(G\) 是一棵树。那么我们只需要进行子树 DP 即可:
- 对于每个圆点 \(u\),记 \(F(u)\) 表示在只保留 \(u\) 以及 \(u\) 的子树的情况下,选用 \(u\) 这个点的赔率。
- 对于每个方点 \(a\),记 \(F(a)\) 表示相同的含义(即当且仅当 \(a\) 的邻居中存在一个圆点被选用时,称 \(a\) 被选用)。
那么我们有状态转移方程
令人惊讶的是,对于一般的无向图 \(G\),我们竟然总是可以找到一棵树 \(T\),使得 \(F(T,1)=F(G,1)\)。这棵树 \(T\) 被称为以 \(1\) 为根的「自回避游走树」,具体构造方式如下:
对于圆点 \(u\),定义函数 \(\text{BuildTree}(u,X)\):
- 第一步,枚举圆点 \(u\) 在 \(G\) 中的 \(d_u\) 个邻居 \(a_1,\cdots,a_{d_u}\),这些邻居都是方点。
- 第二步,对于每个 \(a_i\),调用函数 \(\text{BuildTree}\big(a_i,X\cup\{u\}\cup N_G(a_{i+1})\cup\cdots\cup N_G(a_{d_u})\big)\)。
- 第三步,取一个 \(u\) 作为根结点,把第二步建出的每棵树直接接到 \(u\) 下方,最后将 \(u\) 返回。
对于方点 \(a\),定义函数 \(\text{BuildTree}(a,X)\):
- 第一步,枚举方点 \(a\) 在 \(G\) 中的 \(k_a\) 个邻居 \(v_1,\cdots,v_{k_a}\),这些邻居都是圆点。
- 第二步,对于每个 \(v_i\),如果 \(v_i\in X\) 则直接跳过;否则,调用函数 \(\text{BuildTree}(v_i,X)\)。
- 第三步,取一个 \(a\) 作为根结点,把第二步建出的每棵树直接接到 \(a\) 下方,最后将 \(a\) 返回。
我们可以证明:直接调用 \(\text{BuildTree}(1,\varnothing)\) 建出的树 \(T\) 满足 \(F(T,1)=F(G,1)\)。
为了方便说明,我们假设 \(d_1=2\),并假设 \(1\) 在 \(G\) 中有两个邻居 \(a_1,a_2\),它们都是方点。
我们把 \(G\) 中的点 \(1\) 删掉,换成两个点 \(1',1''\),分别与 \(a_1,a_2\) 相连。我们把这样得到的新图称为 \(G'\)。特别地,在 \(G'\) 中,对于这两个点,我们认为它们的点权是 \(1\) 而不是 \(\lambda\)(也就是说,选择它们不会再使方案的权重乘以 \(\lambda\))。
考虑如下三个数值:
- \(G'\) 中所有同时包含 \(1',1''\) 的独立集权值之和。(乘以 \(\lambda\) 后,这等于 \(G\) 中所有包含 \(1\) 的独立集权值之和。)
- \(G'\) 中所有不包含 \(1'\)、但包含 \(1''\) 的独立集权值之和。
- \(G'\) 中所有同时不包含 \(1',1''\) 的独立集权值之和。(这等于 \(G\) 中所有不包含 \(1\) 的独立集权值之和。)
那么我们想要计算「第一个数与第三个数的比值」,它等于「第一个数与第二个数的比值」乘以「第二个数与第三个数的比值」。更一般地,我们有
也就是说,我们在 \(G\) 上递归计算 \(F(G,1)\) 的第一步,与在 \(T\) 上递归计算 \(F(T,1)\) 的第一步完全一致!
对于后续步骤,可以看到,在函数 \(\text{BuildTree}\) 中,集合 \(X\) 表示当前被删掉的结点(也就是被强制不选的结点)所构成的集合。如果我们从(删掉这些结点之后的)更小的新图 \(G^{(?)}\) 的角度来看,就可以发现:两个递归计算过程在该步上也是完全一致的。
综上所述,既然两个递归计算过程全程完全一致,它们得到的结果也必然始终相等,即 \(F(T,1)=F(G,1)\)。
按照这种方式建出的以 \(1\) 为根的「自回避游走树」\(T\) 满足 \(F(T,1)=F(G,1)\)。同时,\(T\) 保持了每个圆点的度数不超过 \(d+1\)、每个方点的度数不超过 \(k+1\) 的性质。然而问题在于,\(T\) 的深度可能达到 \(O(n)\) 级别,因此 \(T\) 的规模关于 \(n\) 是指数级的。这是因为 \(G\) 中同一个编号的点可能在 \(T\) 的不同位置多次出现。
第 3 页
现在我们该考虑 \((1+\varepsilon)\)−近似的问题了。
我们设置一个阈值 \(m\),在 \(\text{BuildTree}\) 的过程中记录当前递归深度(只计圆点;根结点的深度 \(=0\))。对于 \(\text{BuildTree}(u,X)\),如果当前递归深度 \(=m\),则不再继续递归,而是直接返回单独一个结点 \(u\)。加上这个剪枝后,整个 \(T\) 的结点个数就是 \(O\big((dk)^m\big)\)。
我们将 \(T\) 中每个结点的 DP 值 \(F\) 换成一个区间 \([F^-,F^+]\),表示:若将该结点子树中第 \(m\) 层以下的部分全部完整构建出来,则真实 DP 值的可能范围是多少。对于第 \(m\) 层的叶子,按照定义,这个区间可以取为 \([0,\lambda]\)。
对于更上层的某个圆点,有
我们采用迭代加深的方式:每次将 \(m\) 增大 \(1\)(从 \(1\) 开始),然后重新计算,直到传播到根结点处出现 \(\frac{F^+}{F^-}\leq1+\varepsilon\) 为止。
事实上,存在一个阈值 \(\lambda_c=\frac{d^d}{k(d-1)^{d+1}}\),当且仅当 \(\lambda\leq\lambda_c\) 时,随着 \(m\) 的增大,底层部分对根结点 DP 值的影响会越来越小。也就是说,随着 DP 值向上传播,这个比例 \(\frac{F^+}{F^-}\) 会逐渐减小,直到缩小到可接受的 \(1+\varepsilon\) 为止。
接下来我们对此进行严格证明。首先,我们添加一些点权为 \(0\) 的结点,将 \(T\) 补成满树(每个圆点都有 \(d\) 个方点儿子,每个方点都有 \(k\) 个圆点儿子),这不会改变我们的 DP 值区间(因为点权为 \(0\))。
我们首先证明:对于一棵 \(m\) 层满树 \(T\),若我们可以任意为每个结点赋予一个 \([0,\lambda]\) 之间的点权,那么使得 \(\frac{F^+}{F^-}\) 最大的赋值方式是将所有点权都取为 \(\lambda\)。我们对 \(m\) 做数学归纳,证明这一点。
记 \(R\) 表示所有点权均为 \(\lambda\) 时的 DP 值区间。我们归纳地证明:
根据归纳假设,对于每个 \(i=1,\cdots,d\),\(j=1,\cdots,k\),都有
(因为 \(R\) 的所有点权都是 \(\lambda\),子树的位置(下标 \(i,j\))不影响 DP 值,因此我们统一记作 \(0,0\) 或 \(0\)。)
首先,\((\boldsymbol{**})\) 可以直接推出 \(({\color{red}\boldsymbol{*}})\)。注意到对于每个 \(i=1,\cdots,d\):
因此
接下来我们来证明 \(({\color{red}\boldsymbol{**}})\)。
我们先给出引理 1:对于当前结点,若将其点权从某个 \(\lambda'\in[0,\lambda]\) 改为 \(\lambda\),则目标比例 \(\frac{1+kF^+}{1+kF^-}\) 只会变大。
记 \(F_\text{new}^+,F_\text{new}^-\) 为修改后的新值,则
根据糖水原理即可得证。
我们称一个下标 \(i\) 是好的,如果 \(F_i^+\geq R_0^+\);否则是坏的,如果 \(F_i^+\leq R_0^+\)。(一个下标 \(i\) 也可能既是好的又是坏的。)
于是我们有引理 2:如果下标 \(i\) 是好的,那么将 \(F_i^+,F_i^-\) 同时替换为 \(R_0^+,R_0^-\),只会让目标比例 \(\frac{1+kF^+}{1+kF^-}\) 变大。
我们用 \(F_\text{new}^+,F_\text{new}^-\) 表示替换后的新值。那么有 \(F_\text{new}^+=\frac{1+F_i^-}{1+R_0^-}F^+\),\(F_\text{new}^-=\frac{1+F_i^+}{1+R_0^+}F^-\)。由于下标 \(i\) 是好的,所以 \(1+F_i^+\geq1+R_0^+\),也就是说 \(F^-\leq F_\text{new}^-\)。我们稍后马上会用到这个性质。
我们要证明
这等价于
首先我们证明 \(F^+F_\text{new}^-\leq F^-F_\text{new}^+\),这等价于 \(\frac{F^+}{F^-}\leq\frac{F_\text{new}^+}{F_\text{new}^-}\),即 \(\frac{1+F_i^+}{1+F_i^-}\leq\frac{1+R_0^+}{1+R_0^-}\ ({\color{green}\boldsymbol{\bullet}})\),这是我们已经证明过的结论。
接着我们证明 \(F^+-F^-\leq F_\text{new}^+-F_\text{new}^-\)。在 \(({\color{green}\boldsymbol{\bullet}})\) 的基础上,结合刚才的 \(F^-\leq F_\text{new}^-\) 性质,我们注意到
综上,引理 2 成立。
因此,我们只需证明在所有下标 \(i\) 都是坏的这种特殊情况下,\(({\color{red}\boldsymbol{**}})\) 始终成立,即可推出它在所有情况下都成立。
既然所有下标都是坏的,这说明 \(F_i^+\leq R_0^+\) 总是成立。也就是说,对于每个 \(i\),一定存在一个 \(\alpha_i\in[0,1]\),使得 \(F_i^+=\alpha_iR_0^+\),并且 \(F_i^-\geq\alpha_iR_0^-\)。由于单独减小某个 \(F_i^-\) 只会让目标比例 \(\frac{1+kF^+}{1+kF^-}\) 变大,我们可以直接假设 \(F_i^-=\alpha_iR_0^-\) 总是成立。
我们想要证明
也就是
固定 \(\alpha_2,\cdots,\alpha_d\) 的值,把上式看作关于 \(\alpha_1\) 的函数。我们将证明当 \(\alpha_1\in[0,1]\) 时,这个函数是单调递增的。(这样一来,由于 \(\alpha_1,\cdots,\alpha_d\) 的对称性,该式必然在 \(\alpha_1=\cdots=\alpha_d=1\) 时取到最大值。而此时该式显然等于 \(0\)。)
我们考虑它的导数:
我们希望证明当 \(\alpha_i\in[0,1]\) 时,该导数总是 \(\geq0\)。由于两边均为非负实数,可以直接从乘除法的角度理解:
我们注意到 \(R_0^+=kR_{0,0}^+\),\(R_0^-=kR_{0,0}^-\),并且 \(R_{0,0}^-\leq R^-\leq R^+\leq R_{0,0}^+\)(这一性质称为「三明治性质」,将在后文证明)。若 \(a\leq b\leq c\leq d\),则有
因为 \(\frac{ab+b}{cd+c}\geq_{(糖水原理)}\frac{ab+a}{cd+d}\),而后者由糖水原理显然成立。
因此我们可以写出
这样一来,\(({\color{red}\boldsymbol{**}})\) 的证明就全部完成了。
第 4 页
综上所述,无论我们构建出的以 \(1\) 为根的「自回避游走树」\(T\) 长什么样,传播到最顶端之后都有 \(\frac{F^+}{F^-}\leq\frac{R^+}{R^-}\)。
我们考虑具体计算后者的值。为了简便起见,我们考虑每一层方点(而不是圆点)的 DP 值从下往上传播的过程。我们可以把它看作一个随着高度(到第 \(m-1\) 层方点的距离)迭代的区间,初始条件是 \(\big[R_0^-,R_0^+\big]=\big[0,k\lambda\big]\),迭代形式是
最后我们的 \(\frac{R^+}{R^-}=\left(\frac{1+R_{m-1}^+}{1+R_{m-1}^-}\right)^{d+1}\)(因为只有根结点可以有 \(d+1\) 个儿子)。由于 \(k\lambda\) 总是一起出现,在后文中我们直接使用 \(\lambda\) 来替换 \(k\lambda\)。
在 \([0,+\infty]\) 的范围内,注意到 \(f(x)\) 是一个严格单调递减的函数,且有唯一的不动点 \(\hat{x}=f(\hat{x})\)。
我们有如下结果:\(\frac{R_m^+}{R_m^-}\) 收敛当且仅当 \(\left|f'(\hat{x})\right|\leq1\)。
(直观上来说,如果 \(\left|f'(\hat{x})\right|>1\),那么在 \(\hat{x}\) 附近进行迭代操作会逐渐远离 \(\hat{x}\) 而不是接近它;事实上,\(R_m^+\) 的值会在两个吸引点 \(x^-,x^+\) 附近反复,这两个吸引点本身满足 \(x^-<\hat{x}<x^+\),且 \(x^+=f(x^-)\),\(x^-=f(x^+)\)。)
定义 \(\lambda_c=\frac{d^d}{(d-1)^{d+1}}\)。我们证明 \(\left|f'(\hat{x})\right|\) 的值随着 \(\lambda\) 严格递增,且当 \(\lambda=0\) 时 \(\left|f'(\hat{x})\right|=0\),当 \(\lambda=\lambda_c\) 时 \(\left|f'(\hat{x})\right|=1\)。
证明:注意到不动点 \(\hat{x}\) 满足 \(\hat{x}(1+\hat{x})^d=\lambda\),因此 \(\hat{x}\) 随着 \(\lambda\) 严格递增。因此
也随着 \(\lambda\) 严格递增。当 \(\lambda=0\) 时 \(\left|f'(\hat{x})\right|=0\) 显然。
另一方面,当 \(\lambda=\lambda_c\) 时,我们注意到 \(\frac{1}{d-1}\left(1+\frac{1}{d-1}\right)^d=\frac{d^d}{(d-1)^{d+1}}\),因此 \(\hat{x}=\frac{1}{d-1}\),进而 \(\left|f'(\hat{x})\right|=1\)。
我们记 \(g(x)=f(f(x))\),那么 \(\hat{x}=g(\hat{x})\)。我们有结论 1:对于任意 \(x\geq\hat{x}\),都有 \(g(x)-\hat{x}\leq\big(f'(\hat{x})\big)^2(x-\hat{x})\)。
结论 1 证明:根据中值定理,对于任意 \(x\geq\hat{x}\),一定存在一个 \(z\in[\hat{x},x]\) 使得
其中 \(\mu=g'\) 是 \(g\) 的导数。考虑 \(z\in[\hat{x},x]\) 时 \(\mu(z)\) 的最大值,我们证明这个最大值一定在 \(z=\hat{x}\) 时取到。这是因为
我们记 \(\mu(z)=\frac{u(z)}{v(z)}\),那么 \(\mu'(z)=\frac{u'(z)v(z)-v'(z)u(z)}{v(z)^2}\),也就是
我们再记 \(\mu'(z)=p(z)q(z)\)。我们只考虑 \(z>-1\) 的情况。此时我们总有 \(p(z)>0\),而 \(q(z)\) 严格单调递减。也就是说,存在唯一的临界点 \(z^*=\sqrt[d]{(d-1)\lambda}-1>-1\) 使得 \(q(z^*)=0\)。
也就是说,在 \(-1<z<z^*\) 时 \(\mu'(z)>0\),在 \(z=z^*\) 时 \(\mu'(z)=0\),在 \(z>z^*\) 时 \(\mu'(z)<0\)。
这样一来,为了证明在 \(z\in[\hat{x},x]\) 的范围内 \(\mu(z)\) 一定在 \(z=\hat{x}\) 时取到最大值,只需证明 \(\hat{x}\geq z^*\),也就是 \(q(\hat{x})\leq0\) 即可。在 \(\lambda\leq\lambda_c\) 的前提下,我们刚才已经证明了 \(\hat{x}\leq\frac{1}{d-1}\)。因此我们有
最后我们计算 \(\mu(\hat{x})=g'(\hat{x})=f'(f(\hat{x}))f'(\hat{x})=\big(f'(\hat{x})\big)^2\)。
最后代回中值定理的式子,我们得到 \(g(x)-\hat{x}=g(x)-g(\hat{x})\leq\big(f'(\hat{x})\big)^2(x-\hat{x})\)。结论 1 证毕。
对于 \(\lambda<\lambda_c\) 的情况,用这个式子,我们给出的界是 \(R_{2m}^+-\hat{x}\leq\big(f'(\hat{x})\big)^{2m}(\lambda-\hat{x})\)。我们最终需要的是根结点(一个圆点)处的 \(\frac{R^+}{R^-}\leq\sqrt[n]{1+\varepsilon}\approx1+\frac{\varepsilon}{n}\)。大体上来说,\(m\approx\log_{\left|f'(\hat{x})\right|^{-1}}\left(n\varepsilon^{-1}\right)\),但还有各种细节。不过事实上,只需要额外的 \(O(1)\) 层即可抵消掉各种细节带来的损耗(这个 \(O(1)\) 取决于参数 \(d,k,\lambda\) 的具体值,但当然不取决于 \(n,\varepsilon^{-1}\) 的值)。
在具体实现时,这些细节和计算其实都没有必要,这是因为我们可以直接对 \(m\) 进行迭代加深。综上所述,我们得到结论:当 \(\lambda<\lambda_c\) 时,设 \(\theta=\left|f'(\hat{x})\right|^{-1}>1\),那么 \(m=\log_\theta\left(n\varepsilon^{-1}\right)+O(1)\),算法的时间复杂度则是 \(O\big(n(dk)^m\big)\)。
由于 \(d,k,\lambda,\theta\) 都是常数,这个算法的时间复杂度实际上是关于 \(n,\varepsilon^{-1}\) 的多项式(这个多项式的次数取决于参数 \(d,k,\lambda\) 的具体值,但当然不取决于 \(n,\varepsilon^{-1}\) 的值)。同时,我们可以看到:这个算法是一个确定性算法。
第 5 页
最后我们再看 \(\lambda=\lambda_c\) 的情况。此时,中值定理那个式子本身并没有给出有用的信息。
我们注意到,在这种情况下 \(\hat{x}=z^*=\frac{1}{d-1}\),\(\mu(\hat{x})=\theta=1\),并且 \(\mu'(\hat{x})=0\)。
我们计算 \(\mu''(\hat{x})\)。由于 \(\mu'(z)=p(z)q(z)\),我们有 \(\mu''(\hat{x})=p'(\hat{x})q(\hat{x})+q'(\hat{x})p(\hat{x})\)。由于 \(q(\hat{x})=0\),我们得到:
我们将函数 \(g(x)\) 在点 \(x=\hat{x}\) 处进行泰勒展开。展开结果为
其中这个小 \(o\) 记号指的是当 \(x\geq\hat{x}\) 且 \(x\) 从右侧逐渐接近 \(\hat{x}\) 时,\(o\big((x-\hat{x})^3\big)\) 比 \((x-\hat{x})^3\) 的阶更小。
这意味着,对于每个正实数 \(c>0\),都一定存在一个(依赖于 \(c\) 的)阈值 \(x_0>\hat{x}\),使得对于任意 \(x\in[\hat{x},x_0]\),都有
我们取 \(c=\frac{(d+1)(d-1)^3}{12d^2}\),即 \(g(x)-\hat{x}\leq(x-\hat{x})-c(x-\hat{x})^3\)。接下来我们的目的是证明结论 2:一定存在一个(取决于参数 \(d,k,\lambda\) 的具体值的)层数 \(m_0\),使得对于所有 \(m\geq m_0\),都有
我们分成两个部分证明这个结论。首先我们重申两个性质:
- \(f(x)\) 是严格递减的函数;对于 \(x>\hat{x}\) 有 \(f(x)<\hat{x}\);对于 \(x<\hat{x}\) 有 \(f(x)>\hat{x}\)。
- \(g(x)\) 是严格递增的函数;对于 \(x>\hat{x}\) 有 \(g(x)>\hat{x}\);对于 \(x<\hat{x}\) 有 \(g(x)<\hat{x}\)。
并且,此时因为 \(\left|f'(\hat{x})\right|=1\),根据中值定理,对于任意 \(x\geq\hat{x}\),我们有 \(g(x)-\hat{x}\leq x-\hat{x}\),也就是 \(g(x)\leq x\)。
结论 2 第一部分:令 \(x_1=\min\left(x_0,\hat{x}+\frac{1}{\sqrt{4c}}\right)\)。我们证明一定存在一个 \(m_0\) 使得 \(R_{2m_0}^+\leq x_1\)。
令 \(x_2=\frac{\hat{x}+x_1}{2}\)。根据中值定理,对于任意 \(x\geq x_2\),一定存在一个 \(z\in[x_2,x]\) 使得:
也就是说
这意味着 \(R_{2m}^+-x_2\leq\mu(x_2)^m(\lambda-x_2)\),那么取
即可。
结论 2 第二部分:证明对于任意 \(m\geq m_0\),都有
我们使用数学归纳法:对于 \(m=m_0\) 的情况,第一部分已经得证。
对于 \(m\geq m_0+1\) 的情况,假设
我们要证明
这相当于:给定整数 \(m\geq2\) 和实数 \(t\in\left[0,\frac{1}{\sqrt{2cm}}\right]\),我们要证明
注意到函数 \(h(t)=t-ct^3\) 在 \(\left[0,\frac{1}{\sqrt{3c}}\right]\) 的范围内严格递增。因此,我们只需要证明
即可。
这等价于
也就是
后者显然成立。
这个结论可以用来得到 \(\lambda=\lambda_c\) 时针对 \(\log W\)(而不是针对 \(W\))的 \((1+\varepsilon)\)−近似,算法的时间复杂度是
具体计算过程不再展开。

浙公网安备 33010602011771号