Université Francois Rabelais de Tours
Département de Mathématiques
Feuille de Travaux Dirigés n◦1
L3, Algorithmique Semestre 5, 2012
Algorithmes classiques
Exercice 1 Ecrire les différentes étapes de l’algorithme de division euclidienne pour (a, b) = (13,4).
Exercice 2 Ecrire les différentes étapes de l’algorithme de Blankinship pour (a, b) = (651,234).
Exercice 3 Ecrire les nombres suivants dans les bases indiquées.
(a) 176 en base 2.
(b) 786 en base 11.
(c) 674 en base 675.
Exercice 4 Soit n, n′, b ∈Navec b6= 0.
1. Montrer que
bk>
k−1
X
i=0
aibifor all 0≤ai≤b−1
2. Montrer par récurrence l’unicité de l’écriture en base b.
Exercice 5 Utiliser l’algorithme d’exponentiation rapide pour calculer les valeurs suivantes
1. 7644 mod 645
2. 11645 mod 645
Conception d’algorithmes
Exercice 6 (Calcul de sommes)
1. Ecrire un algorithme pour calculer S:=
n
P
i=0
ui
2. Ecrire un algorithme pour calculer S:=
p
P
i=0
q
P
j=0
ui,j
3. Ecrire un algorithme pour calculer S:=
n
P
i=0
i6=k
ui
Exercice 7 On considère l’ensemble Rdes points à coordonnées entières suivant
R:= {(x, y)∈N2|0≤x≤a, 0≤y≤b}où a, b ∈N
On parcourt Rde la manière suivante :
•on part de (0,0) et on se déplace vers la droite jusqu’au point (a, 0) ;
•on monte d’une ligne jusqu’au point (a, 1) et on se déplace vers la gauche jusqu’à (0,1)
•etc. . .
L’ordre de parcours définit un ordre total ≺sur R. On a par exemple :
(0,0) ≺(1,0) ≺(2,0) ≺...≺(a, 0) ≺(a, 1) ...
1. Quel est le plus grand élément de R?
2. Définir de manière algébrique la relation d’ordre (x, y)≺(x′, y′).
3. Quel est le successeur (s’il existe) de (x, y)pour cet ordre ≺?
4. Ecrire un algorithme pour calculer le successeur de (x, y)∈R.
1
Exercice 8 On se propose d’écrire un algorithme (pas très efficace !) qui permet d’inverser une matrice
carré A= (ai,j )de taille n. On supposera que l’on connait :
•un algorithme Det permettant de calculer le déterminant ;
•un algorithme Delta(A, k, ℓ)où 1≤k≤ℓ≤npermettant de construire la matrice
∆ = (ai,j )1≤i,j≤n
i6=k,j6=ℓ
.
1. Rappeler la définition de la comatrice.
2. Montrer que tcom(A)·A=A·com(A) = det(A)·In.
3. En déduire une caractérisation bien connue de l’inversibilité d’une matrice.
4. Ecrire un algorithme d’inversion.
Exercice 9 (Le théorème chinois) On rappelle l’énoncé du théorème chinois.
Théorème. Soient n1, ..., nkdes entiers deux à deux premiers entre eux (i.e. pgcd(ni, nj) = 1 lorsque
i6=j). Alors pour tous entiers a1, ..., ak, il existe un entier x, unique modulo n=Qk
i=1 ni, tel que
(S)
x≡a1(mod n1)
...
x≡ak(mod nk)
Pour chaque entier ni, on pose Ni:= n/ni.
1. Justifier qu’il existe (ui, vi)∈Ztel que uini+viNi= 1.
2. On pose ei:= viNi. Montrer que
(ei≡1 mod ni
ej≡0 mod njj6=i
3. En déduire que x=Paieiest l’unique solution du système S
4. Ecrire un algorithme qui calcule la solution d’un système de type S. (On pourra utiliser l’algorithme
Blankinship(a, b)qui renvoie le triplet (d, u, v)tel que d=pgcd(a, b)et d=au +bv)
Comparaison de fonctions
Exercice 10 Trouver le plus petit entier ntel que les fonctions suivantes soient O(xn)
1. f(x) = 2x3+x2log(x)
2. f(x) = 3x3+ (log(x))4
3. f(x) = x4+x2+1
x4+1
4. f(x) = x3+5 log(x)
x4+1
Exercice 11 Prouver de manière rigoureuse que
lim
n→∞ |f(n)
g(n)|<∞ ∈ R=⇒f=O(g).
Trouver un exemple de fonction f, g tel que f=O(g)et lim
n→∞|f(n)
g(n)|n’existe pas.
Exercice 12 Soit Hn=Pn
i=1 1
n. Montrer que Hnest O(log n).
[Aide : Montrer que Pn
j=2
1
j<Rn
1
1
xdx.]
Complexité
Exercice 13 Donner une estimation en Odu nombre d’opérations nécessaires dans l’algorithme suivant.
Une opération est une comparaison ou une multiplication.
pour i= 1 ànfaire
pour j=i+ 1 ànfaire
m:= max(aiaj, m)
fin
fin
2
Exercice 14 Soit S1,...,Sndes sous-ensembles de {1,...,n}.
1. Ecrire un algorithme qui détermine si, oui ou non, il existe deux sous-ensembles Siet Skdisjoints.
2. Donner une estimation du nombre de fois que l’algorithme effectue un test du type x∈Si
Exercice 15 L’algorithme conventionnel pour évaluer un polynôme anXn+. . . a1X+a0en x=cest le
suivant.
Données :P[X] = anXn+. . . a1X+a0, c ∈R
power := 1
y:= a0
pour i= 1 ànfaire
power := power ×c
y:= y+ai×power
fin
Résultat :P(c)
Algorithme 1: Evaluation d’un polynôme
1. Faites tourner l’algorithme pour évaluer le polynôme 3x2+x+ 1 en x= 2.
2. Combien de multiplications et d’additions sont nécessaires pour évaluer un polynôme de degré nà
x=c?
On considère maintenant l’algorithme de Horner pour évaluer les polynômes
Données :P[X] = anXn+. . . a1X+a0, c ∈R
y:= an
pour i= 1 ànfaire
y:= y×c+an−i
fin
Résultat :P(c)
Algorithme 2: Algorithme de Horner
3. Faites tourner l’algorithme pour évaluer le polynôme 3x2+x+ 1 àx= 2.
4. Combien de multiplications et d’additions sont nécessaires pour évaluer un polynôme de degré nà
x=c?
Logarithme discret
Exercice 16 Prouver le résultat de cours suivant. Soit n∈Ntel que n > 2. On a
(a) Si a≡bmod net c≡dmod n, alors a±c≡b±dmod n.
(b) Si a≡bmod net c≡dmod nalors ac ≡bd mod n.
(c) Si a≡bmod net b≡cmod nalors a≡cmod n.
(d) Si a≡bmod n, alors ak≡bkmod npour tout k∈N.
Exercice 17 Prouver le résultat de cours suivant. Soit ¯
b∈(Z/nZ)∗. On a ¯
bm=¯
1si et seulement si
ordn(¯
b)|m.
Exercice 18 Trouver toutes les racines primitives modulo 17. Soit ¯
bl’une d’elles. Faire un tableau
donnant les valeurs de log¯
b,17(¯a)pour tout ¯a∈Z/17Z∗.
Exercice 19 Trouver toutes les racines primitives modulo 23. Soit ¯
bl’une d’elles. Faire un tableau
donnant les valeurs de log¯
b,23(¯a)pour tout ¯a∈Z/23Z∗.
Exercice 20 Montrer que 12 n’a pas de racines primitives.
3
Exercice 21 (Algorithme de Silver, Pohlig, Hellman) Dans cet exercice on présente un algorithme
pour calculer le logarithme discret. Soit qun nombre premier et soit ¯
bune racine primitive modulo q. On
veut calculer x= log¯
b,q(¯u)pour ¯u∈Z/qZ∗. On rappelle que xest défini comme étant l’unique entier
compris entre 0et q−1tel que ¯
bx= ¯u.
1. Montrer que ¯
bx+k(q−1) = ¯u.
2. Soit (q−1) = pα1
1pα2
2...pαk
kla décomposition de q−1en facteurs premiers. Montrer que pour trouver
xil suffit de calculer xmod pαi
ipour tout 1≤i≤k
3. Montrer que l’ensemble des racines pième de l’unité (où p|q−1) est
µp={rp,j = (¯
b)j(q−1)
p|j= 0,...,p−1}
(On rappelle que les racines pième de l’unité de Z/qZest l’ensemble des ¯
ttel que ¯
tp=¯
1.)
Soit pun facteur premier de q−1de multiplicité α. Soit xp:= xmod pα. On pose xp= (aα−1, aα−2,...,a1, a0)p
l’écriture en base pde xp. Dans les questions 4–6, on se propose de calculer les ai.
4. Montrer que ¯uq−1
p=rp,a0.
5. On pose ¯u1:= ¯u·¯
b−a0. Montrer que ¯u
q−1
p2
1=rp,a1.
6. Pour tout 0≤k≤α−1, on pose ¯uk:= ¯u·¯
b−(a0+a1p+...+ak−1pk−1). Montrer que ¯u
q−1
pk+1
k=rp,ak.
Finalement, écrire un algorithme utilisant cette méthode pour calculer le logarithme discret.
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!