TD 1 : Algorithmes non formalisés - Notes Exhaustives

Algorithme de la Somme de l’École Primaire

  • Calcul de base :     * Exemple : Pour calculer la somme 321+12345321 + 12345, il convient d'ajouter des zéros implicites au nombre le plus court afin d'aligner les colonnes.     * Résultat : 1266612666.     * Nombre d'opérations élémentaires : 55 opérations (une somme d'entiers par colonne). Dans cet exemple, il n'y a aucune retenue.

  • Généralisation sans retenue :     * Soit deux entiers de mm et nn chiffres.     * Le nombre d'opérations élémentaires nécessaires pour effectuer la somme, en supposant l'absence totale de retenue, est défini par max(m,n)\max(m, n).

  • Somme avec retenues (cas intermédiaire) :     * Exemple : Pour 2138+7642138 + 764, le résultat est 29022902, nécessitant 66 opérations élémentaires.     * Analyse du meilleur et du pire cas (sans retenue dans la dernière colonne à gauche) :         * Meilleur cas : Aucune retenue, soit max(m,n)\max(m, n) opérations.         * Pire cas : Une retenue dans chaque colonne excepté la dernière. Cela nécessite deux opérations par colonne, sauf pour la première (à droite) et la dernière (à gauche).         * Calcul du nombre d'opérations au pire cas : 1+2×(max(m,n)2)+11 + 2 \times (\max(m, n) - 2) + 1, ce qui se simplifie en 2×max(m,n)22 \times \max(m, n) - 2.         * Exemple type du pire cas : 8999899\dots9 (mm chiffres) +1+ 1.

  • Somme avec retenue dans la dernière colonne (cas général) :     * Exemple : 8024+2077=101018024 + 2077 = 10101, nécessitant 88 opérations élémentaires.     * Taille du résultat : La somme peut comporter soit max(m,n)\max(m, n) chiffres, soit max(m,n)+1\max(m, n) + 1 chiffres si une retenue se produit à la dernière étape.     * Analyse des opérations :         * Meilleur cas : Toujours max(m,n)\max(m, n) opérations.         * Pire cas : Retenue dans chaque colonne, y compris la dernière. On effectue une opération dans la première colonne et deux opérations dans toutes les autres max(m,n)\max(m, n) colonnes.         * Formule du pire cas : 2×max(m,n)+12 \times \max(m, n) + 1 opérations.         * Exemple type : 9999999\dots9 (mm chiffres) +1+ 1.

Énigme de la Bergère et de la Traversée de Rivière

  • Solution Standard (1 loup, 1 mouton, 1 chou) :     * Séquence d'opérations :         1. transporter mouton         2. traverser (retour à vide)         3. transporter chou         4. transporter mouton (retour avec le mouton pour éviter qu'il ne mange le chou)         5. transporter loup         6. traverser (retour à vide)         7. transporter mouton

  • Solution Alternative :     * Il est possible d'inverser l'ordre du loup et du chou :         1. transporter mouton         2. traverser         3. transporter loup         4. transporter mouton         5. transporter chou         6. traverser         7. transporter mouton

  • Généralisation avec \ell loups, mm moutons et cc choux :     * Réduction des valeurs : Si une solution existe pour des valeurs données, elle reste valide pour des valeurs inférieures en remplaçant « transporter xx » par une simple traversée à vide si xx n'est plus présent.     * Situations impossibles :         * =2,m=1,c=1\ell = 2, m = 1, c = 1 : Impossible, car le mouvement forcé ramène systématiquement à l'état initial.         * =1,m=1,c=2\ell = 1, m = 1, c = 2 : Situation symétrique à la précédente, donc impossible.         * =1,m=2,c=1\ell = 1, m = 2, c = 1 : Aucun choix possible dès la première opération sans qu'un animal soit mangé.     * Impact de l'ajout d'éléments : Ajouter des animaux ou des choux ne peut jamais rendre une situation résolvable car cela ne supprime aucune menace de prédation existante.     * Solution avec plusieurs bergères : L'ajout d'une seconde bergère rend toute situation résolvable.         * Méthode : Une bergère surveille la rive de départ pendant que l'autre transporte les loups et les choux un par un. Ensuite, la première bergère traverse pour surveiller la rive d'arrivée pendant que la seconde transporte les moutons.

