INF7440 — Conception et analyse des algorithmes Automne 2015
Devoir 3
(`a remettre au plus tard le 27 novembre, `a 16h00)
(dans la chute du d´epartement d’informatique, situ´ee au PK-4150)
Le devoir doit ˆetre r´edig´e individuellement et `a l’ordinateur. Vous devez justifier cha-
cune de vos r´eponses. La d´emarche ainsi que l’utilisation correcte de la notation math´ematique
seront ´evalu´ees. Tout retard entraˆınera une p´enalit´e de 20% par jour ouvrable.
Question 1 2 3 Total
Sur 40 70 40 150
Note
1. (40 points) Dans ce probl`eme, nous nous int´eressons au nombre minimal de processeurs
n´ecessaires pour traiter un ensemble de naches, o`u nest un nombre naturel. On
suppose qu’`a tout moment, un processeur ne peut jamais traiter plus d’une tˆache.
Une ache est repr´esent´ee par un couple de r´eels (d, f ), o`u dindique le temps auquel
d´ebute la tˆache et fle temps auquel elle se termine. Bien entendu, df. L’ensemble
de toutes les tˆaches est d´enot´e par T. On dit que deux tˆaches t= (d, f) et t0= (d0, f0)
se chevauchent s’il existe un nombre r´eel xtel que
d<x<f et d0< x < f0.
Soit ple nombre maximal de tˆaches dans Tqui se chevauchent simultan´ement, c’est-
`a-dire qu’il existe des tˆaches ti= (di, fi), pour i= 1,2, . . . , p et un nombre xtels que
di< x < fipour i= 1,2, . . . , p. Nous disons alors que pest la profondeur de l’ensemble
de tˆaches T.
Par exemple, si on a les tˆaches t1= (0,3), t2= (1,5), t3= (2,4) et t4= (4,6), alors
la profondeur de l’ensemble de ces quatre tˆaches est 3, puisque les tˆaches t1,t2et t3
se chevauchent en x= 2.5 et il n’existe aucun nombre pour lequel les quatre tˆaches se
chevauchent.
(a) (20 points) Donnez un algorithme glouton simple qui, ´etant donn´es un ensemble
de tˆaches Tet sa profondeur p, retourne une association (un mapping) indiquant,
pour chaque tˆache i= 1,2, . . . , n, le processeur parmi 1,2, . . . , p qui traitera la
ache. Indice : Il suffit d’abord de trier les tˆaches en ordre croissant de d´ebut de
traitement. Ensuite, en parcourant les tˆaches une par une, on assigne n’importe
quel processeur disponible pour traiter cette tˆache.
(b) (20 points) emontrez que l’algorithme donn´e en (a) fonctionne toujours. Plus
pr´ecis´ement, montrez qu’il existe toujours un processeur disponible `a chaque fois
qu’on l’assigne dans l’algorithme. Indice : Proc´edez par l’absurde, c’est-`a-dire
supposez qu’`a un moment donn´e, aucun processeur n’est disponible, et montrez
qu’il y a alors une contradiction.
1/3
INF7440 — Conception et analyse des algorithmes Automne 2015
2. (70 points) Soit wune chaˆıne de caract`eres. L’image miroir de w, not´ee ew, est la chaˆıne
de caract`eres obtenue de wen inversant l’ordre de ses lettres. Par exemple, g
algo =ogla.
On dit que west un palindrome si w=ew.
(a) (20 points) En utilisant la programmation dynamique, d´ecrivez un algorithme qui,
´etant donn´e une chaˆıne wde longueur n, retourne la longueur d’un plus long palin-
drome apparaissant dans w. Par exemple, si w=fr´en´esie, alors il retourne 3, qui
est la longueur du palindrome ´en´e. Votre algorithme doit avoir une complexit´e
O(n2). Indice : Pour 1 ijn, soit
P(i, j) = (vrai si w[i, j] est un palindrome;
faux sinon,
o`u w[i, j] est la sous-chaˆıne de wcommen¸cant `a l’indice iet terminant `a l’indice j
(inclusivement). Vous devez justifier que votre algorithme est correct et expliquer
pourquoi sa complexit´e est O(n2).
(b) (20 points) ´
Etendez l’algorithme pr´esene en (a) pour qu’il ´enum`ere tous les palin-
dromes maximaux. Il n’est pas n´ecessaire de faire une analyse de complexit´e dans
ce cas, mais l’efficacit´e de votre algorithme sera ´evalu´ee.
(c) (30 points) Donnez une impl´ementation des algorithmes pr´esenes en (a) et (b)
dans votre langage favori parmi C, C++, Java et Python. N’oubliez pas d’ajouter
des exemples d’entr´ees et de sorties qui montrent que votre algorithme fonctionne.
3. Soit G= (V, E) un graphe non orient´e et UVun sous-ensemble de sommets. On
dit que Uest un transversal de cycles de Gsi tout cycle cde Gpasse par au moins un
sommets de U. En d’autres termes, si on supprime les sommets Udu graphe G, alors
le r´esultat est un graphe acyclique (c’est-`a-dire sans cycle). On s’ineresse dans cette
question au probl`eme de d´ecider s’il existe un transversal de cycles de taille k, o`u kest
un entier positif.
(a) (10 points) Pour chacun des deux graphes suivants, donnez un transversal de cycles
de taille minimale. Justifiez bri`evement.
a0
a1
a2
a3a4
b0
b1
b2
b3b4
a0
a1
a2
a3a4
b0
b1
b2
b3
b4
b5
b6b7
b8
b9
c0
c1
c2
c3
c4
2/3
INF7440 — Conception et analyse des algorithmes Automne 2015
(b) (30 points) ´
Etant donn´es un graphe non oriene Get un entier positif k, d´emontrez
que le probl`eme de d´ecider s’il existe un transversal de cycles de cardinalit´e kdans
Gest un probl`eme NP-complet. Indice : Consid´erez une r´eduction du probl`eme de
d´ecider s’il existe une couverture des arˆetes par les sommets de taille kd’un graphe
G0au probl`eme de d´ecider s’il existe un transversal de cycles de taille kd’un graphe
G. En particulier, les arˆetes pour le probl`eme de la couverture peuvent ˆetre en
correspondance avec des cycles de longueur 3 pour le probl`eme du transversal de
cycles.
3/3
1 / 3 100%