Processing math: 100%

Rekurencja

Definicje rekurencyjne


Definicja rekurencyjna (indukcyjna):

  • nieformalnie - taka definicja, która odwołuje się do samej siebie - ale trzeba tu uważać, by odwołanie było do instancji o mniejszej komplikacji,
  • zwykle chodzi o ciąg a0,a1,a2,a3,, - dla którego przepis na element an wykorzystuje jakieś poprzednie elementy: an1,an2, itp.,
  • początkowy element (lub kilka początkowych) muszą być zadane konkretnie - żeby było od czego zacząć,
  • zwykle definicja rekurencyjna odwołuje się do jednego lub kilku poprzednich elementów, ale może też odwoływać się do wszystkich poprzednich.

Przykład

Silnia liczby n (zapisywana jako n!) to iloczyn kolejnych liczb naturalnych od 1 do n, czyli

n!=n(n1)21.

Przyjmuje się że 0!=1. Oto wartości silni dla kilku początkowych liczb naturalnych


n012345678n!112624120720504040320

Ciąg 0!,1!,2!,3!,4!, aby mógł być precyzyjnie rozumiany np. przez komputer, powinien być zadany rekurencyjnie jako:

s0=1sn=nsn1dlan1.

Ponieważ pierwszy wyraz jest zadany, to możemy kolejno obliczać:

s0=1s1=1s0=11=1s2=2s1=21=2s3=3s2=32=6s4=4s3=46=24

Przykład

Jaki ciąg jest zdefiniowany poprzez małą modyfikację w definicji silni?

s0=0sn=nsn1dlan1

A co definiują następujące określenia:

s0=12sn=nsn1dlan1

oraz

s0=1sn=nsn2dlan2.

W ostatnim przypadku widać, że ponieważ odwołanie jest dwa wyrazy wstecz, to już wyliczenie pierwszego wyrazu s1 staje się niemożliwe.

Ciąg arytmetyczny

Przykład

W ciągu zadanym poprzez równania:

s0=0sn=sn1+2dlan1

łatwo rozpoznać kolejne liczby parzyste:

sn=2n.

Ogólnie ciąg zadany poprzez ustalenie a0 oraz

an=an1+r

to tzw. ciąg arytmetyczny.
Jego n-ty wyraz dany jest wzorem:

an=a0+nr.

Aby to uzasadnić, pokazujemy indukcyjnie, że:

a0+0r=a0jest rzeczywiście zerowym wyrazem ciągu

oraz

a0+nr=(a0+(n1)r)+r=an1+r=an

Ciąg geometryczny

Przykład

W ciągu zadanym poprzez równania:

s0=1sn=2sn1dlan1

łatwo rozpoznać kolejne potęgi liczby 2:


sn=2n.

Ogólnie ciąg zadany poprzez ustalenie a0 oraz zadanie

an=qan1

to tzw. ciąg geometryczny.
Jego n-ty wyraz dany jest wzorem:

an=a0qn.

Aby to uzasadnić, pokazujemy indukcyjnie, że:


a0q0=a01=a0jestrzeczywiściezerowymwyrazemciągu

oraz

a0qn=(a0qn1)q=an1q=an.

Wieże Hanoi

U zarania czasu Bóg umieścił 64 złote krążki na jednej z trzech diamentowych iglic tak, że krążki wyżej umieszczone miały mniejsze promienie.

Następnie Bóg polecił grupie mnichów przełożenie tych krążków na trzecią iglicę (C), ale tak by:

  • w jednym ruchu przenosić tylko jeden krążek,
  • krążek większy nigdy nie może leżeć na krążku mniejszym,
  • można posługiwać się iglicą B.

Mnisi pracują od zarania dziejów dzień i noc ... .Ile czasu im to zajmie?

Wieże Hanoi - analiza

Przykład (E.Lucas, 1883)

