algorithm - 如何递归求解 T(n) = 5T(n/2) + n^2, T(1) = 2
问题描述
如何在不使用主定理的情况下获得 T(n) = 5T(n/2) + n^2, T(1) = 2 的渐近上界。
这是我的步骤,但我不知道如何处理最后的求和,因此无法找到这个递归函数的大 O 答案。
T(n) = 5T(n/2) + n^2
= 5^2 T(n/2^2) + 5(n/2)^2 + n^2
= 5^3 T(n/2^3) + 5^2(n/2^2)^2 + 5(n/2)^2 + n^2
= ...
= 5^i T(n/2^i) + 5^i(n/2^i)^2 + ...+ 5^2(n/2^2)^2 + 5(n/2)^2 + n^2
= 5^i T(n/2^i) + n^2 Sum of k from 0 to i, (5/4)^k
如何处理求和?谢谢。
解决方案
如何处理求和?
您在总和中描述的是几何级数[wiki]。这种形式的总和:
n
---
\ i
/ a
---
i=0
有一个已知的解决方案:
n
--- n+1
\ i a - 1
/ a = --------
--- a - 1
i=0
所以这里是你的总和:
k 从 0 到 i 的总和,(5/4)^k
等于:
4 * ((5/4)^(i+1) - 1)
我们知道它i
仅限于log 2 n,这应该足以解决方程。
推荐阅读
- javascript - 使用箭头显示下一张图片
- python - TeXit 如何将 LaTeX 转换为图像?
- python - 加载数据时xarray奇怪的性能问题
- python - cv2 摄像头不关机?
- replace - 上传 .xlsx 文件
- android - 如何将 Ionic 项目的 CI/CD 编写到 Android Google
- firebase - 如何在地图字段中创建唯一 ID?
- javascript - 用于检测标记的@users 的正则表达式
- laravel - Laravel Jetstream - 停止多设备登录
- python - For循环用Python中的给定变量列表构建DataFrame