Problème Géométrique : Le Château de Cartes

  • Règle de construction récursive :     * Pour passer d'un château de niveau nn à un niveau n+1n+1, il faut :         * Ajouter une structure triangulaire au niveau 1 (bas), surmontée d'une carte horizontale.         * Répéter cela pour les niveaux 2,3,,n2, 3, \dots, n.         * Ajouter une structure triangulaire finale au sommet (n+1n+1).

  • Modélisation Mathématique :     * Soit c(n)c(n) le nombre de cartes pour nn niveaux.     * Valeurs initiales : c(1)=2c(1) = 2, c(2)=7c(2) = 7, c(3)=15c(3) = 15.     * Formule de récurrence : c(n+1)=c(n)+3n+2c(n+1) = c(n) + 3n + 2. Chaque nouveau niveau ajoute 33 cartes par niveau existant (triangle + horizontale) plus un triangle de sommet (22 cartes).

  • Application numérique :     * Calcul pour 4040 cartes :         * c(3)=15c(3) = 15         * c(4)=15+3(3)+2=15+9+2=26c(4) = 15 + 3(3) + 2 = 15 + 9 + 2 = 26         * c(5)=26+3(4)+2=26+12+2=40c(5) = 26 + 3(4) + 2 = 26 + 12 + 2 = 40     * Conclusion : Un château de 4040 cartes possède 55 niveaux.

Cryptologie : Étude du Chiffrement de César

  • Définitions fondamentales :     * Cryptographie : Art de transformer une information pour la rendre secrète (chiffrement).     * Cryptanalyse : Analyse des messages chiffrés pour en découvrir le sens sans posséder la clé.

  • Mécanisme du Code de César (Chiffrement par décalage) :     * Chaque lettre est remplacée par une autre située à une distance fixe (clé dd) dans l'alphabet latin (2626 lettres).     * Calcul mathématique : Si une lettre est associée à un nombre c0,,25c \in {0, \dots, 25}, la lettre chiffrée est (c+d)(mod26)(c + d) \pmod{26}.     * Les caractères non alphabétiques (ponctuation, espaces) restent inchangés.

  • Exemples de chiffrement :     * Message : "La vie est un long fleuve tranquille"     * Clé 3 : "Od ylh hvw xq orqj iohxyh wudqtxlooh."     * Clé -7 : "Et obx xlm ng ehgz yexnox mktgjnbeex."

  • Analyse Algorithmique :     * Complexité du chiffrement : Pour un message de nn caractères, l'algorithme effectue nn opérations de décalage.     * Déchiffrement : Utilisation de la clé opposée d-d. Exemple : Déchiffrer « kajex » avec la clé 99 donne « bravo ».     * Attaque par force brute : Sans clé, on peut tester les 2525 décalages effectifs possibles. La complexité est de 25n25n, ce qui est très rapide pour un ordinateur.

  • Analyse Fréquentielle et Sécurité :     * Le code de César est considéré comme peu sûr car il ne modifie pas la distribution fréquentielle des lettres, il ne fait que la décaler.     * En français (Wikipedia 2008), les fréquences d'apparition sont :         * ee : 12,10%12,10\%         * aa : 7,11%7,11\%         * ii : 6,59%6,59\%         * ss : 6,51%6,51\%         * nn : 6,39%6,39\%         * rr : 6,07%6,07\%         * tt : 5,92%5,92\%         * oo : 5,02%5,02\%         * ll : 4,96%4,96\%         * uu : 4,49%4,49\%         * dd : 3,67%3,67\%         * cc : 3,18%3,18\%         * mm : 2,62%2,62\%         * pp : 2,49%2,49\%         * gg : 1,23%1,23\%         * b,v,h,fb, v, h, f : env. 1,11%1,11\%         * qq : 0,65%0,65\%         * yy : 0,46%0,46\%         * xx : 0,38%0,38\%         * jj : 0,34%0,34\%         * kk : 0,29%0,29\%         * ww : 0,17%0,17\%         * zz : 0,15%0,15\%     * En identifiant la lettre la plus fréquente du message chiffré, on peut facilement deviner qu'elle correspond au 'e' et ainsi déduire la clé.