time-complexity - 计算递归函数的时间复杂度
问题描述
.0 < c < 1 ,T(n) = T(cn) + T((1 - c)n) + 1
基本级别:如果(n<=1)返回;数据类型 - 正整数
我必须找到这个递归函数的 Big-Theta 函数。我试图开发递归方程,但它从一个层次到另一个层次变得复杂,并且看不到任何形式。
我也试过这个 - 假设 c<(1-c). 所以 - 2T(cn) + 1 <= T(cn) + T((1-c)n)+1 <= 2T((1-c)n)+1
它给了我一些下限和上限,但不是 theta 界:(
解决方案
当 c 接近 0 或 1 时,递归接近 T(n) = T(n-1) + 2(假设 T(0) = 1 也是如此)。对于 n > 0,这具有线性函数 T(n) = 2n - 1 作为解。
对于 c = 1/2,递归变为 T(n) = 2T(n/2) + 1。看起来 T(n) = 2n - 1 是 n > 0 的解决方案。
这似乎有力地证明了函数 T(n) = 2n - 1 是所有 c 的解:它在两端和中间都有效。如果我们分...
2n - 1 = 2cn - 1 + 2(1-c)n - 1 + 1
= 2cn - 1 + 2n - 2cn - 1 + 1
= 2n - 1
我们发现 T(n) = 2n - 1 是一般情况的解。
推荐阅读
- postgresql - Postgres:如何在不影响引用它的其他 MV 的情况下更改 MV 的名称?
- node.js - 尝试在 Angular UI 中显示时,获取的已排序 API 数据(NodeJs &Mongoose)未按排序顺序显示
- javascript - 显示更新的表格而不刷新或重新加载页面
- javascript - 如何将日期值转换为天数
- csv - 使用 Simple Data Writer 将响应数据与其他标签一起保存
- javascript - 使用按钮将每个 td 单元格文本复制到剪贴板
- php - 你如何在 PHP 中发布 JSON 数据?(将原始 cURL 代码转换为 PHP)
- aws-api-gateway - 未从 API Gateway URL 获取标头
- scala - 在 RoundRobinPool 中获取所选演员?
- c# - 在 .NET 5.0 上向 Windows 窗体添加配置