recursion - 如何用代入法求解 () = 2(/2) +1
问题描述
在这里,我得到了一个递归函数,我想用替换方法 (数学归纳法)解决这个问题(找到时间复杂度)。
() = 2(/2) +1
在提到的问题中,我们的猜测应该是Ω(log n)。实际上,我使用数学归纳法来证明T(n) = O(n)然后因为n = Ω(log n)所以T(n) 也是如此。但我没有成功地证明它正确。
我已经看到了之前询问过的这个函数的所有答案,但没有用 Substitution Method 解决。你能帮我用这种方式证明吗?
解决方案
你的策略是正确的。我们通过归纳证明T(n) = Theta(n)
。
我们假设 wlog 为初始条件T(n) = 1
。
归纳假设:T(n) = 2n - 1
。
基本情况:T(1) = 1 = 2 * 1 - 1
.
归纳案例:
T(n) = 2T(n/2) + 1
= 2 (2n/2 - 1) + 1 (inductive hypothesis)
= 2n - 1 (QED)
因此T(n) = Theta(n)
,从那里它遵循例如,T(n) = Omega(log n)
等等。
推荐阅读
- typescript - 如何在索引类型中使用智能感知维护属性访问
- php - Laravel 查询生成器多选和命名列
- excel - 在字符串上使用 Right 函数时出现“编译错误:预期的数组”
- ios - Alamofire如何设置超时
- mysql - 如何删除mysql内部连接中的重复行
- reactjs - 创建 React App 单元测试不会在 VMWare Horizon Client 中执行
- c# - 如何在安装 Outlook 加载项时询问用户权限?
- c# - 如何将最大化的表单移动到另一个屏幕?
- vue.js - Vue CLI 3 使用波浪号“~”构建输出文件
- r - 返回遍历列表列表的循环内列表的名称