CorrigeExamen2012 13 PDF
CorrigeExamen2012 13 PDF
CorrigeExamen2012 13 PDF
Solution :
1) Voir cours
2)
a. Pour montrer que f(n)=O(n4), il suffit de trouver n0 et c0 (ou de montrer leur
existence) tels que nn0 f(n)c*n4 :
3n2.log(n)c*n4 //on divise les deux membres par n4
c
=0 donc le c et le n0 demandés existent.
Conclusion : on a bien f(n)=O(n4)
b. Pour avoir f(n)=(n4), vu qu’on a déjà f(n)=O(n4), il faut avoir en plus n4=O(f(n)).
Tentons donc de montrer n4=O(3n2.log(n)) en cherchant n0 et c0 tels que nn0
n4c*(3n2.log(n)) :
n4c*(3n2.log(n)) //on divise les deux membres par c*n4
=0 donc la constante c demandée n’existe pas.
Conclusion : f(n)(n4)
Solution 1 :
infixe(A)
début
si (A≠NIL) alors
infixe(A.sa-gauche);
si (A.clef in [a,b]) alors
créer nœud z;z.clef=A.clef ;z.sa-gauche=NIL;z.sa-droit=NIL;
si X=NIL alors X=z sinon père_de_z.sa-droit=z ;pere_de_z=z finsi
finsi
Infixe(A.sa-droit);
rinsi
retourner X
fin
Page 1 sur 3
Programme principal
début
X=NIL ; B=infixe(A) ;
fin
Solution :
Soit T un tableau d’entiers de taille n dont on veut savoir s’il est un tableau de permutation ; on
utilise un tableau auxiliaire S de taille n dont tous les éléments seront initialisés à 0 (pour i=1 à n,
S[i]=0 signifiera que l’élément i n’a pas encore été rencontré dans le tableau T ; dès que i est
rencontré dans T, S[i] sera mis à 1 pour que la deuxième fois qu’on rencontre i dans T, si toutefois
deuxième fois il y a, on le sache).
booléen tab_perm(T,n)
début
pour i=1 à n faire S[i]=0 fait
pour i=1 à n faire
si T[i]<1 ou T[i]> n alors retourner FAUX
sinon si S[T[i]]=1 alors retourner FAUX
sinon S[T[i]]=1
finsi
finsi
fait
retourner VRAI
fin
Page 2 sur 3
Solution :
1. Une instance du problème de décision P est un graphe non orienté G=(V,E) à n sommets
(nous supposons V={v1,…,vn}), et un entier positif kn ; instance que nous représentons
par un triplet (MG,n,k), MG étant la matrice d’adjacence de G. MG est une matrice carrée
booléenne nxn vérifiant MG[i,j]=1 si et seulement si (vi,vj) est arête de G (en particulier, la
diagonale de MG est à 0, et la matrice MG est symétrique).
2. Un certificat d’une instance du problème P est un sous-ensemble V’ de V de taille
inférieure ou égale à k, que nous représentons par un tableau c de taille n de booléens :
c[i]=1 si et seulement si viV’.
3. nous donnons ci-après, sous forme d’une fonction booléenne, un algorithme de validation
validation_P pour le problème de décision P : l’algorithme aura comme arguments un
certificat c et une instance (MG,n,k) de P :
booléen validation_P(c,MG,n,k)
début
pour i=1 à n faire
pour j=1 à n faire
si (MG[i,j]=1 et c[i]=0 et c[j]=0) alors retourner FAUX finsi
fait
fait
retourner VRAI
fin
4. Le nombre T(n) d’opérations élémentaires du pire cas de l’algorithme de validation est
clairement un polynôme de degré 2 en n.
5. T(n) polynôme de degré 2 en n donc T(n)=(n2) : l’algorithme de validation est bien
polynômial, et le problème P appartient donc à la classe NP.
Page 3 sur 3