Das Problem besteht darin, das Polynom zu berechnen . Es sei angenommen, dass alle Koeffizienten in ein Maschinenwort passen, dh in Zeiteinheiten manipuliert werden können.
Sie können -Zeit ausführen, indem Sie FFT in einer Baumstruktur anwenden. Kannst du ?O ( n log n )
Antworten:
Warnung: Dies ist noch keine vollständige Antwort. Wenn Sie sich durch Plausibilitätsargumente unwohl fühlen, hören Sie auf zu lesen.
Ich werde eine Variante betrachten, bei der wir (x - a_1) ... (x - a_n) über die komplexen Zahlen multiplizieren wollen.
Das Problem besteht darin, ein Polynom an n Punkten auszuwerten. Wir wissen, dass dies geschickt in O (n log n) -Zeit geschehen kann, wenn die Punkte zufällig n-te Wurzeln der Einheit sind. Dies nutzt die Symmetrien regulärer Polygone, die der Fast Fourier Transformation zugrunde liegen, aus. Diese Transformation gibt es in zwei Formen, die üblicherweise als zeitliche Dezimierung und frequente Dezimierung bezeichnet werden. In der zweiten Basis basieren sie auf einem doppelten Paar von Symmetrien von regelmäßigen Polygonen mit geraden Seiten: Die ineinandergreifende Symmetrie (ein regelmäßiges Sechseck besteht aus zwei ineinandergreifenden gleichseitigen Dreiecken) und die Symmetrie der Entfaltung des Lüfters (halbieren Sie ein regelmäßiges Sechseck und falten Sie die Teile wie Fächer auseinander in gleichseitige Dreiecke).
Aus dieser Perspektive erscheint es höchst unwahrscheinlich, dass ein O (n log n) -Algorithmus für eine beliebige Menge von n Punkten ohne spezielle Symmetrien existieren würde. Es würde bedeuten, dass regelmäßige Polygone im Vergleich zu zufälligen Punktmengen in der komplexen Ebene algorithmisch nichts Außergewöhnliches sind.
quelle