Zaawansowane algorytmy i struktury danych/Ćwiczenia 4: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 7: | Linia 7: | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
Pomysłem na rozwiązanie jest sprowadzenie | Pomysłem na rozwiązanie jest sprowadzenie zagadnienia do dwóch mniejszych problemów. Można to zrobić wykorzystując algorytm dzielenia wielomianów. Niech <math>X = \{x_0, \ldots, x_{n-1}\}</math> będzie zbiorem punktów w których chcemy obliczyć wartość wielomianu. Dla wielomianu <math>A(x)</math> zdefiniujmy dwa nowe wielomiany: | ||
Linia 42: | Linia 42: | ||
<div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible-content" style="display:none"> | ||
Podobnie jak w Zadaniu 1 należy sprowadzić problem do dwóch mniejszych. Najpierw liczymy rekurencyjne wielomian <math>A^{[0]}(x)</math> stopnia <math>\frac{n}{2}</math> interpolujący zbiór punktów <math>X^{[0]} = \{(x_0, y_0), (x_1, y_1), \ldots,(x_{\frac{n}{2}-1},y_{\frac{n}{2}-1})\}</math>. Następnie obliczamy wartości <math>A^{[0]}(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\} korzystając z wyników Zadania 1. Musimy teraz skonstruować następujący wielomian: | Podobnie jak w Zadaniu 1 należy sprowadzić problem do dwóch mniejszych. Najpierw liczymy rekurencyjne wielomian <math>A^{[0]}(x)</math> stopnia <math>\frac{n}{2}</math> interpolujący zbiór punktów <math>X^{[0]} = \{(x_0, y_0), (x_1, y_1), \ldots,(x_{\frac{n}{2}-1},y_{\frac{n}{2}-1})\}</math>. Następnie obliczamy wartości <math>A^{[0]}(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\}, korzystając z wyników Zadania 1. Musimy teraz skonstruować następujący wielomian: | ||
Linia 50: | Linia 50: | ||
Ponownie korzystając z wyników Zadania 1 obliczamy wartości <math>P(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\}. Szukany wielomian skonstruujemy jako: | Ponownie korzystając z wyników Zadania 1, obliczamy wartości <math>P(x)</math> dla zbioru punktów \{x_{\frac{n}{2}-1,\ldots, x_{n-1}}\}. Szukany wielomian skonstruujemy jako: | ||
{{wzor2|1=<math> | {{wzor2|1=<math> | ||
Linia 57: | Linia 57: | ||
gdzie <math>A^{[1]}</math> to nieznany wielomian stopnia <math>\frac{n}{2}</math>. Z konstrukcji wynika, że <math>A(x)</math> jest wielomianem interpolacyjnym dla zbioru <math>X^{[0]}</math>. Zauważmy, że aby znaleźć <math></math>musimy ponownie rozwiązać problem interpolacyjny. Dla <math>A^{[1]}(x)</math> musi zachodzić | gdzie <math>A^{[1]}</math> to nieznany wielomian stopnia <math>\frac{n}{2}</math>. Z konstrukcji wynika, że <math>A(x)</math> jest wielomianem interpolacyjnym dla zbioru <math>X^{[0]}</math>. Zauważmy, że aby znaleźć <math></math> musimy ponownie rozwiązać problem interpolacyjny. Dla <math>A^{[1]}(x)</math> musi zachodzić | ||
Linia 89: | Linia 89: | ||
<math>B_i(y)</math> jego wartości w punktach <math>Y = \{y_0, | <math>B_i(y)</math> jego wartości w punktach <math>Y = \{y_0, | ||
\ldots, y_{n-1}\}</math>. Zajmuje nam to czas <math>O(n^2 \log^2 | \ldots, y_{n-1}\}</math>. Zajmuje nam to czas <math>O(n^2 \log^2 | ||
n)</math>. Wartości te możemy wstawić do [[#wzor_1|(1)]] otrzymując | n)</math>. Wartości te możemy wstawić do [[#wzor_1|(1)]], otrzymując | ||
<math>n</math> wielomianów <math>x</math>'a, których wartości | <math>n</math> wielomianów <math>x</math>'a, których wartości | ||
musimy policzyć w <math>n</math> punktach. Ponownie zajmuje nam to czas | musimy policzyć w <math>n</math> punktach. Ponownie zajmuje nam to czas |
Wersja z 19:34, 25 wrz 2006
Zadanie 1 (Obliczanie wartości wielomianu w punktach)
Zaproponuj algorytm obliczający wartość wielomianu stopnia w dowolnych punktach w czasie .
Wskazówka
Zadanie 2 (Obliczanie wielomianu interpolacyjnego)
Dla danego zbioru par takiego, że wszystkie wartości są parami różne, znajdź wielomian interpolacyjny.
Wskazówka
Zadanie 3 (Obliczanie wartości wielomianu dwóch zmiennych)
Dla danych zbiorów punktów i , oraz wielomianu dwóch zmiennych stopnia , wyznacz wszystkie wartości dla .
Wskazówka