主定理 f(n) = cn^k

问题描述

我想知道当 f(n) = xnk 和 n^(logba) = nk 其中 x 是大于 1 的整数。对于这种情况,f(n) 大于 n^(logba) 但是它不是多项式大于它,所以情况3不能出现。

对于这样的案例,我假设您使用案例 2,因为它们的大 O 是相同的,但这似乎不符合我能找到的等式。似乎我在直接从原始递归关系中取出 f(n) 而不是大 O 时犯了一个错误,因为这对我来说似乎很有意义,但我找不到对此或任何示例的任何说明方程中 f(n) 的空间还不是它自己的 big-O 。

编辑:当我说“我能找到的方程”时,我的意思是这个假设不符合主定理,因为我可以计算出来。因为我有它,我正在谈论的案例 2 的主定理看起来像 f(n) = Θ(n^(logba))。我认为重要的一点是,是否从以 + xnk 结尾的等式中取出 f(n) = xnk 或 f(n) = nk。为措辞不当表示歉意。

解决方法

我认为重要的一点真的是从以 + xnk 结尾的等式中我是否抽出 f(n) = xnk 或 f(n) = nk。

通常你应该取 f(n) = x * nk。因为主定理将 T(n) 定义为 aT(n/b) + f(n)。但在你的例子中,这并不重要。

f(n) 和 x * f(n) 的增长是相同的,如果 x 是一个正常数。在 f(n) = xnk 的情况下,它们都是 Θ(nk)。 (或者你可以说它们都是 Θ(x * nk)。这与 Θ(nk) 是相同的集合。)

由于 f(n) = Θ(nlogba),这里应该使用主定理的情况 2。在这种情况下,定理说 T(n) = Θ(nlogba * lgn)。

同样,在这里写 Θ(nlogba * lgn)Θ( 5 * nlogba * lgn)Θ(x * nlogba * lgn)。将函数与正常数相乘不会改变其渐近边界。主定理只给出函数的渐近边界,而不是它的精确值。