1`ere Ann´ee ENSEIRB
Algorithmique et structure de donn´ees –
TD 1 : Algorithmes simples
1 Rendre la monnaie
On se propose d’´ecrire un algorithme permettant d’obtenir la suite des billets totalisant une
somme donn´ee (dont on suppose qu’elle est un multiple de 10). Les esp`eces disponibles sont
des billets de 50, 20 et 10 euros. Le principe est de donner le billet de valeur la plus grande
possible inf´erieure ou ´egale `a la somme `a rendre et de poursuivre la mˆeme strat´egie avec la
somme restante jusqu’`a ce que la somme restante soit nulle.
1. ´
Ecrire cet algorithme en utilisant les structures de contrˆole suivantes : while ,if et
else if . L’algorithme utilisera une variable nomm´ee squi contiendra la somme
restant `a rendre au fur et `a mesure de la remise de billets au client. On n’utilisera
comme op´erations arithm´etiques que des additions ou des soustractions. Le r´esultat
sera l’affichage de la suite des nombres de billets `a rendre.
Par exemple si la somme est 180, l’affichage devra ˆetre :
3 billets de 50 euros
1 billet de 20 euros
1 billet de 10 euros
2. D´eterminer le nombre de soustractions effectu´ees par l’ algorithme, on donnera une
formule faisant intervenir des divisions enti`eres par les nombres 50, 20 et 10.
3. G´en´eraliser votre algorithme au cas o`u les valeurs de billets ou pi`eces disponibles sont
en nombre quelconque et figurent dans un tableau `a valeurs d´ecroissantes val[0] >
val[1] > ... > val[k-1]. Ainsi dans l’exemple consid´er´e plus haut on aurait : k
= 3 et val[0] = 50, val[1] = 20, val[2] = 10.
4. Montrer qu’ il existe des valeurs de billets et une somme `a rendre pour lesquels cet
algorithme ne donne pas le nombre minimum de billets ou de pi`eces `a rendre.
2 Calcul de la puissance ni`eme
1. ´
Ecrire un algorithme permettant de calculer rapidement la puissance ni`eme d’un nom-
bre entier aen s’inspirant de l’algorithme vu en cours pour la repr´esentation d’un
nombre en base 2.
On se servira de l’´ecriture en base 2 de n:
1
n=
p
X
k=1
xk2k
o`u les xkont pour valeur 0 ou 1. Et on utilisera les puissances a2kde aet les valeurs
de xkpour effectuer le calcul.
2. Donner l’ordre de grandeur du nombre de multiplications `a effectuer en fonction de n.
3 Anagrammes
On vous propose maintenant d’´ecrire un algorithme permettant de v´erifier si deux mots
(repr´esent´es sous la forme de tableaux de caract`eres) sont l’anagramme l’un de l’autre.
C’est `a dire contiennent exactement les mˆemes caract`eres mais dans un ordre diff´erent.
Par exemple Marion est anagramme de Romain,arbre est anagramme de barre. Pour sim-
plifier, on supposera que les caract`eres sont des nombres de 0 `a 25 et on notera fet gles
tableaux repr´esentants les deux mots.
Annexe
L’exercice 2 est motiv´e par l’algorithme d’´echange de cl´es Diffie-Hellman, du nom de ses
auteurs Whitfield Diffie et Martin Hellman. Il s’agit d’une m´ethode par laquelle deux per-
sonnes nomm´ees conventionnellement Alice et Bob peuvent se mettre d’accord sur un nom-
bre (qu’elles peuvent utiliser comme cl´e pour chiffrer la conversation suivante) sans qu’une
troisi`eme personne appel´ee Eve puisse d´ecouvrir le nombre en ´ecoutant leur conversation.
Cet algorithme est d´ecrit ci dessous.
Alice et Bob ont choisi un nombre gconnu de tous,
Alice choisit un nombre au hasard aqu’elle tient soigneusement cach´e, ´el`eve g`a la
puissance a, et donne `a Bob la valeur de ga,
Bob fait de mˆeme avec le nombre b, donnant `a Alice la valeur de gb,
Alice, en ´elevant le nombre re¸cu de Bob `a la puissance a, obtient gba.
Bob fait le calcul analogue et obtient aussi gab. Eve ne peut pas d´ecouvrir facilement
aet b, donc ne peut pas calculer gab.
En pratique les calculs se font modulo un nombre premier pet Bob envoie donc gbmod p.
Alice l’´el`eve alors `a la puissance aet obtient (gbmod p)amod p =gab mod p. La s´ecurit´e
de ce protocole r´eside dans la difficult´e du probl`eme du logarithme discret : pour que Eve
retrouve gab `a partir de gaet gb, elle doit ´elever l’un ou l’autre `a la puissance bou `a la
puissance arespectivement. Mais d´eduire a(resp. b) grˆace `a ga(resp. gb) est un probl`eme
que l’on ne sait pas r´esoudre efficacement. Eve est donc dans l’impossibilit´e (calculatoire)
de d´eduire gab.
Un algorithme pour calculer une clef secr`ete n´ecessite de pouvoir ´elever `a la puissance de
fa¸con rapide.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !