Cours conception et analyse d’algorithmes
Correction du TD 5
1. N P-complétude de RECOUVREMENT PAR SOMMETS et de HITTING-SET
Le problème RECOUVREMENT PAR SOMMETS est clairement dans NP : il y a O(n2)
arêtes et on peut donc vérifier en temps polynomial qu’un ensemble donné de sommets recouvre
toutes les arêtes
Soit (G= (V, E), k)une instance de STABLE. La question RECOUVREMENT PAR
SOMMETS(G, nk)est vraie si et seulement s’il existe un sous ensemble V0de Vde cardinal
au plus nktel que pour tout (x, y)E,xou yappartient à V. Si un tel ensemble existe, le
complémentaire Wde V0dans Vest un ensemble stable de cardinal au moins k. En effet, s’il
existe une arête de Eayant ses deux extrémités dans Walors elle n’était pas couverte par V0.
La réduction étant manifestement polynomiale, on en déduit que RECOUVREMENT PAR
SOMMETS est NP-complet
Soit (G= (V, E), k)une instance de RECOUVREMENT-PAR-SOMMETS (le graphe
Gest non orienté). Posons S=X,C=E. La question HITTING-SET(S, C, k) est vraie
si et seulement s’il existe S0S,|S0| ≤ k, tel que xE, x ={u, v}on a uS0ou
vS0, ce qui est exactement RECOUVREMENT-PAR-SOMMETS(G, k). On a donc réduit
RECOUVREMENT-PAR-SOMMETS à HITTING-SET.
Comme ce dernier est manifestement dans N P(la donnée de S0constitue un certificat
de taille |S0|≤|S|, donc polynomiale, qui se vérifie en énumérant les ensembles de Cet en
parcourant S0pour chaque élément, soit en temps O(taille(C)|S0|)), il est donc bien N P-
complet.
2. Le problème du voyageur de commerce
i. Rappelons que l’arbre couvrant minimal est construit en triant les arêtes par poids
croissant, et en ajoutant, dans l’ordre, les arêtes qui peuvent l’être sans créer un cycle.
Pour savoir si une arête crée un cycle avec les arêtes de la forêt déjà construite, il faut
déterminer si ses deux extrémités sont dans le même arbre de cette forêt. On doit donc dispo-
ser d’une structure sur les sommets permettant de faire une requête rapide d’identification de
l’arbre d’appartenance. En utilisant une structure Union-Find pour lequel une requête d’iden-
tification est en O(log(n)) et l’union en temps O(1), le test d’une arête coûte alors un temps
total O(log n), soit un temps total pour la construction de l’arbre en O(n2log n), qui est du
même ordre que le coût du tri des arêtes.
ii. Si l’on enlève une arête d’une tournée optimale, on obtient un arbre (puisqu’on enlève
le cycle présent) couvrant, de coût inférieur au coût de la tournée, et supérieur au coût d’un
arbre recouvrant minimal. Il s’ensuit que c(H)c(T).
iii. Le parcours complet revient à décrire exactement deux fois chacune des arêtes rencon-
trées dans le parcours en profondeur. Il s’ensuit facilement que c(W)=2c(T)2c(H).
Si l’on considère le parcours complet et que l’on supprime toutes les occurrences de chaque
sommet, sauf la première, on obtient exactement le parcours en profondeur de l’arbre. Cette
suppression revient à remplacer le chemin abcpar ac, et d’après l’inégalité
1
triangulaire, ne rallonge donc pas la tournée. Il s’ensuit que c(H)c(W)2c(H). On
dispose donc d’un algorithme d’approximation à un facteur 2 pour le problème du voyageur
de commerce avec inégalité triangulaire.
iv. Considérons le graphe à nsommets numérotés de 1àn, et dont le poids des arêtes est
donné par :
w(1, i)=1pour tout i2;
w(i, i + 1) = 2 pour tout 2in1;
w(i, j) = 1 + ηsinon.
L’arbre couvrant minimal est alors constitué des arêtes (1, i)pour tout i. Le chemin obtenu
consiste alors, si l’on suppose que le parcours en profondeur énumère les sous-arbres par racine
d’étiquette croissante, à parcourir les sommets dans l’ordre de leur numéro ; le coût total est
alors 1 + 2(n2) + 1 = 2n2.
Le parcours 1,2,4,6,...,2bn/2c3,5,7, . . . 2dn/2e1,1est quant à lui de longueur 2+(n
2)(1+η) = n+(n2)η. Le facteur d’approximation vaut donc 2(2+2(n2)η)/(n+(n2)η),
ce qui, en choisissant bien η, peut être rendu arbitrairement proche de 2.
3. Recouvrement d’ensembles et de mots
I. Recouvrement par ensembles est N P-complet.
La version de décision du problème Recouvrement par ensembles prend comme don-
nées un ensemble fini E, une famille Sde sous-ensembles de E, une function poids w:S 7→ Net
un entier Wet réponds à la question existe-t-il un ensemble J⊆ {1, . . . , n}tel que jJSj=E
et PjJw(Sj)W?
Recouvrement d’ensemble est un problème dans N Ppuisque étant donnée une solu-
tion Jil est facile de calculer en temps polynomial l’union jJSjen temps polynomial (pour
le comparer à E) et la somme PjJw(Sj)(pour le comparer à W).
On réduit Recouvrement par sommets àRecouvrement d’ensemble comme suit.
Supposons donné un graphe G= (V, E)et un entier k. On considère la famille S={Sv}vV,
Svest l’ensemble des arêtes incidente au sommet v. On choisi un poids w(Sv) = 1 pour tout
sommet v. Avec ces notations, un ensemble XVest un ensemble de sommets recouvrant
du graphe Gsi et seulement si vXSx=E. De plus, le cardinal de Xest égal à son poids
w(X) = PvXw(Sv). Donc recouvrement par sommet(G= (V, E), k)donne la même
réponse que recouvrement par ensemble(E, S, w, k).
Puisque Recouvrement par sommets est N P-complet et que la réduction proposée
est polynomiale, Recouvrement d’ensemble est aussi N P-complet.
II Algorithme approché glouton.
1. Soit J={j1, . . . , jp}un recouvrement optimal. On a
W0=X
jJ
w(Sj) = X
jJ
w(Sj)
|Sj|× |Sj| ≥ min
jJ(w(Sj)
|Sj|)×X
jJ
|Sj| ≥ min
jJ(w(Sj)
|Sj|)×n.
Donc W0
nmin
jJ(w(Sj)
|Sj|).
A l’étape 1, l’algorithme glouton choisit T1tel que c(T1) = w(T1)
|T1|soit minimum. Comme
ce minimum est inférieur ou égal à W0
n, on obtient bien w(T1)
|T1|W0
n.
2
2. A l’étape ion peut restreindre le problème à F=E\F, considérer les sous-ensembles
S0
i=Si\Fet supposer que l’on est au début de l’algorithme. L’optimal pour ce problème est
W0
0W0et par la question précédente on obtient c(Ti)W0
0
|F|et par suite c(Ti)W0
nj+ 1.
3. Le poids de la solution obtenue par l’algorithme glouton est W=Pk
i=1 w(Ti). Si l’ensemble
Ticontient les éléments xjpour j=αi, αi+ 1, . . . , βi, alors la question précédente montre
que c(Ti) = w(Ti)
βiαiW0
nαi+1 . Donc w(Ti)W0βiαi
nαi+1 W0Pβi
j=αi
1
nj+1 . Par conséquent
W
W0Pk
i=1 Pβi
j=αi
1
nj+1 =Hn. L’algorithme est donc Hnapproché.
4. On peut prendre comme poids w(Si) = 1/i pour i= 1, . . . , n et w(Sn+1) = (1 + ε).
L’algorithme choisit alors Snpuis Sn1et ainsi de suite jusqu’à S1obtenant un poids Hn.
La solution optimale est obtenu en prenant Sn+1 qui a poids ((1 + ε)/n). Noter que l’énoncé
imposait des poids entiers, il convient donc de multiplier tous les poids par n!pour satisfaire
cette condition.
III. Recouvrement de mots.
1. Le mot σ12kest abkcet le foptimal est abk+1c.
2. L’algorithme à égalité de longueur de chevauchements pour l’exemple précédent peut choisir
σ12kqui donne un ensemble S={abkc, bk+1}composé de deux mots qui n’ont qu’un 0-
chevauchement d’où la solution obtenue abkcbk+1. Cette solution est de longueur 2k+ 3 alors
que la solution optimale est de longueur k+ 2. Le facteur d’approximation est supérieur ou
égal à 2k+3
k+2 qui aussi proche que l’on veut de 2.
3. Il suffit de prendre pour fla concaténation des mots θ1, θ2,...θp. Comme les Sθirecouvrent
S, tout fjest élément d’un des Sθi, donc facteur du θicorrespondant. Le poids W0de la solution
optimale au problème Qest égal à la somme des longueurs des mots θi, qui est exactement la
longueur de f.
4. Soit k∈ {1, . . . , n}. On va montrer que fkest dans un des sous-ensemble Sπi. Si kest égal
à l’un des biou des eialors c’est clairement le cas, sinon puisque 1 = b1< e1< b2< e2<
· · · < bt< et=net que bi=ei1+ 1, il existe un indice itel que bi< k < ei. Donc, le facteur
fkcommence après fbiet avant fei. Comme on suppose que les fine sont pas facteurs les uns
des autres, le facteur fktermine avant fbi. Donc fkest contenu dans le sous mot πi=σbieiki
et il appartient à l’ensemble Sπi. Les Sπiconstituent donc un recouvrement de S.
5. Soit i∈ {1, . . . , t 2}. Par définition, le facteur fbi+1 commence après feidans le mot f
(car bi+1 > ei) donc fbi+1 termine après fei(car fbi+1 n’est pas facteur de fei). D’autre part,
fbi+1 termine avant que fbi+2 ne commence. Donc feitermine avant que fbi+2 ne commence.
Donc πiet πi+2 ne s’intersectent pas.
On en déduit que X
ipair
l(πi)l(f)et X
iimpair
l(πi)l(f). Donc X
i
l(π)2l(f).
6. On considère l’algorithme qui remplace le problème Psur les mots par le problème Q
correspondant sur les ensembles, puis qui résout Qpar l’algorithme glouton de la partie II,
enfin qui concatène les mots ucorrespondants aux Sude la solution trouvée.
D’après les questions II.3,II.4,II.5, on sait que s’il existe une solution de poids lpour le
problème Pde recouvrement de mots, alors il existe aussi une solution de poids au plus 2l
obtenu en passant le problème Qcorrespondant. On obtient une solution de poids au plus
2lHnen utilisant un algorithme glouton pour résoudre le problème P. Notre algorithme est
donc 2Hnapproché.
3
1 / 3 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !