Mathématiques pour l'informatique 201-N11 • Examen final de synthèse • Montréal

Examen de synthèse corrigé : mathématiques pour l'informatique (201-N11)

Voici l'examen de synthèse corrigé du cours de mathématiques pour l'informatique 201-N11 : dix exercices, cent points, qui reprennent l'ensemble du programme. Logique booléenne, numération, ensembles et relations, graphes et matrices, arithmétique modulaire, récurrence et récursivité, dénombrement et probabilités.

Le format est celui de l'examen final : une partie A qui vérifie les acquis chapitre par chapitre, une partie B qui croise les notions dans des problèmes de synthèse. L'exercice 8 rassemble les cinq erreurs les plus coûteuses de la session, une par famille de chapitres.

Chaque question est corrigée entièrement, avec le raisonnement, la vérification numérique et l'explication de l'erreur que la question cherchait à provoquer. À traiter en conditions réelles, en 150 minutes et sans calculatrice, avant de lire les corrigés.

Série autocorrigée Tape tes réponses sous chaque question : la page te dit juste ou faux avant d'ouvrir la correction. Avec un compte, chaque bonne réponse du premier coup rapporte des points.

Ce chapitre fait partie de Mathématiques pour l'informatique, 201-N11

Rappel de cours

  • LOGIQUE : PQP\Rightarrow Q équivaut à sa CONTRAPOSÉE QP\overline{Q}\Rightarrow\overline{P}, jamais à sa réciproque. La négation d'un énoncé quantifié échange « pour tout » et « il existe » et nie la propriété.
  • NUMÉRATION : sur nn bits, le complément à deux représente [2n1;2n11][-2^{n-1};2^{n-1}-1], et x-x s'obtient en inversant les bits puis en ajoutant 1. L'addition binaire est identique en signé et non signé ; seule la détection du DÉBORDEMENT diffère.
  • RELATIONS : ÉQUIVALENCE si réflexive, symétrique et transitive, et ses classes forment une partition. ORDRE si réflexive, antisymétrique et transitive ; il est TOTAL seulement si deux éléments quelconques sont toujours comparables.
  • GRAPHES : le coefficient (i,j)(i,j) de MkM^{k} compte les chemins de LONGUEUR kk de ii vers jj. La somme des degrés sortants vaut le nombre d'arcs dans un graphe orienté.
  • CONGRUENCES : aa est inversible modulo nn si et seulement si pgcd(a,n)=1\mathrm{pgcd}(a,n)=1. Le reste d'une division euclidienne est TOUJOURS dans [0;n[[0;n[, y compris pour un dividende négatif.
  • RÉCURRENCE : initialisation ET hérédité, l'hypothèse devant servir explicitement. Pour une relation à deux crans, deux initialisations.
  • DÉNOMBREMENT : nkn^{k} pour les listes, n!(nk)!\frac{n!}{(n-k)!} pour les arrangements, (nk)\binom{n}{k} pour les combinaisons, 2n2^{n} pour les parties d'un ensemble à nn éléments, n(n1)2\frac{n(n-1)}{2} pour les paires.
  • COÛTS : parcours de graphe en O(S+A)O(S+A) ; arbre binaire de recherche ÉQUILIBRÉ en log2n\log_{2}n, mais LINÉAIRE s'il dégénère ; seuil de collision d'une table de NN cases atteint vers 1,18N1{,}18\sqrt{N} clés.

Partie A : les bases (/50)

Exercice 1 : Logique booléenne : de la table au circuit

Cet examen de synthèse reprend les sept chapitres du cours dans l'ordre. On commence par la logique, dont dépend tout le reste : un circuit, une condition de programme et une démonstration obéissent aux mêmes lois.

00011110000111101100110000110011CDABdeux blocs de quatre : f = A xnor C
  • a) Sur le tableau de Karnaugh de la figure, identifiez les deux blocs de quatre cases et donnez l'expression simplifiée de ff.
  • b) Écrivez la forme normale disjonctive complète de ff, avant simplification, et comptez ses termes.
  • c) Donnez la table de vérité de ff en fonction de AA et CC seulement, et nommez la porte correspondante.
  • d) Écrivez la négation de l'énoncé « pour tout utilisateur uu, il existe un fichier ff tel que uu peut lire ff ».
  • e) L'implication PQP\Rightarrow Q est-elle équivalente à QPQ\Rightarrow P ? À QP\overline{Q}\Rightarrow\overline{P} ? Justifiez par une table.

Tape tes réponses, la page te dit juste ou faux 0/12

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) f=AC+ACf = \overline{A}\,\overline{C} + AC : BB et DD disparaissent
  • b) Huit termes de quatre littéraux, soit 32 littéraux, contre 4 après simplification
  • c) f=AC=ACf = A \odot C = \overline{A \oplus C}, la porte XNOR
  • d) Il EXISTE un utilisateur uu tel que POUR TOUT fichier ff, uu ne peut pas lire ff
  • e) Non à la réciproque, OUI à la contraposée : les deux ne valent 0 que sur la ligne PP vrai, QQ faux

a) Le premier bloc rassemble les quatre cases où A=0A=0 et C=0C=0, c'est-à-dire les minterms 0, 1, 4 et 5 : il donne le terme AC\overline{A}\,\overline{C}. Le second rassemble les cases où A=1A=1 et C=1C=1, minterms 10, 11, 14 et 15 : il donne ACAC. Dans les deux blocs, BB et DD prennent toutes les valeurs, ils DISPARAISSENT donc. D'où f=AC+ACf=\overline{A}\,\overline{C}+AC.

