4
Catalantal och antalet binära träd Inledning Jag har valt att studera Catalantal, då det fascinerar mig att någonting som är så relativt enkelt att förstå som en talföljd, kan användas till att lösa en så stor mängd olika problem inom kombinatoriken. Problemet som jag tänker lösa med hjälp av Catalantal är följande: De flesta känner till den vanliga formen av barnuppfostran, där man först måste äta något nyttigt för att sedan få äta godis. Barn äter så klart upp alla godisar som finns tillgängliga, men om man förutsätter att de måste äta minst lika många frukter som godisar, på hur många sätt kan de då göra detta? Villkoret är alltså att de inte vid någon tidpunkt får ha ätit mer godis än frukt. Vi kan för rättvisans skull tänka oss relativt små frukter, eller relativt stora godisar. Jag har valt att försöka lösa detta problem, då det är väldigt lätt att relatera till för de flesta människorna. Vad är ett catalantal Catalantalen är en talföljd som först beskrevs på 1700-talet av Leonhard Euler, när han studerade antalet olika sätt att dela in en månghörning i trianglar, förutsatt att man bara får dra raka linjer från ett hörn till ett annat i månghörningen. Talföljdens namn kommer dock från den belgiske matematikern Eugène Charles Catalan, som upptäckte att dessa var lösningen till på hur många olika sätt man kan sätta göra en komplett parentetisering av en multiplikation av n faktorer, så att varje parentespar omgärdar två faktorer (som i sig kan vara hela uttryck omgivna av parenteser.) Den matematiska funktionen fakultet Det finns en formel för att räkna ut det n:te catalantalet, där n är ett godtyckligt heltal, men för att kunna förstå den måste vi först lära oss hur den matematiska funktionen fakultet fungerar. Fakultet skrivs med ett "!" (utropstecken), och n! utläses "n fakultet". Fakultet definieras av: 0! = 1 n! = n*(n-1)*(n-2)*...*3*2*1. I ord kan man säga att n fakultet är produkten av alla heltal från och med 1 till och med n. Några exempel: 3! = 3*2*1 = 6 7! = 7*6*5*4*3*2*1 = 5040 Räkning med catalantal Problemet med att hitta antalet olika sätt att placera parenteser i en multiplikation av n faktorer, med villkoret att varje parentespar ska omgärda två faktorer (vilka i sig kan vara hela uttryck omgivna av parenteser), har uppenbara lösningar för låga värden på n: Om n = 1 finns ett sätt, nämligen a. Detta för att a är våran enda faktor och varje parentespar måste omgärda 2 faktorer. Om n = 2 finns också bara ett sätt, nämligen (ab). Här har vi två faktorer och det finns bara ett sätt att omgärda dessa med parenteser. När n = 3 finns två lösningar, nämligen ((ab)c) och (a(bc)). Nu har vi 3 faktorer, det första sättet att sätta parenteser kring dessa är att ha ab i de inre och (ab)c i de yttre. Flyttar vi de inre parenteserna hamnar bc innanför dessa, medan a(bc) (hela uttrycket) fortfarande är innanför de yttersta.

Catalantal

Embed Size (px)

Citation preview

Page 1: Catalantal

Catalantal och antalet binära träd

Inledning

Jag har valt att studera Catalantal, då det fascinerar mig att någonting som är så relativt enkelt att förstå som en talföljd, kan användas till att lösa en så stor mängd olika problem inom kombinatoriken.

Problemet som jag tänker lösa med hjälp av Catalantal är följande:

De flesta känner till den vanliga formen av barnuppfostran, där man först måste äta något nyttigt för att sedan få äta godis. Barn äter så klart upp alla godisar som finns tillgängliga, men om man förutsätter att de måste äta minst lika många frukter som godisar, på hur många sätt kan de då göra detta? Villkoret är alltså att de inte vid någon tidpunkt får ha ätit mer godis än frukt. Vi kan för rättvisans skull tänka oss relativt små frukter, eller relativt stora godisar. Jag har valt att försöka lösa detta problem, då det är väldigt lätt att relatera till för de flesta människorna.

Vad är ett catalantal

