MI2E - 2EANNÉE
ALGORITHMIQUE GÉNÉRALE
V. Mousseau
ALGORITHMIQUE GÉNÉRALE
Partiel - 23/11/2005 - 2 heures
aucun document autorisé
carte étudiant : ................................
Exercice 1 : La décomposition en facteurs premiers d’un nombre entier strictement positif consiste à
représenter cet entier de la manière suivante : n=ab1
1ab2
2...abk
koù les aisont des nombres premiers tels
que ai< ajpour i < j et les bjsont des entiers strictement positifs. Par exemple, 84 = 22×31×71.
La décomposition en facteurs premiers d’un entier est unique.
a) Un entier npeut donc être représenté par tableau à double entrée Tstockant les aiet les bi:
T[i, 1] contenant aiet T[i, 2] contenant bi. Par exemple 84 est représenté par ,
237
211
Donnez la représentation des entiers 72 et 270.
Soient T1et T2les tableaux représentant deux entiers n1et n2. On note T aille1et T aille2les tailles
des tableaux T1et T2. Soit la fonction PGCD suivante :
fonction PGCD(T1,T2: tableau) entier
pgcd,p1,p2: entier
pgcd 1
p11
p21
tant que (p1T aille1) et (p2T aille2) faire
si T1[p1,1] = T2[p2,1]
alors mmin(T1[p1,2], T2[p2,2])
pgcd pgcd ×T1[p1,1]m
p1p1+ 1
p2p2+ 1
sinon
si T1[p1,1] < T2[p2,1]
alors p1p1+ 1
sinon p2p2+ 1
fin si
fin si
fin tant que
retourner(pgcd)
b) Faire tourner à la main la fonction PGCD pour les entiers 72 et 84. On prendra soin de noter
les valeurs successives des variables pgcd,p1,p2ainsi que la valeur du test de la boucle tant que.
c) Prouver que la fonction PGCD se termine en un temps fini.
d) Déterminer la complexité de la fonction PGCD
.
2
Exercice 2 : On considère deux matrices carrées (d’entiers) d’ordre n,Aet B. Le produit de Apar
Best une matrice carrée Cd’ordre nfinie par ci,j =Pn
k=1 ai,kbk,j .
Donner un algorithme PROD(A,B) calculant le produit de deux matrices représentées sous forme
d’un tableau à deux dimensions. Calculer la complexité de cet algorithme. Doit-on préciser dans quels
cas (pire cas, meilleur des cas, cas moyen) cette complexité est obtenue?
Exercice 3 : On considère un type de données abstrait pour manipuler les polynômes. Cet exercice
propose d’implémenter certaines opérations de base concernant les polynômes à coefficients entiers
sur une variable. Soit El’ensemble des polynômes à coefficients entiers sur une variable entière x. On
considère les trois opérations sur E:
la dérivation : p(x)Ep(x)
l’addition : p(x), q(x)Ep(x) + q(x)
l’évaluation : p(x)E, a Zp(a)
On notera ces opérations Dériv(p), Somme(p, q) et Eval(p, a). Pour les implémenter, on choisit de
représenter un polynôme de Epar une liste chaînée p=(M1, ..., Mk)de monômes, ordonnée par
degré croissant, où chaque monôme Mj= (aj, dj)est caractérisé par son degré djNet son coeffi-
cient ajZ. Le polynôme associé à la liste pest alors p(x) = Pk
i=1 aixdi. Le polynôme nul, noté
polynul, est représenté par M0= (0,0).
On utilise alors la structure suivante :
lien=cell
cell=Enreg.
deg,coef :entier
suiv :lien
FinEnreg.
Ainsi 3x2+ 4x+ 7 est représenté par p
3
p
• • •
071 4 2 3
a) Écrire un algorithme implémentant Dériv.
4
b) Écrire un algorithme récursif implémentant Somme. Quelle est sa complexité au pire-cas ?
c) Soit aZet nN. On suppose que le nombre d’opérations pour calculer anest en Θ(n). Soit
pE. Quelle est la complexité de l’algorithme naïf d’évaluation de pen a, qui évalue d’abord
chacun des monômes de pen aet fait la somme des valeurs trouvées ?
d) Soit p(x) = Pn
i=1 aixiun polynôme de Ede degré nécrit sous sa forme conventionnelle
chaque coefficient ajest négatif, nul ou positif. On considère la suite H0, ..., Hnde polynômes
associés à p:H0(x) = an, H1(x) = H0(x)×x+anl, ..., Hn(x) = Hn1(x)×x+a0
La suite (H0, ..., Hn)est la liste des polynômes du schéma de Horner et l’on a formellement
p(x) = Hn(x). Déduire du schéma de Horner un algorithme efcace, utilisant une liste double-
ment chaînée dont vous donnerez la définition, pour évaluer pen x. Quelle est la complexité de
cet algorithme ?
5
1 / 7 100%