b) La forme normale disjonctive complète énumère un terme par ligne à 1 de la table, soit HUIT termes de quatre littéraux chacun : ABCD+ABCD+ABCD+ABCD+ABCD+ABCD+ABCD+ABCD\overline{A}\,\overline{B}\,\overline{C}\,\overline{D}+\overline{A}\,\overline{B}\,\overline{C}D+\overline{A}B\overline{C}\,\overline{D}+\overline{A}B\overline{C}D+A\overline{B}C\overline{D}+A\overline{B}CD+ABC\overline{D}+ABCD. La simplification de la question a fait passer de 8 termes de 4 littéraux à 2 termes de 2 littéraux, soit de 32 littéraux à 4 : c'est exactement ce que mesure l'économie de portes d'un circuit.

c) La fonction ne dépend que de AA et CC : elle vaut 1 quand A=C=0A=C=0 et quand A=C=1A=C=1, c'est-à-dire quand AA et CC sont ÉGAUX, et 0 sinon. C'est la porte XNOR, aussi appelée porte d'équivalence ou de coïncidence. On l'écrit f=AC=ACf=A\odot C=\overline{A\oplus C}, où \oplus est le OU exclusif.

d) La négation échange les quantificateurs et nie le prédicat : « il EXISTE un utilisateur uu tel que POUR TOUT fichier ff, uu ne peut PAS lire ff ». Autrement dit, un utilisateur au moins ne peut lire aucun fichier. La règle est mécanique : chaque « pour tout » devient « il existe », chaque « il existe » devient « pour tout », et la propriété finale est niée. Sauter une seule inversion produit un énoncé qui n'a rien à voir.

e) PQP\Rightarrow Q n'est PAS équivalente à sa réciproque QPQ\Rightarrow P : sur PP vrai et QQ faux, la première est fausse et la seconde vraie. Elle EST équivalente à sa contraposée QP\overline{Q}\Rightarrow\overline{P}, comme le montre la table : les deux valent 0 uniquement dans le cas PP vrai et QQ faux, et 1 dans les trois autres. C'est ce qui autorise le raisonnement par contraposée, et c'est aussi pourquoi confondre réciproque et contraposée est la faute la plus coûteuse en logique.

Exercice 2 : Numération : bases, complément à deux et débordement

Un ordinateur ne connaît que des suites de bits, et l'interprétation qu'on en donne décide de tout. Le complément à deux est la convention qui permet de soustraire sans circuit supplémentaire.

01234567-8-7-6-5-4-3-2-1code binaire 0000 a 1111lu en complement a deux0111 plus 1 donne 1000 : de +7 a -8
  • a) Convertissez 202 en binaire sur 8 bits, puis en hexadécimal.
  • b) Écrivez 75-75 en complément à deux sur 8 bits, puis donnez sa valeur hexadécimale.
  • c) Sur la roue de la figure, expliquez ce qui se passe quand on ajoute 1 à 0111.
  • d) Calculez 100+50100+50 sur 8 bits signés et dites ce qui se produit.
  • e) Pourquoi la même addition binaire fonctionne-t-elle pour des nombres signés et non signés, alors que le débordement ne se détecte pas de la même façon ?

Tape tes réponses, la page te dit juste ou faux 0/14

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 202=110010102=CA16202 = 11001010_{2} = \mathrm{CA}_{16}
  • b) 75=101101012=B516-75 = 10110101_{2} = \mathrm{B5}_{16}, dont la lecture non signée vaut 181=25675181 = 256-75
  • c) 0111=+70111 = +7 devient 1000=81000 = -8 : débordement signé, non signalé par l'addition
  • d) Le motif 1001011010010110 vaut 150 en non signé, 106-106 en signé : débordement, car 150>127150 > 127
  • e) L'addition modulo 2n2^{n} est la même ; ce sont les INTERVALLES qui diffèrent, [0;255][0;255] et [128;127][-128;127]

a) Divisions successives par 2 : 202=128+64+8+2202=128+64+8+2, donc 202=110010102202=11001010_{2}. En hexadécimal, on groupe par quartets : 11001100 vaut C et 10101010 vaut A, donc 202=CA16202=\mathrm{CA}_{16}. Contrôle : 12×16+10=20212\times 16+10=202 ✓. Le passage par l'hexadécimal évite de recompter tous les bits.

b) On écrit d'abord 75=01001011275=01001011_{2}, car 75=64+8+2+175=64+8+2+1. On INVERSE tous les bits : 1011010010110100. On AJOUTE 1 : 1011010110110101. C'est 75-75 en complément à deux, soit B516\mathrm{B5}_{16}, c'est-à-dire 181 si on le lisait comme un nombre non signé. Contrôle : 181+75=256=28181+75=256=2^{8} ✓, ce qui est la définition même du complément à deux.

c) 01110111 vaut +7+7, la plus grande valeur positive sur 4 bits. En ajoutant 1 on obtient 10001000, qui vaut 8-8 et non +8+8 : le bit de signe s'est allumé. Sur la roue, on est passé de la position la plus haute du demi-cercle positif à la première du demi-cercle négatif, en franchissant la seule discontinuité de l'échelle. C'est un DÉBORDEMENT signé, et l'addition binaire ne l'a pas signalé.

d) 100=01100100100=01100100 et 50=0011001050=00110010. Leur somme binaire vaut 1001011010010110, soit 150150 en non signé mais 106-106 en complément à deux, puisque 150256=106150-256=-106. Il y a donc DÉBORDEMENT signé : le résultat exact, 150, dépasse le maximum représentable, qui est 127. On le détecte au fait que deux opérandes POSITIFS ont donné un résultat de signe négatif, ce qu'aucune retenue sortante n'indique ici.

e) Parce que le complément à deux est conçu pour cela : l'addition modulo 2n2^{n} est la même opération quelle que soit la lecture, seul le NOM donné aux codes change. En revanche le débordement est un débordement de l'INTERVALLE représentable, et cet intervalle diffère : [0;255][0;255] en non signé, [128;127][-128;127] en signé. On le détecte donc par la retenue sortante en non signé, et par le changement de signe inattendu en signé. Un processeur calcule les deux indicateurs simultanément et laisse le programme choisir celui qui le concerne.

Exercice 3 : Ensembles, relations et partitions

