Rekurence, rekurze a sumy doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky FIT České vysoké učení technické v Praze c Josef Kolar, 2011 Základy diskrétní matematiky, BI-ZDM ZS 2011/12, Lekce 9 Evropský sociální fond. Praha& EU: Investujeme do vaší budoucnosti doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 1/ 15
Rekurence Rekurentní problém Problém, jehož řešení je závislé na řešení menších instancí stejného problému. Jak řešíme rekurentní problémy? Řešení lze obvykle vyjádřit rekurzivním algoritmem a jeho vlastnosti odpovídajícími rekurentními vztahy(rekurencemi). Často nás také zajímá jak formulovat odpovídající iterativní(nerekurzivní) algoritmus jak vyjádřit vlastnosti řešení v uzavřeném tvaru(řešení rekurencí) doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 2/ 15
Hanojskávěž-ToH Příklad 1 Mámetřityče A,B,C,natyči Ajenavlečeno nkruhovýchdisků postupně se zmenšující velikosti. Tyto disky máme přesunout na tyč B tak, že pohybujeme vždy jen jedním diskem a nikdy nepoložíme větší disk na menší. Řešenísivyzkoušímepro n=1nebo n=2auhádnemeobecnýpostup: 1 Pro n=1vezmemediskztyče Aapřemístímejejnatyč B. 2 Pro n >1nejprvepřemístímevrchních n 1diskůzAna C,potom přesuneme n-týdiskzana Bakonečněpřemístíme n 1diskůzC na B. Kolik kroků je celkem zapotřebí k přemístění všech disků? doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 3/ 15
Počet kroků při řešení ToH Označíme minimální počet kroků(přesunů jednotlivých disků) potřebných prořešenítohvelikosti njako T n. Užvíme,že T 1 =1,T 2 =3(můžemedoplnitiT 0 =0),zpopsaného postupu řešení plyne { 0 pro n=0, T n = (1) 2.T n 1 +1 pro n >0. Otázka: Je uvedený postup opravdu optimální? doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 4/ 15
Počítáme kroky Jakurčímenapř. T 8? T 2 =3, T 3 =2 T 2 +1=2 3+1=7, T 4 =2 T 3 +1=2 7+1=15, T 5 =2 T 4 +1=2 15+1=31, T 6 =2 T 5 +1=2 31+1=63, T 7 =2 T 6 +1=2 63+1=127, T 8 =2 T 7 +1=2 127+1=255. UFFF!!! Zkusímeuhádnoutvyjádření T n vuzavřenémtvaru: T n =2 n 1, pro n 0 (2) To odpovídá prvním spočteným hodnotám, je to ale opravdu správně? doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 5/ 15
Ověřeníuzavřenéformulepro T n Jak dokážeme správnost vztahu(??)? MATEMATICKOU INDUKCÍ! 1 T 0 jeopravdunula,neboť T 0 =2 0 1=0. 2 Předpokládejme,ževztah(??)platípro n 0achcemeurčit hodnotu T n+1. Podle vztahu(??) a s využitím indukčního předpokladu dostáváme T n+1 =2T n +1=2(2 n 1)+1=2 n+1 1. Je tedy potvrzeno, že řešení rekurentního vztahu(??) má tvar uvedený ve vztahu(??). Otázka Kolik desítkových číslic je přibližně třeba k vyjádření počtu kroků při přesunu64disků?(nápověda:log 10 2 0,3-doba584942417355roků.) doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 6/ 15
Jedno malé kouzlo Místo uhádnutí správného řešení jsme také mohli použít následujícího triku: k oběma stranám rekurence(??) přičteme jedničku: { 1 pro n=0, T n +1= 2.T n 1 +2 pro n >0. azavedeme U n = T n +1,prokteréplatírekurence { 1 pro n=0, U n = 2.U n 1 pro n >0. (3) Není obtížné poznat, že rekurenci(??) řeší geometrická posloupnost U n =2 n,takže T n = U n 1=2 n 1. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 7/ 15
Jak krájet pizzu Příklad 2 Na kolik kousků je možné rozkrájet pizzu pomocí n přímých tahů řezacím kolečkem? Formálníznění:Jakýjemaximálnípočet L n oblastíurčených npřímkami vrovině? Pomocíobrázkůsnadnourčíme,že L 0 =1, L 1 =2, L 2 =4 Vypadáto,žebymohlobýt L n =2 n, aleouha!-l 3 =4+3-dalšípřímkoudokážemepřidatnejvýše3oblasti. Obecně: n-tápřímka(pro n >0)můžezvýšitpočetoblastíok, prochází-li k starými oblastmi, protne-listávajícípřímkyv(k 1)různýchbodech, takžeje k naplatí L n L n 1 +n, pro n >0 doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 8/ 15
Umíme krájet pizzu! Všechny předchozí přímky protneme, právě když nová přímka nebude rovnoběžná se žádnou z nich, takže lze docílit rovnost a máme rekurenci: { 1 pro n=0, L n = (4) L n 1 +n pro n >0. Prověříme,zdajižspočtenéhodnoty L 1,L 2 a L 3 tétorekurencivyhovují. Jakvlastněposloupnost L n vypadá:1, 2, 4, 7, 11, 16, 22,... Připomíná nám to něco? Ani ne, takže uhádnout řešení asi nepůjde. Zkusíme postupný rozklad rekurence(tzv. telescope). doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 9/ 15
Postupný rozklad rekurence Dosazujeme do pravé strany hodnoty odvozené z rekurentního pravidla: L n = L n 1 +n = L n 2 +(n 1)+n = L n 3 +(n 2)+(n 1)+n =. = L 0 +1+2+...+(n 2)+(n 1)+n = 1+S n, kde S n =1+2+...+(n 2)+(n 1)+n Umímeurčit S n jakotouměldevítiletýgauss?samozřejmě S n = n(n+1), takže L n = n(n+1) +1, pro n 0 (5) 2 2 Jsmehotovi?Nikoliv,ještěbychomtomělidokázatindukcí... doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 10/ 15
Složitější krájení pizzy Příklad 3 Trochu si zkomplikujeme řezání: namísto přímého řezu povedeme řezy ve tvaru zubu(zlomené přímky)- nakreslíme si obrázek. Jakýbudemaximálnípočet Z n oblastíurčených nzubyvrovině? Zřejměje Z 0 =1, Z 1 =2, Z 2 =7.Jakjetoobecně? Přidatnovýzubjejakopřidatdvěnovépřímky,ukterýchaletři oblasti splynou do jedné! Na každý nový zub tedy proti dvěma přímkám ztratíme dvě oblasti: Z n = L 2n 2n=2n(2n+1)/2+1 2n = 2n 2 n+1, pro n 0. Jak vidno, L n 1 2 n2, Z n 2n 2 doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 11/ 15
Josefův problém Příklad 4 Skupina židovských povstalců ve válce proti Římanům byla obklíčena vjeskyni.rozhodliseradějiumřít,nežabysevzdali.stouplisidokruhu azabíjelikaždéhotřetíhotakdlouho,ažzůstalposlední,atensezabilsám. Josefovisealezemřítnechtěloaprotožebylchytrýanavícměljednoho komplice, stoupli si na taková místa, že jako poslední zbyli právě oni dva. V naší verzi předpokládáme n lidí rozestavených do kruhu, zabíjí se každý druhý tak dlouho, až zbyde poslední, který zůstane naživu. Máme určit pořadové číslo J(n) přežívající osoby. Pron=10budoupostupněeliminoványosoby2,4,6,8,10,3,7,14a9, takže číslo 5 přežije. Platítedy J(10)=5. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 12/ 15
Zkoušíme hádat Platí J(10)=5. Jeztohomožnéodhadnout,že J(n)=n/2pronějakámalásudá n? n 1 2 3 4 5 6 J(n) 1 1 3 1 3 5 Odhadnefungujepro n=4an=6,hodnoty J(n)jsounavícvšechny liché. Při prvním průchodu vypadnou všechna sudá čísla- je-li na počátku 2n lidí (1, 2, 3, 4,..., 2n 2, 2n 1, 2n),zbydejichpolovinaslichýmičísly (1, 3, 5, 7,..., 2n 3, 2n 1)adalšíkolozačneeliminacíčísla3. To je obdobná situace jako na začátku, jen čísla přítomných jsou dvojnásobky zmenšené o 1: J(2n)=2J(n) 1 pro n 1 doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 13/ 15
CodálsJosefem? Jakmůžemevyužíttoho,že J(10)=5aJ(2n)=2J(n) 1pro n 1? Zkusíme počítat J(n) pro násobky čísla 10 v argumentu: J(20) = 2J(10) 1=2 5 1=9 J(40) = 2J(20) 1=2 9 1=17, takžeobecně J(5 2 m ) = 2 m+1 +1. Ajaktovypadáprolichýpočetosob2n+1? Při prvním průchodu vypadnou všechna sudá čísla a po čísle 2n vypadne číslo1,zbydetedymenšípolovinasčísly(3, 5,..., 2n 1, 2n+1)a dalšíkolozačneodčísla3. Máme tedy opět situaci jako na začátku, jen čísla přítomných jsou dvojnásobky zvětšené o 1: J(2n+1)=2J(n)+1 pro n 1 doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 14/ 15
Dáme věci dohromady Jezřejmé,ženašezjištěníprosudéalichépočtyosobspolusezákladním případem J(1) = 1 vedou na následující rekurenci pokrývající všechny možné případy: J(1) = 1 J(2n) = 2J(n) 1, pro n 1 J(2n+1) = 2J(n)+1, pro n 1. Jak vypadá tabulka prvních hodnot J(n)? n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 J(n) 1 1 3 1 3 5 7 1 3 5 7 9 11 13 15 1 Vidíme jasné členění do skupin začínajících mocninami dvou. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 15/ 15
Rozbor skupin Jak nalézt řešení rekurence pro J(n) v uzavřeném tvaru? n 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 J(n) 1 1 3 1 3 5 7 1 3 5 7 9 11 13 15 1 k 0 0 1 0 1 2 3 0 1 2 3 4 5 6 7 0 Vyjádříme nvetvaru n=2 m +k,kde2 m jenejvyššímocninadvou nepřesahující n. Pak k(<2 m )určuje,okolik nmocninu2 m překračuje. Zdáse,žemámeřešení! J(2 m +k)=2k+1 pro m 0a0 k <2 m (6) Je ale třeba dokázat(indukcí sami!), že(??) opravdu je řešením. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 16/ 15
Rozbor vlastností J(n) Zkusíme se podívat na vyjádření n a J(n) ve dvojkové soustavě. Nechť což znamená, že n=(b m b m 1... b 1 b 0 ) 2, n=b m 2 m +b m 1 2 m 1 +...+b 1 2 1 +b 0 2 0, kdekaždé b i jebuď0nebo1,přičemžprvnídvojkováčíslice b m je1. Jelikožje n=2 m +k,můžemepsát n = (1 b m 1... b 1 b 0 ) 2, k = (0 b m 1... b 1 b 0 ) 2, 2k = (b m 1 b m 2... b 1 b 0 0) 2, 2k+1 = (b m 1 b m 2... b 1 b 0 1) 2, J(n) = (b m 1 b m 2... b 1 b 0 b m ) 2. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 17/ 15
Překvapivé odhalení S použitím dvojkového zápisu tak dostáváme vyjádření pro J(n) ve tvaru J ( (b m b m 1... b 1 b 0 ) 2 ) =(bm 1 b m 2... b 1 b 0 b m ) 2 (7) Hodnotu J(n) tedy dostaneme cyklickým posuvem binárního zápisu argumentu n o jedno místo vlevo. O J(n)bysetohodalozjistitještěvíc,zkusmesealezamysletnad možností řešení zobecněné rekurence platné pro J(n) ve tvaru f(1) = α f(2n) = 2f(n)+β, pro n 1 f(2n+1) = 2f(n)+γ, pro n 1. Pro J(n)platilarekurenceshodnotami α=1, β= 1 a γ=1. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 18/ 15
Průzkum bojem Kodhaduřešenínámpomůžetabulkafunkce f(n)promaléhodnoty n. n f(n) 1 α 2 2α + β 3 2α + γ 4 4α + 3β 5 4α + 2β + γ 6 4α + β + 2γ 7 4α + 3γ 8 8α + 7β 9 8α + 6β + γ 10 8α + 5β + 2γ Koeficienty u α odpovídají nejvyšší mocnině dvou obsažené v n. Mezi dvěma mocninami dvou se hodnoty koeficientů u β snižují s krokem1ažk0akoeficientyuγzvyšujískrokem1počínajeod0. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 19/ 15
Odhad řešení zobecněné rekurence Řešení tedy vyjádříme ve tvaru f(n)=a(n) α+b(n) β+c(n) γ. a vzhledem závislostem zachyceným v tabulce hodnot f(n) určíme A(n) = 2 m B(n) = 2 m 1 k C(n) = k, kdejakoobvykle n=2 m +k a 0 k <2 m pro n 1.Správnosttohoto řešení by ovšem bylo třeba potvrdit indukcí. Ukážeme si ale jiný přístup získání obecného řešení rekurence získané složením několika partikulárních řešení. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 20/ 15
Skládání partikulárních řešení Začnemespeciálnímpřípadem α=1,β=0,γ=0,tedy f(n)=a(n). Rekurence má v tomto případě tvar A(1) = 1 A(2n) = 2A(n) pro n 1 A(2n+1) = 2A(n) pro n 1 Řešenímátvar A(2 m +k)=2 m,jakbychompotvrdiliindukcí. Nyní na to půjdeme obráceně: zvolíme nějakou jednoduchou funkci f(n) a zjišťujeme, zda existují konstanty {α, β, γ}, které ji budou prostřednictvím naší rekurence definovat. Zkusíme nejprve f(n) = 1: 1 = α 1 = 2 1+β 1 = 2 1+γ Odtudplyne,že {α,β,γ}={1, 1, 1}vyhovujerekurenciaplatí A(n) B(n) C(n)=f(n)=1. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 21/ 15
Skládání partikulárních řešení pokračuje Nynízkusímefunkci f(n)=n: 1 = α 2n = 2 n+β 2n+1 = 2 n+γ Tytorovniceplatíprovšechna n,pokudje α=1, β=0 a γ=1. Shrneme naše výsledky: A(n) = 2 m, kde n=2 m +k, 0 k <2 m A(n) B(n) C(n) = 1 A(n)+C(n) = n Odtud již snadno získáme zbývající části řešení: C(n) = n A(n)=k B(n) = A(n) C(n) 1=2 m k 1. To odpovídá našemu prvnímu výsledku získanému odhadem. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 22/ 15
Součty a rekurence Součty a rekurence Jaksouvisísoučtyarekurence?Proposloupnost a n jeodpovídající posloupnostčástečnýchsoučtů S n = n k=0 a kjedefinovánarekurencí S 0 = a 0 S n = S n 1 +a n, pro n >0. To znamená, že techniky řešení rekurencí budou užitečné i pro získání hodnotysoučtůvuzavřenémtvaru.má-linapř. a n tvar β+γ n,pak dostáváme obecný tvar R 0 = α R n = R n 1 +β+γ n, pro n >0. PostupemjakoJosefovaproblémumůžemeurčit R 1 = α+β+γ, R 2 = α+2β+3γ,atd.obecnéřešeníbudemíttvar R n = A(n) α+b(n) β+c(n) γ, kde koeficienty A(n), B(n), C(n) určíme metodou skládání partikulárních řešení. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 23/ 15
Součty a rekurence Sčítáme aritmetickou posloupnost Zvolíme postupě R 0 = α R n = R n 1 +β+γ n, pro n >0. R n =1 α=1, β=0, γ=0 A(n)=1 R n = n α=0, β=1, γ=0 B(n)=n R n = n 2 α=0, β= 1, γ=2 2C(n) B(n)=n 2 Zposledníchdvouvztahůurčíme C(n)=(n 2 +n)/2 Součetaritmeticképosloupnosti n k=0 (a+bk)tedyodpovídánašíobecné rekurencisparametry α=β= a, γ= b,takžeřešeníje A(n) a+b(n) a+c(n) b=a(n+1)+b n(n+1). 2 doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 24/ 15
Součty a rekurence Další hezký trik VzpomínátenaHanojajejívěže?Tambylarekurence,kteráseod částečných součtů liší: Stačí ale malá úprava a dostaneme T 0 = 0 T n = 2T n 1 +1, pro n >0. T 0 /2 0 = 0 T n /2 n = T n 1 /2 n 1 +1/2 n, pro n >0. Nynímůžemepoložit S n = T n /2 n amáme S 0 = 0 S n = S n 1 +2 n, pro n >0, takžeje S n = n k=1 2 k,neboličástečnýsoučetgeometricképosloupnosti (2 1 +2 2 +...+2 n )sprvnímčlenem1/2akvocientem1/2,kterýmá hodnotu1 ( 1 2 )n.platítedy T n =2 n S n =2 n 1. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 25/ 15
Součty a rekurence Ještě jedna rekurence Připomeneme si ještě Catalanova čísla z přednášky 6: C n = 1 ( ) 2n n+1 n Představují počet dobrých tras z levého dolního do pravého horního rohu ve čtvercové mřížce velikosti n n(trasy nesmí překročit diagonálu). Každou dobrou trasu můžeme rozdělit na dvě části prvníčástodbodu(0,0)dobodu(k,k),kdesepoprvédostane znovu na diagonálu druháčástodbodu(k,k)dobodu(n,n). Prvníčástvždyzačínákrokemvpravoz(0,0)do(1,0)akončíkrokem nahoruz(k,k 1)do(k,k)(proč?). doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 26/ 15
Součty a rekurence Dobré trasy a binární stromy Postupmezi(1,0)a(k,k 1)představujedobroutrasuvmřížce velikosti(k 1) (k 1),kterámárohyvbodech (1,0),(1,k 1),(k,k 1)a(k,0) takovýchtrasjeovšem C k 1. Podobnědruháčástmezibody(k,k)a(n,n)představujedobrou trasuvmřížcevelikosti(n k) (n k),kterámárohyvbodech (k,k),(k,n),(n,n),(n,k) takovýchtrasjezase C n k Podle sčítacího principu tedy dostaneme n C n = C k 1 C n k k=1 Uvažujme nyní různé binární stromy o n uzlech jejich počet označíme jako a n.každýtakovýstrommákořenadálemá levýpodstromskuzly(takovýchje a k )a pravýpodstromsn k 1uzly(takovýchje a n k 1 ) Dostávámetedy a n = n 1 k=0 a ka n k 1 ajednoduchouúpravouzjistíme, že a n = C n. doc. Josef Kolář (FIT ČVUT) Rekurence, rekurze a sumy ZDM, ZS 2011/12, Lekce 9 27/ 15