f(n) = 2 2 n+1と g(n)=2 2 nという 2 つの関数があるとします。2 つの異なる方法を使用して、これら 2 つの関数の成長率を比較したいと思います。
方法 1: 比率を取る
t(n) = f(n) / g(n) を定義しましょう。それで
t(n) = f(n) / g(n)
= 2 2 n+1 / 2 2 n
= 2 2 n + 1 - 2 n
= 2 2 n
したがって、f(n) は g(n) よりもはるかに速く成長すると仮定します。
方法 2: 対数を使用する
前述のように、t(n) = f(n) / g(n) とします。ここで、両辺の対数底 2 を取りましょう。
lg t(n) = lg (f(n) / g(n))
= lg (2 2 n+1 / 2 2 n )
= lg 2 2 n+1 - lg 2 2 n )
= 2 n+1 - 2 n
ここで、両辺の対数底 2 を取りましょう。
lg lg t(n) = (n + 1) lg 2 / n lg 2
= (n + 1) / n
定数項を無視すると、lg lg t(n) = 1 が得られます。これは定数であるため、f(n) と g(n) は同じ成長率を持つ必要があります。
方法 2 を使用すると間違った答えが得られるのはなぜですか?