Rekurencje Rekurencja jest równaniem lub nierównością, opisującą funkcję w zależności od jej wartości dla danych wejściowych o mniejszych rozmiarach. Na przykład, czas działania T(n) algorytmu sortowania przez scalanie: Rozwiązanie tej rekurencji: T(n) = (n lg n) Ogólny wygląd równania rekurencyjnego:
Drzewa rekursji n2 n2 n2 n2 lg n W sumie: (n2)
Drzewa rekursji Najdłuższą ścieżką od korzenia do liścia jest n (2/3)n (2/3)2n … 1. (2/3)kn = 1, gdy k = log3/2n, więc wysokość drzewa wynosi log3/2n. n n n lg n n W sumie: (n lg n)
Czas działania Quicksort Najgorszy przypadek podziałów: (n2) Najlepszy przypadek podziałów: (n lg n) Czas działania w średnim przypadku zbliżony jest do najlepszego: (nlgn) n n n n 1 n-1 n n/2 n/2 n n/4 n/4 n/4 n/4 n n 1 n-2 n-1 n lg n 1 2 3 1 1 2 1 1 1 1 1 1 1 1 n Najlepszy przypadek Najgorszy przypadek (n lg n) (n2)
Metoda rekurencji uniwersalnej Niech a 1, b > 1, T(n) zdefiniowane przez rekurencję T(n) może być ograniczona asymptotycznie w następujący sposób. 1. Jeśli dla pewnej stałej > 0, to to 2. Jeśli dla pewnej stałej > 0 i jeśli af(n/b) cf(n) 3. Jeśli dla pewnej stałej c > 1 i wszystkich dostatecznie dużych n, to
Przykłady