2

T(n) = T(n-1) + O(n * n!) の漸近的複雑度は? タイトな上限で十分です。アナグラムを見つけるために非常に精巧な再帰アルゴリズムの時間計算量を計算しようとしていますが、最終的にこの式にたどり着きました(うまくいけば正しいです)。アルゴリズムが T(1) に達すると停止すると想定できます。

編集: T(n) = T(n-1) + O(n * n!) はもちろん O(n*n!) + O((n-1)*(n-1)!) + .. . + O(1) ですが、どうすればよいかわかりません。

4

2 に答える 2

4

何が起こっているのかを厳密に理解するには、次の点に注意してください。

n * n! = (n + 1) * n! - n! = (n + 1)! - n!

したがって、元の関数は次のように書き直すことができます。

T(n) = T(n-1) + c * ((n + 1)! - n!)  where c is a constant from the O(f(n)) notation

T(n-1) などを展開すると、階乗が最終的にキャンセルされることがわかります

T(n) = T(0) + c * ((n + 1)! - 0!)

したがって、T(0) が一定で有限である場合、

T(n) = O((n + 1)!)
于 2013-09-16T20:54:04.610 に答える