找回密码
 快速注册
搜索
查看: 39|回复: 3

[数列] 计算渐近解

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2024-9-10 20:24 |阅读模式
本帖最后由 hbghlyj 于 2024-9-14 14:44 编辑 无法精确求解递归,如何计算渐近解?OEIS 上有很多例子$\ldots$

WolframAlpha 提供的一些示例
$$a(n)=n^2+n^5+\log (n)+18 a\left(\frac{n}{5}\right)+13 a\left(\frac{n}{3}\right)\tag1\label1$$
WolframAlpha
$a(n) \sim \dfrac{759375 n^5}{714376}$   ($\sim$意味着它们的比$\to1.$)


$$\tag2\label2
f(n)=\log (n)+18 f\left(\frac{n}{5}\right)+13 f\left(\frac{n}{25}\right)
$$
WolframAlpha
$f(n) =\Theta\left(n^{\log (9+\sqrt{94}) / \log (5)}\right)$.   ($\Theta$意味着它们的比有上界$C<\infty$和下界$c>0$)


$$\tag3\label3
r(k)=k^2+\log (k)+49 r\left(\frac{k}{6}\right)+29 r\left(\frac{k}{3}\right)
$$
WolframAlpha
$r(k) =\Theta(k^\alpha)$.     ($\alpha=3.2170 \ldots$ is the unique solution of $-29 \times 2^\alpha+6^\alpha-49=0$.)


这些看起来都是不同的形式。它们都可以通过Akra–Bazzi method来证明吗?

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2024-9-10 20:42
Tag 递推数列 上有很多类似的问答

Master theorem的推广形式包括Akra–Bazzi method.

https://oi-wiki.org/basic/complexity/#主定理-master-theorem

主定理 (Master Theorem)

Master Theorem 递推关系式如下

$$ T(n) = a T\left(\frac{n}{b}\right)+f(n)\qquad \forall n > b $$

那么

$$ T(n) = \begin{cases}\Theta(n^{\log_b a}) & f(n) = O(n^{\log_b (a)-\epsilon}),\epsilon > 0 \\\Theta(f(n)) & f(n) = \Omega(n^{\log_b (a)+\epsilon}),\epsilon\ge 0\\\Theta(n^{\log_b a}\log^{k+1} n) & f(n)=\Theta(n^{\log_b a}\log^k n),k\ge 0 \end{cases} $$

需要注意的是,这里的第二种情况还需要满足 regularity condition, 即 $a f(n/b) \leq c f(n)$,for some constant $c < 1$ and sufficiently large $n$。

证明思路是是将规模为 $n$ 的问题,分解为 $a$ 个规模为 $(\frac{n}{b})$ 的问题,然后依次合并,直到合并到最高层。每一次合并子问题,都需要花费 $f(n)$ 的时间。

依据上文提到的证明思路,具体证明过程如下对于第 $0$ 层(最高层),合并子问题需要花费 $f(n)$ 的时间 对于第 $1$ 层(第一次划分出来的子问题),共有 $a$ 个子问题,每个子问题合并需要花费 $f\left(\frac{n}{b}\right)$ 的时间,所以合并总共要花费 $a f\left(\frac{n}{b}\right)$ 的时间。 层层递推,我们可以写出类推树如下:

这棵树的高度为 ${\log_b n}$,共有 $n^{\log_b a}$ 个叶子,从而 $T(n) = \Theta(n^{\log_b a}) + g(n)$,其中 $g(n) = \sum_{j = 0}^{\log_{b}{n - 1}} a^{j} f(n / b^{j})$。 针对于第一种情况:$f(n) = O(n^{\log_b a-\epsilon})$,因此 $g(n) = O(n^{\log_b a})$。 对于第二种情况而言:首先 $g(n) = \Omega(f(n))$,又因为 $a f(\dfrac{n}{b}) \leq c f(n)$,只要 $c$ 的取值是一个足够小的正数,且 $n$ 的取值足够大,因此可以推导出:$g(n) = O(f(n)$)。两侧夹逼可以得出,$g(n) = \Theta(f(n))$。 而对于第三种情况:$f(n) = \Theta(n^{\log_b a})$,因此 $g(n) = O(n^{\log_b a} {\log n})$。$T(n)$ 的结果可在 $g(n)$ 得出后显然得到。

下面举几个例子来说明主定理如何使用。

  1. $T(n) = 2T\left(\frac{n}{2}\right) + 1$,那么 $a=2, b=2, {\log_2 2} = 1$,那么 $\epsilon$ 可以取值在 $(0, 1]$ 之间,从而满足第一种情况,所以 $T(n) = \Theta(n)$。

  2. $T(n) = T\left(\frac{n}{2}\right) + n$,那么 $a=1, b=2, {\log_2 1} = 0$,那么 $\epsilon$ 可以取值在 $(0, 1]$ 之间,从而满足第二种情况,所以 $T(n) = \Theta(n)$。

  3. $T(n) = T\left(\frac{n}{2}\right) + {\log n}$,那么 $a=1, b=2, {\log_2 1}=0$,那么 $k$ 可以取值为 $1$,从而满足第三种情况,所以 $T(n) = \Theta(\log^2 n)$。

  4. $T(n) = T\left(\frac{n}{2}\right) + 1$,那么 $a=1, b=2, {\log_2 1} = 0$,那么 $k$ 可以取值为 $0$,从而满足第三种情况,所以 $T(n) = \Theta(\log n)$。

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2024-9-10 21:24

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

 楼主| hbghlyj 发表于 2024-9-14 22:06
hbghlyj 发表于 2024-9-10 12:24
\eqref{1}\eqref{2}\eqref{3}都可以通过Akra–Bazzi method来证明吗?


对于递归\eqref{1},Akra–Bazzi method需要找到 \(p\)
$$18\left(\frac{1}{5}\right)^p + 13\left(\frac{1}{3}\right)^p = 1.$$
数值解 \(p≈2.61707\).
Akra–Bazzi method指出,渐近公式:$$\tag{*}\label{eq1}
a(n) =\Theta\left(x^p\left(1+\int_{1}^x\frac{u^2 + u^5 + \log(u)}{u^{p+1}} \, du\right)\right)$$
积分$\int_{1}^x\frac{u^2 + u^5 + \log(u)}{u^{p+1}} \, du$的精确值是可以计算的,但对于渐近解,我们只对主导项感兴趣,因此在分子中我们忽略 $u^2$ 和 $\log(u)$.
$$\int_{1}^x\frac{u^5}{u^{p+1}} \, du=\frac{x^{5-p}-1}{5-p}$$
代入 \eqref{eq1},\[x^p\left(1+\frac{x^{5-p}-1}{5-p}\right)\]
主导项为:$$\frac1{5-p}x^5$$
因此,$a(n) =\Theta\left(n^5\right).$
为了找到 $n^5$ 的系数,看 \eqref{1} 两边的主导项:
$$
c n^5=n^5+18 c\left(\frac{n}{5}\right)^5+13 c\left(\frac{n}{3}\right)^5
$$
在两边消去 $n^5$ 后,我们很容易得到 WolframAlpha 的答案$c = 759375/714376$.

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:46

Powered by Discuz!

× 快速回复 返回顶部 返回列表