Catalantalen är en talföljd som först beskrevs på 1700-talet av Leonhard Euler, när han studerade antalet olika sätt att dela in en månghörning i trianglar, förutsatt att man bara får dra raka linjer från ett hörn till ett annat i månghörningen. Talföljdens namn kommer dock från den belgiske matematikern Eugène Charles Catalan, som upptäckte att dessa var lösningen till på hur många olika sätt man kan sätta göra en komplett parentetisering av en multiplikation av n faktorer, så att varje parentespar omgärdar två faktorer (som i sig kan vara hela uttryck omgivna av parenteser.)

Den matematiska funktionen fakultet

Det finns en formel för att räkna ut det n:te catalantalet, där n är ett godtyckligt heltal, men för att kunna förstå den måste vi först lära oss hur den matematiska funktionen fakultet fungerar. Fakultet skrivs med ett "!" (utropstecken), och n! utläses "n fakultet". Fakultet definieras av:

0! = 1

n! = n*(n-1)*(n-2)*...*3*2*1.

I ord kan man säga att n fakultet är produkten av alla heltal från och med 1 till och med n. Några exempel:

3! = 3*2*1 = 6

7! = 7*6*5*4*3*2*1 = 5040

Räkning med catalantal

Problemet med att hitta antalet olika sätt att placera parenteser i en multiplikation av n faktorer, med villkoret att varje parentespar ska omgärda två faktorer (vilka i sig kan vara hela uttryck omgivna av parenteser), har uppenbara lösningar för låga värden på n:

Om n = 1 finns ett sätt, nämligen a. Detta för att a är våran enda faktor och varje parentespar måste omgärda 2 faktorer.

Om n = 2 finns också bara ett sätt, nämligen (ab). Här har vi två faktorer och det finns bara ett sätt att omgärda dessa med parenteser.

När n = 3 finns två lösningar, nämligen ((ab)c) och (a(bc)). Nu har vi 3 faktorer, det första sättet att sätta parenteser kring dessa är att ha ab i de inre och (ab)c i de yttre. Flyttar vi de inre parenteserna hamnar bc innanför dessa, medan a(bc) (hela uttrycket) fortfarande är innanför de yttersta.

Page 2: Catalantal

Det n:te catalantalet ges av formeln c(n) = (2n)!/((n+1)!n!), där c(n) är det n:te catalantalet. Det visar sig att c(n) är lösningen till problemet ovan där vi ska placera ut parenteser med det givna villkoret bland n+1 faktorer. Vi kollar om det stämmer för tre faktorer, alltså räknar vi ut c(n) för n = (3-1) = 2:

c(2) = (2*2)!/((2+1)!2!) = 4!/(3!*2!) = 4/2 = 2.

Med hjälp av formeln kan vi alltså räkna ut på hur många sätt det går att placera ut parenteser bland ett godtyckligt antal faktorer. Vad gäller Eulers studie om antalet olika sätt att dela in en månghörning i trianglar, så visar det sig att en c(n) är lösningen på detta för en figur med n+2 hörn.

Rekursion

Ett vanligt sätt att lösa problem på är rekursion. Rekursion går ut på att dela upp ett problem i enklare och enklare delproblem, tills man kommer till något som man vet lösningen på. Om vi återvänder en stund till den matematiska fakultetsfunktionen, så kan den rekursivt definieras på följande sätt:

0! = 1

n! = n*(n-1)!

Så om vi nu ska ge oss på att räkna ut exempelvis 3!, så skulle det gå till på följande vis:

3! = 3*(3-1)! = 3*2! = 3*2*(2-1)! = 3*2*1! = 3*2*1*(1-1)! = 3*2*1*0! = 3*2*1*1 = 6.

I första steget använder vi n = 3 och ser att 3! = 3*2! enligt definitionen. Sedan ser vi att 2! = 2*1! på samma sätt, och då har vi 3*2*1!. Vi fortsätter tills vi kommer till 3*2*1*0!, detta kan vi räkna ut, eftersom vi vet att 0! = 1. Här är det tydligt hur uppdelningen sker i enklare delproblem, alltså i detta fall multiplikationer utav mindre och mindre fakultetstal, tills vi kommer till det problem (0!), som vi kan lösningen på.

En rekursiv formel

Det finns en rekursiv formel även för catalantal, den ser ut på följande vis, där c(n) fortfarande står för det n:te catalantalet:

∑=

