Spis treści

Obliczanie złożoności algorytmów

Do przygotowania

  1. Znajomość i rozumienie pojęć:
    1. Złożoność obliczeniowa.
    2. Złożoność pamięciowa.
    3. Złożoność pesymistyczna.
    4. Złożoność oczekiwana.
    5. Złożoność optymistyczna.

Przykłady

Metoda podstawiania

\begin{cases}
  W(1) = 0 & \\
  W(n) =  W(\lfloor n/2 \rfloor) + W(\lceil n/2\rceil) + n & \text{dla } n > 1}
\end{cases}

Jak sobie radzimy z rekurencją? Podstawiamy n=2^k. Wtedy mamy:
W(2^k) = 2 W(2^{k-1}) + 2^k = \\ = 2(2W(2^{k-2}) + 2^{k-1}) + 2^k = \\ = 2^2W(2^{k-2})+ 2^k + 2^k = \\ = 2^kW(2^0) + k2^k = \\ = 0 + n\log(n)
W(n) = A(n) = n\log(n)

Powracając i wstawiając do wcześniejszego wzoru otrzymujemy:
 W(2^m) = 2m\log m + m
i ostatecznie wstawiając
m = \log(n)
dostajemy:
W(n) = 2\log(n)\log(\log(n)) + \log(n)
co daje złożoność:
O(n) = \log(n)\log(\log(n))

Metoda rekurencji uniwersalnej