Une relation d'équivalence découpe un ensemble en morceaux disjoints ; une relation d'ordre l'organise en hiérarchie. Savoir laquelle on a sous les yeux évite de chercher des propriétés qui n'existent pas.

  • a) Sur E={0,1,,8}E=\{0,1,\dots,8\}, on pose xRyx\mathcal{R}y si xx et yy ont le même reste modulo 3. Vérifiez que c'est une relation d'équivalence et donnez ses classes.
  • b) Combien de parties l'ensemble EE possède-t-il ? Combien en comptent exactement 3 éléments ?
  • c) Vérifiez le principe d'inclusion-exclusion sur AB\left|A\cup B\right| avec AA les multiples de 2 dans EE et BB les multiples de 3 dans EE.
  • d) La relation « divise » sur EE privé de 0 est-elle une relation d'ordre ? Est-elle totale ?
  • e) En quoi une PARTITION et une relation d'ÉQUIVALENCE sont-elles deux façons de dire la même chose ?

Tape tes réponses, la page te dit juste ou faux 0/12

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Trois classes : {0,3,6}\{0,3,6\}, {1,4,7}\{1,4,7\} et {2,5,8}\{2,5,8\}
  • b) 29=5122^{9} = 512 parties, dont (93)=84\binom{9}{3} = 84 à trois éléments
  • c) 5+32=6=AB5+3-2 = 6 = \lvert A \cup B \rvert
  • d) Oui, c'est un ordre, mais PARTIEL : 2 et 3 ne sont pas comparables
  • e) Les classes d'une équivalence forment une partition, et toute partition définit une équivalence

a) RÉFLEXIVE : tout xx a le même reste que lui-même ✓. SYMÉTRIQUE : si xx et yy ont le même reste, yy et xx aussi ✓. TRANSITIVE : si xx et yy ont le même reste et yy et zz aussi, alors xx et zz également ✓. C'est donc une relation d'équivalence, et ses classes sont les trois ensembles {0,3,6}\{0,3,6\}, {1,4,7}\{1,4,7\} et {2,5,8}\{2,5,8\}, correspondant aux restes 0, 1 et 2.

b) EE compte 9 éléments, donc 29=5122^{9}=512 parties, chaque élément étant pris ou non. Celles à exactement 3 éléments sont au nombre de (93)=9×8×76=84\binom{9}{3}=\frac{9\times 8\times 7}{6}=84. On vérifie la cohérence par la somme des coefficients binomiaux de la ligne 9, qui vaut bien 512.

c) A={0,2,4,6,8}A=\{0,2,4,6,8\} compte 5 éléments, B={0,3,6}B=\{0,3,6\} en compte 3, et AB={0,6}A\cap B=\{0,6\}, les multiples de 6, en compte 2. Donc AB=5+32=6\left|A\cup B\right|=5+3-2=6, et l'on vérifie directement : AB={0,2,3,4,6,8}A\cup B=\{0,2,3,4,6,8\}, six éléments ✓. Sans le retranchement, on compterait deux fois 0 et 6.

d) RÉFLEXIVE : tout entier se divise lui-même ✓. ANTISYMÉTRIQUE : si aa divise bb et bb divise aa avec a,b>0a,b>0, alors a=ba=b ✓. TRANSITIVE : si aa divise bb et bb divise cc, alors aa divise cc ✓. C'est donc une relation d'ORDRE, mais elle n'est PAS totale : 2 et 3 ne sont pas comparables, aucun ne divisant l'autre. On parle d'ordre PARTIEL, et c'est le cas de figure le plus courant en informatique, par exemple pour les dépendances entre modules.

e) Ce sont deux descriptions du même objet, et le passage se fait dans les deux sens. À partir d'une relation d'équivalence, les CLASSES forment une partition : elles sont non vides, deux à deux disjointes, et leur réunion est EE. À partir d'une partition, on définit une relation en déclarant équivalents deux éléments appartenant au même morceau, et l'on vérifie qu'elle est réflexive, symétrique et transitive. Les trois propriétés de l'équivalence correspondent donc exactement aux trois propriétés d'une partition, ce qui explique qu'aucune ne puisse être supprimée.

Exercice 4 : Graphes et matrices : compter les chemins

La matrice d'adjacence n'est pas une simple table : ses puissances comptent les chemins, et c'est ce qui transforme un problème de graphe en calcul matriciel.

ABCDE0 1 1 0 00 0 1 1 00 0 0 1 00 0 0 0 11 0 0 0 0matrice d'adjacence
  • a) Sur la figure, relevez les degrés sortants de chaque sommet et vérifiez leur somme.
  • b) Que compte le coefficient d'indice (i,j)(i,j) de M2M^{2} ? Illustrez sur le chemin de AA vers DD.
  • c) Combien de chemins de longueur 2 partent de AA ? Énumérez-les.
  • d) Le graphe possède-t-il un circuit ? Lequel, et de quelle longueur ?
  • e) Que représente la matrice M+M2+M3+M4M+M^{2}+M^{3}+M^{4} pour un graphe à 5 sommets ?

Tape tes réponses, la page te dit juste ou faux 0/13

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Degrés sortants 2,2,1,1,12,2,1,1,1, de somme 7, le nombre d'arcs
  • b) Il compte les chemins de longueur 2 ; de AA vers DD, il vaut 2, par BB et par CC
  • c) Trois : ABCA\to B\to C, ABDA\to B\to D et ACDA\to C\to D
  • d) Oui : ABCDEAA\to B\to C\to D\to E\to A, hamiltonien de longueur 5, et ACDEAA\to C\to D\to E\to A de longueur 4
  • e) L'ACCESSIBILITÉ : un coefficient non nul signale un chemin, et la version booléenne est la fermeture transitive

a) D'après la matrice affichée : AA pointe vers BB et CC, degré 2 ; BB vers CC et DD, degré 2 ; CC vers DD, degré 1 ; DD vers EE, degré 1 ; EE vers AA, degré 1. Somme des degrés sortants : 2+2+1+1+1=72+2+1+1+1=7, ce qui est bien le nombre d'ARCS du graphe. Dans un graphe orienté, cette somme vaut toujours le nombre d'arcs, et non son double comme dans le cas non orienté.

