INF7341 — Structures de donn´ees Hiver 2017
Devoir 3
(`a remettre au plus tard le 10 avril, `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 (incluant les jours de
la fin de semaine).
Question 1 2 Total
Sur 80 20 100
Note
1. (80 points) En 1972, Tarjan a propos´e un algorithme permettant de calculer les com-
posantes fortement connexes d’un graphe orient´e en temps lin´eaire, en une seule passe du
graphe (voir l’entr´ee Wikipedia sur le sujet). Dans cette question, nous nous int´eressons
`a modifier l’impl´ementation de son algorithme pour qu’il retourne l’ensemble des com-
posantes fortement connexes sous forme d’ensembles disjoints plutˆot que de simplement
afficher le contenu des composantes, comme c’est typiquement pr´esent´e.
(a) (20 points) Donnez le pseudocode de l’algorithme de Tarjan pour que celui-ci re-
tourne des ensembles disjoints des sommets appartenant `a chacune des composantes
fortement connexes d’un graphe orient´e quelconque G.
(b) En utilisant votre langage de programmation pr´ef´er´e parmi C, C++, Java et Python,
impl´ementez votre algorithme. Contraintes : Vous n’avez pas le droit d’utiliser de
biblioth`eques de graphes ou d’ensembles disjoints. De plus, la structure de donn´ees
d’ensembles disjoints doit ˆetre impl´ement´ee telle que vue classe, c’est-`a-dire que
la fusion doit se faire par rang et le calcul d’un repr´esentant par compression de
chemin. La r´epartition des points se fera comme suit :
i. (20 points) Structure d’ensembles disjoints;
ii. (20 points) Structure de graphe orient´e;
iii. (20 points) Algorithme de Tarjan.
Proposez votre propre impl´ementation `a partir du pseudocode, sans recopier une autre
impl´ementation que vous pourriez trouver en ligne. Dans tous les cas, soyez bien prudents
de citer toutes vos sources si vous vous basez fortement sur une d’entre elles.
2. (20 points) Soit Fune file binomiale. Pour chacun des deux ´enonc´es suivants, indiquez
s’il est vrai ou faux. Appuyez votre r´eponse `a l’aide d’une courte d´emonstration.
(a) (10 points) Si Fest initialement vide et qu’on y ins`ere n´el´ements quelconques,
alors le coˆut total des insertions est O(n).
1/2
INF7341 — Structures de donn´ees Hiver 2017
(b) (10 points) Si Fcontient n´el´ements et qu’on effectue mextractions du minimum,
o`u mn, alors le coˆut total des extractions est O(m).
2/2
1 / 2 100%