By obliczyć ilość potrzebnych do wykonania ruchów, przeanalizujmy najpierw małe przypadki:
Łatwo zauważyć, że dla 1 krążka potrzebny jest jeden ruch: AC
Podobnie dla dwu krążków możemy postąpić: AB,  AC,  BC
Przy 3 krążkach postępujemy tak:

  • najpierw przenosimy dwa górne krążki na iglicę B posługując się iglicą C:

AC,  AB,  CB

  • przenosimy największy krążek z A na C:

AC

  • przenosimy krążki z B na C posługując się iglicą A:

BA,  BC,  AC

co pokazuje, że potrzeba tu 7 ruchów.
Czy już wiesz jak rozwiązać to zadanie w ogólności (dla n krążków)?
Oznaczmy przez Hn liczbę ruchów potrzebnych do przeniesienia n krążków z jednej iglicy na drugą. Wiemy już, że:

H1=1H2=3H3=7

Aby przenieść n krążków z A na C możemy postąpić podobnie jak w przypadku 3 krążków, redukując zadanie do:

  • przenosimy n1 górnych krążków na iglicę B posługując się iglicą C - potrzeba na to Hn1 ruchów
  • przenosimy największy krążek z A na C - to tylko jeden ruch
  • przenosimy n1 krążków z B na C posługując się iglicą A - znów potrzeba na to Hn1 ruchów

A zatem

Hn=Hn1+1+Hn1=2Hn1+1

Ile wobec tego wynosi H64?

Mamy więc równanie rekurencyjne

H1=1Hn=2Hn1+1dlan2

bardzo podobne do ciągu geometrycznego.
Możemy policzyć kilka jego wyrazów:


1,  3,  7,  15,  31,  63,  127,

i rozpoznać w nim ciąg potęg dwójki zmniejszonych o 1.

Ale czy rzeczywiście Hn=2n1?

I znów, aby się upewnić, że nasze odgadnięcie było poprawne, sprawdzamy indukcyjnie, że

2Hn1+1=2(2n11)+1=22n12+1=2n1=Hn

co oznacza, że rzeczywiście ciąg 2n1 spełnia równanie rekurencyjne, którym zadany jest ciąg Hn.
A wiec H64=2641100 000 000 000 000 000 000, co przy przenoszeniu jednego krążka na sekundę zajmie ponad 3 000 000 000 000 lat, a przenosząc te krążki "komputerem" 3GHz potrzeba będzie... i tak ponad tysiąc lat!

Przykład

Znajdź postać zwartą zadanych ciągów rozwijając równanie rekurencyjne:

a0=2,an+1=a2n.

Wskazówka:
Policz kilka pierwszych wyrazów ciągu:

an=a2n1=a4n2=a8n3==a2n0=22n.

Przykład

Jaka jest największa możliwa liczba ln obszarów wyznaczonych przez n prostych na płaszczyźnie?

Sprawdźmy najpierw kilka pierwszych wartości.

  • Gdy nie ma żadnej prostej obszar jest jeden.
  • Jedna prosta tworzy zawsze dwa różne obszary.
  • Kładąc drugą prostą (byle nie równoległą do pierwszej) otrzymujemy 4 obszary.

W tym momencie możemy pokusić się o zgadywanie i przypuścić, że ln=2n. Jednakże

  • Dla trzech prostych jest to 7.

Zauważmy, że nowa prosta zwiększa ilość obszarów o k jeśli przecina dokładnie k1 z poprzednich prostych i to w nowych punktach przecięć. Z drugiej strony dwie proste mogą się przeciąć w co najwyżej jednym punkcie i przecinają się o ile nie są równolegle. Widzimy zatem, że najwięcej obszarów dostaniemy kładąc kolejne proste w ten sposób aby żadne dwie nie były równoległe i żadne trzy nie przecinały się w jednym punkcie. Otrzymujemy następujące równanie rekurencyjne:

l0=1,ln+1=ln+n.

Ponownie rozwiążemy równanie rozwijając je:

ln=ln1+n=ln2+(n1)+n=ln3+(n2)+(n1)+n==l0+1+2++n=1+n(n+1)2,

gdzie ostatnia równość wynika z - już udowodnionego - wzoru na sumę kolejnych liczb naturalnych.