无向图独立集近似计数算法

对文章《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=\sum_{\text{合法方案 }S} w(S)=\sum_{\text{合法方案 }S}\lambda^{|S|} \]

表示所有合法方案的权重之和。

当然,如果我们能精确计算 \(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(u)=\frac{G\text{ 中所有包含 }u\text{ 的合法方案权值之和}}{G\text{ 中所有不包含 }u\text{ 的合法方案权值之和}} \]

如果我们能给出 \(F(1)\)\((1+\varepsilon)\)−近似,那么其实就做完了。

为什么呢?先假设我们能给出的是 \(F(1)\) 的精确值。那么为了计算 \(W\),我们只需要计算 \(G\) 中所有不包含 \(1\) 的合法方案权值之和,然后再乘以 \(\big(1+F(1)\big)\) 即可。对于前者,我们只需要把 \(G\) 中的点 \(1\) 删掉,得到一张新图 \(G'\),然后调用完全相同的过程来计算 \(G'\)\(W'\) 即可。

我们把上面的过程全部展开,也就是

\[W=\prod_{i=1}^n\Big(1+F\big(i,\{1,\cdots,i-1\},\varnothing\big)\Big) \]

其中 \(F(u,S_0,S_1)\) 表示在 \(G\) 中强制 \(S_0\) 里面的点全都不选、\(S_1\) 里面的点全都选,在此前提下选用 \(u\) 这个点的赔率,即

\[F(u,S_0,S_1)=\frac{G\text{ 中所有包含 }S_1\cup\{u\}\text{ 中所有点且不包含 }S_0\text{ 中任何点的合法方案权值之和}}{G\text{ 中所有包含 }S_1\text{ 中所有点且不包含 }S_0\cup\{u\}\text{ 中任何点的合法方案权值之和}} \]

对于一般的 \(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^+\) 之间的比值为

\[\frac{W^+}{W^-}=\prod_{i=1}^n\frac{1+F^+(i)}{1+F^-(i)}\leq_{(糖水原理)}\prod_{i=1}^n\frac{F^+(i)}{F^-(i)}\leq(1+\varepsilon)^n \]

(第一个不等号 \(\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\) 被选用)。

那么我们有状态转移方程

\[F(u)=\lambda\prod_{i=1}^{d_u}\frac{1}{1+F(a_i)}=\lambda\prod_{i=1}^{d_u}\frac{1}{1+\sum_{j=1}^{k_{a_i}}F(v_{i,j})} \]


令人惊讶的是,对于一般的无向图 \(G\),我们竟然总是可以找到一棵树 \(T\),使得 \(F(T,1)=F(G,1)\)。这棵树 \(T\) 被称为以 \(1\) 为根的「自回避游走树」,具体构造方式如下:

对于圆点 \(u\),定义函数 \(\text{BuildTree}(u,X)\)

  1. 第一步,枚举圆点 \(u\)\(G\) 中的 \(d_u\) 个邻居 \(a_1,\cdots,a_{d_u}\),这些邻居都是方点。
  2. 第二步,对于每个 \(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)\)
  3. 第三步,取一个 \(u\) 作为根结点,把第二步建出的每棵树直接接到 \(u\) 下方,最后将 \(u\) 返回。

对于方点 \(a\),定义函数 \(\text{BuildTree}(a,X)\)

  1. 第一步,枚举方点 \(a\)\(G\) 中的 \(k_a\) 个邻居 \(v_1,\cdots,v_{k_a}\),这些邻居都是圆点。
  2. 第二步,对于每个 \(v_i\),如果 \(v_i\in X\) 则直接跳过;否则,调用函数 \(\text{BuildTree}(v_i,X)\)
  3. 第三步,取一个 \(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\))。

考虑如下三个数值:

  1. \(G'\) 中所有同时包含 \(1',1''\) 的独立集权值之和。(乘以 \(\lambda\) 后,这等于 \(G\) 中所有包含 \(1\) 的独立集权值之和。)
  2. \(G'\) 中所有不包含 \(1'\)、但包含 \(1''\) 的独立集权值之和。
  3. \(G'\) 中所有同时不包含 \(1',1''\) 的独立集权值之和。(这等于 \(G\) 中所有不包含 \(1\) 的独立集权值之和。)

那么我们想要计算「第一个数与第三个数的比值」,它等于「第一个数与第二个数的比值」乘以「第二个数与第三个数的比值」。更一般地,我们有