−=+n

k

knckcnc0

)()()1(

Där c(0) = 1. Ovanstående formel kan i ord uttryckas: catalantal n+1 är lika med summan av catalantal k multiplicerat med catalantal n-k för alla heltal k från och med 0 till och med n. Vi räknar ut de första catalantalen med hjälp av formeln:

c(1) = c(0)c(0-0) = c(0)c(0) = 1 * 1 = 1. Eftersom n +1 = 1 så är n = 0, därmed blir det bara en term då k = n = 0.

c(2) = c(0)c(1-0) + c(1)c(1-1) = c(0)c(1) + c(1)c(0) = 1*1 + 1*1 = 2. Här börjar det bli lite lättare att se vad som händer i formeln, 2 = n + 1, så n = 1, vilket gör att vi räknar en gång med k = 0 och en gång med k = 1 (ty då är k = n.)

c(3) = c(0)c(2-0) + c(1)c(2-1) + c(2)c(2-2) = c(0)c(2) + c(1)c(1) + c(2)c(0) = 1*2 + 1*1 + 2*1 = 5. Här har vi 3 = n+1, som ger n = 2. Vi summerar för k = 0, k = 1 och k = 2. På samma sätt kan vi räkna ut hur stora catalantal som helst (givet att vi har tålamodet, förstås.)

Binära träd

Ett binärt träd består av en rotnod, vilken kan ha 0, 1 eller 2 barnnoder. Varje barnnod kan i sin tur ha upp till 2 egna barnnoder. Det går en gren till varje barnnod från dess föräldranod. Binära träd kan även definieras rekursivt på följande vis:

Page 3: Catalantal

Ingen nod (alltså ett tomt träd) är ett binärt träd.En nod (rotnoden), som har precis två andra binära träd, ett vänster- och ett högerträd under sig, är också ett binärt träd.Enligt definitionen så består alltså ett binärt träd med n+1 noder av ett binärt träd till vänster, med säg k noder, och ett binärt träd till höger med n-k noder. Vi har alltså n noder under roten, k + n - k = n. Om vi låter c(k) stå för antalet binära träd med k hörn får vi rekursionsekvationen

=

−=++−+=+n

k

knckccncnccnccnc0

)()()0()(...)1()1()()0()1(

som ju är samma formel som för catalantalet n+1. Därmed säger c(n) hur många olika binära träd med n stycken noder det finns. Vi kan exempelvis räkna ut hur många olika binära träd det finns som har tre stycken noder:

c(3) = (3*2)!/((3+1)!*3!) = 6!/(4!*3!) = 6*5/3! = 5

Det ska alltså finnas 5 olika binära träd som har 3 noder. Vi försöker oss på att rita upp dessa:

Vi kan lätt verifiera att ovanstående fem träd är alla olika binära träd som har tre noder. Om vi tänker oss att rotnoden är den översta noden, så finns det bara ett träd som har både en barnnod till vänster och en till höger, detta är det som är längst till vänster ovan. Ifall någon av rotnodens barnnoder skulle ha egna barnnoder, så skulle antalet noder överstiga tre, så detta är enda möjligheten med både en vänster- och en högerbarnnod. Om rotnoden bara har en barnnod till vänster, så finns det två möjliga träd. Det ena är när rotnodens barnnod har en egen barnnod till vänster, och det andra är när den har det till höger. På samma sätt ser vi att ifall rotnoden har en barnnod till höger, så finns också två möjligheter, nämligen den där rotnodens barnnod har en egen barnnod till vänster, och den där den har en till höger. Totalt finns alltså fem stycken olika binära träd med tre noder.

Catalanstigar

Vi tänker oss en stig som består av ett antal steg, som alla är lika långa. Stegen får antingen gå snett upp åt höger eller snett ner åt höger. De regler som en catalanstig följer är att den aldrig hamnar under sitt utgångsläge, och att den alltid börjar och slutar på samma nivå. En catalanstig kommer därför alltid att ha ett jämnt antal steg, ty den måste gå snett uppåt lika många gånger som snett neråt för att hamna på sin ursprungsnivå. c(n) motsvarar här antalet olika catalanstigar av längd 2n. Exempelvis finns c(3) = 5 olika stigar av längd 6.

c(n) räknar även antalet uttryck av parentespar som är korrekt matchade, vi kan tänka oss att varje vänsterparentes är ett steg snett uppåt på en catalanstig, och varje högerparentes ett steg snett neråt. Det finns c(3) = 5 stycken olika sätt att korrekt matcha 3 parentespar, till exempel:

((())), (())(), ()()(), ()(()), (()())

Lösningen på problemet

Problemet som jag avser lösa med hjälp av catalantal är på hur många sätt ett barn kan äta upp alla godisar som det har tillgängligt, givet att det måste äta upp minst en frukt för varje godis, och att det inte vid något tillfälle får ha ätit fler godisar än frukter. Det finns flera sätt att se att catalantalen löser detta problem, ett av

Page 4: Catalantal

dessa är till exempel att tänka oss att för varje frukt som barnet äter, så sätter vi ut en vänsterparentes, och motsvarande då en högerparentes för varje godis. Således kan vi använda formeln c(n) = (2n)!/((n+1)!n!), för att räkna ut antalet sätt att äta upp n+1 godisar enligt villkoren. Så om vi nu antar att vi har ett glupskt litet barn med fem godisar, på hur många sätt kan ha få i sig dessa, givet villkoren? Barnet kommer självklart aldrig att äta fler frukter än det behöver. Vi räknar ut c(5-1) = c(4):

c(4) = (2*4)!/((4+1)!4!) = 8!/(5!4!) = 8*7*6/(4*3*2) = 8*7/4 = 56/4 = 14. Så det finns 14 olika sätt på vilket barnet kan få i sig alla sina godisar. Om vi nu antar att det har 6 godisar istället, på hur många sätt kan det då ske? Här börjar den vanliga formeln ge rätt stora tal att räkna ut, så vi använder oss av rekursionsformeln istället. för n = 6-1 = 5:

∑=

−=4

0

)4()()5(k

kckcc

Vilket ger c(5) = c(0)c(4) + c(1)c(3) + c(2)c(2) + c(3)c(1) + c(4)c(0). Vi vet att c(0) = 1, och vi har tidigare räknat ut c(1) = 1, c(2) = 2, c(3) = 5 och nu precis här innan c(4) = 14. Detta ger:

c(5) = 1*14 + 1*5 + 2*2 + 5*1 + 14*1 = 14 + 5 + 4 + 5 + 14 = 42. Barnet kan alltså få i sig alla sina godisar på hela 42 olika sätt.

Sammanfattning

Catalantal är en talföljd som används för att lösa ett flertal olika problem inom kombinatoriken. De beskrevs först utav Euler på 1700-talet, när han studerade antalet sätt att dela in en månghörning i trianglar på, givet att man bara får dra raka linjer från ett hörn till ett annat inom månghörningen. Sitt namn fick talföljden dock från matematikern Catalan, som fann dessa tal till att vara svaret på problemet "på hur många sätt kan man göra en komplett parentetisering av en multiplikation med n faktorer, så att varje parentespar omgärdar minst två faktorer?"

Det n:te talet i talföljden, här betecknat c(n), ges av formeln c(n) = (2n)!/((n+1)!n!).Det finns även en rekursiv formel för talföljden, som ser ut såhär:

∑=

−=+n

k

knckcnc0

)()()1(

Med hjälp av den rekursiva definitionen av binära träd så kan man bevisa att catalantalen även räknar antalet binära träd med n stycken noder.Catalanstigar är en slags stigar som består av steg, där alla steg är lika långa. Stegen går antingen snett upp åt höger eller snett ner åt höger. Stigen får aldrig hamna under sitt utgångsläge och den börjar alltid på samma nivå som den slutar. Därmed måste varje stig bestå av ett jämnt antal steg. c(n) står för antalet olika möjliga stigar av längd 2n.Om man tänker sig att varje steg upp åt höger på stigen är en vänsterparentes, och varje steg ned åt höger är en högerparentes, så ser man att c(n) även räknar ut på hur många sätt man kan korrekt matcha n stycken parentespar.

Källförteckning

http://en.wikipedia.org/wiki/Catalan_numberhttp://sv.wikipedia.org/wiki/Fakultet_%28matematik%29

Diskret Matematik Fördjupning, Kimmo Eriksson och Hillevi Gavel (2003)