Zaawansowane algorytmy i struktury danych/Wykład 4: Różnice pomiędzy wersjami
Linia 1: | Linia 1: | ||
[[Template:twierdzenie]] | |||
== Abstrakt == | == Abstrakt == | ||
Naturalna metoda dodawania dwóch | Naturalna metoda dodawania dwóch wielomianów wymaga czasu | ||
<math>\Theta(n)</math>, natomiast prosty algorytm mnożenia dwóch | |||
wielomianów stopnia <math>n</math> wymaga czasu | |||
<math>\Theta(n^2)</math>. W wykładzie tym pokażemy, jak z | |||
wykorzystaniem szybkiej transformaty Fouriera (STF), wykonać wszystkie | |||
podstawowe operacje na wielomianach w czasie większym niż | |||
<math>\Theta(n)</math> o czynnik polilogarytmiczny. Pokażemy jak dla | |||
wielomianów stopnia <math>n</math>: | |||
* mnożyć je w czasie <math>O(n \log n)</math>, | * mnożyć je w czasie <math>O(n \log n)</math>, | ||
* obliczać wielomian interpolacyjny w czasie <math>O(n \log^2 n)</math>, | * obliczać wielomian interpolacyjny w czasie <math>O(n \log^2 n)</math>, | ||
* obliczać wartość | * obliczać wartość wielomianu w <math>n</math> punktach w czasie <math>O(n \log^2 n)</math>, | ||
* dzielić wielomiany w czasie <math>O(n \log^3 n)</math>. | * dzielić wielomiany w czasie <math>O(n \log^3 n)</math>. | ||
== Szybkie Mnożenie wielomianów == | |||
Niech <math>A(x) = \sum_{i=0}^{n-1} a_i x^i</math> i | |||
<math>B(x) = \sum_{i=0}^{n-1} b_i x^i</math> będzą | |||
wielomianami stopnia <math>n</math> nad ciałem <math>F</math>. | |||
Wielomiany te możemy jednoznaczne reprezentować poprzez ich | |||
wartości w <math>n</math> punktach. Następujące twierdzenie zostało | |||
sformułowane w ramach wykładu z Metod Numerycznych. | |||
{{twierdzenie|[Twierdzenie o interpolacji | |||
wielomianów]|interpolacja| Dla dowolnego zbioru <math>n</math> par | |||
<math>X = \{(x_0, y_0), (x_1, y_1), \ldots, (x_{n-1}, | |||
y_{n-1})\}</math> takiego, że wszystkie wartości <math>x_i</math> są | |||
parami różne, istnieje jedyny wielomian <math>C(x)</math> stopnia <math>n</math> | |||
taki, że <math>C(x_i) = y_i</math> dla <math>i = 0,1,\ldots, n-1.</math> | |||
}} | |||
<flash>Zasd_fft1.swf</flash> |
Wersja z 15:59, 18 lip 2006
Abstrakt
Naturalna metoda dodawania dwóch wielomianów wymaga czasu , natomiast prosty algorytm mnożenia dwóch wielomianów stopnia wymaga czasu . W wykładzie tym pokażemy, jak z wykorzystaniem szybkiej transformaty Fouriera (STF), wykonać wszystkie podstawowe operacje na wielomianach w czasie większym niż o czynnik polilogarytmiczny. Pokażemy jak dla wielomianów stopnia :
- mnożyć je w czasie ,
- obliczać wielomian interpolacyjny w czasie ,
- obliczać wartość wielomianu w punktach w czasie ,
- dzielić wielomiany w czasie .
Szybkie Mnożenie wielomianów
Niech i będzą wielomianami stopnia nad ciałem . Wielomiany te możemy jednoznaczne reprezentować poprzez ich wartości w punktach. Następujące twierdzenie zostało sformułowane w ramach wykładu z Metod Numerycznych.
Twierdzenie [Twierdzenie o interpolacji wielomianów]
takiego, że wszystkie wartości są parami różne, istnieje jedyny wielomian stopnia taki, że dla
<flash>Zasd_fft1.swf</flash>