Twierdzenie o rekurencji uniwersalnej

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania

Twierdzenie o rekurencji uniwersalnej jest twierdzeniem matematycznym pozwalającym w łatwy sposób znajdować ograniczenie asymptotyczne pewnej klasy funkcji zdefiniowanych rekurencyjnie.

Twierdzenie o rekurencji uniwersalnej

Niech a>0,b>1,n0>0 będą stałymi niezależnymi od n i niech f(n) będzie funkcją asymptotycznie nieujemną, czyli przyjmującą wartości nieujemne dla wystarczająco dużych n. Jeżeli funkcja T(n), dla n>0 jest zdefiniowana następująco:

T(n)={Θ(1)gdy 0<n<n0aT(nb)+f(n)gdy nn0,

to:

  1. jeżeli istnieje stała ϵ>0, dla której f(n)=O(nlogbaϵ), to T(n)=Θ(nlogba),
  2. jeżeli istnieje stała k dla której f(n)=Θ(nlogbalogkn), to
    T(n)={Θ(nlogba)gdy k<1Θ(nlogbaloglogn)gdy k=1Θ(nlogbalogk+1n)gdy k>1,
  3. jeżeli istnieje stała ϵ>0, dla której f(n)=Ω(nlogba+ϵ) i jeżeli dodatkowo spełniony jest warunek regularności, af(nb)cf(n) dla pewnej stałej c(0,1), dla dostatecznie dużych n, to T(n)=Θ(f(n)).

Tak zdefiniowane funkcje T stanowią pewien schemat działania algorytmów typu „dziel i zwyciężaj” – problem o rozmiarze n dzielony jest na a podproblemów, każdy wielkości nb, funkcja f przedstawia koszt dzielenia problemu, oraz połączenia rozwiązań podproblemów.

Intuicyjna interpretacja

Przypadki 1 i 3 rekurencji uniwersalnej polegają na rozstrzyganiu, która z funkcji nlogba czy f(n) rośnie wielomianowo szybciej, i funkcja ta stanowi wówczas dokładne oszacowanie rekurencji T(n). W przypadku 2 funkcje te rosną w takim samym tempie wielomianowym, jednak z możliwym czynnikiem polilogarytmicznym. T(n) ma wówczas rozwiązanie zbliżone do tego wspólnego tempa wzrostu.

„Dziury” rekurencji uniwersalnej

Twierdzenie o rekurencji uniwersalnej nie wyczerpuje wszystkich przypadków dla rekurencji w powyższej postaci. Nie znajduje ono zastosowania gdy funkcji f(n) i nlogba nie da się porównać asymptotycznie, np. gdy dla dowolnie dużych n, f(n)nlogba i dla innych dowolnie dużych n, f(n)nlogba. W przypadkach 1 i 3 tempa wzrostu funkcji f(n) i nlogba muszą różnić się o czynnik wielomianowy. Dodatkowo w przypadku 3 oprócz dominacji asymptotycznej wymagana jest pewna „regularność” funkcji f(n). Intuicyjnie, warunek regularności może nie być spełniony, jeśli funkcja ta rośnie zbyt wolno lokalnie, mimo wystarczającego globalnego tempa wzrostu.

Przykłady rekurencji nierozwiązywalnych metodą rekurencji uniwersalnej

  • T(n)=0.5T(n2)+n
  • T(n)=T(3n2)+n
  • T(n)=2nT(n2)+nn
    a nie jest stałą niezależną od n.
  • T(n)=2T(n2)+sinn
    Funkcja f(n)=sinn nie jest asymptotycznie nieujemna.
  • T(n)=2T(n2)+n1+sinn
    Zarówno f(n)=Ω(n11)=Ω(1) jak i f(n)=O(n1+1)=O(n2) - nie da się więc asymptotycznie porównać f(n) i nlogba=n.
  • T(n)=2T(n2)+nlog2n
    Nie jest zachowany wielomianowy wzrost między f(n) i nlogba.
  • T(n)=T(n2)+log2n
    Nie zachodzi warunek regularności:
    alog2(n/b)=log2(n/2)=log2n1=(11/log2n)log2n
    Czynnik 11/log2n jest mniejszy od 1 dla każdego n>1, ale wraz ze wzrostem n zbliża się dowolnie do 1, dlatego nie istnieje stała c<1 taka że (11/log2n)log2n<clog2n.