math - 如何解决 T(n+1)=T(n)+logn 的复杂度
问题描述
所以我有这个递归:
T(1)=a, n=1
T(n+1)=T(n)+logn, n>=1
当我通过替换解决时,我得到这个表达式:
T(n)=log(n-1)...+log(n-k)+T(n-k)
(K 为 n-1)
然后,
T(n)=log(n-1)...+log(1)+T(1)
log(1)=0 和 T(1)=a
从那里,我不知道如何获得复杂度为 O(n^2) 的表达式 [这是练习中需要的]
谁能帮我?
谢谢
解决方案
如你所见T(n) = log(n!)
。您可以使用斯特林公式并替换n!
为(n/e)^n * \sqrt{2\pi n}
。因此,您将获得T(n) ~ n log(n/e) + 0.5 log(2 pi * n) = Theta(n log(n))
.
推荐阅读
- javascript - 在循环中使用 Promise 会导致 Promise 失败
- html - CSS变换旋转问题
- visual-studio - 如何在 Visual Studio 2019 项目中恢复我的文件夹?
- php - 提供不同的抽象类在vendor中扩展
- javascript - React - 将 javascript 元素属性向下传递给子组件
- oauth - 实施从谷歌 Oauth 注销
- jquery - 带有分数的 Swiper 滑块进度条不起作用
- unit-testing - 使用项目反应器重试单元测试
- javascript - 我不知道如何将来自 document.write 的输入存储在变量中
- c# - 如何在 C# web api 中的查询字符串上绑定 guid 列表?