Matematyka dyskretna 1/Wykład 2: Rekurencja: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
Linia 4: | Linia 4: | ||
* nieformalnie - taka definicja, która odwołuje się do samej siebie<br> | * nieformalnie - taka definicja, która odwołuje się do samej siebie<br> | ||
- ale trzeba tu uważać, by odwołanie było do instancji o mniejszej komplikacji, | - ale trzeba tu uważać, by odwołanie było do instancji o mniejszej komplikacji, | ||
* zwykle chodzi o ciąg <math>\left\langle a_0, a_1, a_2, a_3, \ldots \right\rangle</math>, <br> | * zwykle chodzi o ciąg <math>\left\langle a_0, a_1, a_2, a_3, \ldots \right\rangle</math>, <br> | ||
- dla którego przepis na element <math>a_n</math> wykorzystuje jaki(e)ś poprzedni(e) element(y): <math>a_{n-1}, a_{n-2}, \ldots</math> itp., | - dla którego przepis na element <math>a_n</math> wykorzystuje jaki(e)ś poprzedni(e) element(y): <math>a_{n-1}, a_{n-2}, \ldots</math> itp., | ||
* początkowy element (lub kilka początkowych) muszą być zadane konkretnie - | * początkowy element (lub kilka początkowych) muszą być zadane konkretnie - | ||
Linia 38: | Linia 38: | ||
<center><math>\ | <center><math>\aligned s_0 &=& 1 | ||
\\ | \\ | ||
s_{n} &=& n \cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1. | s_{n} &=& n \cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1. | ||
Linia 47: | Linia 47: | ||
<center><math>\ | <center><math>\aligned s_0 &=& 1 | ||
\\ | \\ | ||
s_1 &=& 1 \cdot s_{0} = 1 \cdot 1 = 1 | s_1 &=& 1 \cdot s_{0} = 1 \cdot 1 = 1 | ||
Linia 67: | Linia 67: | ||
<center><math>\ | <center><math>\aligned s_0 &=& 0 | ||
\\ | \\ | ||
s_{n} &=& n \cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1 | s_{n} &=& n \cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1 | ||
Linia 76: | Linia 76: | ||
<center><math>\ | <center><math>\aligned s_0 &=& \frac{1}{2} | ||
\\ | \\ | ||
s_{n} &=& n \cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1 | s_{n} &=& n \cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1 | ||
Linia 85: | Linia 85: | ||
<center><math>\ | <center><math>\aligned s_0 &=& 1 | ||
\\ | \\ | ||
s_{n} &=& n \cdot s_{n-2} \mbox{\ \ \ dla \ } n\geq 2. | s_{n} &=& n \cdot s_{n-2} \mbox{\ \ \ dla \ } n\geq 2. | ||
Linia 101: | Linia 101: | ||
<center><math>\ | <center><math>\aligned s_0 &=& 0 | ||
\\ | \\ | ||
s_{n} &=& s_{n-1}+2 \mbox{\ \ \ dla \ } n\geq 1 | s_{n} &=& s_{n-1}+2 \mbox{\ \ \ dla \ } n\geq 1 | ||
Linia 151: | Linia 151: | ||
<center><math>\ | <center><math>\aligned s_0 &=& 1 | ||
\\ | \\ | ||
s_{n} &=& 2\cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1 | s_{n} &=& 2\cdot s_{n-1} \mbox{\ \ \ dla \ } n\geq 1 | ||
Linia 246: | Linia 246: | ||
* najpierw przenosimy dwa górne krążki na iglicę <math>B</math> posługując się iglicą <math>C</math>: | * najpierw przenosimy dwa górne krążki na iglicę <math>B</math> posługując się iglicą <math>C</math>: | ||
<center><math>A\rightarrow C, \ \ A\rightarrow B, \ \ C\rightarrow B | <center><math>A\rightarrow C, \ \ A\rightarrow B, \ \ C\rightarrow B | ||
</math></center> | </math></center> | ||
* przenosimy największy krążek z <math>A</math> na <math>C</math>: | * przenosimy największy krążek z <math>A</math> na <math>C</math>: | ||
<center><math>A\rightarrow C | <center><math>A\rightarrow C | ||
</math></center> | </math></center> | ||
* przenosimy krążki z <math>B</math> na <math>C</math> posługując się iglicą <math>A</math>: | * przenosimy krążki z <math>B</math> na <math>C</math> posługując się iglicą <math>A</math>: | ||
<center><math>B\rightarrow A, \ \ B\rightarrow C, \ \ A\rightarrow C | <center><math>B\rightarrow A, \ \ B\rightarrow C, \ \ A\rightarrow C | ||
</math></center> | </math></center> | ||
co pokazuje, że potrzeba tu 7 ruchów.<br> | co pokazuje, że potrzeba tu 7 ruchów.<br> | ||
Linia 271: | Linia 265: | ||
<center><math>\ | <center><math>\aligned H_1 &=& 1 | ||
\\ | \\ | ||
H_2 &=& 3 | H_2 &=& 3 | ||
Linia 282: | Linia 276: | ||
* przenosimy <math>n-1</math> górnych krążków na iglicę <math>B</math> posługując się iglicą <math>C</math><br> | * przenosimy <math>n-1</math> górnych krążków na iglicę <math>B</math> posługując się iglicą <math>C</math><br> | ||
- potrzeba na to <math>H_{n-1}</math> ruchów | - potrzeba na to <math>H_{n-1}</math> ruchów | ||
* przenosimy największy krążek z <math>A</math> na <math>C</math><br> | * przenosimy największy krążek z <math>A</math> na <math>C</math><br> | ||
- to tylko jeden ruch | - to tylko jeden ruch | ||
* przenosimy <math>n-1</math> krążków z <math>B</math> na <math>C</math> posługując się iglicą <math>A</math><br> | * przenosimy <math>n-1</math> krążków z <math>B</math> na <math>C</math> posługując się iglicą <math>A</math><br> | ||
- znów potrzeba na to <math>H_{n-1}</math> ruchów | - znów potrzeba na to <math>H_{n-1}</math> ruchów | ||
A zatem | A zatem | ||
Linia 302: | Linia 296: | ||
<center><math>\ | <center><math>\aligned H_1 &=& 1 | ||
\\ | \\ | ||
H_{n} &=& 2\cdot H_{n-1}+1 \mbox{\ \ \ dla \ } n\geq 2 | H_{n} &=& 2\cdot H_{n-1}+1 \mbox{\ \ \ dla \ } n\geq 2 | ||
Linia 335: | Linia 329: | ||
<center><math>\ | <center><math>\aligned a_0&=&2,\\ | ||
a_{n+1}&=&a_n^2. | a_{n+1}&=&a_n^2. | ||
\endaligned</math></center> | \endaligned</math></center> | ||
Linia 372: | Linia 366: | ||
<center><math>\ | <center><math>\aligned l_0&=&1,\\ | ||
l_{n+1}&=&l_n+n. | l_{n+1}&=&l_n+n. | ||
\endaligned</math></center> | \endaligned</math></center> | ||
Linia 380: | Linia 374: | ||
<center><math>\ | <center><math>\aligned l_n&=&l_{n-1}+n=l_{n-2}+(n-1)+n=l_{n-3}+(n-2)+(n-1)+n=\ldots\\ | ||
&=&l_0+1+2+\ldots+n=1+\frac{n(n+1)}{2}, | &=&l_0+1+2+\ldots+n=1+\frac{n(n+1)}{2}, | ||
\endaligned</math></center> | \endaligned</math></center> |
Wersja z 11:04, 19 sie 2006
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 ,
- dla którego przepis na element wykorzystuje jaki(e)ś poprzedni(e) element(y): 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 (zapisywana jako ) to iloczyn kolejnych liczb naturalnych od do , czyli
Przyjmuje się że . Oto wartości silni dla kilku początkowych liczb naturalnych
Ciąg aby mógł być precyzyjnie rozumiany np. przez komputer, powinien być zadany rekurencyjnie jako:
Ponieważ pierwszy wyraz jest zadany, to możemy kolejno obliczać:
Przykład
Jaki ciąg jest zdefiniowany poprzez małą modyfikację w definicji silni?
A co definiują następujące określenia:
oraz
W ostatnim przypadku widać, że ponieważ odwołanie jest Parser nie mógł rozpoznać (nieznana funkcja „\mathsl”): {\displaystyle \mathsl{dwa wyrazy wstecz}} , to już wyliczenie pierwszego wyrazu staje się niemożliwe.
Ciąg arytmetyczny
Przykład
W ciągu zadanym poprzez równania:
łatwo rozpoznać kolejne liczby parzyste:
Ogólnie ciąg zadany poprzez ustalenie oraz
to tzw. Parser nie mógł rozpoznać (nieznana funkcja „\mathsl”): {\displaystyle \mathsl ciąg arytmetyczny}
.
Jego -ty wyraz dany jest wzorem:
Aby to uzasadnić, pokazujemy indukcyjnie, że:
oraz
Ciąg geometryczny
Przykład
W ciągu zadanym poprzez równania:
łatwo rozpoznać kolejne potęgi liczby :
Ogólnie ciąg zadany poprzez ustalenie oraz zadanie
to tzw. Parser nie mógł rozpoznać (nieznana funkcja „\mathsl”): {\displaystyle \mathsl ciąg geometryczny}
.
Jego -ty wyraz dany jest wzorem:
Aby to uzasadnić, pokazujemy indukcyjnie, że:
oraz
Wieże Hanoi
Przykład (E.Lucas, 1883)
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.
{}{0.9pt}
(400,125)
(49,15)(150,0){3}{(2,100)[cc]{(50,10){(0,0)[tc]{A}} (200,10){(0,0)[tc]{B}} (350,10){(0,0)[tc]{C}} (0,15){(1,0){100}} (2,19){(1,0){96}} (4,23){(1,0){92}} (6,27){(1,0){88}} (8,31){(1,0){84}} (10,35){(1,0){80}} (12,39){(1,0){76}} (14,43){(1,0){72}} (16,47){(1,0){68}} (18,51){(1,0){64}} (20,55){(1,0){60}} (22,59){(1,0){56}}
(42,78){(0,0)[cc]{}} (58,78){(0,0)[cc]{}}
(40,97){(1,0){20}} (42,101){(1,0){16}} (44,105){(1,0){12}} (46,109){(1,0){8}}
Następnie Bóg polecił grupie mnichów przełożenie tych krążków na trzecią iglicę , 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ą .
Mnisi pracują od zarania dziejów dzień i noc ... .Ile czasu im to zajmie? }}
Wieże Hanoi - analiza
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:
Podobnie dla dwu krążków możemy postąpić:
Przy 3 krążkach postępujemy tak:
- najpierw przenosimy dwa górne krążki na iglicę posługując się iglicą :
- przenosimy największy krążek z na :
- przenosimy krążki z na posługując się iglicą :
co pokazuje, że potrzeba tu 7 ruchów.
Czy już wiesz jak rozwiązać to zadanie w ogólności (dla krążków)?
Oznaczmy przez liczbę ruchów potrzebnych do przeniesienia krążków z jednej iglicy na drugą. Wiemy już, że:
Aby przenieść krążków z na możemy postąpić podobnie jak w przypadku 3 krążków, redukując zadanie do:
- przenosimy górnych krążków na iglicę posługując się iglicą
- potrzeba na to ruchów
- przenosimy największy krążek z na
- to tylko jeden ruch
- przenosimy krążków z na posługując się iglicą
- znów potrzeba na to ruchów
A zatem
Ile wobec tego wynosi ?
Mamy więc równanie rekurencyjne
bardzo podobne do ciągu geometrycznego.
Możemy policzyć kilka jego wyrazów:
i rozpoznać w nim ciąg potęg dwójki zmniejszonych o 1.
Ale czy rzeczywiście ?
I znów, aby się upewnić, że nasze { odgadnięcie} było poprawne, sprawdzamy indukcyjnie, że
co oznacza, że rzeczywiście ciąg spełnia równanie rekurencyjne, którym zadany jest ciąg .
A wiec ,
co przy przenoszeniu jednego krążka na sekundę zajmie ponad lat, a przenosząc te krążki "komputerem" 3GHz potrzeba będzie... i tak ponad tysiąc lat!
Przykład
Przykład
Jaka jest największa możliwa liczba obszarów wyznaczonych przez 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 obszary.
W tym momencie możemy pokusić się o zgadywanie i przypuścić, że . Jednakże
- Dla trzech prostych jest to .
Rysunek: Rys. 1.5 Szkic na kartce
Zauważmy, że nowa prosta zwiększa ilość obszarów o jeśli przecina dokładnie 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:
Ponownie rozwiążemy równanie rozwijając je:
gdzie ostatnia równość wynika z - już udowodnionego - wzoru na sumę kolejnych liczb naturalnych.