\[\begin{aligned} F(G,1)=\lambda\prod_{i=1}^{d_1}F\Big(G',1^{(i)},\big\{1^{(1)},\cdots,1^{(i-1)}\big\},\big\{1^{(i+1)},\cdots,1^{(d_1)}\big\}\Big)\\ =\lambda\prod_{i=1}^{d_1}F\Big(G',1^{(i)},\big\{1^{(1)}\big\}\cup\cdots\cup\big\{1^{(i-1)}\big\}\cup N_G\big(a_{i+1}\big)\cup\cdots\cup N_G\big(a_{d_1}\big),\varnothing\Big)\\ =\lambda\prod_{i=1}^{d_1}\Big(1+F\Big(G,a_i,{1}\cup N_G\big(a_{i+1}\big)\cup\cdots\cup N_G\big(a_{d_1}\big),\varnothing\Big)\Big)^{-1} \end{aligned} \]

也就是说,我们在 \(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]\)

对于更上层的某个圆点,有

\[F^{\pm}=\lambda\prod_{i=1}^{d}\frac{1}{1+F_i^{\mp}},\quad F_i^{\mp}=\sum_{j=1}^kF_{i,j}^{\mp}. \]

我们采用迭代加深的方式:每次将 \(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 值区间。我们归纳地证明:

\[\frac{F^+}{F^-}\leq\frac{R^+}{R^-}\ ({\color{red}\boldsymbol{*}}),\quad \frac{1+kF^+}{1+kF^-}\leq\frac{1+kR^+}{1+kR^-}\ ({\color{red}\boldsymbol{**}}). \]

根据归纳假设,对于每个 \(i=1,\cdots,d\)\(j=1,\cdots,k\),都有

\[\frac{F_{i,j}^+}{F_{i,j}^-}\leq\frac{R_{0,0}^+}{R_{0,0}^-}\ (\boldsymbol{*}),\quad \frac{1+kF_{i,j}^+}{1+kF_{i,j}^-}\leq\frac{1+kR_{0,0}^+}{1+kR_{0,0}^-}\ (\boldsymbol{**}). \]

(因为 \(R\) 的所有点权都是 \(\lambda\),子树的位置(下标 \(i,j\))不影响 DP 值,因此我们统一记作 \(0,0\)\(0\)。)


首先,\((\boldsymbol{**})\) 可以直接推出 \(({\color{red}\boldsymbol{*}})\)。注意到对于每个 \(i=1,\cdots,d\)

\[\frac{1+F_i^+}{1+F_i^-} =\frac{\sum_{j=1}^k\big(1+kF_{i,j}^+\big)}{\sum_{j=1}^k\big(1+kF_{i,j}^-\big)} \leq_{(\boldsymbol{**}),(糖水原理)} \frac{1+kR_{0,0}^+}{1+kR_{0,0}^-} =\frac{1+R_0^+}{1+R_0^-}\ ({\color{green}\boldsymbol{\bullet}}). \]

因此

\[\frac{F^+}{F^-} =\prod_{i=1}^{d}\frac{1+F_i^+}{1+F_i^-} \leq\left(\frac{1+R_0^+}{1+R_0^-}\right)^d =\frac{R^+}{R^-}\ ({\color{red}\boldsymbol{*}}). \]

接下来我们来证明 \(({\color{red}\boldsymbol{**}})\)

我们先给出引理 1:对于当前结点,若将其点权从某个 \(\lambda'\in[0,\lambda]\) 改为 \(\lambda\),则目标比例 \(\frac{1+kF^+}{1+kF^-}\) 只会变大。

\(F_\text{new}^+,F_\text{new}^-\) 为修改后的新值,则

\[F_\text{new}^+=\frac{\lambda}{\lambda'}F^+,\quad F_\text{new}^-=\frac{\lambda}{\lambda'}F^-. \]

根据糖水原理即可得证。


我们称一个下标 \(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}^-\)。我们稍后马上会用到这个性质。

我们要证明

\[\frac{1+kF^+}{1+kF^-}\leq\frac{1+kF_\text{new}^+}{1+kF_\text{new}^-}\ (\text{引理 }2) \]

这等价于

\[F^++F_\text{new}^-+kF^+F_\text{new}^-\leq F^-+F_\text{new}^++kF^-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}^-\) 性质,我们注意到

\[F^+-F^-=\left(\frac{F^+}{F^-}-1\right)F^-\leq\left(\frac{F_\text{new}^+}{F_\text{new}^-}-1\right)F_\text{new}^-=F_\text{new}^+-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^-\) 总是成立。

我们想要证明

\[\frac{1+kF^+}{1+kF^-}\leq\frac{1+kR^+}{1+kR^-}\ ({\color{red}\boldsymbol{**}}) \]

也就是

\[\big(F^+-F^-\big)-\big(R^+-R^-\big)+k\big(F^+R^--F^-R^+\big)\leq0. \]

