4.7 Quelques problèmes supplémentaires

Dans cette section, nous voulons regarder quelques problèmes supplémentaires, qui en apparence se ressemble beaucoup. L’important ici est de porter une attention particulière aux différences entre chacun, et ce qui nous amène à utiliser une méthode ou une autre pour résoudre chacun de ces problèmes.

Exemple 4.7.1.

Un sac contient 10\displaystyle 10 billes, toutes de couleurs différentes. De combien de façon différente Mélanie, Julie et Anne peuvent-ils choisir chacun une bille ? Pour répondre à la question, au moins deux approches sont possible. Premièrement, nous pouvons utiliser le principe du produit, ce qui nous donne directement 10×9×8=720\displaystyle 10\times 9\times 8=720 possibilités. Nous pouvons aussi regarder le problème en terme d’objets que nous voulons choisir. Dans ce cas, il s’agit de choisir 3\displaystyle 3 objets parmi 10\displaystyle 10 avec ordre et sans remise, ce qui nous donne:

103¯=10!(103)!=10!7!=8×9×10possibilités\displaystyle 10^{\underline{3}}=\frac{10!}{(10-3)!}=\frac{10!}{7!}=8\times 9% \times 10\leavevmode\nobreak\ \textrm{possibilit\'{e}s}

À noter que les deux méthodes sont bien entendu complètement équivalentes.

Exemple 4.7.2.

Un sac contient 10\displaystyle 10 billes, toutes de couleurs différentes. De combien de façon différente René peut-il choisir 3\displaystyle 3 billes ? L’idée est très semblable à l’exemple précédent, mais cette fois comme une seule personne doit choisir les billes, l’ordre n’est pas importante. On doit donc choisir 3\displaystyle 3 objets parmi 10\displaystyle 10 sans ordre et sans remise, ce qui nous donne:

(103)=10!3!(103)!=10!3! 7!=8×9×101×2×3=120possibilités\displaystyle\binom{10}{3}=\frac{10!}{3!(10-3)!}=\frac{10!}{3!\leavevmode% \nobreak\ 7!}=\frac{8\times 9\times 10}{1\times 2\times 3}=120\leavevmode% \nobreak\ \textrm{possibilit\'{e}s}
Exemple 4.7.3.

Un sac contient 40\displaystyle 40 billes. Parmi les 40\displaystyle 40 billes, 10\displaystyle 10 sont bleus, 10\displaystyle 10 sont jaunes, 10\displaystyle 10 sont vertes et 10\displaystyle 10 sont rouges. De combien de façon différente René peut-il choisir 3\displaystyle 3 billes ? Dans ce cas, comme nous avons plus de billes de chaque couleur que de billes que nous souhaitons choisir, le problème se fait avec remise. On doit donc choisir 3\displaystyle 3 objets parmi 4\displaystyle 4 sans ordre et avec remise. On a donc:

43=(4+31)!3!(41)!=6!3! 3!=4×5×61×2×3=20possibilités\displaystyle\left\langle 4\atop 3\right\rangle=\frac{(4+3-1)!}{3!(4-1)!}=% \frac{6!}{3!\leavevmode\nobreak\ 3!}=\frac{4\times 5\times 6}{1\times 2\times 3% }=20\leavevmode\nobreak\ \textrm{possibilit\'{e}s}
Exemple 4.7.4.

Un sac contient 40\displaystyle 40 billes. Parmi les 40\displaystyle 40 billes, 10\displaystyle 10 sont bleus, 10\displaystyle 10 sont jaunes, 10\displaystyle 10 sont vertes et 10\displaystyle 10 sont rouges. De combien de façon différente Loïk, Isabelle et Élise peuvent-ils choisir chacun une bille ? Dans ce cas, le problème revient à choisir 3\displaystyle 3 objets parmi 4\displaystyle 4 avec ordre et avec remise. On a donc 43=64\displaystyle 4^{3}=64 possibilités.

Exemple 4.7.5.

Un sac contient 10\displaystyle 10 billes, toutes de couleurs différentes. De combien de façon différente Michel, René et Marie peuvent-ils choisir chacun 2\displaystyle 2 billes ? Dans ce cas, nous allons utiliser le principe du produit. Michel doit choisir 2\displaystyle 2 billes parmi 10\displaystyle 10 choix sans ordre et sans remise ET René doit choisir 2\displaystyle 2 billes parmi 8\displaystyle 8 choix sans ordre et sans remise ET Marie doit choisir 2\displaystyle 2 billes parmi 8\displaystyle 8 choix sans ordre et sans remise. On obtient donc:

(102)(82)(62)=10!2! 8!8!2! 6!6!2! 4!=10!2! 2! 2! 4!=18900possibilités\displaystyle\binom{10}{2}\binom{8}{2}\binom{6}{2}=\frac{10!}{2!\leavevmode% \nobreak\ 8!}\cdot\frac{8!}{2!\leavevmode\nobreak\ 6!}\cdot\frac{6!}{2!% \leavevmode\nobreak\ 4!}=\frac{10!}{2!\leavevmode\nobreak\ 2!\leavevmode% \nobreak\ 2!\leavevmode\nobreak\ 4!}=18900\leavevmode\nobreak\ \textrm{% possibilit\'{e}s}
Exemple 4.7.6.

Un sac contient 32\displaystyle 32 billes. Parmi les 32\displaystyle 32 billes, 10\displaystyle 10 sont bleus, 10\displaystyle 10 sont jaunes, 10\displaystyle 10 sont vertes et 2\displaystyle 2 sont rouges. De combien de façon différente Sarah peut-elle choisir 3\displaystyle 3 billes ? Dans ce cas, le problème revient essentiellement à choisir 3\displaystyle 3 objets parmi 4\displaystyle 4, sans ordre et avec remise. On a donc:

43=(4+31)!3!(41)!=6!3! 3!=4×5×61×2×3=20possibilités\displaystyle\left\langle 4\atop 3\right\rangle=\frac{(4+3-1)!}{3!(4-1)!}=% \frac{6!}{3!\leavevmode\nobreak\ 3!}=\frac{4\times 5\times 6}{1\times 2\times 3% }=20\leavevmode\nobreak\ \textrm{possibilit\'{e}s}

Par contre, il est impossible d’avoir 3\displaystyle 3 billes rouges, car il n’y en a pas suffisamment. Il faut donc retiré une possibilité de la réponse. On a donc 201=19\displaystyle 20-1=19 possibilités. À noter qu’ici une deuxième approche peut s’avérer intéressante et serait particulièrement intéressante dans le cas où nous aurions plus de contrainte. Il s’agit d’utiliser les fonctions génératrices. On peut en effet choisir 0,1,2\displaystyle 0,1,2 ou 3\displaystyle 3 billes bleus, ce que l’on peut dénoter à l’aide de la fonction génératrice (1+x+x2+x3)\displaystyle(1+x+x^{2}+x^{3}). Il en est de même pour les billes jaunes et les billes vertes. Pour ce qui est des billes rouges, nous pouvons choisir 0,1\displaystyle 0,1 ou 2\displaystyle 2 billes rouges seulement, ce qui nous donne la fonction génératrice (1+x+x2)\displaystyle(1+x+x^{2}). En multipliant le tout, on obtient donc:

(1+x+x2+x3)3(1+x+x2)=x11+4x10+10x9+19x8+28x7+34x6+34x5+28x4+19x3+10x2+4x+1\displaystyle(1+x+x^{2}+x^{3})^{3}(1+x+x^{2})=x^{11}+4x^{10}+10x^{9}+19x^{8}+2% 8x^{7}+34x^{6}+34x^{5}+28x^{4}+19x^{3}+10x^{2}+4x+1

Notre réponse sera donc le coefficient de x3\displaystyle x^{3}, ce qui correspond au nombre de façon de choisir 3\displaystyle 3 billes. On obtient donc à nouveau 19\displaystyle 19.

Exemple 4.7.7.

Un sac contient 25\displaystyle 25 billes. Parmi les 25\displaystyle 25 billes, 3\displaystyle 3 sont bleus, 5\displaystyle 5 sont jaunes, 7\displaystyle 7 sont vertes, 10\displaystyle 10 sont rouges. De combien de façons différentes peut-on distribuer les billes parmi 25\displaystyle 25 enfants si chaque enfant reçoit exactement une bille ? Dans ce cas, deux idées sont possibles. Dans un premier temps nous allons utiliser le principe du produit:  
 
\displaystyle\bullet Distribuer les billes bleus sans ordre et sans remise (3 parmi 25)

ET

\displaystyle\bullet Distribuer les billes jaunes sans ordre et sans remise (5 parmi 22)

ET

\displaystyle\bullet Distribuer les billes vertes sans ordre et sans remise (7 parmi 17)

ET

\displaystyle\bullet Distribuer les billes rouges sans ordre et sans remise (10 parmi 10)
 
Ce qui nous permet d’obtenir:

(253)(225)(177)(1010)=25!3! 5! 7! 10!=1 177 930 353 600possibilités\displaystyle\binom{25}{3}\binom{22}{5}\binom{17}{7}\binom{10}{10}=\frac{25!}{% 3!\leavevmode\nobreak\ 5!\leavevmode\nobreak\ 7!\leavevmode\nobreak\ 10!}=1% \leavevmode\nobreak\ 177\leavevmode\nobreak\ 930\leavevmode\nobreak\ 353% \leavevmode\nobreak\ 600\leavevmode\nobreak\ \textrm{possibilit\'{e}s}

Nous pouvons aussi de manière complètement équivalente interpréter le problème comme le problème du MISSISSIPPI, ce qui nous donne la réponse un peu plus rapidement.

Exemple 4.7.8.

Un sac contient 40\displaystyle 40 billes. Parmi les 40\displaystyle 40 billes, 10\displaystyle 10 sont bleus, 10\displaystyle 10 sont jaunes, 10\displaystyle 10 sont vertes, et 10\displaystyle 10 sont rouges. De combien de façon différente John peut-il choisir 3\displaystyle 3 billes si parmi les 3\displaystyle 3 billes au moins une est verte ? De ce cas, nous allons procéder en calculant le complément, ce qui nous simplifiera grandement le travail. Nous allons donc compter le nombre total de possibilité, puis soustraire celle qui n’ont aucune bille verte. On a donc:

4333=(4+31)!3!(41)!(3+31)!3!(31)!=6!3! 3!5!3! 2!=2010=10possibilités\displaystyle\left\langle 4\atop 3\right\rangle-\left\langle 3\atop 3\right% \rangle=\frac{(4+3-1)!}{3!(4-1)!}-\frac{(3+3-1)!}{3!(3-1)!}=\frac{6!}{3!% \leavevmode\nobreak\ 3!}-\frac{5!}{3!\leavevmode\nobreak\ 2!}=20-10=10% \leavevmode\nobreak\ \textrm{possibilit\'{e}s}

Ici, la méthode des fonctions génératrices peut à nouveau s’avérer intéressante. En effet, la fonction génératrice correspondante aux billes bleus, aux billes jaunes et aux billes vertes est dans chacun des cas (1+x+x2)\displaystyle(1+x+x^{2}). À noter que nous n’avons pas mis le terme x3\displaystyle x^{3}, car il est impossible de choisir 3\displaystyle 3 billes de l’une de ces couleurs. Par contre, celle correspondante aux billes vertes sera (x+x2+x3)\displaystyle(x+x^{2}+x^{3}), car nous devons en choisir au moins une. En multipliant le tout nous obtenons donc:

(1+x+x2)3(x+x2+x3)=x9+4x8+10x7+16x6+19x5+16x4+10x3+4x2+x\displaystyle(1+x+x^{2})^{3}(x+x^{2}+x^{3})=x^{9}+4x^{8}+10x^{7}+16x^{6}+19x^{% 5}+16x^{4}+10x^{3}+4x^{2}+x

La réponse chercher sera donc le coefficient de x3\displaystyle x^{3}, qui est bien entendu 10\displaystyle 10 comme nous l’avions déjà trouvé.

Exemple 4.7.9.

Un sac contient 20\displaystyle 20 billes. Parmi les 20\displaystyle 20 billes, 8\displaystyle 8 sont bleues, 5\displaystyle 5 sont jaunes, 5\displaystyle 5 sont vertes et 2\displaystyle 2 sont rouges. De combien de façon peut-on donner une bille à chacun des 10\displaystyle 10 enfants de la classe de maternelle de Mme Untel ? Ici le problème est similaire à celui du MISSISSIPPI dans le cas où nous voulions former un mot contenant seulement certaine des lettres. Nous allons donc utiliser l’approche des fonctions génératrices exponentielles. On a donc:

(n=08xnn!)(n=05xnn!)(n=05xnn!)(n=02xnn!)=1+4x11!+16x22!+63x33!+243x44!+918x55!+3400x66!+12349x77!+43915x88!+152391x99!+513741x1010!+1674156x1111!+5244294x1212!+15689388x1313!+44510466x1414!+118774656x1515!+294666372x1616!+665909244x1717!+1317728412x1818!+2095133040x1919!+2095133040x2020!\begin{split}\left(\sum_{n=0}^{8}\frac{x^{n}}{n!}\right)\left(\sum_{n=0}^{5}% \frac{x^{n}}{n!}\right)\left(\sum_{n=0}^{5}\frac{x^{n}}{n!}\right)\left(\sum_{% n=0}^{2}\frac{x^{n}}{n!}\right)=1+4\frac{x^{1}}{1!}+16\frac{x^{2}}{2!}+63\frac% {x^{3}}{3!}+243\frac{x^{4}}{4!}+918\frac{x^{5}}{5!}+3400\frac{x^{6}}{6!}+12349% \frac{x^{7}}{7!}\\ +43915\frac{x^{8}}{8!}+152391\frac{x^{9}}{9!}+513741\frac{x^{10}}{10!}+1674156% \frac{x^{11}}{11!}+5244294\frac{x^{12}}{12!}+15689388\frac{x^{13}}{13!}+445104% 66\frac{x^{14}}{14!}\\ +118774656\frac{x^{15}}{15!}+294666372\frac{x^{16}}{16!}+665909244\frac{x^{17}% }{17!}+1317728412\frac{x^{18}}{18!}+2095133040\frac{x^{19}}{19!}\\ +2095133040\frac{x^{20}}{20!}\end{split}

La solution du problème est le coefficient de x10/10!\displaystyle\nicefrac{{x^{10}}}{{10!}}. On a donc qu’il y a 513 741\displaystyle 513\leavevmode\nobreak\ 741 façons de distribuer les billes.

Exemple 4.7.10.

Un sac contient 20\displaystyle 20 billes. Parmi les 20\displaystyle 20 billes, 8\displaystyle 8 sont bleues, 5\displaystyle 5 sont jaunes, 5\displaystyle 5 sont vertes et 2\displaystyle 2 sont rouges. De combien de façon Sophie peut-elle choisir 10\displaystyle 10 billes? On remarque immédiatement que le problème est très similaire au précédent, mais cette fois l’ordre n’est pas importante. Nous allons donc prendre la même approche que pour l’exemple précédent, mais en utilisant les fonctions génératrices ordinaires plutôt que les fonctions génératrices exponentielles.

(n=08xn)(n=05xn)(n=05xn)(n=02xn)=1+4x+10x2+19x3+31x4+46x5+62x6+77x7+89x8+97x9+100x10+97x11+89x12+77x13+62x14+46x15+31x16+19x17+10x18+4x19+x20\begin{split}\left(\sum_{n=0}^{8}x^{n}\right)\left(\sum_{n=0}^{5}x^{n}\right)% \left(\sum_{n=0}^{5}x^{n}\right)\left(\sum_{n=0}^{2}x^{n}\right)=1+4x+10x^{2}+% 19x^{3}+31x^{4}+46x^{5}+62x^{6}+77x^{7}+89x^{8}+97x^{9}\\ +100x^{10}+97x^{11}+89x^{12}+77x^{13}+62x^{14}+46x^{15}+31x^{16}+19x^{17}+10x^% {18}+4x^{19}+x^{20}\end{split}

La solution est le coefficient de x10\displaystyle x^{10}. Sophie a donc 100\displaystyle 100 possibilités pour choisir 10\displaystyle 10 billes.

Exemple 4.7.11.

10\displaystyle 10 enfants sont placés sous forme d’un rang. De combien de façons différentes peut-on leur remettre à chacun une bille qui peuvent être bleue, verte, orange ou jaune de sorte qu’un enfant recevant une bille bleue ne soit jamais à côté d’un enfant recevant une bille orange ou jaune ? Pour ce faire, nous allons commencer par modéliser le problème à l’aide d’un automate.

Si on dénote par xn\displaystyle x_{n} le nombre de solution possible avec n\displaystyle n enfants (les solutions valides), et on dénote par:

an=\displaystyle a_{n}= Nombre de solutions valides se terminant par une boule bleue
bn=\displaystyle b_{n}= Nombre de solutions valides se terminant par une boule verte
cn=\displaystyle c_{n}= Nombre de solutions valides se terminant par une boule orange
dn=\displaystyle d_{n}= Nombre de solutions valides se terminant par une boule jaune

alors à partir de l’automate on obtient le système d’équations définies par récurrence suivant:

{an=an1+bn1bn=an1+bn1+cn1+dn1cn=bn1+cn1+dn1dn=bn1+cn1+dn1,n2\displaystyle\left\{\begin{array}[]{l}a_{n}=a_{n-1}+b_{n-1}\\ b_{n}=a_{n-1}+b_{n-1}+c_{n-1}+d_{n-1}\\ c_{n}=b_{n-1}+c_{n-1}+d_{n-1}\\ d_{n}=b_{n-1}+c_{n-1}+d_{n-1}\\ \end{array}\right.,\leavevmode\nobreak\ \leavevmode\nobreak\ \leavevmode% \nobreak\ \leavevmode\nobreak\ \leavevmode\nobreak\ \forall n\geq 2

avec les valeurs initiales a1=b1=c1=d1=1\displaystyle a_{1}=b_{1}=c_{1}=d_{1}=1. À l’aide de Python, ou même à la main, il devient alors relativement facile de construire une table de valeurs.

Listing 25: Solution du problème

                1
                
                
                
              from sympy import *


                2
                
                
                
              from pandas import *


                3
                
                
                
              init_printing()


                4
                
                
                
              


                5
                
                
                
              def a(n):


                6
                
                
                
                  if n == 1:


                7
                
                
                
                      return 1


                8
                
                
                
                  else:


                9
                
                
                
                      return a(n-1) + b(n-1)


                10
                
                
                
              


                11
                
                
                
              def b(n):


                12
                
                
                
                  if n == 1:


                13
                
                
                
                      return 1


                14
                
                
                
                  else:


                15
                
                
                
                      return a(n-1) + b(n-1) + c(n-1) + d(n-1)


                16
                
                
                
              


                17
                
                
                
              def c(n):


                18
                
                
                
                  if n == 1:


                19
                
                
                
                      return 1


                20
                
                
                
                  else:


                21
                
                
                
                      return b(n-1) + c(n-1) + d(n-1)


                22
                
                
                
              


                23
                
                
                
              def d(n):


                24
                
                
                
                  if n == 1:


                25
                
                
                
                      return 1


                26
                
                
                
                  else:


                27
                
                
                
                      return b(n-1) + c(n-1) + d(n-1)


                28
                
                
                
              


                29
                
                
                
              def x(n):


                30
                
                
                
                  return a(n) + b(n) + c(n) + d(n)


                31
                
                
                
              


                32
                
                
                
              tableau = DataFrame({


                33
                
                
                
                  "a(n)": [a(n) for n in range(1,11)],


                34
                
                
                
                  "b(n)": [b(n) for n in range(1,11)],


                35
                
                
                
                  "c(n)": [c(n) for n in range(1,11)],


                36
                
                
                
                  "d(n)": [d(n) for n in range(1,11)],


                37
                
                
                
                  "x(n)": [x(n) for n in range(1,11)]


                38
                
                
                
              })


                39
                
                
                
              tableau.index = [n for n in range(1,11)]


                40
                
                
                
              tableau
n\displaystyle n an\displaystyle a_{n} bn\displaystyle b_{n} cn\displaystyle c_{n} dn\displaystyle d_{n} xn\displaystyle x_{n}
1 1 1 1 1 4
2 2 4 3 3 12
3 6 12 10 10 38
4 18 38 32 32 120
5 56 120 102 102 380
6 176 380 324 324 1204
7 556 1204 1028 1028 3816
8 1760 3816 3260 3260 12096
9 5576 12096 10336 10336 38344
10 17672 38344 32768 32768 121552

La solution de notre problème est donc 121 552\displaystyle 121\leavevmode\nobreak\ 552 possibilités. Pour résoudre le problème, nous aurions aussi pu réécrire notre système d’équations définie par récurrence sous forme matricielle, et appliquer les méthodes de l’algèbre linéaire pour le résoudre. Dans ce cas, nous aurions obtenu l’équation:

(anbncndn)=(1100111101110111)=A(an1bn1cn1dn1)=(1100111101110111)2(an2bn2cn2dn2)==(1100111101110111)n1(1111)=(17672383443276832768)\displaystyle\begin{pmatrix}a_{n}\\ b_{n}\\ c_{n}\\ d_{n}\end{pmatrix}=\underbrace{\begin{pmatrix}1&1&0&0\\ 1&1&1&1\\ 0&1&1&1\\ 0&1&1&1\end{pmatrix}}_{=A}\begin{pmatrix}a_{n-1}\\ b_{n-1}\\ c_{n-1}\\ d_{n-1}\end{pmatrix}=\begin{pmatrix}1&1&0&0\\ 1&1&1&1\\ 0&1&1&1\\ 0&1&1&1\end{pmatrix}^{2}\begin{pmatrix}a_{n-2}\\ b_{n-2}\\ c_{n-2}\\ d_{n-2}\end{pmatrix}=...=\begin{pmatrix}1&1&0&0\\ 1&1&1&1\\ 0&1&1&1\\ 0&1&1&1\end{pmatrix}^{n-1}\begin{pmatrix}1\\ 1\\ 1\\ 1\end{pmatrix}=\begin{pmatrix}17672\\ 38344\\ 32768\\ 32768\end{pmatrix}

La solution de notre problème étant la somme des éléments du vecteur de droite, ce qui nous donne bien entendu la même valeur que nous avions trouvé précédemment.

Il aurait aussi été possible de trouver une seule récurrence utilisant uniquement la suite xn\displaystyle x_{n}. Bien que cette dernière soit sans doute plus intéressante, en particulier lorsqu’il s’agit de faire les calculs à la main, la trouver dans le cas présent n’est pas trivial sans avoir recours au technique de l’algèbre linéaire. La méthode la plus simple consiste à trouver le polynôme caractéristique de la matrice A\displaystyle A:

det(AλI)=|1λ10011λ11011λ10111λ|=λ44λ3+2λ2+2λ=0\displaystyle det(A-\lambda I)=\begin{vmatrix}1-\lambda&1&0&0\\ 1&1-\lambda&1&1\\ 0&1&1-\lambda&1\\ 0&1&1&1-\lambda\end{vmatrix}=\lambda^{4}-4\lambda^{3}+2\lambda^{2}+2\lambda=0

En remplaçant les λ4\displaystyle\lambda^{4} par xn\displaystyle x_{n}, les λ3\displaystyle\lambda^{3} par xn1\displaystyle x_{n-1}, les λ2\displaystyle\lambda^{2} par xn2\displaystyle x_{n-2} et les λ\displaystyle\lambda par xn3\displaystyle x_{n-3}, on obtient la récurrence suivante:

{xn=4xn12xn22xn3,n3x0=1x1=4x2=12\displaystyle\left\{\begin{array}[]{l}x_{n}=4x_{n-1}-2x_{n-2}-2x_{n-3},% \leavevmode\nobreak\ \leavevmode\nobreak\ \leavevmode\nobreak\ \forall n\geq 3% \\ x_{0}=1\\ x_{1}=4\\ x_{2}=12\end{array}\right.

où les valeurs initiales ont été trouvé indépendamment par simple énumération. Notez finalement que bien que la méthode que nous avons utilisé ci-dessus soit particulièrement complexe, vérifier que la récurrence est correcte est pour sa part un problème facile.