Université Francois Rabelais de Tours
Département de Mathématiques
Feuille de Travaux Dirigés n1
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>
k1
X
i=0
aibifor all 0aib1
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|0xa, 0yb}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, ℓ)1knpermettant de construire la matrice
∆ = (ai,j )1i,jn
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)
xa1(mod n1)
...
xak(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
(ei1 mod ni
ej0 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 xSi
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+ani
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 nNtel que n > 2. On a
(a) Si abmod net cdmod n, alors a±cb±dmod n.
(b) Si abmod net cdmod nalors ac bd mod n.
(c) Si abmod net bcmod nalors acmod n.
(d) Si abmod n, alors akbkmod npour tout kN.
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 ¯aZ/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 ¯aZ/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 ¯uZ/qZ. On rappelle que xest défini comme étant l’unique entier
compris entre 0et q1tel que ¯
bx= ¯u.
1. Montrer que ¯
bx+k(q1) = ¯u.
2. Soit (q1) = pα1
1pα2
2...pαk
kla décomposition de q1en facteurs premiers. Montrer que pour trouver
xil suffit de calculer xmod pαi
ipour tout 1ik
3. Montrer que l’ensemble des racines pième de l’unité (où p|q1) est
µp={rp,j = (¯
b)j(q1)
p|j= 0,...,p1}
(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 q1de 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 ¯uq1
p=rp,a0.
5. On pose ¯u1:= ¯u·¯
ba0. Montrer que ¯u
q1
p2
1=rp,a1.
6. Pour tout 0kα1, on pose ¯uk:= ¯u·¯
b(a0+a1p+...+ak1pk1). Montrer que ¯u
q1
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!