在大师定理中给出了一个“插件”公式来找到大O,因为它满足某些条件。
但是,如果我们遇到如下问题怎么办?任何人都可以告诉我如何做一步一步的公式。什么主题可以帮助我更多地了解这些类型的问题。假设提出这个问题的人对归纳一无所知。
T(n)=T(n^(1/2))+1
T(n)=T(n-1) + 1
T(n)=T(n-1) + n^c , c is a natural number >1
T(n)= T(n-1) C^n, c is a natural number >1
答案 0 :(得分:1)
您可以扩展公式并对其进行处理: 例如:
T(n) = T(n-1) + 1
T(n) = [T(n-2) + 1] + 1
...
T(n) = 1 + 1 + 1 ... (n times)
所以T(n) = O(n)
。
答案 1 :(得分:1)
你需要知道一点数学来做其中的一些。你可以弄清楚当你将它一直扩展到基本情况时递归的样子,例如:对于T(n)= T(n-1)+ n ^ c你得到T(n)= 1 ^ c + 2 ^ c + ... + n ^ c,但是你需要知道一些数学才能知道这是O(n ^(c + 1))。 (最简单的方法是通过在x ^ c的积分方面限制上下的和)。类似地,对于T(n)= T(n-1)+ c ^ n,你很容易得到T(n)= c ^ 1 + c ^ 2 + ... + c ^ n但你又需要使用一些微积分或其他东西弄清楚这是T(n)= O(c ^ n)。
对于T(n)= T(n ^(1/2))+ 1,您需要计算在到达基本案例之前应用重复次数的次数。再次数学有助于此。取平方根时,对数减半。所以你想知道在你到达基本情况之前你可以将对数减少一半。这是O(log log n)。