Combinaisons et triangle de Pascal
L'essentiel du cours (3 notions)
Combinaisons et triangle de Pascal
Définition : Une combinaison de $k$ éléments parmi $n$ est une partie à $k$ éléments d'un ensemble à $n$ éléments. On note $\binom{n}{k} = \frac{n!}{k!(n-k)!}$.
Propriété : - Symétrie : $\binom{n}{k} = \binom{n}{n-k}$ - Relation de Pascal : $\binom{n}{k} + \binom{n}{k+1} = \binom{n+1}{k+1}$
Exemple : $\binom{5}{2} = \frac{5 \times 4}{2 \times 1} = 10$. Par symétrie, $\binom{5}{3} = 10$.
Algorithmes de génération combinatoire
Méthode : 1. Initialiser les bords du triangle de Pascal avec des 1. 2. Calculer chaque terme par la relation de Pascal : $\binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k}$. 3. Générer les $k$-uplets via des boucles imbriquées.
Exemple : La ligne $n=3$ s'obtient à partir de la ligne $n=2$ ($1, 2, 1$) par $1$, $1+2=3$, $2+1=3$, $1$, soit $1, 3, 3, 1$.
Combinaisons avec répétitions
Définition : Une combinaison avec répétitions de $k$ éléments parmi $n$ est un choix non ordonné de $k$ objets parmi $n$ types distincts, avec répétition autorisée.
Formule : $\binom{n + k - 1}{k}$
Exemple : Choisir 4 boules parmi 3 couleurs avec répétitions donne $\binom{3+4-1}{4} = \binom{6}{4} = 15$ possibilités.
Soit $n$ un entier naturel tel que $n \ge 5$.
On considère l'égalité suivante portant sur les coefficients binomiaux :
$$\binom{n}{3} = \binom{n}{5}$$En utilisant la propriété de symétrie des combinaisons, déterminer la valeur de l'entier $n$.
Saisir la valeur de $n$.
On considère la fonction suivante écrite en langage Python :
def calcul_somme(n):
L = [1]
for i in range(1, n + 1):
ligne = [1]
for j in range(len(L) - 1):
ligne.append(L[j] + L[j + 1])
ligne.append(1)
L = ligne
total = 0
for k in range(len(L)):
if k % 2 == 0:
total += L[k]
return totalDéterminer la valeur renvoyée par l'appel calcul_somme(6).
On considère la fonction Python suivante conçue pour générer toutes les parties à $2$ éléments d'un ensemble de $n$ éléments distincts :
def generer_parties(n):
L = []
for i in range(1, n + 1):
for j in range(i + 1, n + 1):
L.append((i, j))
return L
Lorsqu'on exécute la commande len(generer_parties(n)) pour un entier $n \geqslant 2$, le programme renvoie la valeur $28$.
Déterminer la valeur de l'entier $n$.
Saisir la valeur de n.
Soit $n$ un entier naturel supérieur ou égal à $3$. On considère l'équation suivante :
$$\binom{n}{2} + \binom{n}{3} = 120$$Déterminer la valeur de l'entier $n$.
Saisir la valeur de $n$.
On considère la fonction Python ci-dessous, où $n$ désigne un entier naturel supérieur ou égal à $3$.
def generer_parties(n):
compteur = 0
for i in range(1, n + 1):
for j in range(i + 1, n + 1):
compteur += 1
for i in range(1, n + 1):
for j in range(i + 1, n + 1):
for k in range(j + 1, n + 1):
compteur += 1
return compteurLors d'une exécution, la commande generer_parties(n) renvoie la valeur $455$.
Saisir la valeur de l'entier $n$.
On considère l'équation $x_1 + x_2 + x_3 + x_4 = S$, où $S$ est un entier naturel.
On cherche le nombre de quadruplets d'entiers $(x_1, x_2, x_3, x_4)$ vérifiant cette équation avec les contraintes suivantes : $x_1 \ge 1$, $x_2 \ge 2$, $x_3 \ge 0$ et $x_4 \ge 0$.
Rappel : Pour tout entier $n \ge 1$ et tout entier $k \ge 0$, le nombre de $n$-uplets d'entiers naturels $(y_1, y_2, \dots, y_n)$ tels que $y_1 + y_2 + \dots + y_n = k$ est égal à $\binom{n+k-1}{k}$.
Déterminer le plus petit entier $S$ pour lequel le nombre de quadruplets solutions sous ces contraintes est supérieur ou égal à $200$.
Saisir la valeur minimale de $S$.