解决运行时间问题

时间:2013-05-15 17:50:58

标签: algorithm iteration big-o

请有人就如何解决以下方面的运行时间给我指示: T(n)= nT(n-1)+ O(n ^ 2)≤

我知道T(n)= nT(n-1)=> T(n)= O(n!) 但是如何用额外的O(n ^ 2)来解决它?

提前致谢!

1 个答案:

答案 0 :(得分:4)

作业?无论如何,这取决于。如果您正在寻找Big-O时间,则O(n ^ 2)不会添加任何内容。对于N的几乎所有值,O(N!)消耗O(N ^ 2)。或者更确切地说,对于N> N的值,O(N!)消耗O(N ^ 2)。 3,N! > N ^ 2。你也可以像这样展示它。 N! + 16> N ^ 2表示所有N.

或者,您可以像这样计算合并计算时间

T(N) = N! + N^3.

T(N) = nT(n-1) + n^2
T(N) = (n - 1)T(n-2) + n^2 + (n-1)^2
T(N) = (n-2)(n-1)T(n-2) + n^2 + (n-1)^2 + (n-2)^2
T(N part 1) = 1 * 2 * 3 ... * n = n!
T(N part 2) = 1 + 4 + 9 ... + n^2 = (1/3)n3 + (1/2)n2 + (1/6)n

T(N) = n! + (1/3)n^3 + (1/2)n^2 + (1/6)n
T(N) = n! + n^3
T(N) = n! 

答案是三个底线之一,具体取决于我们对big-O的粒度级别。我喜欢中间的因为它承认多项式的复杂性,而显然留下了n!作为主要关注点,不要过度复杂化答案。