固定 \(\alpha_2,\cdots,\alpha_d\) 的值,把上式看作关于 \(\alpha_1\) 的函数。我们将证明当 \(\alpha_1\in[0,1]\) 时,这个函数是单调递增的。(这样一来,由于 \(\alpha_1,\cdots,\alpha_d\) 的对称性,该式必然在 \(\alpha_1=\cdots=\alpha_d=1\) 时取到最大值。而此时该式显然等于 \(0\)。)

我们考虑它的导数:

\[\begin{aligned} \big(1+kR^-\big)\big(F^+\big)'\big(\alpha_i\big)-\big(1+kR^+\big)\big(F^-\big)'\big(\alpha_i\big)\\ =\big(1+kR^+\big)\left(\frac{R_0^+}{1+\alpha_1R_0^+}\right)F^-\big(\alpha_i\big)-\big(1+kR^-\big)\left(\frac{R_0^-}{1+\alpha_1R_0^-}\right)F^+\big(\alpha_i\big). \end{aligned} \]

我们希望证明当 \(\alpha_i\in[0,1]\) 时,该导数总是 \(\geq0\)。由于两边均为非负实数,可以直接从乘除法的角度理解:

\[\big(1+kR^+\big)\left(\frac{R_0^+}{1+\alpha_1R_0^+}\right)F^-\big(\alpha_i\big)\geq\big(1+kR^-\big)\left(\frac{R_0^-}{1+\alpha_1R_0^-}\right)F^+\big(\alpha_i\big). \]

我们注意到 \(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{(1+a)b}{(1+d)c}\geq\frac{(1+b)a}{(1+c)d}, \]

因为 \(\frac{ab+b}{cd+c}\geq_{(糖水原理)}\frac{ab+a}{cd+d}\),而后者由糖水原理显然成立。

因此我们可以写出

\[\begin{aligned} \frac{\big(1+kR^+\big)R_0^+}{\big(1+kR^-\big)R_0^-}\geq\frac{\big(1+R_0^+\big)R^+}{\big(1+R_0^-\big)R^-} =\left(\frac{1+R_0^+}{1+R_0^-}\right)^{d+1}\\ \geq_{(\text{糖水原理})}\left(\frac{1+\alpha_1R_0^+}{1+\alpha_1R_0^-}\right)\prod_{i=1}^d\left(\frac{1+\alpha_iR_0^+}{1+\alpha_iR_0^-}\right) =\frac{\big(1+\alpha_1R_0^+\big)F^+\big(\alpha_i\big)}{\big(1+\alpha_1R_0^-\big)F^-\big(\alpha_i\big)}. \end{aligned} \]

