Matematyka dyskretna 1/Ćwiczenia 2: Rekurencja: Różnice pomiędzy wersjami
Nie podano opisu zmian |
|||
(Nie pokazano 7 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 11: | Linia 11: | ||
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 35: | Linia 34: | ||
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 59: | Linia 58: | ||
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 69: | Linia 67: | ||
<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> | ||
Linia 81: | Linia 79: | ||
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 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> .) | ||
Linia 114: | Linia 110: | ||
<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 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> . | ||
Linia 163: | Linia 159: | ||
<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 | ||
Linia 208: | Linia 201: | ||
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: | ||
Linia 246: | Linia 239: | ||
<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. | ||
Linia 267: | Linia 260: | ||
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> | |||
Linia 285: | Linia 277: | ||
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 308: | Linia 300: | ||
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 331: | Linia 322: | ||
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> | |||
Linia 342: | Linia 332: | ||
Dla początkowej wartości <math>k=0 </math> otrzymujemy, że | Dla początkowej wartości <math>k=0</math> otrzymujemy, że | ||
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ą.