如何在递归中找到 T(n) 的渐近上界?
How to find the asymptotically upper bounds for T(n) in the recurrences?
我想知道如何准确找到 T(n) 的严格上限?
例如下面的一个例子:
T(n)=T( n/2 + n(1/2)) + n.
我不太确定如何在这里使用域或范围转换。
我在这里使用域转换。
让
n = 22k ==> n/2 = 22k-1
and n1/2 = 22k-1
之后,我不知道如何用T(n)中的加法来解决这种问题。
希望有人能告诉我如何解决这种复发。
谢谢 Ali Amiri,
按照你说的,我大概考虑一下。
T(n)=T( n/2 ) + n.
让,
n = 2k,
==> T(2k)= T(2k-1)+ 2k
假设ak = T(2k)
使用域变换,我得到:
ak = 2kc1 + c2
因此,
T(n) = O(n).
我说得对吗?还是错了?
Ali Amiri 的直觉是正确的,但这不是正式的论证。真的需要像
这样的基本案例
T(n) = 1 for all 0 ≤ n < 9
然后我们可以写
1/2
n ≤ n/3 for all n ≥ 9
然后猜测并检查递归的非递减 O(n) 解
T'(n) = T'(n/2 + n/3) + n
并论证 T = O(T') = O(n)。
我想知道如何准确找到 T(n) 的严格上限? 例如下面的一个例子:
T(n)=T( n/2 + n(1/2)) + n.
我不太确定如何在这里使用域或范围转换。
我在这里使用域转换。
让
n = 22k ==> n/2 = 22k-1 and n1/2 = 22k-1
之后,我不知道如何用T(n)中的加法来解决这种问题。 希望有人能告诉我如何解决这种复发。
谢谢 Ali Amiri, 按照你说的,我大概考虑一下。
T(n)=T( n/2 ) + n.
让,
n = 2k,
==> T(2k)= T(2k-1)+ 2k
假设ak = T(2k)
使用域变换,我得到:
ak = 2kc1 + c2
因此,
T(n) = O(n).
我说得对吗?还是错了?
Ali Amiri 的直觉是正确的,但这不是正式的论证。真的需要像
这样的基本案例T(n) = 1 for all 0 ≤ n < 9
然后我们可以写
1/2
n ≤ n/3 for all n ≥ 9
然后猜测并检查递归的非递减 O(n) 解
T'(n) = T'(n/2 + n/3) + n
并论证 T = O(T') = O(n)。