我正在阅读关于SO的时间复杂度计算相关问题,但我无法在那里发表评论(没有足够的代表)。 What's the time complexity of this algorithm for Palindrome Partitioning?
我有一个关于从第1到第2个等式的问题:
现在你可以为H(n-1)编写相同的表达式,然后替换回来 简化:
H(n)= 2 H(n-1)+ O(n)=========>等式1
这解决了
H(n)= O(n * 2 ^ n)=========>等式2
有人可以说明他是如何从Eq.1获得Eq.2的吗?谢谢。
答案 0 :(得分:2)
等式1.是recurrence relation。请参阅链接以获取有关如何解决这些类型方程的教程,但我们可以通过扩展解决如下:
H(n) = 2H(n-1) + O(n)
H(n) = 2*2H(n-2) + 2O(n-1) + O(n)
H(n) = 2*2*2H(n-3) + 2*2O(n-2) + 2O(n-1) + O(n)
...
H(n) = 2^n*H(1) + 2^(n-1)*O(1) + ... + 2O(n-1) + O(n)
since H(1) = O(n) (see the original question)
H(n) = 2^n*O(n) + 2^(n-1)*O(1) + ... + 2O(n-1) + O(n)
H(n) = O(n * 2^n)
答案 1 :(得分:1)
我们需要对方程进行均匀化,在这种简单的情况下,只需在每一侧加一个常数即可。首先,指定O(n)= K以避免在此阶段使用O符号进行处理:
H(n)= 2 H(n-1)+ K
然后在每一边添加一个K:
H(n)+ K = 2(H(n-1)+ K)
设G(n)= H(n)+ K,然后
G(n)= 2G(n-1)
这是一个众所周知的齐次1阶重复,用解决方案
G(n)= G(0)×2 n = G(1)×2 n-1
由于H(1)= O(n),G(1)= H(1)+ K = O(n)+ O(n)= O(n),
G(n)= O(n)×2 n-1 = O(n×2 n-1 )= O(n×2 ñ)
和
H(n)= G(n) - K = O(n×2 n ) - O(n)= O(n×2 n )< / p>
答案 2 :(得分:1)
他们错了。
我们假设O指的是紧束缚,用O(n)
代替c * n
代替常量c
。展开你会得到的递归:
完成展开递归n = i
和b = T(0)
。
现在找到总和:
总结一下,你会得到:
现在很明显T(n)
O(2^n)
没有任何n
对于仍然对数学持怀疑态度的人: