高速フーリエ変換を使用してn点の多項式を評価すると、O(n log n)時間かかるのはなぜですか?私は、多項式A(x)を偶数乗と奇数乗に分割して再帰を使用する除算と征服アルゴリズムを実装することについて具体的に話しています。多項式の評価?
Q
多項式の評価?
0
A
答えて
3
T(n)をnポイントの次数nの多項式を評価するためにFFTアルゴリズムで使用する時間とします。
アルゴリズムは、2つの多項式に
A(X)= xBの(X^2)+ C(X^2)、
すなわちを分割:奇数と偶数係数。たとえば、3x^3 + 2x^2 + 9x + 7はx(3x^2 + 9)+(2x^2 + 7)に分割されます。
元々、ポイントa、b、c、dで3x^3 + 2x^2 + 9x + 7を計算したかったのです。
今、あなたは、 C、 B、D をポイントで3倍+ 9と2X + 7を計算したいです。後でそれを組み合わせて、a、b、c、dで3x^3 + 2x^2 + 2x + 7の値を取得します。
重要な考え方は:あなたが団結の根、の値の半分を使用しているため、 B、 C、D は同じです。 = c とb = d とします。
だから、 B、ポイントで3倍+ 2と2X + 7を計算する必要があります。
これは、サイズNのインスタンスをサイズN/2およびO(N)後処理の2つのインスタンスに縮小したことを意味します。
FFTはこのプロセスを再帰的に繰り返します。これは、Mergesortと同じ再帰方程式であり、O(N log N)の複雑さです。
関連する問題
- 1. 評価多項式
- 2. タイプエラー評価多項式
- 3. 最適化Pythonの多項式評価
- 4. 二項法:多項式関数を評価する
- 5. POI公式評価の評価
- 6. 特定の値で多項式を評価する最速の方法
- 7. C++複雑な多項式関数が評価に失敗する
- 8. 式の評価シーケンス
- 9. Cの式評価
- 10. JavaScriptの式評価
- 11. トリプル等価式評価
- 12. デバッガgdb評価式
- 13. Pythonのブール式の評価
- 14. ggplot2内の式の評価
- 15. C++のスクリプト式の評価
- 16. while文内の三項式をループごとに評価する
- 17. ピクルスとsympy式の評価
- 18. lldb式評価のインラインアセンブリ?
- 19. 評価システムの数式
- 20. JMLの評価\ old(式[Id])
- 21. SQLストアドプロシージャでの式評価
- 22. 5点の評価式
- 23. Haskellの式評価ツリー
- 24. 評価式の確認
- 25. 配列式の評価
- 26. matlabの多項式を評価する関数ハンドルから多項式の係数をどのように計算できますか?
- 27. 式を評価する
- 28. 高速ブール式評価ツール
- 29. 多項式アルゴリズム
- 30. 多項式C++
なぜこれが投票されたのですか? – fdh
再帰は、サイズNからサイズN/2およびO(N)処理の2つの問題への問題を軽減します。したがって、T(n)= 2T(n/2)+ O(n)であり、これはmergesortと同じ複雑さであり、O(n log n)である。これで十分ですか? – sdcvvc
除算と征服を行わずに、各評価にはO(n)時間がかかります。あなたはn点を評価しているので、合計時間はO(n)*(n)= O(n^2)です。分割と征服では、ポイントの数を半分に分割します(+ - nが使用されるため)が、各評価には依然としてO(n)時間がかかります。 O(n)*(n/2)= O(n^2)である。私は何を誤解していますか? – fdh