の計算の複雑さ


回答:


12

高速フーリエ変換を使用することにより、上の乗算ビット数が時間内に行うことができますOK (チルダのが意味我々は対数多項式の要因を無視していること)。二乗を繰り返すことにより、O log n 乗算でn n 2を計算できます。各乗算には、n n 2より大きくない数が含まれます。これは、おおよそn 2 log 2 nビットです。必要な時間の総量はあるのでON 2kO~(k)nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)


3

f(n)=nn2f1(n)=n2nf1(n)mnmnn2log22(n)

f(n)f(n)nn2n2n2m=2log2(n)m=m1

t1=log22(n)o1=2log2(n)o1t2=o12o2=2o1iti=4i1log22noi=2ilog2(n)m

Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n

初期二乗コストが含まれている場合、最大で時間が必要であることがわかります

Texp+log22n

注意

  • 計算で床と天井の一部を省略しましたが、答えに実質的に影響しないことを期待しています。
  • O
  • OtiO(logn)
  • 乗算は、FFTやその他の方法で常に高速化できます。

1
O(1)n2

4
nO(logn)O(1)

2
n2log2nn2log2nO(logn)

公平な点、私はメモしておきます
PKG

1
@ThomasAndrews:マシンとコストモデルによって異なります。追加に一定のコストがかかるRAMモデルを想定することは珍しいことではありません。
ラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.