b) Le coefficient (i,j)(i,j) de M2M^{2} vaut kMikMkj\sum_{k}M_{ik}M_{kj} : chaque terme vaut 1 si et seulement s'il existe un arc de ii vers kk ET un arc de kk vers jj. La somme compte donc le nombre de CHEMINS DE LONGUEUR 2 de ii vers jj. De AA vers DD : par BB, puisque ABDA\to B\to D ✓, et par CC, puisque ACDA\to C\to D ✓. Le coefficient vaut donc 2.

c) Les chemins de longueur 2 partant de AA passent d'abord par BB ou par CC. Depuis BB : ABCA\to B\to C et ABDA\to B\to D. Depuis CC : ACDA\to C\to D. Total : TROIS chemins. C'est la somme de la ligne de AA dans M2M^{2}, et l'on peut la calculer sans écrire toute la matrice, en additionnant les degrés sortants des successeurs de AA, soit 2+1=32+1=3.

d) Oui : ABCDEAA\to B\to C\to D\to E\to A est un circuit de longueur 5 qui passe par tous les sommets, c'est-à-dire un circuit hamiltonien. Il en existe un second, plus court : ACDEAA\to C\to D\to E\to A, de longueur 4. Un graphe possédant un circuit n'admet aucun tri topologique, ce qui interdit par exemple de l'utiliser comme graphe de dépendances entre modules.

e) Son coefficient (i,j)(i,j) compte le nombre total de chemins de longueur 1, 2, 3 ou 4 allant de ii vers jj. Un tel coefficient est non nul si et seulement s'il existe un chemin de ii vers jj, car dans un graphe à 5 sommets, tout chemin sans répétition de sommet a au plus 4 arcs. Cette matrice permet donc de lire l'ACCESSIBILITÉ, et sa version booléenne est la fermeture transitive du graphe.

Exercice 5 : Arithmétique modulaire : congruences et chiffrement affine

Le chiffrement affine est le plus simple des chiffrements par substitution. Il tient entièrement dans une multiplication modulo 26, et son déchiffrement dans un inverse modulaire.

  • a) Calculez 2026mod262026\bmod 26 et 45mod26-45\bmod 26.
  • b) Le chiffrement affine envoie la lettre de rang xx sur y=5x+8mod26y=5x+8\bmod 26. Chiffrez la lettre M, de rang 12.
  • c) Pourquoi le coefficient 5 convient-il et pas 13 ? Donnez le critère général.
  • d) Calculez l'inverse de 5 modulo 26, puis écrivez la fonction de déchiffrement.
  • e) Déchiffrez la lettre de rang 3 et vérifiez la cohérence avec la question b.

Tape tes réponses, la page te dit juste ou faux 0/13

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 2026mod26=242026 \bmod 26 = 24 et 45mod26=7-45 \bmod 26 = 7
  • b) y=68mod26=16y = 68 \bmod 26 = 16 : M devient Q
  • c) Il faut pgcd(a,26)=1\mathrm{pgcd}(a,26)=1 ; 5 convient, 13 non, ce qui laisse 12 coefficients sur 26
  • d) 51=215^{-1} = 21 modulo 26, et x=21y+14mod26x = 21y + 14 \bmod 26
  • e) x=25x = 25, et le chiffrement redonne bien 3

a) 2026=26×77+242026=26\times 77+24, donc 2026mod26=242026\bmod 26=24. Pour 45-45 : le reste doit être positif, donc on prend q=2q=-2 et 45=26×(2)+7-45=26\times(-2)+7, d'où 45mod26=7-45\bmod 26=7. Le réflexe 45=26×(1)19-45=26\times(-1)-19 donnerait 19-19, qui n'est pas un reste valide.

b) y=5×12+8=68y=5\times 12+8=68, et 68=26×2+1668=26\times 2+16, donc y=16y=16. La lettre de rang 12 est M, celle de rang 16 est Q : M devient Q. On réduit toujours APRÈS l'addition, jamais entre les deux opérations, ce qui est permis par la compatibilité de la congruence avec les deux opérations.

c) Le coefficient doit être INVERSIBLE modulo 26, c'est-à-dire premier avec 26. On a pgcd(5,26)=1\mathrm{pgcd}(5,26)=1 ✓, donc 5 convient. En revanche pgcd(13,26)=13\mathrm{pgcd}(13,26)=13 : avec 13, la fonction x13x+8x\mapsto 13x+8 n'est pas injective, elle envoie toutes les lettres sur seulement deux valeurs, et le message devient indéchiffrable même pour son destinataire. CRITÈRE : aa convient si et seulement si pgcd(a,26)=1\mathrm{pgcd}(a,26)=1, ce qui laisse 12 coefficients possibles sur 26.

d) On cherche uu tel que 5u1(mod26)5u\equiv 1\pmod{26}. En essayant : 5×21=105=26×4+15\times 21=105=26\times 4+1 ✓, donc l'inverse est 21. Déchiffrement : de y=5x+8y=5x+8 on tire 5x=y85x=y-8, puis x=21(y8)mod26x=21\left(y-8\right)\bmod 26. On peut développer : x=21y168x=21y-168, et 168mod26=14-168\bmod 26=14 puisque 168=26×(7)+14-168=26\times(-7)+14, donc x=21y+14mod26x=21y+14\bmod 26.

e) x=21×3+14=63+14=77x=21\times 3+14=63+14=77, et 77=26×2+2577=26\times 2+25, donc x=25x=25. Vérification par le chiffrement : 5×25+8=1335\times 25+8=133, et 133=26×5+3133=26\times 5+3 ✓, on retrouve bien 3. Les deux fonctions sont donc réciproques l'une de l'autre, ce qui est exactement ce que garantit l'inversibilité de 5 modulo 26.

