提前感谢您帮助解决这个问题。我正在上算法课,但我遇到了一些问题。根据教授的说法,当 C(1)=1 且 n 是 2 的幂时,以下情况成立:
C(n) = 2 * C(n/2) + n
解决为C(n) = n * lg(n) + n
C(n) = 2 * C(n/2) + lg(n)
解决为C(n) = 3 * n - lg(n) - 2
第一个我完全摸不着头脑。据我了解表格,所说的是 C(n) 解决了两个子问题,每个子问题都需要 n/2 工作来解决,以及额外的 n 工作量来拆分和合并所有内容。因此,对于问题的每个划分,常数 2 增加了 ^k 倍(其中 k 是分裂的数量),n/2 中的 2 也增加了 ^k 倍原因,最后一个 n 乘以 k 倍,因为每次拆分都会产生 k 倍的额外工作。
我的困惑源于第二个关系。鉴于第一个和第二个关系几乎相同,为什么第二个的结果不像 nlgn+(lgn^2)?