1 Complexité D'algorithmes

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 3

INSA 3MIC IR Complexit

Correction

Complexit dalgorithmes

Question 1. Donnez une complexit de lalgorithme suivant.


Donne : un entier n
Dbut
total = 0;
Pour i de 1 n-1 faire
Pour j de i+1 n faire
total = total + 1;
Retourner total;
Fin

On suppose que lon a N donnes. Un algorithme examine chacune des donnes en temps
constant, en supprime une et recommence (examen des donnes et suppression) jusqu ce quil
ny ait plus de donnes. On note C(N ) le cot de cet algorithme pour N donnes.
Question 2. Exprimer C(N ) en fonction de N et C(N 1).
Question 3. Exprimer C(N ) en fonction N uniquement.
Question 4. Exprimer C(N ) en notation O.

Coloration de graphes

Nous avons vu en cours le problme de 3-COLORATION qui est NP-complet. Nous nous
intressons ici au problme de 2-COLORATION. Il sagit de savoir si un graphe peut tre colori
avec deux couleurs.
Question 5.
cision.

Donnez une formulation de 2-COLORATION sous la forme dun problme de d-

S OLUTION . Recopier le slide 37 en prenant soin de mettre le bon nombre de couleurs.

Question 6. Supposons que lon ne possde pas dalgorithme polynomial pour rpondre le problme 1 , montrez que 2-COLORATION est dans la classe NP par la mthode des certificats.
S OLUTION . Un certificat est une coloration des sommets. On peut le reprsenter par un tableau
C indic par les sommets tel que C[i] soit la couleur (1 ou 2) du sommet i.
La taille du certificat |V | est bien born polynomialement par la taille du problme qui est ici
la taille du graphe G soit |V | + |E|.
Pour lalgorithme de vrification, il faut prciser quil prend en paramtre une instance (ici un
graphe G) et le certificat C
boolean AlgoVerif(G = (V, E), C){
Pour chaque arte (s, d) dans E faire
Si C[s] == C[d] alors retourner FAUX
retourner VRAI
}

S OLUTION . Il reste montrer que lalgorithme est bien polynmial par rapport la taille de
la donne. Ici, il faut prciser comment est reprsenter le graphe car la complexit ne sera pas
la mme. Si on utilise une matrice dadjacence, on est en O(V 2 ), pour une liste dadjacence,
on est en O(E) (dans les faits il suffit den faire un seul). Dans les deux cas, on est bien born
polynomialement par la taille du graphe.

Rduction

le problme SET-COVER cherche couvrir un ensemble E dobjets en slectionnant un petit


nombre densembles parmi une collection M de sous-ensembles de E. Une couverture C de E
est un sous-ensemble C M tel que lunion des lments prsents dans les ensembles de C est
exactement E. Exemple :
E = {1, 2, 3, 4, 5, 6, 7}
M = {{1}, {1, 2, 4, 5}, {2, 3}, {6}, {3, 5, 6, 7}, {4, 7}}
C = {{1, 2, 4, 5}, {3, 5, 6, 7}}
Une formulation de SET-COVER est :
Donnes : E un ensemble, M un ensemble de sous-ensemble de E, k un entier.
Question : Existe-til une couverture C M de E avec |C| k ?

Une couverture dun graphe G = (V, E) est un sous-ensemble de sommets C V qui contient au
moins une extrmit de toute arte du graphe. Le problme VERTEX-COVER sexprime ainsi :
Donnes : G = (V, E) un ensemble, k un entier.
Question : Existe-til une couverture C V de G avec |C| k ?
1. Dans les faits, le problme de 2-COLORATION est dans P, une coloration valide utilisant deux couleurs peut
tre trouve en O(M ) par un algorithme bas sur le parcours en largeur.

Question 7. Sachant que VERTEX-COVER est NP-Complet, indiquer de faon prcise (sans
donner les dmonstrations) ce quil faut montrer pour prouver que SET-COVER est NP-Complet.
S OLUTION . Il faut montrer que SET-COVER est NP (par la mthode des certificats par exemple).
Puis il faut montrer que VERTEX-COVER se rduit polynmialement en SET-COVER. Pour
cela, il faut : i) proposer une rduction ; ii) montrer que la construction de linstance de SETCOVER est polynmiale ; iii) Montrer que la rduction est correcte : si linstance de VERTEXCOVER est positive linstance de SET-COVER obtenue par la rduction est positive

Dans la rduction, on fait correspondre une instance x =< G = (V, E), k > de VERTEX-COVER
une instance x0 =< E, M, k > de SET-COVER.
Question 8. Indiquez comment construire M partir de x. Indication : il faut faire correspondre
chaque sommet u de V un sous-ensemble dans M .
S OLUTION . A chaque sommet ui de V on fait correspondre un sous-ensemble Mi de M compos des artes adjacentes ui .

Question 9. Si C = {u1 , . . . , ui } est une couverture de G pour linstance x de VERTEXCOVER, donner une couverture de E pour lensemble x0 de SET-COVER.
S OLUTION . Le sous-ensemble C 0 de M compos de lensemble M1 correspondant u1 , ..., Mi
correspondant ui forme une couverture. Pour le montrer, soit a une arte de E. Comme C est
une couverture de G, a est forcment adjacente au moins un sommet uk de C. Par construction, larte a est donc dans C 0 dans lensemble Mk . Donc C 0 forme bien une couverture de
E.

Question 10. Montrer que si x est une instance positive de VERTEX-COVER alors x0 est une
instance positive de SET-COVER.
S OLUTION . Comme x est une instance positive de VERTEX-COVER, il existe un sous-ensemble
C de V qui couvre G tel que |C| k. Soit C 0 le sous-ensemble de M obtenu comme dans la
question 8. On a donc |C 0 | k. Dautre part, daprs la question 9, M 0 est une couverture de
E. On en dduit que linstance de SET-COVER obtenue par la rduction est positive.

Vous aimerez peut-être aussi