Partie B : problèmes et raisonnement (/50)

Exercice 6 : Récurrence : une démonstration complète

L'exercice de récurrence est celui où l'on perd le plus de points pour des raisons de rédaction. On demande ici une démonstration complète, avec les deux étapes nommées et l'hypothèse explicitement utilisée.

  • a) Démontrez que 13+23++n3=(n(n+1)2)21^{3}+2^{3}+\dots+n^{3}=\left(\frac{n(n+1)}{2}\right)^{2} pour tout n1n\geq 1.
  • b) Que remarquez-vous en comparant ce résultat à la somme des nn premiers entiers ?
  • c) Démontrez que 7n17^{n}-1 est divisible par 6 pour tout n0n\geq 0.
  • d) Démontrez que la suite définie par u0=2u_{0}=2 et un+1=un2+1unu_{n+1}=\frac{u_{n}}{2}+\frac{1}{u_{n}} vérifie un2u_{n}\geq\sqrt 2 pour tout nn.
  • e) Reliez la question d à un algorithme vu dans le cours.

Tape tes réponses, la page te dit juste ou faux 0/13

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Vraie en n=1n=1, et (k(k+1)2)2+(k+1)3=((k+1)(k+2)2)2\left(\frac{k(k+1)}{2}\right)^{2}+(k+1)^{3} = \left(\frac{(k+1)(k+2)}{2}\right)^{2}
  • b) La somme des cubes est le CARRÉ de la somme des entiers, identité de Nicomaque
  • c) 7k+11=7(7k1)+6=6(7m+1)7^{k+1}-1 = 7(7^{k}-1)+6 = 6(7m+1)
  • d) uk+12=(uk2)22uk0u_{k+1}-\sqrt2 = \dfrac{(u_{k}-\sqrt2)^{2}}{2u_{k}} \ge 0
  • e) La méthode de NEWTON sur f(x)=x22f(x)=x^{2}-2 : u1=1,5u_{1}=1{,}5, u21,41667u_{2}\approx 1{,}41667, u31,414216u_{3}\approx 1{,}414216

a) INITIALISATION en n=1n=1 : à gauche 13=11^{3}=1, à droite (1×22)2=1\left(\frac{1\times 2}{2}\right)^{2}=1 ✓. HÉRÉDITÉ : supposons la formule vraie au rang kk. Alors la somme au rang k+1k+1 vaut (k(k+1)2)2+(k+1)3=k2(k+1)2+4(k+1)34=(k+1)2(k2+4k+4)4=(k+1)2(k+2)24=((k+1)(k+2)2)2\left(\frac{k(k+1)}{2}\right)^{2}+(k+1)^{3}=\frac{k^{2}(k+1)^{2}+4(k+1)^{3}}{4}=\frac{(k+1)^{2}\left(k^{2}+4k+4\right)}{4}=\frac{(k+1)^{2}(k+2)^{2}}{4}=\left(\frac{(k+1)(k+2)}{2}\right)^{2} ✓. L'hypothèse a servi à remplacer la somme des kk premiers cubes, et le pas décisif est la factorisation par (k+1)2(k+1)^{2}. Contrôle en n=4n=4 : 1+8+27+64=1001+8+27+64=100 et (4×52)2=102=100\left(\frac{4\times 5}{2}\right)^{2}=10^{2}=100 ✓.

b) La somme des cubes est le CARRÉ de la somme des entiers : 13++n3=(1+2++n)21^{3}+\dots+n^{3}=\left(1+2+\dots+n\right)^{2}. C'est une identité remarquable, souvent attribuée à Nicomaque, et qui n'a rien d'évident : rien dans la définition des cubes n'annonce qu'ils s'additionnent en un carré parfait. Elle donne aussi un moyen de contrôle instantané, la somme des cubes est toujours un carré.

c) INITIALISATION en n=0n=0 : 701=07^{0}-1=0, divisible par 6 ✓. HÉRÉDITÉ : supposons 7k1=6m7^{k}-1=6m. Alors 7k+11=7×7k1=7(7k1)+71=7×6m+6=6(7m+1)7^{k+1}-1=7\times 7^{k}-1=7\left(7^{k}-1\right)+7-1=7\times 6m+6=6\left(7m+1\right) ✓. L'astuce est d'écrire 7×7k7\times 7^{k} comme 7(7k1)+77\left(7^{k}-1\right)+7, de manière à faire apparaître de force l'expression du rang kk. On aurait aussi pu conclure directement par congruence : 71(mod6)7\equiv 1\pmod 6 donc 7n17^{n}\equiv 1.

d) INITIALISATION : u0=221,414u_{0}=2\geq\sqrt 2\approx 1{,}414 ✓. HÉRÉDITÉ : supposons uk2u_{k}\geq\sqrt 2, donc uk>0u_{k}>0. On étudie uk+12=uk2+1uk2=uk222uk+22uk=(uk2)22uku_{k+1}-\sqrt 2=\frac{u_{k}}{2}+\frac{1}{u_{k}}-\sqrt 2=\frac{u_{k}^{2}-2\sqrt 2\,u_{k}+2}{2u_{k}}=\frac{\left(u_{k}-\sqrt 2\right)^{2}}{2u_{k}}. Le numérateur est un carré, donc positif ou nul, et le dénominateur est strictement positif : la différence est positive ou nulle, donc uk+12u_{k+1}\geq\sqrt 2 ✓. Le fait de reconnaître un carré parfait est ce qui rend la démonstration immédiate.

e) C'est exactement la méthode de NEWTON appliquée à f(x)=x22f(x)=x^{2}-2, dont l'itération est un+1=12(un+2un)u_{n+1}=\frac{1}{2}\left(u_{n}+\frac{2}{u_{n}}\right), ce qui est bien la relation donnée. La question d démontre que la suite reste au dessus de la racine dès le premier tour, ce qui est la propriété observée au chapitre de la récursivité : l'erreur en+1=en22une_{n+1}=\frac{e_{n}^{2}}{2u_{n}} est toujours positive. Calculs : u1=1,5u_{1}=1{,}5, u21,41667u_{2}\approx 1{,}41667, u31,414216u_{3}\approx 1{,}414216, contre 21,414214\sqrt 2\approx 1{,}414214.

