什么是组合的渐近运行时间?

时间:2015-10-25 17:13:48

标签: algorithm big-o

我有递归关系T(n,k)= T(n - 1,k - 1)+ T(n - 2,k - 1)+ ... + T(k + 1,k - 1 )。这是从i = 1到i = n - k + 1的T(n - i,k - 1)的总和。用手计算结果,我注意到这形成了帕斯卡的三角形 - T( n,k)然后(n - 1)选择(k - 1)。

我如何将此表达为大O符号的渐近运行时间?我可以证明T(n,k)是O(n!),但这并没有真正显示出整个画面 - 如果n很大,但k又一样大?如果n = k,则运行时间仅为1.

1 个答案:

答案 0 :(得分:1)

如果你将Pascal的三角形看作一个矩阵,并且你想要找到构建该矩阵的复杂度n x k,那么那个大的那个将是{{1} }。显然你不能比那更好,因为这是矩阵的大小。

我们如何做到这一点?对组合使用以下简化重复:

O(n*k)

仅计算单个组合具有相同的复杂性(如果使用记忆)。