Matematyka dyskretna 1/Ćwiczenia 2: Rekurencja: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
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}. </math> Równanie rekurencyjne opisujące liczbę zapytań  <math>T\!\left( n \right) </math> jest więc postaci
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:


{a0=2,a1=5,an=5an16an2dla n2,


Wskazówka
Rozwiązanie

Ćwiczenie 2

Znajdź postać zwartą ciągu zadanego równaniem rekurencyjnym:


{a0=1,a1=2,an=an12an2dla n2
Wskazówka
Rozwiązanie

Ćwiczenie 3

Ciąg liczb Lucasa jest definiowany następującą zależnością rekurencyjną:


{l0=1,l1=3,ln=ln1+ln2dla n2.


Udowodnij, że ln=fn+1+fn1, gdzie fn jest n -tą liczbą Fibonacci'ego. (Dla precyzji obliczeń przyjmij, że f1=0 .)

Wskazówka
Rozwiązanie

Ćwiczenie 4

Adam i Marek zabawiali się w następującą grę. Adam wymyślał liczbę z zakresu od 0 do n1 . 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ę.

Wskazówka
Rozwiązanie

Ćwiczenie 5

Talia składa się z 2n 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ą 2k kart, gdzie k>0 ,

dzielimy na dwie kupki zawierające po 2k1 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 2n kart, jeżeli rozdzielenie 2k kart na dwie kupki wymaga 2k1 ruchów, a złożenie dwu posortowanych kupek, o 2k1 kartach, w jedną całość wymaga 2k ruchów.

Wskazówka
Rozwiązanie

Ćwiczenie 6

Rozwiąż równanie rekurencyjne:


{T(2)=0,T(n)=2T(n)+1dla n1


przy czym n jest postaci 22k , gdzie k jest liczbą naturalną.

Wskazówka
Rozwiązanie