Exercice 7 : Dénombrement, probabilités et arbre de recherche

Un arbre binaire de recherche transforme une liste en structure logarithmique. Le compter, l'analyser et le comparer à une recherche séquentielle mobilise trois chapitres à la fois.

50307020406080chercher 40 : trois comparaisons au lieu de sept
  • a) Sur l'arbre de la figure, donnez le chemin suivi pour chercher la clé 40 et comptez les comparaisons.
  • b) Quelle est la hauteur de cet arbre, et combien de clés un arbre binaire de hauteur hh peut-il contenir au maximum ?
  • c) Combien de comparaisons faut-il au maximum dans un arbre équilibré de 1000 clés ? Comparez à la recherche séquentielle.
  • d) On insère les clés 20, 30, 40, 50, 60, 70, 80 dans cet ordre croissant. Quelle forme prend l'arbre, et quel est alors le coût de recherche ?
  • e) On insère les sept clés dans un ordre tiré au hasard. Quelle est la probabilité d'obtenir la forme dégénérée de la question d ?

Tape tes réponses, la page te dit juste ou faux 0/14

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) 50304050 \to 30 \to 40, trois comparaisons
  • b) Hauteur 2, et un arbre de hauteur hh contient au plus 2h+11=72^{h+1}-1 = 7 clés : il est parfaitement rempli
  • c) 11 comparaisons contre 1000, soit environ 91 fois moins
  • d) L'arbre dégénère en liste chaînée de hauteur 6 : le coût redevient linéaire
  • e) 25040=125200,04%\dfrac{2}{5040} = \dfrac{1}{2520} \approx 0{,}04\,\% : le pire cas est très rare sur des données aléatoires

a) On part de la racine 50 : 40<5040<50, on va à gauche vers 30. Puis 40>3040>30, on va à droite vers 40. Enfin 40=4040=40, trouvé. Le chemin est 50304050\to 30\to 40 et il a coûté TROIS comparaisons, contre sept dans le pire cas d'une recherche séquentielle sur les sept clés.

b) L'arbre de la figure a une hauteur de 2, en comptant la racine au niveau 0. Un arbre binaire de hauteur hh contient au maximum 2h+112^{h+1}-1 clés, puisque le niveau kk en porte au plus 2k2^{k} et que k=0h2k=2h+11\sum_{k=0}^{h}2^{k}=2^{h+1}-1. Ici 231=72^{3}-1=7 ✓, l'arbre est PARFAITEMENT rempli. On reconnaît la formule des tours de Hanoï, ce qui n'est pas un hasard : les deux comptent une structure qui double à chaque niveau.

c) Un arbre équilibré de nn clés a une hauteur d'environ log2n\log_{2}n, donc il faut au plus log2(1000)+110,97\log_{2}(1000)+1\approx 10{,}97, soit 11 comparaisons. La recherche séquentielle en demanderait jusqu'à 1000, soit environ 91 fois plus. C'est le même gain que la dichotomie, ce qui est logique : un arbre binaire de recherche équilibré EST une dichotomie matérialisée en mémoire.

d) Chaque nouvelle clé étant plus grande que toutes les précédentes, elle part systématiquement à droite : l'arbre DÉGÉNÈRE en une liste chaînée de hauteur 6. Le coût de recherche redevient LINÉAIRE, jusqu'à 7 comparaisons. C'est le pire cas de la structure, et il survient précisément sur des données déjà triées, situation fréquente en pratique. C'est ce qui motive les arbres équilibrés automatiquement, comme les arbres rouge et noir.

e) Il y a 7!=50407!=5040 ordres d'insertion possibles, tous équiprobables. Un seul donne la chaîne strictement croissante, et un seul la chaîne strictement décroissante, soit 2 ordres dégénérés en ce sens. La probabilité vaut donc 25040=125200,0004\frac{2}{5040}=\frac{1}{2520}\approx 0{,}0004, soit environ 0,04 pour cent. Le pire cas est donc extrêmement rare sur des données aléatoires, ce qui explique que la hauteur MOYENNE d'un arbre construit au hasard soit de l'ordre de 1,39log2n1{,}39\log_{2}n, très proche de l'optimum. On retrouve exactement l'arbitrage du tri rapide : un pire cas catastrophique mais improbable.

Exercice 8 : Cinq affirmations à corriger

Chacune des cinq affirmations suivantes est FAUSSE. Dites pourquoi et donnez l'énoncé correct. Elles balaient les sept chapitres du cours.

  • 1) « PQP\Rightarrow Q et QPQ\Rightarrow P sont équivalentes, puisque l'implication est symétrique. »
  • 2) « Sur 8 bits, 100+50100+50 vaut 150, il n'y a donc aucun problème. »
  • 3) « La relation divise sur les entiers positifs est un ordre total. »
  • 4) « 45mod26-45\bmod 26 vaut 19-19. »
  • 5) « Un arbre binaire de recherche garantit une recherche en temps logarithmique. »

Tape tes réponses, la page te dit juste ou faux 0/10

1)
2)
3)
4)
5)
Voir la correction

Réponses

  • 1) FAUX : c'est la CONTRAPOSÉE qui est équivalente, pas la réciproque
  • 2) FAUX en signé : le motif vaut 106-106, il y a débordement. L'affirmation ne tient qu'en non signé
  • 3) FAUX : c'est un ordre PARTIEL, 2 et 3 n'étant pas comparables
  • 4) FAUX : 45mod26=7-45 \bmod 26 = 7. En C ou en Java, on corrige par ((a%n)+n)%n((a\,\%\,n)+n)\,\%\,n
  • 5) FAUX sans hypothèse d'ÉQUILIBRE : sur des clés triées, l'arbre dégénère et la recherche devient linéaire

