algorithm - 使用 Master 方法求解递归关系 -> 当 n 为偶数时 T(n) = 2T(n/2) + n^2 并且当 n 为奇数时 T(n) = 2T(n/2) + n^3
问题描述
T(n) ={ 2T(n/2) + n^2 when n is even and T(n) = 2T(n/2) + n^3 when n is odd
我单独解决了这个问题,我得到的解决方案theta(n^2)
好像 n 是偶数,theta(n^3)
如果 n 是从 master 定理的案例 3 中得出的奇数。但我不应该单独解决这个问题。
如何一起解决这样的递归关系?
T(n) ={ 2T(n/2) + n^2 when n is even and T(n) = 2T(n/2) + n^3 when n is odd
大师定理可以解决还是大师定理不适用?
请帮我解决这个问题。
解决方案
假设n = 2^k
某个整数k
,所以n
等于100...00
。然后,您可以将主方法应用于重复的偶数部分。并获得theta(n^2)
.
现在假设最高有效位也1
没有,例如100100..00
。因此,您将在递归树中至少有一个级别,所有节点的总和为n^3 * constant
,由此您获得theta(n^3)
.
因此,答案是theta(n^2)
ifn
是 2 的幂,theta(n^3)
否则。但是如果我们第一次遇到奇数n
并且它等于基本情况,那么它可能不是立方的。
在与 kelalaka 聊天之后,我想到如果 first1
是k
-th 从右边开始,n
那么如果k > (2/3)(1/lg 2)lg n
,我们不再关心(n/2^k)^3
。它仍然是O(n^2)
。
推荐阅读
- java - ThreadPoolExecutor 动态任务执行,等到所有任务完成
- matlab - 我想绘制线条和点并仅为matlab上的线条添加图例
- android - 横幅广告放置在 recyclerview 的第二个项目上
- django - 以 JSON 格式 Django 从数据库中检索数据或记录
- reactjs - 我想做一个表单组件。什么是内在属性?
- redis - Redis:集群到集群(另一个)复制
- java - 围绕数据库连接创建抽象接口
- mysql - SQL查询同一张表的不同、内部或连接2列并显示所有字段
- angular - 模态窗口关闭功能不起作用
- sql-server - Docker SQL Server 2017 上的 Linux 连接问题