这样一来,\(({\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]\),迭代形式是

\[R_i^-=f\big(R_{i-1}^+\big),\quad R_i^+=f\big(R_{i-1}^-\big),\quad f(x)=\frac{k\lambda}{(1+x)^d}. \]

最后我们的 \(\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\) 严格递增。因此

\[\left|f'(\hat{x})\right|=\frac{df(\hat{x})}{1+\hat{x}}=\frac{d\hat{x}}{1+\hat{x}}=d\left(1-\frac{1}{1+\hat{x}}\right) \]

也随着 \(\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]\) 使得

\[g(x)-g(\hat{x})=\mu(z)(x-\hat{x}), \]

其中 \(\mu=g'\)\(g\) 的导数。考虑 \(z\in[\hat{x},x]\)\(\mu(z)\) 的最大值,我们证明这个最大值一定在 \(z=\hat{x}\) 时取到。这是因为

\[\begin{aligned} \mu(z)=g'(z)=f'(f(z))f'(z)=\left(\frac{-df(f(z))}{1+f(z)}\right)\left(\frac{-df(z)}{1+z}\right)\\ =\frac{d^2\lambda g(z)}{\big((1+z)^d+\lambda\big)(1+z)}=\frac{d^2\lambda g(z)}{(1+z)^{d+1}+\lambda(1+z)}. \end{aligned} \]

我们记 \(\mu(z)=\frac{u(z)}{v(z)}\),那么 \(\mu'(z)=\frac{u'(z)v(z)-v'(z)u(z)}{v(z)^2}\),也就是

\[\begin{aligned} \mu'(z)=\frac{d^4\lambda^2g(z)-d^2\lambda g(z)\big((d+1)(1+z)^d+\lambda\big)}{\big((1+z)^{d+1}+\lambda(1+z)\big)^2}\\ =\frac{d^2(d+1)\lambda g(z)}{\big((1+z)^{d+1}+\lambda(1+z)\big)^2}\big((d-1)\lambda-(1+z)^d\big). \end{aligned} \]

我们再记 \(\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}\)。因此我们有

\[(d-1)\lambda-(1+\hat{x})^d=(d-1)\lambda-\frac{\lambda}{\hat{x}}=\lambda\left((d-1)-\frac{1}{\hat{x}}\right)\leq0。 \]

最后我们计算 \(\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\),我们得到:

\[\begin{aligned} \mu''(\hat{x})=\frac{-d^3(d+1)\lambda\hat{x}(1+\hat{x})^{d-1}}{\big((1+\hat{x})^{d+1}+\lambda(1+\hat{x})\big)^2}=\frac{-d^3(d+1)}{(1+\hat{x})\left(\frac{1+\hat{x}}{\hat{x}}+(1+\hat{x})\right)^2}\\ =\frac{-d^3(d+1)\hat{x}^2}{(1+\hat{x})^5}=\frac{-(d+1)(d-1)^3}{d^2}. \end{aligned} \]

我们将函数 \(g(x)\) 在点 \(x=\hat{x}\) 处进行泰勒展开。展开结果为

\[\begin{aligned} g(x)=\sum_{i=0}^{+\infty}\frac{g^{(i)}(\hat{x})}{i!}(x-\hat{x})^i\\ =g(\hat{x})+\mu(\hat{x})(x-\hat{x})+\frac{\mu'(\hat{x})}{2}(x-\hat{x})^2+\frac{\mu''(\hat{x})}{6}(x-\hat{x})^3+o\big((x-\hat{x})^3\big)\\ =x-\frac{(d+1)(d-1)^3}{6d^2}(x-\hat{x})^3+o\big((x-\hat{x})^3\big), \end{aligned} \]

其中这个小 \(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]\),都有

\[g(x)-\hat{x}\leq(x-\hat{x})-\left(\frac{(d+1)(d-1)^3}{6d^2}-c\right)(x-\hat{x})^3. \]

我们取 \(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\),都有

\[R_{2m}^+-\hat{x}\leq\frac{1}{\sqrt{2c(m-m_0+2)}}. \]


我们分成两个部分证明这个结论。首先我们重申两个性质:

  1. \(f(x)\) 是严格递减的函数;对于 \(x>\hat{x}\)\(f(x)<\hat{x}\);对于 \(x<\hat{x}\)\(f(x)>\hat{x}\)
  2. \(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]\) 使得:

\[g(x)-g(x_2)=\mu(z)(x-x_2) \]

也就是说

\[g(x)-x_2\leq g(x)-g(x_2)\leq\mu(x_2)(x-x_2) \]

这意味着 \(R_{2m}^+-x_2\leq\mu(x_2)^m(\lambda-x_2)\),那么取

\[m_0=\left\lceil\log_{\mu(x_2)^{-1}}\left(\frac{\lambda-x_2}{x_1-x_2}\right)\right\rceil \]

即可。


结论 2 第二部分:证明对于任意 \(m\geq m_0\),都有

\[R_{2m}^+-\hat{x}\leq\frac{1}{\sqrt{2c(m-m_0+2)}}. \]

我们使用数学归纳法:对于 \(m=m_0\) 的情况,第一部分已经得证。

对于 \(m\geq m_0+1\) 的情况,假设

\[R_{2(m-1)}^+-\hat{x}\leq\frac{1}{\sqrt{2c(m-m_0+1)}}. \]

我们要证明

\[R_{2m}^+-\hat{x}\leq\frac{1}{\sqrt{2c(m-m_0+2)}}. \]

这相当于:给定整数 \(m\geq2\) 和实数 \(t\in\left[0,\frac{1}{\sqrt{2cm}}\right]\),我们要证明

\[t-ct^3\leq\frac{1}{\sqrt{2c(m+1)}}. \]

注意到函数 \(h(t)=t-ct^3\)\(\left[0,\frac{1}{\sqrt{3c}}\right]\) 的范围内严格递增。因此,我们只需要证明

\[\frac{1}{\sqrt{m}}\left(1-\frac{1}{2m}\right)\leq\frac{1}{\sqrt{m+1}} \]

即可。

这等价于

\[\left(1-\frac{1}{2m}\right)^2\leq1-\frac{1}{m+1}, \]

也就是

\[\frac{1}{4m^2}\leq\frac{1}{m(m+1)}, \]

后者显然成立。

这个结论可以用来得到 \(\lambda=\lambda_c\) 时针对 \(\log W\)(而不是针对 \(W\))的 \((1+\varepsilon)\)−近似,算法的时间复杂度是

\[O\left(n(dk)^{O\left(\varepsilon^{-2}\right)}\right). \]

具体计算过程不再展开。


posted @ 2025-10-15 22:01  叶语星辰  阅读(93)  评论(0)    收藏  举报