1) FAUX, l'implication n'est pas symétrique. PQP\Rightarrow Q est fausse dans le seul cas PP vrai et QQ faux, tandis que QPQ\Rightarrow P est fausse dans le cas symétrique : elles diffèrent donc sur deux des quatre lignes. Ce qui EST équivalent à PQP\Rightarrow Q, c'est sa CONTRAPOSÉE QP\overline{Q}\Rightarrow\overline{P}. Exemple : « s'il pleut, le sol est mouillé » n'entraîne pas « si le sol est mouillé, il pleut ».

2) FAUX si l'on travaille en ENTIERS SIGNÉS. Sur 8 bits signés, l'intervalle représentable est [128;127][-128;127], et 150 le dépasse : le motif binaire obtenu, 1001011010010110, se lit 106-106. Il y a donc DÉBORDEMENT silencieux. L'affirmation n'est correcte qu'en non signé, où l'intervalle va jusqu'à 255. Préciser la convention n'est pas un détail de vocabulaire, c'est ce qui décide du résultat.

3) FAUX, elle est un ordre PARTIEL. Elle est bien réflexive, antisymétrique et transitive, mais elle n'est pas TOTALE : 2 et 3 ne sont pas comparables, aucun des deux ne divisant l'autre. Un ordre total exige que deux éléments quelconques soient toujours comparables, ce qui est le cas de l'ordre usuel mais rarement des ordres issus de l'informatique, comme les dépendances entre tâches.

4) FAUX. La division euclidienne impose 0r<260\leq r<26, donc 19-19 n'est pas un reste valide. On prend q=2q=-2 : 45=26×(2)+7-45=26\times(-2)+7, donc 45mod26=7-45\bmod 26=7. C'est aussi ce que renvoie Python. En C ou en Java, l'opérateur donne effectivement 19-19, mais il ne calcule pas le reste euclidien : il faut alors corriger par ((a % n)+n) % n((a\ \%\ n)+n)\ \%\ n.

5) FAUX sans hypothèse d'ÉQUILIBRE. Si les clés sont insérées dans l'ordre croissant, l'arbre dégénère en liste chaînée et la recherche redevient linéaire, avec nn comparaisons au lieu de log2n\log_{2}n. La garantie logarithmique n'existe que pour les arbres maintenus équilibrés, comme les arbres rouge et noir ou AVL. Sur des insertions ALÉATOIRES, la hauteur moyenne reste voisine de 1,39log2n1{,}39\log_{2}n, mais une moyenne n'est pas une garantie.

Exercice 9 : Problème de synthèse : stocker des mots de passe

Concevoir le stockage des mots de passe d'un site mobilise le hachage, l'arithmétique modulaire, le dénombrement et les probabilités. C'est le problème qui rassemble le mieux le cours.

200040006000800010000120000.10.20.30.40.50.60.70.80.91301 cles suffisent pour 50 pour centtable de 65 536 casesnombre de cles
  • a) Pourquoi ne stocke-t-on jamais les mots de passe en clair, ni même chiffrés de façon réversible ?
  • b) Une table de hachage compte 6553665\,536 cases. La figure donne la probabilité d'au moins une collision en fonction du nombre de clés. Retrouvez par le calcul le seuil de 50 pour cent.
  • c) Le site compte 200 000 utilisateurs. Combien de comptes en moyenne par case, et que peut-on affirmer sur la case la plus chargée ?
  • d) Un attaquant a volé la table des condensats. Il teste tous les mots de passe de 8 lettres minuscules à raison de 101010^{10} essais par seconde. Combien de temps lui faut-il ? Que change l'ajout d'un SEL aléatoire par utilisateur ?
  • e) Résumez en trois règles ce que ce problème impose au concepteur.

Tape tes réponses, la page te dit juste ou faux 0/13

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Une fuite livrerait tous les comptes, et la clé d'un chiffrement réversible serait volée avec la base : il faut une fonction à sens unique
  • b) 1,1865536=1,18×2563021{,}18\sqrt{65\,536} = 1{,}18 \times 256 \approx 302 clés, soit moins de 0,5%0{,}5\,\% de remplissage
  • c) 3,053{,}05 comptes par case en moyenne, et au moins 4 dans la plus chargée : les collisions sont inévitables
  • d) Environ 21 secondes sans sel ; avec un sel par utilisateur, il faut recommencer pour chacun, soit environ 48 jours
  • e) Ne stocker que des condensats, saler par utilisateur, et choisir une fonction LENTE du type bcrypt ou Argon2

a) Parce qu'une fuite de la base livrerait immédiatement tous les comptes, et pas seulement ceux du site : les utilisateurs réemploient leurs mots de passe ailleurs. Un chiffrement RÉVERSIBLE ne vaut pas mieux, puisque la clé de déchiffrement est nécessairement présente sur le serveur et sera volée avec le reste. Seule une fonction à sens unique convient, c'est-à-dire une fonction de hachage : le serveur vérifie en recalculant le condensat, sans jamais pouvoir remonter au mot de passe.

b) Avec N=65536N=65\,536 cases, le seuil de 50 pour cent est atteint pour environ 1,18N=1,18×2563021{,}18\sqrt{N}=1{,}18\times 256\approx 302 clés. La figure le confirme : la courbe franchit 0,50{,}5 juste après 300. Le résultat est frappant, 302 clés sur 65 536 cases suffisent, soit un taux de remplissage inférieur à un demi pour cent. C'est le paradoxe des anniversaires appliqué au hachage.

c) 200000655363,05\frac{200\,000}{65\,536}\approx 3{,}05 comptes par case en moyenne. Le principe des TIROIRS garantit qu'une case au moins en contient au moins 3,05=4\left\lceil 3{,}05\right\rceil=4, ce qui est une borne très faible ; en pratique, avec une bonne fonction de hachage, la case la plus chargée en contient une douzaine. La conclusion importante est qu'il y a NÉCESSAIREMENT des collisions, et que la structure doit donc gérer les listes de débordement.

