の計算の複雑さ


回答:


12

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


3

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

f(n)f(n)nn2n2n2m′=⌈2log2⁡(n)⌉m=m′−1

t1=log22⁡(n)o1=2log2⁡(n)o1t2=o12o2=2o1iti=4i−1log22⁡noi=2ilog2⁡(n)m

Texp=∑[1..m]ti=log22⁡(n)∑[1..m]4i=4m−13log22⁡n

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

Texp+log22⁡n

注意

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

1
O(1)n2

4
nO(log⁡n)O(1)

2
n2log2⁡nn2log2⁡nO(log⁡n)

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

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