200 likes | 343 Views
Applications du modulo en informatique. par Frédérick Henri et Geneviève Savard. Service des enseignements généraux. Définition de file.
E N D
Applications du modulo en informatique par Frédérick Henri et Geneviève Savard Service des enseignements généraux
Définition de file En informatique, on définit une file comme étant une structure de données où l’on peut insérer et extraire en fonctionnant selon le principe « premier arrivé, premier servi » ou First In First Out.
Exemple visuel d’une file On voit des files tous les jours : file d’attente à l’hôpital, file à la cafétéria, etc. On peut voir un tunnel à une voie comme étant une file. En effet, le premier véhicule à pénétrer dans le tunnel sera toujours le premier à sortir.
Implantation d’une file Pour implanter une file, il faut au minimum : • Un espace pour contenir des données. • Un compteur d’éléments.
Implantation d’une file Nous utiliserons un tableau de 5 cases pour contenir les données et une variable pour savoir combien il y a d’éléments dans la file. Au départ, la file ressemblera à ceci :
Implantation d’une file Pour avoir l’effet «premier arrivé, premier servi», nous ajouterons toujours la nouvelle donnée à droite et nous retirerons toujours la donnée de gauche, donc à l’indice 0. Malheureusement, cela nous forcera à décaler les éléments…
Visualisation du fonctionnement 40 30 10 20 40 20 30 40 30 3 1 2 3 2 2 1 On enfile la valeur 10. On enfile la valeur 40. On enfile la valeur 20. On défile un élément. On enfile la valeur 30. On défile un élément. On défile un élément.
Implantation d’une file D’un point de vue efficacité, le décalage des données est totalement inacceptable. C’est beaucoup trop lent!
Implantation d’une meilleure file Pour éviter de décaler les éléments, nous allons conserver une autre information pour savoir où commence la file et nous ne retirerons pas toujours à l’indice 0.
Visualisation du fonctionnement 10 20 30 40 3 1 1 2 3 2 2 2 1 3 On enfile la valeur 10. On enfile la valeur 40. On enfile la valeur 20. On défile un élément. On enfile la valeur 30. On défile un élément. On défile un élément.
Implantation d’une meilleure file Le défi consiste maintenant à savoir où ajouter une nouvelle donnée et comment déplacer l’indice de début lors d’un défilement. Si, par exemple, l’état de la file est le suivant : On sait qu’il reste de la place, mais comment déterminer où ajouter le nouvel élément ?
Implantation d’une meilleure file Pour savoir où insérer le nouvel élément, on utilisera le modulo !
Rappel à propos du modulo On définit le modulo comme étant le reste de la division entière. Voici quelques exemples : 13 modulo 3 = 1 (puisque 13 / 3 = 4 reste 1) 39 modulo 5 = 4 (puisque 39 / 5 = 7 reste 4) 7 modulo 10 = 7 (puisque 7 / 10 = 0 reste 7) -12 modulo 10 = 8 (puisque -12 / 10 = -2 reste 8)
Fonctionnement de la meilleure file Pour savoir où ajouter, on utilisera le calcul suivant : (Début + Nb. éléments) modulo Taille_file Dans l’exemple ci-dessous, on ajoutera à l’indice (4 + 3) modulo 5 = 2.
Fonctionnement de la meilleure file Pour savoir où déplacer le début en cas de défilement, on utilisera le calcul suivant : (Début + 1) modulo Taille_file Dans l’exemple suivant, on retirera à l’indice 4 et début deviendra (4 + 1) modulo 5 = 0.
Autres applications du modulo • Si nous sommes mercredi, quel jour de la semaine serons-nous dans 40 jours ? (2 + 40) modulo 7 = 0, nous serons donc lundi. • Il est 13:00. Quelle heure sera-t-il dans 40 heures? (13 + 40) modulo 24 = 5, il sera donc 5:00.
Autres applications du modulo • Quel sera l’angle t dans 10 minutes si le point P est initialement situé à 130o et qu’il tourne à la vitesse de 60o par minutes ? (130 + 10*60) modulo 360 = 10 • Implémentation du déplacement de PacMan dans les corridors spéciaux… La morale de cette histoire ? Derrière chaque phénomène cyclique se cache un modulo.
Cryptographie à clé publique Où M est une portion du message d’origine et C est la portion du message codé. Information publique (clé d’encryptage) : • n qui est le produit de deux grands nombres premiers : n = pq. • e choisi tel que pgcd (e, (p -1)(q -1) ) = 1. Information secrète (clé de décryptage) : • d qui est l’inverse de e modulo (p -1)(q -1). Le calcul de la puissance est fait à l’aide de l’algorithme Modular Exponentiation.
Cryptographie à clé publique • Attention! Un espion qui réussiraità factoriser n pourrait calculer immédiatement la clé de décodage d. • Tout ce système repose donc sur le fait qu’il est très difficile d’obtenir la décomposition en nombres premiers des grands nombres. Voir DiscreteMathematics and itsApplications, 7e édition, K. H. Rosen, page 299 de la section 4.6 ou le site RSA Laboratories.
Par Frédérick Henri et Geneviève Savard Merci aussi à Hugues Saulnier du Service des enseignements généraux