我很想知道如何找到T(n)的紧上限? 举一个例子:
T(n)= T(n / 2 + n (1/2))+ n。
我不确定如何在这里使用域或范围转换。
我在这里使用域转换。
让
n = 2 2 k ==> n / 2 = 2 2 k -1 和n 1/2 = 2 2 k-1
之后,我不知道如何通过添加T(n)来解决这类问题。 希望有人能告诉我如何解决这些类型的复发。
谢谢Ali Amiri, 正如你所说,我大概考虑一下。
T(n)= T(n / 2)+ n。
然后,
n = 2 k ,
==> T(2 k )= T(2 k-1 )+ 2 k
假设 k = T(2 k )
使用域转换,我得到:
a k = 2 k c 1 + c 2
因此,
T(n)= O(n)。
我是对的吗?还是错了?
答案 0 :(得分:0)
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)。