Catalan numbers

This commit is contained in:
Antti H S Laaksonen 2017-01-13 19:20:18 +02:00
parent 70bc9cdc4d
commit 2fed4f2df8
1 changed files with 133 additions and 116 deletions

View File

@ -177,16 +177,17 @@ above values:
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
\subsubsection{Laatikot ja pallot} \subsubsection{Boxes and balls}
''Laatikot ja pallot'' on usein hyödyllinen malli, ''Boxes and models'' is a useful model,
jossa $n$ laatikkoon sijoitetaan $k$ palloa. where we count the ways to
Tarkastellaan seuraavaksi kolmea tapausta: place $k$ balls in $n$ boxes.
Let's consider three cases:
\textit{Tapaus 1}: Kuhunkin laatikkoon saa sijoittaa \textit{Case 1}: Each box can contain
enintään yhden pallon. at most one ball.
Esimerkiksi kun $n=5$ ja $k=2$, For example, when $n=5$ and $k=2$,
sijoitustapoja on 10: there are 10 solutions:
\begin{center} \begin{center}
\begin{tikzpicture}[scale=0.5] \begin{tikzpicture}[scale=0.5]
@ -219,11 +220,12 @@ sijoitustapoja on 10:
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
Tässä tapauksessa vastauksen antaa suoraan binomikerroin ${n \choose k}$. In this case, the answer is directly the
binomial coefficient ${n \choose k}$.
\textit{Tapaus 2}: Samaan laatikkoon saa sijoittaa \textit{Case 2}: A box can contain multiple balls.
monta palloa. For example, when $n=5$ and $k=2$,
Esimerkiksi kun $n=5$ ja $k=2$, sijoitustapoja on 15: there are 15 solutions:
\begin{center} \begin{center}
\begin{tikzpicture}[scale=0.5] \begin{tikzpicture}[scale=0.5]
@ -261,27 +263,28 @@ Esimerkiksi kun $n=5$ ja $k=2$, sijoitustapoja on 15:
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
Prosessin voi kuvata merkkijonona, joka muodostuu This process can be represented as a string
merkeistä ''o'' ja ''$\rightarrow$''. that consists of symbols
Pallojen sijoittaminen alkaa ''o'' and ''$\rightarrow$''.
vasemmanpuoleisimmasta laatikosta. Initially, we are standing at the leftmost box.
Merkki ''o'' tarkoittaa, että pallo sijoitetaan The symbol ''o'' means we place a ball
nykyiseen laatikkoon, ja merkki in the current box, and the symbol
''$\rightarrow$'' tarkoittaa, että siirrytään ''$\rightarrow$'' means that we move to
seuraavaan laatikkoon. the next box right.
Nyt jokainen sijoitustapa on merkkijono, jossa Using this notation, each solution is a string
on $k$ kertaa merkki ''o'' ja $n-1$ kertaa that has $k$ times the symbol ''o'' and
merkki ''$\rightarrow$''. $n-1$ times the symbol ''$\rightarrow$''.
Esimerkiksi sijoitustapaa For example, the upper-right solution
ylhäällä oikealla corresponds to the string
vastaa merkkijono ''$\rightarrow$ $\rightarrow$ o $\rightarrow$ o $\rightarrow$''. ''$\rightarrow$ $\rightarrow$ o $\rightarrow$ o $\rightarrow$''.
Niinpä sijoitustapojen määrä on ${k+n-1 \choose k}$. Thus, the number of solutions is
${k+n-1 \choose k}$.
\textit{Tapaus 3}: Kuhunkin laatikkoon saa sijoittaa \textit{Case 3}: Each box may contain at most one ball,
enintään yhden pallon ja lisäksi missään kahdessa and in addition, no two adjacent boxes may both contain a ball.
vierekkäisessä laatikossa ei saa olla palloa. For example, when $n=5$ and $k=2$,
Esimerkiksi kun $n=5$ ja $k=2$, sijoitustapoja on 6: there are 6 solutions:
\begin{center} \begin{center}
@ -310,36 +313,45 @@ Esimerkiksi kun $n=5$ ja $k=2$, sijoitustapoja on 6:
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
Tässä tapauksessa voi ajatella, että alussa $k$ palloa In this case, we can think that
ovat laatikoissaan ja joka välissä on yksi tyhjä laatikko. $k$ balls are initially placed in boxes.
Tämän jälkeen jää valittavaksi $n-k-(k-1)=n-2k+1$ tyhjän laatikon paikat. and between each such box there is an empty box.
Mahdollisia välejä on $k+1$, joten tapauksen 2 perusteella The remaining task is to choose the
sijoitustapoja on ${n-2k+1+k+1-1 \choose n-2k+1} = {n-k+1 \choose n-2k+1}$. positions for
$n-k-(k-1)=n-2k+1$ empty boxes.
There are $k+1$ positions, so as in case 2,
the number of solutions is
${n-2k+1+k+1-1 \choose n-2k+1} = {n-k+1 \choose n-2k+1}$.
\subsubsection{Multinomikerroin} \subsubsection{Multinomial coefficient}
\index{multinomikerroin@multinomikerroin} \index{multinomial coefficient}
Binomikertoimen yleistys on \key{multinomikerroin} A generalization for a binomial coefficient is
a \key{multinomial coefficient}
\[ {n \choose k_1,k_2,\ldots,k_m} = \frac{n!}{k_1! k_2! \cdots k_m!}, \] \[ {n \choose k_1,k_2,\ldots,k_m} = \frac{n!}{k_1! k_2! \cdots k_m!}, \]
missä $k_1+k_2+\cdots+k_m=n$. where $k_1+k_2+\cdots+k_m=n$.
Multinomikerroin ilmaisee, monellako tavalla $n$ alkiota voidaan jakaa osajoukkoihin, A multinomial coefficient i the number of ways
joiden koot ovat $k_1,k_2,\ldots,k_m$. we can divide $n$ elements into subsets
Jos $m=2$, multinomikertoimen kaava vastaa binomikertoimen kaavaa. whose sizes are $k_1,k_2,\ldots,k_m$.
If $m=2$, the formula
corresponds to the binomial coefficient formula.
\section{Catalanin luvut} \section{Catalan numbers}
\index{Catalanin luku@Catalanin luku} \index{Catalan number}
\key{Catalanin luku} $C_n$ ilmaisee, A \key{Catalan number} $C_n$ is the
montako tapaa on muodostaa kelvollinen sulkulauseke number of valid
$n$ alkusulusta ja $n$ loppusulusta. parenthesis expressions that consist of
$n$ left parentheses and $n$ right parentheses.
Esimerkiksi $C_3=5$, koska 3 alkusulusta For example, $C_3=5$, because using three
ja 3 loppusulusta on mahdollista muodostaa left parentheses and three right parentheses,
seuraavat kelvolliset sulkulausekkeet: we can construct the following parenthesis
expressions:
\begin{itemize}[noitemsep] \begin{itemize}[noitemsep]
\item \texttt{()()()} \item \texttt{()()()}
@ -349,96 +361,101 @@ seuraavat kelvolliset sulkulausekkeet:
\item \texttt{(()())} \item \texttt{(()())}
\end{itemize} \end{itemize}
\subsubsection{Sulkulausekkeet} \subsubsection{Parenthesis expressions}
\index{sulkulauseke@sulkulauseke} \index{parenthesis expression}
Mikä sitten tarkkaan ottaen on What is exactly a \emph{valid parenthesis expression}?
\textit{kelvollinen sulkulauseke}? The following rules precisely define all
Seuraavat säännöt kuvailevat täsmällisesti valid parenthesis expressions:
kaikki kelvolliset sulkulausekkeet:
\begin{itemize} \begin{itemize}
\item Sulkulauseke \texttt{()} on kelvollinen. \item The expression \texttt{()} is valid.
\item Jos sulkulauseke $A$ on kelvollinen, \item If a expression $A$ is valid,
niin myös sulkulauseke \texttt{(}$A$\texttt{)} then also the expression
on kelvollinen. \texttt{(}$A$\texttt{)} is valid.
\item Jos sulkulausekkeet $A$ ja $B$ ovat kelvollisia, \item If expressions $A$ and $B$ are valid,
niin myös sulkulauseke $AB$ on kelvollinen. then also the expression $AB$ is valid.
\end{itemize} \end{itemize}
Toinen tapa luonnehtia kelvollista sulkulauseketta on, Another way to characterize valid
että jos valitaan mikä tahansa lausekkeen alkuosa, paranthesis expressions is that if
niin alkusulkuja on ainakin yhtä monta we choose any prefix of the expression,
kuin loppusulkuja. it has to contain at least as many left
Lisäksi koko lausekkeessa parentheses as right parentheses.
tulee olla tarkalleen yhtä monta In addition, the complete expression has to
alkusulkua ja loppusulkua. contain an equal number of left and right
parentheses.
\subsubsection{Laskutapa 1} \subsubsection{Formula 1}
Catalanin lukuja voi laskea rekursiivisesti kaavalla Catalan numbers can be calculated using the formula
\[ C_n = \sum_{i=0}^{n-1} C_{i} C_{n-i-1}.\] \[ C_n = \sum_{i=0}^{n-1} C_{i} C_{n-i-1}.\]
Summa käy läpi tavat The sum goes through the ways to divide the
jakaa sulkulauseke kahteen osaan niin, expression into two parts
että kumpikin osa on kelvollinen sulkulauseke such that both parts are valid
ja alkuosa on mahdollisimman lyhyt mutta ei tyhjä. expressions and the first part is as short as possible
Kunkin vaihtoehdon kohdalla alkuosassa but not empty.
on $i+1$ sulkuparia ja lausekkeiden määrä For any $i$, the first part contains $i+1$ pairs
saadaan kertomalla keskenään: of parentheses, and the number of expressions
is the product of the following values:
\begin{itemize} \begin{itemize}
\item $C_{i}$: tavat muodostaa sulkulauseke \item $C_{i}$: number of ways to construct an expression
alkuosan sulkupareista ulointa sulkuparia lukuun ottamatta using the parentheses in the first part,
\item $C_{n-i-1}$: tavat muodostaa sulkulauseke not counting the outermost parentheses
loppuosan sulkupareista \item $C_{n-i-1}$: number of ways to construct an
expression using the parentheses in the second part
\end{itemize} \end{itemize}
Lisäksi pohjatapauksena on $C_0=1$, koska 0 In addition, the base case is $C_0=1$,
sulkuparista voi muodostaa because we can construct an empty parenthesis
tyhjän sulkulausekkeen. expression using zero pairs of parentheses.
\subsubsection{Laskutapa 2} \subsubsection{Formula 2}
Catalanin lukuja voi laskea myös binomikertoimen avulla: Catalan numbers can also be calculated
using binomial coefficients:
\[ C_n = \frac{1}{n+1} {2n \choose n}\] \[ C_n = \frac{1}{n+1} {2n \choose n}\]
Kaavan voi perustella seuraavasti: The formula can be explained as follows:
Kun käytössä on $n$ alkusulkua ja $n$ loppusulkua, There are a total of ${2n \choose n}$ ways
niistä voi muodostaa kaikkiaan ${2n \choose n}$ to construct a (not necessarily valid)
sulkulauseketta. parenthesis expression that contains $n$ left
Lasketaan seuraavaksi, moniko tällainen parentheses and $n$ right parentheses.
sulkulauseke \textit{ei} ole kelvollinen. Let's calculate the number of such
expressions that are \emph{not} valid.
Jos sulkulauseke ei ole kelvollinen, If a parenthesis expression is not valid,
siinä on oltava alkuosa, it has to contain a prefix where the
jossa loppusulkuja on alkusulkuja enemmän. number of right parentheses exceeds the
Muutetaan jokainen tällaisen alkuosan number of left parentheses.
sulkumerkki käänteiseksi. The idea is to reverse each parenthesis
Esimerkiksi lausekkeessa \texttt{())()(} that belongs to such a prefix.
alkuosa on \texttt{())} ja kääntämisen For example, the expression
jälkeen lausekkeesta tulee \texttt{)((()(}. \texttt{())()(} contains a prefix \texttt{())},
and after reversing the prefix,
the expression becomes \texttt{)((()(}.
Tuloksena olevassa lausekkeessa on $n+1$ alkusulkua The resulting expression consists of $n+1$
ja $n-1$ loppusulkua. Tällaisia lausekkeita on left parentheses and $n-1$ right parentheses.
kaikkiaan ${2n \choose n+1}$, The number of such expressions is ${2n \choose n+1}$
joka on sama kuin ei-kelvollisten that equals the number of non-valid
sulkulausekkeiden määrä. parenthesis expressions.
Niinpä kelvollisten Thus the number of valid parenthesis
sulkulausekkeiden määrä voidaan laskea kaavalla expressions can be calculated using the formula
\[{2n \choose n}-{2n \choose n+1} = {2n \choose n} - \frac{n}{n+1} {2n \choose n} = \frac{1}{n+1} {2n \choose n}.\] \[{2n \choose n}-{2n \choose n+1} = {2n \choose n} - \frac{n}{n+1} {2n \choose n} = \frac{1}{n+1} {2n \choose n}.\]
\subsubsection{Puiden laskeminen} \subsubsection{Counting trees}
Catalanin luvut kertovat myös juurellisten Catalan numbers are also related to rooted trees:
puiden lukumääriä:
\begin{itemize} \begin{itemize}
\item $n$ solmun binääripuiden määrä on $C_n$ \item there are $C_n$ binary trees of $n$ nodes
\item $n$ solmun juurellisten puiden määrä on $C_{n-1}$ \item there are $C_{n-1}$ rooted trees of $n$ nodes
\end{itemize} \end{itemize}
\noindent \noindent
Esimerkiksi tapauksessa $C_3=5$ binääripuut ovat For example, for $C_3=5$, the binary trees are
\begin{center} \begin{center}
\begin{tikzpicture}[scale=0.7] \begin{tikzpicture}[scale=0.7]
@ -469,7 +486,7 @@ Esimerkiksi tapauksessa $C_3=5$ binääripuut ovat
\draw[fill=white] (11.5+1.5,-2) circle (0.3); \draw[fill=white] (11.5+1.5,-2) circle (0.3);
\end{tikzpicture} \end{tikzpicture}
\end{center} \end{center}
ja yleiset puut ovat and the rooted trees are
\begin{center} \begin{center}
\begin{tikzpicture}[scale=0.7] \begin{tikzpicture}[scale=0.7]
\path[draw,thick,-] (0,0) -- (-1,-1); \path[draw,thick,-] (0,0) -- (-1,-1);