d) 268=2088270645762,09×101126^{8}=208\,827\,064\,576\approx 2{,}09\times 10^{11}, donc environ 2121 secondes pour épuiser l'espace. Sans sel, cet effort casse TOUS les comptes à la fois, puisqu'un même mot de passe donne partout le même condensat, et l'attaquant peut même se contenter d'une table précalculée. Avec un SEL aléatoire par utilisateur, le condensat dépend du compte : l'attaquant doit recommencer les 21 secondes POUR CHAQUE utilisateur, soit environ 48 jours pour 200 000 comptes, et aucune table précalculée ne sert. Le sel ne rend pas un mot de passe faible plus fort, il interdit de mutualiser l'attaque.

e) UN, ne jamais stocker que des condensats, produits par une fonction à sens unique. DEUX, saler chaque mot de passe avec une valeur aléatoire propre à l'utilisateur, pour empêcher toute attaque mutualisée ou par table précalculée. TROIS, choisir une fonction de hachage LENTE et paramétrable, du type bcrypt ou Argon2, afin que les 101010^{10} essais par seconde de la question d tombent à quelques milliers. Ces trois règles ne dépendent d'aucune technologie particulière, elles découlent directement des comptages de ce cours.

Exercice 10 : Problème de synthèse : analyser un réseau

Dernier problème, celui qui relie les graphes, la récursivité et le coût. Un réseau de machines se modélise par un graphe, et presque toutes les questions d'exploitation sont des questions de parcours.

  • a) Un réseau compte 5 machines reliées par les liaisons du graphe de l'exercice 4. Peut-on joindre EE depuis AA ? Donnez un chemin.
  • b) Combien de liaisons faudrait-il pour que toutes les paires soient directement reliées, dans un réseau non orienté à 5 machines ? Et à 100 machines ?
  • c) On veut détecter si le réseau contient un circuit. Décrivez un algorithme et donnez son coût.
  • d) Un parcours en profondeur est naturellement récursif. Quelles sont ses deux conditions de terminaison sur un graphe, et que se passe-t-il si l'on oublie la seconde ?
  • e) Sur un réseau de 100 machines et 300 liaisons, comparez le coût d'un parcours en profondeur avec celui d'un test naïf de tous les chemins.

Tape tes réponses, la page te dit juste ou faux 0/13

a)
b)
c)
d)
e)
Voir la correction

Réponses

  • a) Oui : ABDEA \to B \to D \to E, ou ACDEA \to C \to D \to E
  • b) (52)=10\binom{5}{2} = 10 et (1002)=4950\binom{100}{2} = 4950 : le nombre croît comme le carré
  • c) Parcours en profondeur à trois états, et un arc vers un sommet EN COURS signale un circuit : coût O(S+A)O(S+A)
  • d) Un cas de base, et le MARQUAGE qui fait décroître le travail restant ; sans lui, la récursion boucle sur un circuit
  • e) 400 opérations contre l'ordre de 99!99! : un changement de nature, du linéaire au factoriel

a) Oui. Le chemin ABDEA\to B\to D\to E convient, de longueur 3, et ACDEA\to C\to D\to E également. On peut le vérifier sur la matrice : le coefficient de M3M^{3} à la position correspondante est non nul. Comme il existe aussi l'arc EAE\to A, les deux machines sont mutuellement accessibles et appartiennent donc à la même composante fortement connexe.

b) Dans un réseau non orienté, relier toutes les paires demande (n2)=n(n1)2\binom{n}{2}=\frac{n(n-1)}{2} liaisons. Pour n=5n=5 : 5×42=10\frac{5\times 4}{2}=10 liaisons. Pour n=100n=100 : 100×992=4950\frac{100\times 99}{2}=4950. Le nombre croît comme le CARRÉ du nombre de machines, ce qui rend le maillage complet impraticable dès quelques centaines de nœuds et explique l'usage de topologies hiérarchiques.

c) On effectue un parcours en PROFONDEUR en marquant chaque sommet selon trois états, non visité, en cours de visite, terminé. Si l'on rencontre un arc menant vers un sommet EN COURS de visite, on a trouvé un circuit. Le parcours visite chaque sommet une fois et examine chaque arc une fois, son coût est donc O(S+A)O(S+A), linéaire en la taille du graphe. C'est aussi l'algorithme qui produit un tri topologique lorsqu'aucun circuit n'est trouvé.

d) Les deux conditions sont d'avoir un CAS DE BASE, ici un sommet sans successeur non visité, et de faire DÉCROÎTRE la quantité de travail restant, ce qui est assuré par le MARQUAGE des sommets déjà vus. Si l'on oublie le marquage, la récursion tourne indéfiniment dès que le graphe contient un circuit, puisqu'on repasse sans fin par les mêmes sommets. C'est exactement la seconde condition de terminaison du chapitre sur la récursivité, transposée aux graphes : l'argument doit se rapprocher du cas de base.

e) PARCOURS EN PROFONDEUR : O(S+A)=100+300=400O(S+A)=100+300=400 opérations élémentaires, l'affaire d'une microseconde. TEST NAÏF de tous les chemins : le nombre de chemins simples peut atteindre l'ordre de 99!99!, un nombre à 156 chiffres, donc totalement hors d'atteinte. Le rapport n'est pas un facteur mais un changement de nature, du linéaire au factoriel. C'est la leçon générale du cours : la bonne structure de données et le bon parcours transforment un problème impossible en un problème trivial, et aucun matériel ne compense le choix d'un mauvais algorithme.

Voir aussi

Vous cherchez un tuteur en mathématiques pour l'informatique 201-N11 à Montréal ?

Contactez-moi pour une première séance. On prépare l'examen final au niveau réel de l'épreuve, chapitre par chapitre puis en conditions.

Site par Studio Squalli