Matematyka dyskretna 1/Ćwiczenia 2: Rekurencja: Różnice pomiędzy wersjami
m Zastępowanie tekstu – „\displaystyle ” na „” |
Nie podano opisu zmian |
||
(Nie pokazano 9 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 9: | Linia 9: | ||
a_0 &= 2,\\ | a_0 &= 2,\\ | ||
a_1 &= 5,\\ | a_1 &= 5,\\ | ||
a_n &= 5 a_{n-1} - 6 a_{n-2}\quad\text{dla}\ n\geq 2 | a_n &= 5 a_{n-1} - 6 a_{n-2}\quad\text{dla}\ n\geq 2, | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
Linia 20: | Linia 19: | ||
Wypisz kilka początkowych wyrazów ciągu. | Wypisz kilka początkowych wyrazów ciągu. | ||
Zaobserwuj, że | Zaobserwuj, że | ||
<math>a_n=2^n+3^n | <math>a_n=2^n+3^n | ||
</math> | </math> | ||
a następnie udowodnij to indukcyjnie ze względu na <math>n </math> . | a następnie udowodnij to indukcyjnie ze względu na <math>n</math> . | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | ||
Przeprowadźmy dowód, że <math>a_n=2^n+3^n </math> , indukcyjnie ze względu na <math>n </math> . | Przeprowadźmy dowód, że <math>a_n=2^n+3^n</math> , indukcyjnie ze względu na <math>n</math> . | ||
Dla wartości początkowych <math>n=0,1 </math> dostajemy odpowiednio, że | Dla wartości początkowych <math>n=0,1</math> dostajemy odpowiednio, że | ||
<center><math>\begin{align} a_0&=2 = 2^0+3^0,\\ | <center><math>\begin{align} a_0&=2 = 2^0+3^0,\\ | ||
a_1&=5 = 2^1+3^1 | a_1&=5 = 2^1+3^1 | ||
\end{align}</math></center> | \end{align}</math></center> | ||
Przejdźmy więc do przypadku <math>n\geq2 </math> . | Przejdźmy więc do przypadku <math>n\geq2</math> . | ||
Na mocy zależności rekurencyjnej otrzymujemy, że | Na mocy zależności rekurencyjnej otrzymujemy, że | ||
Linia 42: | Linia 41: | ||
&=5\left( 2^{n-1}+3^{n-1} \right)-6\left( 2^{n-2}+3^{n-2} \right)\\ | &=5\left( 2^{n-1}+3^{n-1} \right)-6\left( 2^{n-2}+3^{n-2} \right)\\ | ||
&=4\cdot2^{n-2}+9\cdot3^{n-2}\\ | &=4\cdot2^{n-2}+9\cdot3^{n-2}\\ | ||
&=2^n+3^n | &=2^n+3^n | ||
\end{align}</math></center> | \end{align}</math></center> | ||
Linia 57: | Linia 56: | ||
a_0 &= 1,\\ | a_0 &= 1,\\ | ||
a_1 &= 2,\\ | a_1 &= 2,\\ | ||
a_n &= \frac{a_{n-1}^2}{a_{n-2}}\quad\text{dla}\ n\geq 2 | a_n &= \frac{a_{n-1}^2}{a_{n-2}}\quad\text{dla}\ n\geq 2 | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
}} | }} | ||
Linia 67: | Linia 65: | ||
Wypisz kilka początkowych wyrazów ciągu. | Wypisz kilka początkowych wyrazów ciągu. | ||
Zaobserwuj, że | Zaobserwuj, że | ||
<math>a_n=2^n | <math>a_n=2^n | ||
</math> | </math> | ||
a następnie udowodnij to indukcyjnie ze względu na <math>n </math> . | a następnie udowodnij to indukcyjnie ze względu na <math>n</math> . | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | ||
Przeprowadźmy dowód, że <math>a_n=2^n </math> , indukcyjnie ze względu na <math>n </math> . Dla wartości początkowych <math>n=0,1 </math> dostajemy odpowiednio, że | Przeprowadźmy dowód, że <math>a_n=2^n</math> , indukcyjnie ze względu na <math>n</math> . Dla wartości początkowych <math>n=0,1</math> dostajemy odpowiednio, że | ||
<center><math>\begin{align} a_0&= 1= 2^0,\\ | <center><math>\begin{align} a_0&= 1= 2^0,\\ | ||
a_1&= 2= 2^1 | a_1&= 2= 2^1 | ||
\end{align}</math></center> | \end{align}</math></center> | ||
Przejdźmy więc do przypadku <math>n\geq2 </math> . Na mocy zależności rekurencyjnej otrzymujemy, że | Przejdźmy więc do przypadku <math>n\geq2</math> . Na mocy zależności rekurencyjnej otrzymujemy, że | ||
<center><math>a_n= \frac{a_{n-1}^2}{a_{n-2}}= \frac{\left( 2^{n-1} \right)^2}{2^{n-2}}= 2^{2\left( n-1 \right)-\left( n-2 \right)}= 2^n | <center><math>a_n= \frac{a_{n-1}^2}{a_{n-2}}= \frac{\left( 2^{n-1} \right)^2}{2^{n-2}}= 2^{2\left( n-1 \right)-\left( n-2 \right)}= 2^n | ||
</math></center> | </math></center> | ||
Linia 101: | Linia 99: | ||
l_n &= l_{n-1}+ l_{n-2}\quad\text{dla}\ n\geq 2. | l_n &= l_{n-1}+ l_{n-2}\quad\text{dla}\ n\geq 2. | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
Udowodnij, że | Udowodnij, że | ||
<math>l_n = f_{n+1} + f_{n-1} | <math>l_n = f_{n+1} + f_{n-1}</math>, | ||
</math> | gdzie <math>f_n</math> jest <math>n</math> -tą liczbą Fibonacci'ego. | ||
gdzie <math>f_n </math> jest <math>n </math> -tą liczbą Fibonacci'ego. | (Dla precyzji obliczeń przyjmij, że <math>f_{-1}=0</math> .) | ||
(Dla precyzji obliczeń przyjmij, że <math>f_{-1}=0 </math> .) | |||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
Zastosuj indukcję względem <math>n </math> . | Zastosuj indukcję względem <math>n</math> . | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | ||
Dowód przeprowadzimy, indukcyjnie ze względu na <math>n </math> . Dla wartości początkowych <math>n=0,1 </math> dostajemy odpowiednio, że | Dowód przeprowadzimy, indukcyjnie ze względu na <math>n</math> . Dla wartości początkowych <math>n=0,1</math> dostajemy odpowiednio, że | ||
Linia 126: | Linia 122: | ||
Przejdźmy więc do przypadku <math>n\geq2 </math> . Na mocy zależności rekurencyjnej otrzymujemy, że | Przejdźmy więc do przypadku <math>n\geq2</math> . Na mocy zależności rekurencyjnej otrzymujemy, że | ||
Linia 132: | Linia 128: | ||
&=\left( f_n + f_{n-2} \right)+\left( f_{n-1} + f_{n-3} \right)\\ | &=\left( f_n + f_{n-2} \right)+\left( f_{n-1} + f_{n-3} \right)\\ | ||
&=\left( f_n + f_{n-1} \right)+\left( f_{n-2} + f_{n-3} \right)\\ | &=\left( f_n + f_{n-1} \right)+\left( f_{n-2} + f_{n-3} \right)\\ | ||
&=f_{n+1} + f_{n-1} | &=f_{n+1} + f_{n-1} | ||
\end{align}</math></center> | \end{align}</math></center> | ||
Linia 141: | Linia 137: | ||
{{cwiczenie|4|cw 4| | {{cwiczenie|4|cw 4| | ||
Adam i Marek zabawiali się w następującą grę. | Adam i Marek zabawiali się w następującą grę. | ||
Adam wymyślał liczbę z zakresu od <math>0 </math> do <math>n-1 </math> . | Adam wymyślał liczbę z zakresu od <math>0</math> do <math>n-1</math> . | ||
Zadaniem Marka było odgadnąć tę liczbę | Zadaniem Marka było odgadnąć tę liczbę | ||
zadając Adamowi pytania, na które mógł odpowiadać jedynie TAK lub NIE. | zadając Adamowi pytania, na które mógł odpowiadać jedynie TAK lub NIE. | ||
Linia 149: | Linia 145: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
Załóżmy, że Marek ma pewność, że szukana liczba <math>x </math> znajduje się w przedziale | Załóżmy, że Marek ma pewność, że szukana liczba <math>x</math> znajduje się w przedziale | ||
<math>\left[a,b\right] </math> . | <math>\left[a,b\right]</math> . | ||
Po uzyskaniu odpowiedzi na pytanie, | Po uzyskaniu odpowiedzi na pytanie, | ||
czy <math>x </math> jest większa niż <math>\left\lfloor \left( a+b+1 \right)/2 \right\rfloor </math> , | czy <math>x</math> jest większa niż <math>\left\lfloor \left( a+b+1 \right)/2 \right\rfloor</math> , | ||
Marek zawęzi zbiór poszukiwań o połowę, | Marek zawęzi zbiór poszukiwań o połowę, | ||
szukając później liczby <math>x </math> w przedziale | szukając później liczby <math>x</math> w przedziale | ||
<math>\left[a,\left\lfloor \left( a+b-1 \right)/2 \right\rfloor\right] </math> albo w przedziale | <math>\left[a,\left\lfloor \left( a+b-1 \right)/2 \right\rfloor\right]</math> albo w przedziale | ||
<math>\left[\left\lfloor \left( a+b+1 \right)/2 \right\rfloor,b\right] </math> . | <math>\left[\left\lfloor \left( a+b+1 \right)/2 \right\rfloor,b\right]</math> . | ||
Dla uproszczenia obliczeń załóż, że Marek szuka liczby z zakresu | Dla uproszczenia obliczeń załóż, że Marek szuka liczby z zakresu | ||
<math>\left[0,2^{\left\lceil \lg n \right\rceil}-1\right] </math> . | <math>\left[0,2^{\left\lceil \lg n \right\rceil}-1\right]</math> . | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | ||
Strategię Marka można przedstawić w następujący rekurencyjny sposób: | Strategię Marka można przedstawić w następujący rekurencyjny sposób: | ||
* Jeśli szukana liczba <math>x </math> jest z zakresu <math>\left[a,b\right] </math>, gdzie <math>a=b </math>, to Marek wie, że szukana liczba to <math>a </math> . | * Jeśli szukana liczba <math>x</math> jest z zakresu <math>\left[a,b\right]</math>, gdzie <math>a=b</math>, to Marek wie, że szukana liczba to <math>a</math> . | ||
* Jeśli szukana <math>x </math> liczba jest z zakresu <math>\left[a,b\right] </math>, gdzie <math>a<b </math>, to Marek zadaje pytanie, czy <math>x\geq\left\lfloor \left( a+b+1 \right)/2 \right\rfloor </math>. Gdy Adam odpowie: | * Jeśli szukana <math>x</math> liczba jest z zakresu <math>\left[a,b\right]</math>, gdzie <math>a<b</math>, to Marek zadaje pytanie, czy <math>x\geq\left\lfloor \left( a+b+1 \right)/2 \right\rfloor</math>. Gdy Adam odpowie: | ||
** NIE, to <math>x\in\left[a,\left\lfloor \left( a+b-1 \right)/2 \right\rfloor\right] </math> , | ** NIE, to <math>x\in\left[a,\left\lfloor \left( a+b-1 \right)/2 \right\rfloor\right]</math> , | ||
** TAK, to <math>x\in\left[\left\lfloor \left( a+b+1 \right)/2 \right\rfloor,b\right] </math> . | ** TAK, to <math>x\in\left[\left\lfloor \left( a+b+1 \right)/2 \right\rfloor,b\right]</math> . | ||
Za każdym razem, zbiór możliwych wartości <math>x </math> zmniejsza się o połowę. Tak pomniejszony zbiór przeszukujemy wykorzystując rekurencyjnie opisywaną strategię. | Za każdym razem, zbiór możliwych wartości <math>x</math> zmniejsza się o połowę. Tak pomniejszony zbiór przeszukujemy wykorzystując rekurencyjnie opisywaną strategię. | ||
Dla uproszczenia obliczeń załóżmy, że Marek na początku powiększa przedział poszukiwań do <math>\left[0,2^{\left\lceil \lg n \right\rceil}-1\right] </math>. Może oczywiście tak zrobić, bo <math>n\leq 2^{\left\lceil \lg n \right\rceil} | Dla uproszczenia obliczeń załóżmy, że Marek na początku powiększa przedział poszukiwań do <math>\left[0,2^{\left\lceil \lg n \right\rceil}-1\right]</math>. Może oczywiście tak zrobić, bo <math>n\leq 2^{\left\lceil \lg n \right\rceil}</math> Równanie rekurencyjne opisujące liczbę zapytań <math>T\!\left( n \right)</math> jest więc postaci | ||
Linia 178: | Linia 174: | ||
T\!\left( n \right) &= T\!\left( \left\lceil \frac{n}{2} \right\rceil \right)+1\quad\text{dla}\ n\geq 2. | T\!\left( n \right) &= T\!\left( \left\lceil \frac{n}{2} \right\rceil \right)+1\quad\text{dla}\ n\geq 2. | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
Dla liczb postaci <math>2^k </math> , gdzie <math>k=0,1,\ldots </math> otrzymujemy prostszą postać: | Dla liczb postaci <math>2^k</math> , gdzie <math>k=0,1,\ldots</math> otrzymujemy prostszą postać: | ||
Linia 190: | Linia 185: | ||
T\!\left( 2^k \right) &= T\!\left( 2^{k-1} \right)+1\quad\text{dla}\ k\geq 1. | T\!\left( 2^k \right) &= T\!\left( 2^{k-1} \right)+1\quad\text{dla}\ k\geq 1. | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
Linia 197: | Linia 191: | ||
<center><math>T\!\left( 2^k \right)=k | <center><math>T\!\left( 2^k \right)=k</math></center> | ||
</math></center> | |||
Dla <math>n=1 </math> otrzymujemy, że | Dla <math>n=1</math> otrzymujemy, że | ||
<center><math>T\!\left( 1 \right)=\lg 1 = 0 | <center><math>T\!\left( 1 \right)=\lg 1 = 0 | ||
</math></center> | </math></center> | ||
Przejdźmy więc do przypadku, gdy <math>k>0 </math> . | Przejdźmy więc do przypadku, gdy <math>k>0</math> . | ||
Korzystając z założenia indukcyjnego, że <math>T\!\left( 2^{k-1} \right)=k-1 </math> , otrzymujemy: | Korzystając z założenia indukcyjnego, że <math>T\!\left( 2^{k-1} \right)=k-1</math> , otrzymujemy: | ||
<center><math>T\!\left( 2^k \right)= T\!\left( 2^{k-1} \right)+1= \left( k-1 \right)+1= k | <center><math>T\!\left( 2^k \right)= T\!\left( 2^{k-1} \right)+1= \left( k-1 \right)+1= k | ||
</math></center> | </math></center> | ||
Linia 220: | Linia 213: | ||
<center><math>T\!\left( 2^{\left\lceil \lg n \right\rceil} \right)=\left\lceil \lg n \right\rceil | <center><math>T\!\left( 2^{\left\lceil \lg n \right\rceil} \right)=\left\lceil \lg n \right\rceil | ||
</math></center> | </math></center> | ||
Linia 227: | Linia 220: | ||
{{cwiczenie|5|cw 5| | {{cwiczenie|5|cw 5| | ||
Talia składa się z <math>2^n </math> kart. | Talia składa się z <math>2^n</math> kart. | ||
Sortujemy te karty poprzez rekurencyjne rozkładanie ich na dwie równe kupki | Sortujemy te karty poprzez rekurencyjne rozkładanie ich na dwie równe kupki | ||
w następujący sposób: | w następujący sposób: | ||
* Jeśli kupka składa się z jednej karty, to kupka ta jest posortowana. | * Jeśli kupka składa się z jednej karty, to kupka ta jest posortowana. | ||
* Kupkę zawierającą <math>2^k </math> kart, gdzie <math>k>0 </math> , | * Kupkę zawierającą <math>2^k</math> kart, gdzie <math>k>0</math> , | ||
dzielimy na dwie kupki zawierające po <math>2^{k-1} </math> kart. | dzielimy na dwie kupki zawierające po <math>2^{k-1}</math> kart. | ||
Każdą z tych mniejszych kupek sortujemy oddzielnie | Każdą z tych mniejszych kupek sortujemy oddzielnie | ||
(powtarzając rekurencyjnie całą procedurę sortowania). | (powtarzając rekurencyjnie całą procedurę sortowania). | ||
Linia 238: | Linia 231: | ||
zawsze zabierając większą z dwu szczytowych kart. | zawsze zabierając większą z dwu szczytowych kart. | ||
Oblicz ile ruchów potrzebnych było do posortowania wszystkich <math>2^n </math> kart, | Oblicz ile ruchów potrzebnych było do posortowania wszystkich <math>2^n</math> kart, | ||
jeżeli rozdzielenie <math>2^k </math> kart na dwie kupki wymaga <math>2^{k-1} </math> ruchów, | jeżeli rozdzielenie <math>2^k</math> kart na dwie kupki wymaga <math>2^{k-1}</math> ruchów, | ||
a złożenie dwu posortowanych kupek, o <math>2^{k-1} </math> kartach, | a złożenie dwu posortowanych kupek, o <math>2^{k-1}</math> kartach, | ||
w jedną całość wymaga <math>2^k </math> ruchów. | w jedną całość wymaga <math>2^k</math> ruchów. | ||
}} | }} | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
Udowodnij indukcyjnie, ze względu na <math>n </math> , | Udowodnij indukcyjnie, ze względu na <math>n</math> , | ||
że liczba ruchów potrzebna do posortowania <math>2^n </math> kart | że liczba ruchów potrzebna do posortowania <math>2^n</math> kart | ||
wymaga <math>\frac{3}{2}n2^n </math> ruchów. | wymaga <math>\frac{3}{2}n2^n</math> ruchów. | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | ||
Z definicji rekurencyjnej sortowania kart wynika, | Z definicji rekurencyjnej sortowania kart wynika, | ||
że dla <math>n>0 </math> liczba <math>T\!\left( 2^n \right) </math> potrzebnych przełożeń <math>2^n </math> kart | że dla <math>n>0</math> liczba <math>T\!\left( 2^n \right)</math> potrzebnych przełożeń <math>2^n</math> kart | ||
jest równa sumie | jest równa sumie | ||
* <math>2^{n-1} </math> ruchów na rozdzielenie kupek, | * <math>2^{n-1}</math> ruchów na rozdzielenie kupek, | ||
* <math>2T\!\left( 2^{n-1} \right) </math> posortowanie obu rozdzielonych kupek, | * <math>2T\!\left( 2^{n-1} \right)</math> posortowanie obu rozdzielonych kupek, | ||
* <math>2^n </math> ruchów na scalenie dwu posortowanych części. | * <math>2^n</math> ruchów na scalenie dwu posortowanych części. | ||
Otrzymujemy więc następujące równanie rekurencyjne: | Otrzymujemy więc następujące równanie rekurencyjne: | ||
Linia 265: | Linia 258: | ||
\begin{align} | \begin{align} | ||
T\!\left( 1 \right) &= 0,\\ | T\!\left( 1 \right) &= 0,\\ | ||
T\!\left( 2^n \right) &= 2T\!\left( 2^{n-1} \right)+\frac{3}{2}\cdot2^n\quad\text{dla}\ n\geq 1 | T\!\left( 2^n \right) &= 2T\!\left( 2^{n-1} \right)+\frac{3}{2}\cdot2^n\quad\text{dla}\ n\geq 1 | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
Udowodnijmy indukcyjnie ze względu na <math>n </math> , że | Udowodnijmy indukcyjnie ze względu na <math>n</math> , że | ||
<center><math>T\!\left( 2^n \right)=\frac{3}{2}n2^n | <center><math>T\!\left( 2^n \right)=\frac{3}{2}n2^n | ||
</math></center> | </math></center> | ||
Linia 281: | Linia 273: | ||
<center><math>\frac{3}{2}\cdot0\cdot2^0=0=T\!\left( 1 \right)= T\!\left( 2^0 \right) | <center><math>\frac{3}{2}\cdot0\cdot2^0=0=T\!\left( 1 \right)= T\!\left( 2^0 \right) | ||
</math></center> | </math></center> | ||
Przejdźmy więc do przypadku, gdy <math>n>0 </math> . | Przejdźmy więc do przypadku, gdy <math>n>0</math> . | ||
Korzystając z założenia indukcyjnego otrzymujemy: | Korzystając z założenia indukcyjnego otrzymujemy: | ||
Linia 292: | Linia 284: | ||
&=2\left( \frac{3}{2}\left( n-1 \right)2^{n-1} \right)+\frac{3}{2}\cdot2^n\\ | &=2\left( \frac{3}{2}\left( n-1 \right)2^{n-1} \right)+\frac{3}{2}\cdot2^n\\ | ||
&=\frac{3}{2}n2^n-\frac{3}{2}\cdot2^n+\frac{3}{2}\cdot2^n\\ | &=\frac{3}{2}n2^n-\frac{3}{2}\cdot2^n+\frac{3}{2}\cdot2^n\\ | ||
&=\frac{3}{2}n2^n | &=\frac{3}{2}n2^n | ||
\end{align}</math></center> | \end{align}</math></center> | ||
Linia 306: | Linia 298: | ||
\begin{align} | \begin{align} | ||
T\!\left( 2 \right) &= 0,\\ | T\!\left( 2 \right) &= 0,\\ | ||
T\!\left( n \right) &= 2T\!\left( \sqrt{n} \right)+1\quad\text{dla}\ n\geq 1 | T\!\left( n \right) &= 2T\!\left( \sqrt{n} \right)+1\quad\text{dla}\ n\geq 1 | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
przy czym <math>n </math> jest postaci <math>2^{2^k} </math> , gdzie <math>k </math> jest liczbą naturalną. | przy czym <math>n</math> jest postaci <math>2^{2^k}</math> , gdzie <math>k</math> jest liczbą naturalną. | ||
}} | }} | ||
Linia 318: | Linia 309: | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Wskazówka </span><div class="mw-collapsible-content" style="display:none"> | ||
Policz kilka pierwszych wyrazów tego ciągu. | Policz kilka pierwszych wyrazów tego ciągu. | ||
Zaobserwuj, że <math>T\!\left( 2^{2^k} \right)=k </math> , | Zaobserwuj, że <math>T\!\left( 2^{2^k} \right)=k</math> , | ||
a następnie udowodnij indukcyjnie, że w istocie tak jest. | a następnie udowodnij indukcyjnie, że w istocie tak jest. | ||
</div></div> | </div></div> | ||
<div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | <div class="mw-collapsible mw-made=collapsible mw-collapsed"><span class="mw-collapsible-toogle mw-collapsible-toogle-default style="font-variant:small-caps">Rozwiązanie </span><div class="mw-collapsible-content" style="display:none"> | ||
Po zapisaniu <math>n </math> w postaci <math>2^{2^k} </math> otrzymujemy równanie: | Po zapisaniu <math>n</math> w postaci <math>2^{2^k}</math> otrzymujemy równanie: | ||
Linia 329: | Linia 320: | ||
\begin{align} | \begin{align} | ||
T\!\left( 2 \right) &= 0,\\ | T\!\left( 2 \right) &= 0,\\ | ||
T\!\left( 2^{2^k} \right) &= 2T\!\left( 2^{2^{k-1}} \right)+1\quad\text{dla}\ k\geq 1 | T\!\left( 2^{2^k} \right) &= 2T\!\left( 2^{2^{k-1}} \right)+1\quad\text{dla}\ k\geq 1 | ||
\end{align} | \end{align} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
Udowodnimy indukcyjnie ze względu na <math>k\geq0 </math> , że | Udowodnimy indukcyjnie ze względu na <math>k\geq0</math> , że | ||
<center><math>T\!\left( 2^{2^k} \right)=k | <center><math>T\!\left( 2^{2^k} \right)=k | ||
</math></center> | </math></center> | ||
Dla początkowej wartości <math>k=0 </math> otrzymujemy, że | Dla początkowej wartości <math>k=0</math> otrzymujemy, że | ||
<center><math>T\!\left( 2^{2^0} \right)= T\!\left( 2 \right)=0 | <center><math>T\!\left( 2^{2^0} \right)= T\!\left( 2 \right)=0 | ||
</math></center> | </math></center> | ||
Przejdźmy więc do przypadku, gdy <math>k\geq0 </math> . | Przejdźmy więc do przypadku, gdy <math>k\geq0</math> . | ||
Korzystając z założenia indukcyjnego otrzymujemy, że | Korzystając z założenia indukcyjnego otrzymujemy, że | ||
<center><math>T\!\left( 2^{2^k} \right)=2T\!\left( 2^{2^{k-1}} \right)+1=\left( k-1 \right)+1=k | <center><math>T\!\left( 2^{2^k} \right)=2T\!\left( 2^{2^{k-1}} \right)+1=\left( k-1 \right)+1=k | ||
</math></center> | </math></center> | ||
W konsekwencji, gdy <math>n </math> jest postaci <math>2^{2^k} </math> , czyli | W konsekwencji, gdy <math>n</math> jest postaci <math>2^{2^k}</math> , czyli | ||
<math>k=\lg \lg n </math> , otrzymujemy: | <math>k=\lg \lg n</math> , otrzymujemy: | ||
<center><math>T\!\left( n \right)=\lg \lg n | <center><math>T\!\left( n \right)=\lg \lg n | ||
</math></center> | </math></center> | ||
</div></div> | </div></div> |
Aktualna wersja na dzień 23:39, 11 wrz 2023
Rekurencja
Ćwiczenie 1
Znajdź postać zwartą ciągu zadanego równaniem rekurencyjnym:
Ćwiczenie 2
Znajdź postać zwartą ciągu zadanego równaniem rekurencyjnym:
Ćwiczenie 3
Ciąg liczb Lucasa jest definiowany następującą zależnością rekurencyjną:
Udowodnij, że
,
gdzie jest -tą liczbą Fibonacci'ego.
(Dla precyzji obliczeń przyjmij, że .)
Ćwiczenie 4
Adam i Marek zabawiali się w następującą grę. Adam wymyślał liczbę z zakresu od do . Zadaniem Marka było odgadnąć tę liczbę zadając Adamowi pytania, na które mógł odpowiadać jedynie TAK lub NIE. Znajdź najmniejszą liczbę pytań, po której Marek zawsze odnajdzie szukaną liczbę.
Ćwiczenie 5
Talia składa się z kart. Sortujemy te karty poprzez rekurencyjne rozkładanie ich na dwie równe kupki w następujący sposób:
- Jeśli kupka składa się z jednej karty, to kupka ta jest posortowana.
- Kupkę zawierającą kart, gdzie ,
dzielimy na dwie kupki zawierające po kart. Każdą z tych mniejszych kupek sortujemy oddzielnie (powtarzając rekurencyjnie całą procedurę sortowania). Następnie kolejno zbieramy karty ze szczytów obu kupek, zawsze zabierając większą z dwu szczytowych kart.
Oblicz ile ruchów potrzebnych było do posortowania wszystkich kart, jeżeli rozdzielenie kart na dwie kupki wymaga ruchów, a złożenie dwu posortowanych kupek, o kartach, w jedną całość wymaga ruchów.
Ćwiczenie 6
Rozwiąż równanie rekurencyjne:
przy czym jest postaci , gdzie jest liczbą naturalną.