From 568fcafae96ab3d4539667a9c26c75560d27fe42 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 15:56:09 +0200 Subject: [PATCH 01/22] Add files via upload --- ...51atoire d\342\200\231une permutation .md" | 123 ++++++++++++++++++ ...251ments d\342\200\231un ensemble fini.md" | 89 +++++++++++++ 2 files changed, 212 insertions(+) create mode 100644 "Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" create mode 100644 "Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" diff --git "a/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" "b/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" new file mode 100644 index 0000000..8c42116 --- /dev/null +++ "b/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" @@ -0,0 +1,123 @@ +\# Chapitre 2 \- Partie 1 : Génération des permutations d’un ensemble fini + +\#\# INTRODUCTION +Dans ce chapitre, nous étudions comment manipuler l'ordre des éléments d'un ensemble fini. Cette notion est fondamentale en combinatoire (dénombrement) et en informatique, que ce soit pour tester toutes les possibilités d'un problème ou pour simuler des phénomènes aléatoires (jeux de cartes, échantillonnage). + +\#\#\# Définitions +\* \*\*Permutation :\*\* Soit E un ensemble fini de n éléments. Une permutation de E est une liste ordonnée contenant tous les éléments de E une et une seule fois. +\* \*\*Dénombrement :\*\* Le nombre de permutations d'un ensemble à n éléments est donné par la factorielle de n, notée n\! : + +$$n\! \= n \\times (n-1) \\times (n-2) \\times \\dots \\times 2 \\times 1$$ + +Par convention, $0\! \= 1$. + +\--- + +\#\# Algorithme \- Cas 1 : Génération systématique (exhaustive) + +\#\#\# Idée générale +⇒ L'objectif est de lister toutes les permutations possibles sans en oublier aucune. On utilise une approche récursive basée sur un arbre de choix : on fixe un premier élément, puis on recommence le processus avec les éléments restants. + +\#\#\# Méthode générale +\* \*\*Cas de base :\*\* Si l'ensemble ne contient qu'un élément, la seule permutation est l'élément lui-même. +\* \*\*Hérédité (Récursion) :\*\* Pour générer les permutations d'un ensemble E : + \* Pour chaque élément x de E : + 1\. Placer x en première position. + 2\. Générer toutes les permutations de l'ensemble E∖{x}. + 3\. Associer x à chacune de ces permutations. + +\#\#\# Exemples pour visualiser +Pour E={A,B,C}, on a $3\! \= 6$ permutations : +\* On fixe A : il reste {B,C}. On peut avoir (B,C) ou (C,B). + \* Résultats : (A,B,C) et (A,C,B). +\* On fixe B : il reste {A,C}. On peut avoir (A,C) ou (C,A). + \* Résultats : (B,A,C) et (B,C,A). +\* On fixe C : il reste {A,B}. On peut avoir (A,B) ou (B,A). + \* Résultats : (C,A,B) et (C,B,A). + +\#\#\# → EXERCICES d’application directs +\* \*\*Calcul :\*\* Calculez 5\! et déduisez-en le nombre de façons d'ordonner 5 livres sur une étagère. +\* \*\*Logique :\*\* Si on génère les permutations de {1,2,3,4,5}, combien de permutations commencent par le chiffre 3 ? +\* \*\*Représentation :\*\* Dessinez l'arbre complet des permutations pour l'ensemble {1,2,3}. + +\*\* CORRECTIONS :\*\* +\* \*\*Calcul :\*\* $5\! \= 5 \\times 4 \\times 3 \\times 2 \\times 1 \= 120$. Il y a donc 120 façons différentes d'ordonner ces 5 livres sur l'étagère. +\* \*\*Logique :\*\* Si le chiffre 3 est fixé en première position, il reste 4 éléments $\\{1, 2, 4, 5\\}$ à ordonner. Le nombre de permutations pour ces 4 éléments restants est de $4\! \= 24$. Il y a donc 24 permutations qui commencent par le chiffre 3\. +\* \*\*Représentation :\*\* + \* \*\*Choix 1 :\*\* On fixe 1 $\\rightarrow$ Reste $\\{2, 3\\} \\rightarrow$ Branches finales : (1, 2, 3\) et (1, 3, 2\) + \* \*\*Choix 2 :\*\* On fixe 2 $\\rightarrow$ Reste $\\{1, 3\\} \\rightarrow$ Branches finales : (2, 1, 3\) et (2, 3, 1\) + \* \*\*Choix 3 :\*\* On fixe 3 $\\rightarrow$ Reste $\\{1, 2\\} \\rightarrow$ Branches finales : (3, 1, 2\) et (3, 2, 1\) + +\--- + +\#\# Algorithme \- Cas 2 : Tirage aléatoire (Mélange de Fisher-Yates) + +\#\#\# Idée générale +⇒ Lorsque n est grand, il est impossible de lister toutes les permutations (ex: 52\! pour un jeu de cartes). On cherche alors à obtenir une seule permutation au hasard, de manière "équiprobable" (chaque permutation doit avoir la même chance de sortir). + +\#\#\# Méthode générale (Algorithme de Knuth / Fisher-Yates) +On parcourt la liste de la fin vers le début et on procède à des échanges : +1\. Soit une liste L de n éléments (indices de 0 à n−1). +2\. Pour i allant de n−1 à 1 (par pas de \-1) : + \* Choisir un entier aléatoire j tel que $0 \\le j \\le i$. + \* Échanger les éléments situés aux indices i et j. + +\#\#\# Exemples pour visualiser +Mélangeons \[X,Y,Z\] (indices 0, 1, 2\) : +\* Étape 1 (i=2) : On choisit j entre 0 et 2\. Supposons j=0. On échange L\[2\] et L\[0\]. + \* La liste devient \[Z,Y,X\]. L'élément X est "fixé" à sa place finale. +\* Étape 2 (i=1) : On choisit j entre 0 et 1\. Supposons j=1. On échange L\[1\] et L\[1\] (pas de changement). + \* La liste reste \[Z,Y,X\]. +\* Résultat : La permutation aléatoire obtenue est (Z,Y,X). + +\#\#\# → EXERCICES d’application directs +\* \*\*Simulation :\*\* Appliquez l'algorithme à la main sur la liste \[1,2,3,4\] avec les tirages successifs suivants : j=1 (pour i=3), puis j=0 (pour i=2), puis j=0 (pour i=1). Quel est le résultat final ? +\* \*\*Analyse :\*\* Pourquoi ne tire-t-on pas j entre 0 et n−1 à chaque étape ? (Question de réflexion sur l'uniformité du mélange). + +\*\* CORRECTIONS :\*\* +\* \*\*Simulation :\*\* + \* État initial : \`\[1, 2, 3, 4\]\` + \* Étape 1 ($i=3$, $j=1$) : On échange l'indice 3 (valeur 4\) avec l'indice 1 (valeur 2). La liste devient \`\[1, 4, 3, 2\]\`. + \* Étape 2 ($i=2$, $j=0$) : On échange l'indice 2 (valeur 3\) avec l'indice 0 (valeur 1). La liste devient \`\[3, 4, 1, 2\]\`. + \* Étape 3 ($i=1$, $j=0$) : On échange l'indice 1 (valeur 4\) avec l'indice 0 (valeur 3). La liste devient \`\[4, 3, 1, 2\]\`. + \* \*\*Résultat final :\*\* \`\[4, 3, 1, 2\]\` +\* \*\*Analyse :\*\* C'est pour garantir un mélange équiprobable. Si l'on tirait $j$ de $0$ à $n-1$ à chaque étape, l'algorithme effectuerait $n^n$ chemins possibles. Or, $n^n$ n'est pas un multiple de $n\!$ (le nombre total de permutations). En conséquence, le hasard serait biaisé. L'algorithme de Fisher-Yates, avec sa borne glissante $j \\le i$, offre exactement $n\!$ chemins possibles, garantissant une parfaite uniformité. + +\--- + +\#\# Algorithme \- Cas 3 : Permutations avec éléments identiques (Anagrammes) + +\#\#\# Idée générale +⇒ Jusqu'à présent, nous avons permuté des éléments tous distincts. Mais que se passe-t-il si notre ensemble de départ contient des doublons ? L'idée est de générer (ou dénombrer) les permutations, puis d'éliminer les "doublons" créés par le fait que changer de place deux éléments identiques ne modifie pas le résultat final. + +\#\#\# Méthode générale +Pour calculer le nombre de permutations distinctes d'un ensemble de n éléments où un élément se répète $n\_1$ fois, un autre $n\_2$ fois, etc., on utilise la formule : +$$\\frac{n\!}{n\_1\! \\times n\_2\! \\times \\dots \\times n\_k\!}$$ + +\#\#\# Exemples pour visualiser +Cherchons toutes les anagrammes du mot \*\*"ELLE"\*\*. +\* Nombre total de lettres : $n \= 4$. Donc $4\! \= 24$ permutations au total. +\* Répétitions : La lettre 'E' apparait 2 fois ($2\! \= 2$). La lettre 'L' apparait 2 fois ($2\! \= 2$). +\* Nombre de permutations distinctes : $\\frac{4\!}{2\! \\times 2\!} \= \\frac{24}{2 \\times 2} \= \\frac{24}{4} \= 6$. +\* \*Vérification visuelle :\* ELLE, ELEL, EELL, LELE, LEEL, LLEE. On retrouve bien exactement 6 combinaisons. + +\#\#\# → EXERCICES d’application directs +1\. \*\*Dénombrement simple :\*\* Combien d'anagrammes distinctes peut-on former avec le mot "MATHS" ? +2\. \*\*Dénombrement avec répétitions :\*\* Calculez le nombre d'anagrammes distinctes du mot "ANANAS". + +\*\* CORRECTIONS :\*\* +\* \*\*Dénombrement simple :\*\* Les 5 lettres de "MATHS" sont toutes distinctes. Il s'agit d'une permutation classique du Cas 1\. Le calcul est donc $5\! \= 120$. +\* \*\*Dénombrement avec répétitions :\*\* Le mot "ANANAS" contient 6 lettres ($n=6$). Il y a des répétitions : 'A' apparait 3 fois, 'N' apparait 2 fois, et 'S' apparait 1 fois. +Le calcul est : $\\frac{6\!}{3\! \\times 2\! \\times 1\!} \= \\frac{720}{6 \\times 2 \\times 1} \= \\frac{720}{12} \= 60$. Il y a 60 anagrammes distinctes. + +\--- + +\#\# Résumé global \+ Conseils +\* \*\*Complexité :\*\* La génération exhaustive (Cas 1\) a une complexité en O(n\!), ce qui devient inutilisable très vite. Le mélange aléatoire (Cas 2\) est en O(n), il est extrêmement efficace. +\* \*\*Utilisation :\*\* + \* Toutes les permutations → Problèmes d'optimisation (ex: voyageur de commerce sur très peu de villes). + \* Une permutation aléatoire → Simulations de Monte-Carlo, jeux, cryptographie. + \* Permutations avec doublons → Problèmes d'anagrammes, chemins sur quadrillage. +\* \*\*Conseils :\*\* + \* Attention aux indices lors de l'implémentation du mélange (la borne $j \\le i$ est cruciale). + \ No newline at end of file diff --git "a/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" "b/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" new file mode 100644 index 0000000..b0cf8ab --- /dev/null +++ "b/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" @@ -0,0 +1,89 @@ +\# Chapitre 2 \- Partie 2 : Génération des parties à 2 et 3 éléments d’un ensemble fini + +\#\# INTRODUCTION + +Après avoir étudié les \*\*permutations\*\* (où l'ordre des éléments compte), nous nous intéressons maintenant aux \*\*parties\*\* (ou sous-ensembles). Dans une partie, l'ordre n'a aucune importance : l'ensemble $\\{A, B\\}$ est le même que $\\{B, A\\}$. + +\#\#\# Définitions +\* \*\*Combinaison :\*\* Une combinaison de $k$ éléments parmi $n$ est un sous-ensemble de $k$ éléments distincts choisis dans un ensemble $E$ de cardinal $n$. +\* \*\*Coefficient binomial :\*\* Le nombre de ces parties est noté $\\binom{n}{k}$ (se lit "$k$ parmi $n$"). Il se calcule par : + $$\\binom{n}{k} \= \\frac{n\!}{k\!(n-k)\!}$$ +\* \*\*Propriété de génération :\*\* Pour générer des parties sans doublons (ex: ne pas lister $\\{1, 2\\}$ puis $\\{2, 1\\}$), on impose généralement un \*\*ordre strict\*\* sur les indices : $i \< j \< l \\dots$ + +\--- + +\#\# Algorithme \- Cas 1 : Génération des parties à 2 éléments (paires) + +\#\#\# Idée générale +⇒ Pour générer toutes les paires $\\{x\_i, x\_j\\}$ d'un ensemble de taille $n$, on utilise deux boucles imbriquées. La clé pour éviter les répétitions est que la deuxième boucle commence toujours après l'indice de la première. + +\#\#\# Méthode générale +Pour un ensemble $E$ d'indices allant de $0$ à $n-1$ : +1\. Pour $i$ allant de $0$ à $n-2$ : +2\. Pour $j$ allant de $i \+ 1$ à $n-1$ : +3\. Afficher la paire $\\{E\[i\], E\[j\]\\}$. + +\#\#\# Exemples pour visualiser +Soit $E \= \\{1, 2, 3, 4\\}$. Ici $n=4$. On attend $\\binom{4}{2} \= 6$ paires. +\* \*\*$i \= 0$ (élément '1') :\*\* $j$ varie de $1$ à $3$. + \* Paires : $\\{1, 2\\}$, $\\{1, 3\\}$, $\\{1, 4\\}$. +\* \*\*$i \= 1$ (élément '2') :\*\* $j$ varie de $2$ à $3$. + \* Paires : $\\{2, 3\\}$, $\\{2, 4\\}$. (On ne reprend pas '1' car $j \> i$). +\* \*\*$i \= 2$ (élément '3') :\*\* $j$ varie de $3$ à $3$. + \* Paire : $\\{3, 4\\}$. +\* \*\*$i \= 3$ :\*\* La boucle $j$ ne peut pas démarrer ($j$ doit être $\> 3$). Fin. + +\#\#\# → EXERCICES d’application directs +1\. \*\*Calcul :\*\* Combien de paires peut-on former avec un ensemble de 10 personnes ? +2\. \*\*Algorithme :\*\* Énumérez toutes les parties à 2 éléments de l'ensemble $\\{A, B, C, D, E\\}$. + +\*\* CORRECTIONS :\*\* +1\. \*\*Calcul :\*\* $\\binom{10}{2} \= \\frac{10 \\times 9}{2 \\times 1} \= 45$. On peut former 45 paires. +2\. \*\*Algorithme :\*\* $\\{A,B\\}, \\{A,C\\}, \\{A,D\\}, \\{A,E\\}, \\{B,C\\}, \\{B,D\\}, \\{B,E\\}, \\{C,D\\}, \\{C,E\\}, \\{D,E\\}$. + +\--- + +\#\# Algorithme \- Cas 2 : Génération des parties à 3 éléments (triplets) + +\#\#\# Idée générale +⇒ C'est une extension du cas précédent. Pour un triplet $\\{x\_i, x\_j, x\_l\\}$, on utilise trois boucles imbriquées avec la condition $i \< j \< l$. + +\#\#\# Méthode générale +1\. Pour $i$ allant de $0$ à $n-3$ : +2\. Pour $j$ allant de $i \+ 1$ à $n-2$ : +3\. Pour $l$ allant de $j \+ 1$ à $n-1$ : +4\. Afficher le triplet $\\{E\[i\], E\[j\], E\[l\]\\}$. + +\#\#\# Exemples pour visualiser +Soit $E \= \\{A, B, C, D, E\\}$. $n=5$, on attend $\\binom{5}{3} \= 10$ triplets. +\* \*\*$i=0 (A)$ :\*\* + \* $j=1 (B) \\rightarrow l \\in \\{2, 3, 4\\}$ : $\\{A,B,C\\}, \\{A,B,D\\}, \\{A,B,E\\}$ + \* $j=2 (C) \\rightarrow l \\in \\{3, 4\\}$ : $\\{A,C,D\\}, \\{A,C,E\\}$ + \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{A,D,E\\}$ +\* \*\*$i=1 (B)$ :\*\* + \* $j=2 (C) \\rightarrow l \\in \\{3, 4\\}$ : $\\{B,C,D\\}, \\{B,C,E\\}$ + \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{B,D,E\\}$ +\* \*\*$i=2 (C)$ :\*\* + \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{C,D,E\\}$ + +\#\#\# → EXERCICES d’application directs +1\. \*\*Logique :\*\* Dans l'algorithme ci-dessus pour $n=5$, pourquoi la première boucle $i$ s'arrête-t-elle à $n-3$ (indice 2\) ? +2\. \*\*Programmation :\*\* Complétez ce code Python pour générer les triplets d'une liste \`L\` : +\`\`\`python +for i in range(len(L)-2): + for j in range(i+1, len(L)-1): + for k in range(j+1, len(L)): + print(..........) +\`\`\` + +\*\* CORRECTIONS :\*\* +1\. \*\*Logique :\*\* Pour former un triplet, si $i$ est le premier élément, il doit rester au moins deux éléments après lui (pour $j$ et $l$). L'indice maximum pour $i$ est donc $n-3$. +2\. \*\*Programmation :\*\* \`print(L\[i\], L\[j\], L\[k\])\` + +\--- + +\#\# Résumé global \+ Conseils + +\* \*\*Différence clé :\*\* Permutations \= l'ordre compte ($A,B \\neq B,A$). Parties \= l'ordre ne compte pas ($\\left\\{A,B\\right\\} \= \\left\\{B,A\\right\\}$). +\* \*\*Structure algorithmique :\*\* Pour générer des parties de taille $k$, on utilise $k$ boucles imbriquées. +\* \*\*Complexité :\*\* Le nombre de parties augmente très vite avec $n$. $\\binom{n}{k}$ est maximal quand $k \\approx n/2$. From ff4410ddc8967e75de848a0ca91b1bd5435cdd1f Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:22:57 +0200 Subject: [PATCH 02/22] Create maths --- maths | 1 + 1 file changed, 1 insertion(+) create mode 100644 maths diff --git a/maths b/maths new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/maths @@ -0,0 +1 @@ + From cef3527bbbf0f30e4ead84c4a9b2258b85731321 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:30:15 +0200 Subject: [PATCH 03/22] Delete maths --- maths | 1 - 1 file changed, 1 deletion(-) delete mode 100644 maths diff --git a/maths b/maths deleted file mode 100644 index 8b13789..0000000 --- a/maths +++ /dev/null @@ -1 +0,0 @@ - From 3d20f44ea0290179a4c3759c3b7d22436cbe5bcf Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:30:34 +0200 Subject: [PATCH 04/22] Create chap2 --- maths/chap2 | 1 + 1 file changed, 1 insertion(+) create mode 100644 maths/chap2 diff --git a/maths/chap2 b/maths/chap2 new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/maths/chap2 @@ -0,0 +1 @@ + From 835b35630711fb9a95506449ddc04bf0bbb901a9 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:31:01 +0200 Subject: [PATCH 05/22] Rename chap2 to chap2.json --- maths/{chap2 => chap2.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename maths/{chap2 => chap2.json} (100%) diff --git a/maths/chap2 b/maths/chap2.json similarity index 100% rename from maths/chap2 rename to maths/chap2.json From e175e1d56a3c51d16b091acc0523d9142243b694 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:32:12 +0200 Subject: [PATCH 06/22] Add chapter 2 JSON with title and difficulty --- maths/chap2.json | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/maths/chap2.json b/maths/chap2.json index 8b13789..0169c77 100644 --- a/maths/chap2.json +++ b/maths/chap2.json @@ -1 +1,5 @@ - +{ + "title": "Dénombrement", + "description": "", + "difficulty": 3 +} From a0e514a391392c8dffdaac1750cc0a91e3140c5e Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:33:39 +0200 Subject: [PATCH 07/22] =?UTF-8?q?Create=20Partie1-=20G=C3=A9n=C3=A9ration?= =?UTF-8?q?=20des=20permutations=20d=E2=80=99un=20ensemble=20fini,=20ou=20?= =?UTF-8?q?tirage=20al=C3=A9atoire=20d=E2=80=99une=20permutation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ini, ou tirage al\303\251atoire d\342\200\231une permutation" | 1 + 1 file changed, 1 insertion(+) create mode 100644 "maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" diff --git "a/maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" "b/maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" new file mode 100644 index 0000000..8b13789 --- /dev/null +++ "b/maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" @@ -0,0 +1 @@ + From cdc0cacb216f086bd8d1f415977bdf952b96360e Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:41:16 +0200 Subject: [PATCH 08/22] =?UTF-8?q?Delete=20maths/Partie1-=20G=C3=A9n=C3=A9r?= =?UTF-8?q?ation=20des=20permutations=20d=E2=80=99un=20ensemble=20fini,=20?= =?UTF-8?q?ou=20tirage=20al=C3=A9atoire=20d=E2=80=99une=20permutation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ini, ou tirage al\303\251atoire d\342\200\231une permutation" | 1 - 1 file changed, 1 deletion(-) delete mode 100644 "maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" diff --git "a/maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" "b/maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" deleted file mode 100644 index 8b13789..0000000 --- "a/maths/Partie1- G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation" +++ /dev/null @@ -1 +0,0 @@ - From 7a895c32c67fc06c2a1f29a1308274023683396d Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:44:30 +0200 Subject: [PATCH 09/22] Add JSON file for permutations generation --- maths/chap2/partie1/partie1.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 maths/chap2/partie1/partie1.json diff --git a/maths/chap2/partie1/partie1.json b/maths/chap2/partie1/partie1.json new file mode 100644 index 0000000..32e026f --- /dev/null +++ b/maths/chap2/partie1/partie1.json @@ -0,0 +1,6 @@ +{ + "title": "Génération des permutations d’un ensemble fini +", + "description": "", + "difficulty": 3 +} From f2a9b0fe00bfd10c4a6b81395f0e797ee67d7b75 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:45:45 +0200 Subject: [PATCH 10/22] Delete maths/chap2.json --- maths/chap2.json | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 maths/chap2.json diff --git a/maths/chap2.json b/maths/chap2.json deleted file mode 100644 index 0169c77..0000000 --- a/maths/chap2.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Dénombrement", - "description": "", - "difficulty": 3 -} From 223f55bf866cd5d65bf67e8820513eb49de128fc Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:47:01 +0200 Subject: [PATCH 11/22] Create chap.json --- maths/chap2/chap.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 maths/chap2/chap.json diff --git a/maths/chap2/chap.json b/maths/chap2/chap.json new file mode 100644 index 0000000..0169c77 --- /dev/null +++ b/maths/chap2/chap.json @@ -0,0 +1,5 @@ +{ + "title": "Dénombrement", + "description": "", + "difficulty": 3 +} From 2f4e68273ff0d54ff4ffa201a49ac878f3538b45 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:49:53 +0200 Subject: [PATCH 12/22] Add lesson1.json for permutations generation --- maths/chap2/partie1/lesson1.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 maths/chap2/partie1/lesson1.json diff --git a/maths/chap2/partie1/lesson1.json b/maths/chap2/partie1/lesson1.json new file mode 100644 index 0000000..2ca5415 --- /dev/null +++ b/maths/chap2/partie1/lesson1.json @@ -0,0 +1,4 @@ +{ + "title": "Génération des permutations d’un ensemble fini", + "difficulty": 3 +} From c4509d12c615b98df25588e74d5f03cdb5d8880a Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:50:17 +0200 Subject: [PATCH 13/22] Add files via upload --- ...51atoire d\342\200\231une permutation .md" | 123 ++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 "maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" diff --git "a/maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" "b/maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" new file mode 100644 index 0000000..8c42116 --- /dev/null +++ "b/maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" @@ -0,0 +1,123 @@ +\# Chapitre 2 \- Partie 1 : Génération des permutations d’un ensemble fini + +\#\# INTRODUCTION +Dans ce chapitre, nous étudions comment manipuler l'ordre des éléments d'un ensemble fini. Cette notion est fondamentale en combinatoire (dénombrement) et en informatique, que ce soit pour tester toutes les possibilités d'un problème ou pour simuler des phénomènes aléatoires (jeux de cartes, échantillonnage). + +\#\#\# Définitions +\* \*\*Permutation :\*\* Soit E un ensemble fini de n éléments. Une permutation de E est une liste ordonnée contenant tous les éléments de E une et une seule fois. +\* \*\*Dénombrement :\*\* Le nombre de permutations d'un ensemble à n éléments est donné par la factorielle de n, notée n\! : + +$$n\! \= n \\times (n-1) \\times (n-2) \\times \\dots \\times 2 \\times 1$$ + +Par convention, $0\! \= 1$. + +\--- + +\#\# Algorithme \- Cas 1 : Génération systématique (exhaustive) + +\#\#\# Idée générale +⇒ L'objectif est de lister toutes les permutations possibles sans en oublier aucune. On utilise une approche récursive basée sur un arbre de choix : on fixe un premier élément, puis on recommence le processus avec les éléments restants. + +\#\#\# Méthode générale +\* \*\*Cas de base :\*\* Si l'ensemble ne contient qu'un élément, la seule permutation est l'élément lui-même. +\* \*\*Hérédité (Récursion) :\*\* Pour générer les permutations d'un ensemble E : + \* Pour chaque élément x de E : + 1\. Placer x en première position. + 2\. Générer toutes les permutations de l'ensemble E∖{x}. + 3\. Associer x à chacune de ces permutations. + +\#\#\# Exemples pour visualiser +Pour E={A,B,C}, on a $3\! \= 6$ permutations : +\* On fixe A : il reste {B,C}. On peut avoir (B,C) ou (C,B). + \* Résultats : (A,B,C) et (A,C,B). +\* On fixe B : il reste {A,C}. On peut avoir (A,C) ou (C,A). + \* Résultats : (B,A,C) et (B,C,A). +\* On fixe C : il reste {A,B}. On peut avoir (A,B) ou (B,A). + \* Résultats : (C,A,B) et (C,B,A). + +\#\#\# → EXERCICES d’application directs +\* \*\*Calcul :\*\* Calculez 5\! et déduisez-en le nombre de façons d'ordonner 5 livres sur une étagère. +\* \*\*Logique :\*\* Si on génère les permutations de {1,2,3,4,5}, combien de permutations commencent par le chiffre 3 ? +\* \*\*Représentation :\*\* Dessinez l'arbre complet des permutations pour l'ensemble {1,2,3}. + +\*\* CORRECTIONS :\*\* +\* \*\*Calcul :\*\* $5\! \= 5 \\times 4 \\times 3 \\times 2 \\times 1 \= 120$. Il y a donc 120 façons différentes d'ordonner ces 5 livres sur l'étagère. +\* \*\*Logique :\*\* Si le chiffre 3 est fixé en première position, il reste 4 éléments $\\{1, 2, 4, 5\\}$ à ordonner. Le nombre de permutations pour ces 4 éléments restants est de $4\! \= 24$. Il y a donc 24 permutations qui commencent par le chiffre 3\. +\* \*\*Représentation :\*\* + \* \*\*Choix 1 :\*\* On fixe 1 $\\rightarrow$ Reste $\\{2, 3\\} \\rightarrow$ Branches finales : (1, 2, 3\) et (1, 3, 2\) + \* \*\*Choix 2 :\*\* On fixe 2 $\\rightarrow$ Reste $\\{1, 3\\} \\rightarrow$ Branches finales : (2, 1, 3\) et (2, 3, 1\) + \* \*\*Choix 3 :\*\* On fixe 3 $\\rightarrow$ Reste $\\{1, 2\\} \\rightarrow$ Branches finales : (3, 1, 2\) et (3, 2, 1\) + +\--- + +\#\# Algorithme \- Cas 2 : Tirage aléatoire (Mélange de Fisher-Yates) + +\#\#\# Idée générale +⇒ Lorsque n est grand, il est impossible de lister toutes les permutations (ex: 52\! pour un jeu de cartes). On cherche alors à obtenir une seule permutation au hasard, de manière "équiprobable" (chaque permutation doit avoir la même chance de sortir). + +\#\#\# Méthode générale (Algorithme de Knuth / Fisher-Yates) +On parcourt la liste de la fin vers le début et on procède à des échanges : +1\. Soit une liste L de n éléments (indices de 0 à n−1). +2\. Pour i allant de n−1 à 1 (par pas de \-1) : + \* Choisir un entier aléatoire j tel que $0 \\le j \\le i$. + \* Échanger les éléments situés aux indices i et j. + +\#\#\# Exemples pour visualiser +Mélangeons \[X,Y,Z\] (indices 0, 1, 2\) : +\* Étape 1 (i=2) : On choisit j entre 0 et 2\. Supposons j=0. On échange L\[2\] et L\[0\]. + \* La liste devient \[Z,Y,X\]. L'élément X est "fixé" à sa place finale. +\* Étape 2 (i=1) : On choisit j entre 0 et 1\. Supposons j=1. On échange L\[1\] et L\[1\] (pas de changement). + \* La liste reste \[Z,Y,X\]. +\* Résultat : La permutation aléatoire obtenue est (Z,Y,X). + +\#\#\# → EXERCICES d’application directs +\* \*\*Simulation :\*\* Appliquez l'algorithme à la main sur la liste \[1,2,3,4\] avec les tirages successifs suivants : j=1 (pour i=3), puis j=0 (pour i=2), puis j=0 (pour i=1). Quel est le résultat final ? +\* \*\*Analyse :\*\* Pourquoi ne tire-t-on pas j entre 0 et n−1 à chaque étape ? (Question de réflexion sur l'uniformité du mélange). + +\*\* CORRECTIONS :\*\* +\* \*\*Simulation :\*\* + \* État initial : \`\[1, 2, 3, 4\]\` + \* Étape 1 ($i=3$, $j=1$) : On échange l'indice 3 (valeur 4\) avec l'indice 1 (valeur 2). La liste devient \`\[1, 4, 3, 2\]\`. + \* Étape 2 ($i=2$, $j=0$) : On échange l'indice 2 (valeur 3\) avec l'indice 0 (valeur 1). La liste devient \`\[3, 4, 1, 2\]\`. + \* Étape 3 ($i=1$, $j=0$) : On échange l'indice 1 (valeur 4\) avec l'indice 0 (valeur 3). La liste devient \`\[4, 3, 1, 2\]\`. + \* \*\*Résultat final :\*\* \`\[4, 3, 1, 2\]\` +\* \*\*Analyse :\*\* C'est pour garantir un mélange équiprobable. Si l'on tirait $j$ de $0$ à $n-1$ à chaque étape, l'algorithme effectuerait $n^n$ chemins possibles. Or, $n^n$ n'est pas un multiple de $n\!$ (le nombre total de permutations). En conséquence, le hasard serait biaisé. L'algorithme de Fisher-Yates, avec sa borne glissante $j \\le i$, offre exactement $n\!$ chemins possibles, garantissant une parfaite uniformité. + +\--- + +\#\# Algorithme \- Cas 3 : Permutations avec éléments identiques (Anagrammes) + +\#\#\# Idée générale +⇒ Jusqu'à présent, nous avons permuté des éléments tous distincts. Mais que se passe-t-il si notre ensemble de départ contient des doublons ? L'idée est de générer (ou dénombrer) les permutations, puis d'éliminer les "doublons" créés par le fait que changer de place deux éléments identiques ne modifie pas le résultat final. + +\#\#\# Méthode générale +Pour calculer le nombre de permutations distinctes d'un ensemble de n éléments où un élément se répète $n\_1$ fois, un autre $n\_2$ fois, etc., on utilise la formule : +$$\\frac{n\!}{n\_1\! \\times n\_2\! \\times \\dots \\times n\_k\!}$$ + +\#\#\# Exemples pour visualiser +Cherchons toutes les anagrammes du mot \*\*"ELLE"\*\*. +\* Nombre total de lettres : $n \= 4$. Donc $4\! \= 24$ permutations au total. +\* Répétitions : La lettre 'E' apparait 2 fois ($2\! \= 2$). La lettre 'L' apparait 2 fois ($2\! \= 2$). +\* Nombre de permutations distinctes : $\\frac{4\!}{2\! \\times 2\!} \= \\frac{24}{2 \\times 2} \= \\frac{24}{4} \= 6$. +\* \*Vérification visuelle :\* ELLE, ELEL, EELL, LELE, LEEL, LLEE. On retrouve bien exactement 6 combinaisons. + +\#\#\# → EXERCICES d’application directs +1\. \*\*Dénombrement simple :\*\* Combien d'anagrammes distinctes peut-on former avec le mot "MATHS" ? +2\. \*\*Dénombrement avec répétitions :\*\* Calculez le nombre d'anagrammes distinctes du mot "ANANAS". + +\*\* CORRECTIONS :\*\* +\* \*\*Dénombrement simple :\*\* Les 5 lettres de "MATHS" sont toutes distinctes. Il s'agit d'une permutation classique du Cas 1\. Le calcul est donc $5\! \= 120$. +\* \*\*Dénombrement avec répétitions :\*\* Le mot "ANANAS" contient 6 lettres ($n=6$). Il y a des répétitions : 'A' apparait 3 fois, 'N' apparait 2 fois, et 'S' apparait 1 fois. +Le calcul est : $\\frac{6\!}{3\! \\times 2\! \\times 1\!} \= \\frac{720}{6 \\times 2 \\times 1} \= \\frac{720}{12} \= 60$. Il y a 60 anagrammes distinctes. + +\--- + +\#\# Résumé global \+ Conseils +\* \*\*Complexité :\*\* La génération exhaustive (Cas 1\) a une complexité en O(n\!), ce qui devient inutilisable très vite. Le mélange aléatoire (Cas 2\) est en O(n), il est extrêmement efficace. +\* \*\*Utilisation :\*\* + \* Toutes les permutations → Problèmes d'optimisation (ex: voyageur de commerce sur très peu de villes). + \* Une permutation aléatoire → Simulations de Monte-Carlo, jeux, cryptographie. + \* Permutations avec doublons → Problèmes d'anagrammes, chemins sur quadrillage. +\* \*\*Conseils :\*\* + \* Attention aux indices lors de l'implémentation du mélange (la borne $j \\le i$ est cruciale). + \ No newline at end of file From 3bea5812da33921b093ac0756f7373b5e94ff3a3 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:51:12 +0200 Subject: [PATCH 14/22] Rename chapter file for permutation generation --- ...ou tirage al\303\251atoire d\342\200\231une permutation .md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename "maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" => "maths/chap2/partie1/G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" (99%) diff --git "a/maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" "b/maths/chap2/partie1/G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" similarity index 99% rename from "maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" rename to "maths/chap2/partie1/G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" index 8c42116..89ea717 100644 --- "a/maths/chap2/partie1/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" +++ "b/maths/chap2/partie1/G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" @@ -120,4 +120,4 @@ Le calcul est : $\\frac{6\!}{3\! \\times 2\! \\times 1\!} \= \\frac{720}{6 \\tim \* Permutations avec doublons → Problèmes d'anagrammes, chemins sur quadrillage. \* \*\*Conseils :\*\* \* Attention aux indices lors de l'implémentation du mélange (la borne $j \\le i$ est cruciale). - \ No newline at end of file + From 8b9df38bbe8bb3386508dea1df4ef508b4dbe021 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:52:54 +0200 Subject: [PATCH 15/22] Add partie.json for set generation details --- maths/chap2/partie2/partie.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 maths/chap2/partie2/partie.json diff --git a/maths/chap2/partie2/partie.json b/maths/chap2/partie2/partie.json new file mode 100644 index 0000000..9517a17 --- /dev/null +++ b/maths/chap2/partie2/partie.json @@ -0,0 +1,5 @@ +{ + "title": "Génération des parties à 2 et 3 éléments d’un ensemble fini", + "description": "", + "difficulty": 1 +} From f0649263f3927642fd2a80dcc46ed695bc2becac Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:54:07 +0200 Subject: [PATCH 16/22] Add lesson1.json for set generation topic --- maths/chap2/partie2/lesson1.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 maths/chap2/partie2/lesson1.json diff --git a/maths/chap2/partie2/lesson1.json b/maths/chap2/partie2/lesson1.json new file mode 100644 index 0000000..d64b7bf --- /dev/null +++ b/maths/chap2/partie2/lesson1.json @@ -0,0 +1,4 @@ +{ + "title": "Génération des parties à 2 et 3 éléments d’un ensemble fini", + "difficulty": 3 +} From 1612c39db1e70c7740bfbac6f1e75bdfed33ef41 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:54:24 +0200 Subject: [PATCH 17/22] Add files via upload --- ...251ments d\342\200\231un ensemble fini.md" | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 "maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" diff --git "a/maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" "b/maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" new file mode 100644 index 0000000..b0cf8ab --- /dev/null +++ "b/maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" @@ -0,0 +1,89 @@ +\# Chapitre 2 \- Partie 2 : Génération des parties à 2 et 3 éléments d’un ensemble fini + +\#\# INTRODUCTION + +Après avoir étudié les \*\*permutations\*\* (où l'ordre des éléments compte), nous nous intéressons maintenant aux \*\*parties\*\* (ou sous-ensembles). Dans une partie, l'ordre n'a aucune importance : l'ensemble $\\{A, B\\}$ est le même que $\\{B, A\\}$. + +\#\#\# Définitions +\* \*\*Combinaison :\*\* Une combinaison de $k$ éléments parmi $n$ est un sous-ensemble de $k$ éléments distincts choisis dans un ensemble $E$ de cardinal $n$. +\* \*\*Coefficient binomial :\*\* Le nombre de ces parties est noté $\\binom{n}{k}$ (se lit "$k$ parmi $n$"). Il se calcule par : + $$\\binom{n}{k} \= \\frac{n\!}{k\!(n-k)\!}$$ +\* \*\*Propriété de génération :\*\* Pour générer des parties sans doublons (ex: ne pas lister $\\{1, 2\\}$ puis $\\{2, 1\\}$), on impose généralement un \*\*ordre strict\*\* sur les indices : $i \< j \< l \\dots$ + +\--- + +\#\# Algorithme \- Cas 1 : Génération des parties à 2 éléments (paires) + +\#\#\# Idée générale +⇒ Pour générer toutes les paires $\\{x\_i, x\_j\\}$ d'un ensemble de taille $n$, on utilise deux boucles imbriquées. La clé pour éviter les répétitions est que la deuxième boucle commence toujours après l'indice de la première. + +\#\#\# Méthode générale +Pour un ensemble $E$ d'indices allant de $0$ à $n-1$ : +1\. Pour $i$ allant de $0$ à $n-2$ : +2\. Pour $j$ allant de $i \+ 1$ à $n-1$ : +3\. Afficher la paire $\\{E\[i\], E\[j\]\\}$. + +\#\#\# Exemples pour visualiser +Soit $E \= \\{1, 2, 3, 4\\}$. Ici $n=4$. On attend $\\binom{4}{2} \= 6$ paires. +\* \*\*$i \= 0$ (élément '1') :\*\* $j$ varie de $1$ à $3$. + \* Paires : $\\{1, 2\\}$, $\\{1, 3\\}$, $\\{1, 4\\}$. +\* \*\*$i \= 1$ (élément '2') :\*\* $j$ varie de $2$ à $3$. + \* Paires : $\\{2, 3\\}$, $\\{2, 4\\}$. (On ne reprend pas '1' car $j \> i$). +\* \*\*$i \= 2$ (élément '3') :\*\* $j$ varie de $3$ à $3$. + \* Paire : $\\{3, 4\\}$. +\* \*\*$i \= 3$ :\*\* La boucle $j$ ne peut pas démarrer ($j$ doit être $\> 3$). Fin. + +\#\#\# → EXERCICES d’application directs +1\. \*\*Calcul :\*\* Combien de paires peut-on former avec un ensemble de 10 personnes ? +2\. \*\*Algorithme :\*\* Énumérez toutes les parties à 2 éléments de l'ensemble $\\{A, B, C, D, E\\}$. + +\*\* CORRECTIONS :\*\* +1\. \*\*Calcul :\*\* $\\binom{10}{2} \= \\frac{10 \\times 9}{2 \\times 1} \= 45$. On peut former 45 paires. +2\. \*\*Algorithme :\*\* $\\{A,B\\}, \\{A,C\\}, \\{A,D\\}, \\{A,E\\}, \\{B,C\\}, \\{B,D\\}, \\{B,E\\}, \\{C,D\\}, \\{C,E\\}, \\{D,E\\}$. + +\--- + +\#\# Algorithme \- Cas 2 : Génération des parties à 3 éléments (triplets) + +\#\#\# Idée générale +⇒ C'est une extension du cas précédent. Pour un triplet $\\{x\_i, x\_j, x\_l\\}$, on utilise trois boucles imbriquées avec la condition $i \< j \< l$. + +\#\#\# Méthode générale +1\. Pour $i$ allant de $0$ à $n-3$ : +2\. Pour $j$ allant de $i \+ 1$ à $n-2$ : +3\. Pour $l$ allant de $j \+ 1$ à $n-1$ : +4\. Afficher le triplet $\\{E\[i\], E\[j\], E\[l\]\\}$. + +\#\#\# Exemples pour visualiser +Soit $E \= \\{A, B, C, D, E\\}$. $n=5$, on attend $\\binom{5}{3} \= 10$ triplets. +\* \*\*$i=0 (A)$ :\*\* + \* $j=1 (B) \\rightarrow l \\in \\{2, 3, 4\\}$ : $\\{A,B,C\\}, \\{A,B,D\\}, \\{A,B,E\\}$ + \* $j=2 (C) \\rightarrow l \\in \\{3, 4\\}$ : $\\{A,C,D\\}, \\{A,C,E\\}$ + \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{A,D,E\\}$ +\* \*\*$i=1 (B)$ :\*\* + \* $j=2 (C) \\rightarrow l \\in \\{3, 4\\}$ : $\\{B,C,D\\}, \\{B,C,E\\}$ + \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{B,D,E\\}$ +\* \*\*$i=2 (C)$ :\*\* + \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{C,D,E\\}$ + +\#\#\# → EXERCICES d’application directs +1\. \*\*Logique :\*\* Dans l'algorithme ci-dessus pour $n=5$, pourquoi la première boucle $i$ s'arrête-t-elle à $n-3$ (indice 2\) ? +2\. \*\*Programmation :\*\* Complétez ce code Python pour générer les triplets d'une liste \`L\` : +\`\`\`python +for i in range(len(L)-2): + for j in range(i+1, len(L)-1): + for k in range(j+1, len(L)): + print(..........) +\`\`\` + +\*\* CORRECTIONS :\*\* +1\. \*\*Logique :\*\* Pour former un triplet, si $i$ est le premier élément, il doit rester au moins deux éléments après lui (pour $j$ et $l$). L'indice maximum pour $i$ est donc $n-3$. +2\. \*\*Programmation :\*\* \`print(L\[i\], L\[j\], L\[k\])\` + +\--- + +\#\# Résumé global \+ Conseils + +\* \*\*Différence clé :\*\* Permutations \= l'ordre compte ($A,B \\neq B,A$). Parties \= l'ordre ne compte pas ($\\left\\{A,B\\right\\} \= \\left\\{B,A\\right\\}$). +\* \*\*Structure algorithmique :\*\* Pour générer des parties de taille $k$, on utilise $k$ boucles imbriquées. +\* \*\*Complexité :\*\* Le nombre de parties augmente très vite avec $n$. $\\binom{n}{k}$ est maximal quand $k \\approx n/2$. From afbee4f296c8c8635f6f2cb755cdb0367c564879 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:55:07 +0200 Subject: [PATCH 18/22] Add partie2.json file --- maths/chap2/partie2/{partie.json => partie2.json} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename maths/chap2/partie2/{partie.json => partie2.json} (84%) diff --git a/maths/chap2/partie2/partie.json b/maths/chap2/partie2/partie2.json similarity index 84% rename from maths/chap2/partie2/partie.json rename to maths/chap2/partie2/partie2.json index 9517a17..ff7960f 100644 --- a/maths/chap2/partie2/partie.json +++ b/maths/chap2/partie2/partie2.json @@ -1,5 +1,5 @@ { "title": "Génération des parties à 2 et 3 éléments d’un ensemble fini", "description": "", - "difficulty": 1 + "difficulty": 3 } From 67f2bee2b1c356a0a797998dc6d1be508f251d65 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:55:25 +0200 Subject: [PATCH 19/22] Add lesson2.json for chapter 2, part 2 --- maths/chap2/partie2/{lesson1.json => lesson2.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename maths/chap2/partie2/{lesson1.json => lesson2.json} (100%) diff --git a/maths/chap2/partie2/lesson1.json b/maths/chap2/partie2/lesson2.json similarity index 100% rename from maths/chap2/partie2/lesson1.json rename to maths/chap2/partie2/lesson2.json From 39d5393e329cc0e7b5efb2de534427233a0149bc Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:55:53 +0200 Subject: [PATCH 20/22] Rename chapter file for clarity --- ... 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" => "maths/chap2/partie2/G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" (100%) diff --git "a/maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" "b/maths/chap2/partie2/G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" similarity index 100% rename from "maths/chap2/partie2/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" rename to "maths/chap2/partie2/G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" From f5643159794afbda690887b035ab37b9c9f2afdc Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:56:23 +0200 Subject: [PATCH 21/22] =?UTF-8?q?Delete=20Chapitre=202=20-=20Partie=201=20?= =?UTF-8?q?=5F=20G=C3=A9n=C3=A9ration=20des=20permutations=20d=E2=80=99un?= =?UTF-8?q?=20ensemble=20fini,=20ou=20tirage=20al=C3=A9atoire=20d=E2=80=99?= =?UTF-8?q?une=20permutation=20.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...51atoire d\342\200\231une permutation .md" | 123 ------------------ 1 file changed, 123 deletions(-) delete mode 100644 "Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" diff --git "a/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" "b/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" deleted file mode 100644 index 8c42116..0000000 --- "a/Chapitre 2 - Partie 1 _ G\303\251n\303\251ration des permutations d\342\200\231un ensemble fini, ou tirage al\303\251atoire d\342\200\231une permutation .md" +++ /dev/null @@ -1,123 +0,0 @@ -\# Chapitre 2 \- Partie 1 : Génération des permutations d’un ensemble fini - -\#\# INTRODUCTION -Dans ce chapitre, nous étudions comment manipuler l'ordre des éléments d'un ensemble fini. Cette notion est fondamentale en combinatoire (dénombrement) et en informatique, que ce soit pour tester toutes les possibilités d'un problème ou pour simuler des phénomènes aléatoires (jeux de cartes, échantillonnage). - -\#\#\# Définitions -\* \*\*Permutation :\*\* Soit E un ensemble fini de n éléments. Une permutation de E est une liste ordonnée contenant tous les éléments de E une et une seule fois. -\* \*\*Dénombrement :\*\* Le nombre de permutations d'un ensemble à n éléments est donné par la factorielle de n, notée n\! : - -$$n\! \= n \\times (n-1) \\times (n-2) \\times \\dots \\times 2 \\times 1$$ - -Par convention, $0\! \= 1$. - -\--- - -\#\# Algorithme \- Cas 1 : Génération systématique (exhaustive) - -\#\#\# Idée générale -⇒ L'objectif est de lister toutes les permutations possibles sans en oublier aucune. On utilise une approche récursive basée sur un arbre de choix : on fixe un premier élément, puis on recommence le processus avec les éléments restants. - -\#\#\# Méthode générale -\* \*\*Cas de base :\*\* Si l'ensemble ne contient qu'un élément, la seule permutation est l'élément lui-même. -\* \*\*Hérédité (Récursion) :\*\* Pour générer les permutations d'un ensemble E : - \* Pour chaque élément x de E : - 1\. Placer x en première position. - 2\. Générer toutes les permutations de l'ensemble E∖{x}. - 3\. Associer x à chacune de ces permutations. - -\#\#\# Exemples pour visualiser -Pour E={A,B,C}, on a $3\! \= 6$ permutations : -\* On fixe A : il reste {B,C}. On peut avoir (B,C) ou (C,B). - \* Résultats : (A,B,C) et (A,C,B). -\* On fixe B : il reste {A,C}. On peut avoir (A,C) ou (C,A). - \* Résultats : (B,A,C) et (B,C,A). -\* On fixe C : il reste {A,B}. On peut avoir (A,B) ou (B,A). - \* Résultats : (C,A,B) et (C,B,A). - -\#\#\# → EXERCICES d’application directs -\* \*\*Calcul :\*\* Calculez 5\! et déduisez-en le nombre de façons d'ordonner 5 livres sur une étagère. -\* \*\*Logique :\*\* Si on génère les permutations de {1,2,3,4,5}, combien de permutations commencent par le chiffre 3 ? -\* \*\*Représentation :\*\* Dessinez l'arbre complet des permutations pour l'ensemble {1,2,3}. - -\*\* CORRECTIONS :\*\* -\* \*\*Calcul :\*\* $5\! \= 5 \\times 4 \\times 3 \\times 2 \\times 1 \= 120$. Il y a donc 120 façons différentes d'ordonner ces 5 livres sur l'étagère. -\* \*\*Logique :\*\* Si le chiffre 3 est fixé en première position, il reste 4 éléments $\\{1, 2, 4, 5\\}$ à ordonner. Le nombre de permutations pour ces 4 éléments restants est de $4\! \= 24$. Il y a donc 24 permutations qui commencent par le chiffre 3\. -\* \*\*Représentation :\*\* - \* \*\*Choix 1 :\*\* On fixe 1 $\\rightarrow$ Reste $\\{2, 3\\} \\rightarrow$ Branches finales : (1, 2, 3\) et (1, 3, 2\) - \* \*\*Choix 2 :\*\* On fixe 2 $\\rightarrow$ Reste $\\{1, 3\\} \\rightarrow$ Branches finales : (2, 1, 3\) et (2, 3, 1\) - \* \*\*Choix 3 :\*\* On fixe 3 $\\rightarrow$ Reste $\\{1, 2\\} \\rightarrow$ Branches finales : (3, 1, 2\) et (3, 2, 1\) - -\--- - -\#\# Algorithme \- Cas 2 : Tirage aléatoire (Mélange de Fisher-Yates) - -\#\#\# Idée générale -⇒ Lorsque n est grand, il est impossible de lister toutes les permutations (ex: 52\! pour un jeu de cartes). On cherche alors à obtenir une seule permutation au hasard, de manière "équiprobable" (chaque permutation doit avoir la même chance de sortir). - -\#\#\# Méthode générale (Algorithme de Knuth / Fisher-Yates) -On parcourt la liste de la fin vers le début et on procède à des échanges : -1\. Soit une liste L de n éléments (indices de 0 à n−1). -2\. Pour i allant de n−1 à 1 (par pas de \-1) : - \* Choisir un entier aléatoire j tel que $0 \\le j \\le i$. - \* Échanger les éléments situés aux indices i et j. - -\#\#\# Exemples pour visualiser -Mélangeons \[X,Y,Z\] (indices 0, 1, 2\) : -\* Étape 1 (i=2) : On choisit j entre 0 et 2\. Supposons j=0. On échange L\[2\] et L\[0\]. - \* La liste devient \[Z,Y,X\]. L'élément X est "fixé" à sa place finale. -\* Étape 2 (i=1) : On choisit j entre 0 et 1\. Supposons j=1. On échange L\[1\] et L\[1\] (pas de changement). - \* La liste reste \[Z,Y,X\]. -\* Résultat : La permutation aléatoire obtenue est (Z,Y,X). - -\#\#\# → EXERCICES d’application directs -\* \*\*Simulation :\*\* Appliquez l'algorithme à la main sur la liste \[1,2,3,4\] avec les tirages successifs suivants : j=1 (pour i=3), puis j=0 (pour i=2), puis j=0 (pour i=1). Quel est le résultat final ? -\* \*\*Analyse :\*\* Pourquoi ne tire-t-on pas j entre 0 et n−1 à chaque étape ? (Question de réflexion sur l'uniformité du mélange). - -\*\* CORRECTIONS :\*\* -\* \*\*Simulation :\*\* - \* État initial : \`\[1, 2, 3, 4\]\` - \* Étape 1 ($i=3$, $j=1$) : On échange l'indice 3 (valeur 4\) avec l'indice 1 (valeur 2). La liste devient \`\[1, 4, 3, 2\]\`. - \* Étape 2 ($i=2$, $j=0$) : On échange l'indice 2 (valeur 3\) avec l'indice 0 (valeur 1). La liste devient \`\[3, 4, 1, 2\]\`. - \* Étape 3 ($i=1$, $j=0$) : On échange l'indice 1 (valeur 4\) avec l'indice 0 (valeur 3). La liste devient \`\[4, 3, 1, 2\]\`. - \* \*\*Résultat final :\*\* \`\[4, 3, 1, 2\]\` -\* \*\*Analyse :\*\* C'est pour garantir un mélange équiprobable. Si l'on tirait $j$ de $0$ à $n-1$ à chaque étape, l'algorithme effectuerait $n^n$ chemins possibles. Or, $n^n$ n'est pas un multiple de $n\!$ (le nombre total de permutations). En conséquence, le hasard serait biaisé. L'algorithme de Fisher-Yates, avec sa borne glissante $j \\le i$, offre exactement $n\!$ chemins possibles, garantissant une parfaite uniformité. - -\--- - -\#\# Algorithme \- Cas 3 : Permutations avec éléments identiques (Anagrammes) - -\#\#\# Idée générale -⇒ Jusqu'à présent, nous avons permuté des éléments tous distincts. Mais que se passe-t-il si notre ensemble de départ contient des doublons ? L'idée est de générer (ou dénombrer) les permutations, puis d'éliminer les "doublons" créés par le fait que changer de place deux éléments identiques ne modifie pas le résultat final. - -\#\#\# Méthode générale -Pour calculer le nombre de permutations distinctes d'un ensemble de n éléments où un élément se répète $n\_1$ fois, un autre $n\_2$ fois, etc., on utilise la formule : -$$\\frac{n\!}{n\_1\! \\times n\_2\! \\times \\dots \\times n\_k\!}$$ - -\#\#\# Exemples pour visualiser -Cherchons toutes les anagrammes du mot \*\*"ELLE"\*\*. -\* Nombre total de lettres : $n \= 4$. Donc $4\! \= 24$ permutations au total. -\* Répétitions : La lettre 'E' apparait 2 fois ($2\! \= 2$). La lettre 'L' apparait 2 fois ($2\! \= 2$). -\* Nombre de permutations distinctes : $\\frac{4\!}{2\! \\times 2\!} \= \\frac{24}{2 \\times 2} \= \\frac{24}{4} \= 6$. -\* \*Vérification visuelle :\* ELLE, ELEL, EELL, LELE, LEEL, LLEE. On retrouve bien exactement 6 combinaisons. - -\#\#\# → EXERCICES d’application directs -1\. \*\*Dénombrement simple :\*\* Combien d'anagrammes distinctes peut-on former avec le mot "MATHS" ? -2\. \*\*Dénombrement avec répétitions :\*\* Calculez le nombre d'anagrammes distinctes du mot "ANANAS". - -\*\* CORRECTIONS :\*\* -\* \*\*Dénombrement simple :\*\* Les 5 lettres de "MATHS" sont toutes distinctes. Il s'agit d'une permutation classique du Cas 1\. Le calcul est donc $5\! \= 120$. -\* \*\*Dénombrement avec répétitions :\*\* Le mot "ANANAS" contient 6 lettres ($n=6$). Il y a des répétitions : 'A' apparait 3 fois, 'N' apparait 2 fois, et 'S' apparait 1 fois. -Le calcul est : $\\frac{6\!}{3\! \\times 2\! \\times 1\!} \= \\frac{720}{6 \\times 2 \\times 1} \= \\frac{720}{12} \= 60$. Il y a 60 anagrammes distinctes. - -\--- - -\#\# Résumé global \+ Conseils -\* \*\*Complexité :\*\* La génération exhaustive (Cas 1\) a une complexité en O(n\!), ce qui devient inutilisable très vite. Le mélange aléatoire (Cas 2\) est en O(n), il est extrêmement efficace. -\* \*\*Utilisation :\*\* - \* Toutes les permutations → Problèmes d'optimisation (ex: voyageur de commerce sur très peu de villes). - \* Une permutation aléatoire → Simulations de Monte-Carlo, jeux, cryptographie. - \* Permutations avec doublons → Problèmes d'anagrammes, chemins sur quadrillage. -\* \*\*Conseils :\*\* - \* Attention aux indices lors de l'implémentation du mélange (la borne $j \\le i$ est cruciale). - \ No newline at end of file From d9691a6af259deea10be6b03a18513e14f41aa36 Mon Sep 17 00:00:00 2001 From: Elgranderavier Date: Sun, 3 May 2026 16:56:32 +0200 Subject: [PATCH 22/22] =?UTF-8?q?Delete=20Chapitre=202-Partie=202=20=5F=20?= =?UTF-8?q?G=C3=A9n=C3=A9ration=20des=20parties=20=C3=A0=202,=203=20=C3=A9?= =?UTF-8?q?l=C3=A9ments=20d=E2=80=99un=20ensemble=20fini.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...251ments d\342\200\231un ensemble fini.md" | 89 ------------------- 1 file changed, 89 deletions(-) delete mode 100644 "Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" diff --git "a/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" "b/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" deleted file mode 100644 index b0cf8ab..0000000 --- "a/Chapitre 2-Partie 2 _ G\303\251n\303\251ration des parties \303\240 2, 3 \303\251l\303\251ments d\342\200\231un ensemble fini.md" +++ /dev/null @@ -1,89 +0,0 @@ -\# Chapitre 2 \- Partie 2 : Génération des parties à 2 et 3 éléments d’un ensemble fini - -\#\# INTRODUCTION - -Après avoir étudié les \*\*permutations\*\* (où l'ordre des éléments compte), nous nous intéressons maintenant aux \*\*parties\*\* (ou sous-ensembles). Dans une partie, l'ordre n'a aucune importance : l'ensemble $\\{A, B\\}$ est le même que $\\{B, A\\}$. - -\#\#\# Définitions -\* \*\*Combinaison :\*\* Une combinaison de $k$ éléments parmi $n$ est un sous-ensemble de $k$ éléments distincts choisis dans un ensemble $E$ de cardinal $n$. -\* \*\*Coefficient binomial :\*\* Le nombre de ces parties est noté $\\binom{n}{k}$ (se lit "$k$ parmi $n$"). Il se calcule par : - $$\\binom{n}{k} \= \\frac{n\!}{k\!(n-k)\!}$$ -\* \*\*Propriété de génération :\*\* Pour générer des parties sans doublons (ex: ne pas lister $\\{1, 2\\}$ puis $\\{2, 1\\}$), on impose généralement un \*\*ordre strict\*\* sur les indices : $i \< j \< l \\dots$ - -\--- - -\#\# Algorithme \- Cas 1 : Génération des parties à 2 éléments (paires) - -\#\#\# Idée générale -⇒ Pour générer toutes les paires $\\{x\_i, x\_j\\}$ d'un ensemble de taille $n$, on utilise deux boucles imbriquées. La clé pour éviter les répétitions est que la deuxième boucle commence toujours après l'indice de la première. - -\#\#\# Méthode générale -Pour un ensemble $E$ d'indices allant de $0$ à $n-1$ : -1\. Pour $i$ allant de $0$ à $n-2$ : -2\. Pour $j$ allant de $i \+ 1$ à $n-1$ : -3\. Afficher la paire $\\{E\[i\], E\[j\]\\}$. - -\#\#\# Exemples pour visualiser -Soit $E \= \\{1, 2, 3, 4\\}$. Ici $n=4$. On attend $\\binom{4}{2} \= 6$ paires. -\* \*\*$i \= 0$ (élément '1') :\*\* $j$ varie de $1$ à $3$. - \* Paires : $\\{1, 2\\}$, $\\{1, 3\\}$, $\\{1, 4\\}$. -\* \*\*$i \= 1$ (élément '2') :\*\* $j$ varie de $2$ à $3$. - \* Paires : $\\{2, 3\\}$, $\\{2, 4\\}$. (On ne reprend pas '1' car $j \> i$). -\* \*\*$i \= 2$ (élément '3') :\*\* $j$ varie de $3$ à $3$. - \* Paire : $\\{3, 4\\}$. -\* \*\*$i \= 3$ :\*\* La boucle $j$ ne peut pas démarrer ($j$ doit être $\> 3$). Fin. - -\#\#\# → EXERCICES d’application directs -1\. \*\*Calcul :\*\* Combien de paires peut-on former avec un ensemble de 10 personnes ? -2\. \*\*Algorithme :\*\* Énumérez toutes les parties à 2 éléments de l'ensemble $\\{A, B, C, D, E\\}$. - -\*\* CORRECTIONS :\*\* -1\. \*\*Calcul :\*\* $\\binom{10}{2} \= \\frac{10 \\times 9}{2 \\times 1} \= 45$. On peut former 45 paires. -2\. \*\*Algorithme :\*\* $\\{A,B\\}, \\{A,C\\}, \\{A,D\\}, \\{A,E\\}, \\{B,C\\}, \\{B,D\\}, \\{B,E\\}, \\{C,D\\}, \\{C,E\\}, \\{D,E\\}$. - -\--- - -\#\# Algorithme \- Cas 2 : Génération des parties à 3 éléments (triplets) - -\#\#\# Idée générale -⇒ C'est une extension du cas précédent. Pour un triplet $\\{x\_i, x\_j, x\_l\\}$, on utilise trois boucles imbriquées avec la condition $i \< j \< l$. - -\#\#\# Méthode générale -1\. Pour $i$ allant de $0$ à $n-3$ : -2\. Pour $j$ allant de $i \+ 1$ à $n-2$ : -3\. Pour $l$ allant de $j \+ 1$ à $n-1$ : -4\. Afficher le triplet $\\{E\[i\], E\[j\], E\[l\]\\}$. - -\#\#\# Exemples pour visualiser -Soit $E \= \\{A, B, C, D, E\\}$. $n=5$, on attend $\\binom{5}{3} \= 10$ triplets. -\* \*\*$i=0 (A)$ :\*\* - \* $j=1 (B) \\rightarrow l \\in \\{2, 3, 4\\}$ : $\\{A,B,C\\}, \\{A,B,D\\}, \\{A,B,E\\}$ - \* $j=2 (C) \\rightarrow l \\in \\{3, 4\\}$ : $\\{A,C,D\\}, \\{A,C,E\\}$ - \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{A,D,E\\}$ -\* \*\*$i=1 (B)$ :\*\* - \* $j=2 (C) \\rightarrow l \\in \\{3, 4\\}$ : $\\{B,C,D\\}, \\{B,C,E\\}$ - \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{B,D,E\\}$ -\* \*\*$i=2 (C)$ :\*\* - \* $j=3 (D) \\rightarrow l \\in \\{4\\}$ : $\\{C,D,E\\}$ - -\#\#\# → EXERCICES d’application directs -1\. \*\*Logique :\*\* Dans l'algorithme ci-dessus pour $n=5$, pourquoi la première boucle $i$ s'arrête-t-elle à $n-3$ (indice 2\) ? -2\. \*\*Programmation :\*\* Complétez ce code Python pour générer les triplets d'une liste \`L\` : -\`\`\`python -for i in range(len(L)-2): - for j in range(i+1, len(L)-1): - for k in range(j+1, len(L)): - print(..........) -\`\`\` - -\*\* CORRECTIONS :\*\* -1\. \*\*Logique :\*\* Pour former un triplet, si $i$ est le premier élément, il doit rester au moins deux éléments après lui (pour $j$ et $l$). L'indice maximum pour $i$ est donc $n-3$. -2\. \*\*Programmation :\*\* \`print(L\[i\], L\[j\], L\[k\])\` - -\--- - -\#\# Résumé global \+ Conseils - -\* \*\*Différence clé :\*\* Permutations \= l'ordre compte ($A,B \\neq B,A$). Parties \= l'ordre ne compte pas ($\\left\\{A,B\\right\\} \= \\left\\{B,A\\right\\}$). -\* \*\*Structure algorithmique :\*\* Pour générer des parties de taille $k$, on utilise $k$ boucles imbriquées. -\* \*\*Complexité :\*\* Le nombre de parties augmente très vite avec $n$. $\\binom{n}{k}$ est maximal quand $k \\approx n/2$.