Twierdzenie o rekurencji uniwersalnej

(Przekierowano z Rekurencja uniwersalna)

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 edytuj

Jeżeli funkcja   dla   i funkcji dodatniej   jest zdefiniowana następująco:

 

to:

  • jeżeli   dla pewnej stałej   to  
  • jeżeli   to  
  • jeżeli   dla pewnej stałej ε > 0 i jeżeli   dla pewnej stałej   dla dostatecznie dużych   to  

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

Intuicyjna interpretacja edytuj

Każdy z trzech przypadków rekurencji uniwersalnej sprowadza się do stwierdzenia, która z funkcji   i   jest „większa”. Gdy znana jest odpowiedź na to pytanie, automatycznie znane jest asymptotyczne ograniczenie danej rekursji – jest nią owa „większa funkcja”.

„Dziury” rekurencji uniwersalnej edytuj

Należy zdawać sobie sprawę, że twierdzenie o rekurencji uniwersalnej nie wyczerpuje wszystkich przypadków, nawet rekursji „typu”   – pomiędzy przypadkami twierdzenia istnieją „dziury”. W pierwszym przypadku funkcja   musi być wielomianowo mniejsza od   W trzecim przypadku oprócz wielomianowej większości wymagana jest pewna „regularność”, „gładkość” funkcji. Jeżeli funkcja   należy do którejś z tych funkcji dla których nie ma „wielomianowej różnicy”, to twierdzenie o rekursji uniwersalnej nie pozwala znaleźć asymptotycznego oszacowania rekursji.

Dowód twierdzenia o rekurencji uniwersalnej edytuj

Dla n będących potęgą b edytuj

Niech   będzie potęgą liczby rzeczywistej   takiej, że  

Lemat 1 edytuj

Niech zmienne     i funkcja   będą zdefiniowane jak powyżej. Jeśli dla pewnej dodatniej liczby całkowitej   funkcja   jest zdefiniowana następująco:

 

to

  (*)
Dowód edytuj

Rozważmy drzewo rekursji funkcji   zdefiniowanej jak wyżej.

  • Koszt korzenia drzewa wynosi   a jego każdego z   synów –   Dla każdego syna korzenia koszt każdego z jego   synów wynosi   A więc istnieje dokładnie   węzłów leżących w odległości 2 od korzenia.
  • Ogólniej, dla   istnieje   węzłów o koszcie   oddalonych od korzenia o odległość  
    • Koszt każdego liścia wynosi   a ponieważ   to każdy liść znajduje się na głębokości   Drzewo rekursji posiada   liści.

Sumując koszty wszystkich poziomów drzewa otrzymamy równanie (*), ponieważ koszt wszystkich „poziomów” węzłów właściwych (tj. niebędących liśćmi) wynosi   a koszt liści to  

Lemat 2 edytuj

Niech     i   będą określone jak powyżej. Jeżeli   jest funkcją określoną dla   będących potęgami   w następujący sposób:

 

To dla   będących potęgami   funkcję   można oszacować:

    • jeżeli   dla pewnej stałej   to  
    • jeżeli   to  
    • jeżeli   dla pewnej stałej ε > 0 i jeżeli   dla pewnej stałej   dla dostatecznie dużych   to  

Dowód edytuj

Korzystając z oszacowania z lematu 2 dla sumy (*). Dla kolejnych przypadków z lematu 2 zachodzi:

  •  
  •  
  •   ponieważ  

Dla dowolnych n edytuj

Dla dowolnych   (nie będących potęga  ) wartość argumentu   może oznaczać   lub  

Odpowiednio górne i dolne oszacowanie dla funkcji

  (1)

i

  (2)

jest banalne do znalezienia, przy wykorzystaniu własności   i  

Równanie rekurencyjne można oszacować z góry w następujący sposób:

Niech

 

Wtedy schodzenie w dół rekursji oznacza jej rekurencyjne wywoływanie kolejno dla argumentów  

 

Korzystając z nierówności   mamy:

  •  
  •  
  •  
  •  
  •  
  •  

Dla  

 

Oznacza to, że dla wywołań rekursji na poziomie co najmniej   i większych, rozmiar problemu jest stały.