Universit´e de Sherbrooke
IFT 436 - Algorithmes et structures de donn´ees
Devoir #3
Ces exercices sont `a remettre le mardi 23 juillet apr`es le cours.
Il est `a noter que 5% de la note pourra ˆetre d´eduit pour la pr´esentation du devoir.
Ces exercices doivent ˆetre faits en ´equipe d’au moins deux personnes (vous pouvez
utiliser les mˆemes groupes que le Devoir #1). Veuillez communiquer avec moi si
vous n’avez pas de co´equipier.
Ce devoir compte pour 10% de la note finale.
Pour ce devoir et concernant la description des algorithmes, donner juste une des-
cription concise pour chaque ´etape (pas de pseudo-code).
1 Conception des algorithmes (40 pts)
Exercice 1 (10 pts)
Soit une matrice carr´ee contenant n×nnombres. Chaque ligne et chaque colonne est tri´ee en ordre
croissant, comme illustr´e dans l’exemple suivant (n= 3) :
1 2 30
16 21 31
17 22 33
D´ecrivez un algorithme qui d´etermine si un nombre xest dans la matrice en O(n).
Donner en fonction de Θ l’ordre asymptotique exacte du temps d’ex´ecution de votre algorithme ?
Exercice 2 (10 pts)
´
Elaborer un algorithme vorace optimale qui trouve le temps minimum requis afin de servir un
groupe de nclients. Chaque client n´ecessite un certain temps t(i)Nafin d’ˆetre servi. Vous pouvez
servir les clients dans n’importe quel ordre. Il est `a noter que lorsque vous servez un client, les autres
attendent. Ainsi, le temps total d’attente pour un ordonnancement particulier de nclients est :
n1
X
i=1
(ni)×t(i)
Expliquer de quelle mani`ere cet algorithme exhibe la propri´et´e du choix vorace .
Quel est l’ordre asymptotique du temps d’ex´ecution de votre algorithme ?
1
1.1 Le probl`eme du sac `a dos
Exercice 3 ( 10 pts)
Trouvez la valeur de la solution optimale pour un sac de capacit´e 11, `a l’aide de la programmation
dynamique au probl`eme du sac `a dos suivant :
Item Valeur Poids
1 1 1
2 6 2
3 18 5
4 22 6
5 28 7
Donner les objets composant cette solution.
Exercice 4 ( 10 pts)
Supposant dans une variante du probl`eme du sac `a dos 0-1, l’ordre des articles quand ils sont tri´es
par poids croissants, soit le mˆeme que lorsqu’ils sont tri´es par valeur d´ecroissantes, comme illustr´e
dans l’exemple suivant :
Item Valeur Poids
1 28 1
2 22 2
3 18 5
4 6 6
5 1 7
D´ecriver un algorithme efficace pour trouver une solution optimale `a cette variante du probl`eme du
sac `a dos.
2
2 Tri (60 pts)
Exercice 5 ( 10 pts)
Soit S, un ensemble contenant nnombres r´eels et xun nombre r´eel.
D´ecrivez un algorithme qui d´etermine s’il y a deux ´el´ements de Sdont la somme est exactement
x(Le temps d’ex´ecution de l’algorithme doit ˆetre de l’ordre de O(n lg n)).
Supposons maintenant que l’ensemble Sest tri´e. D´ecrivez un algorithme qui solutionne le mˆeme
probl`eme en temps O(n).
2.1 Tri par Tas
Exercice 6 ( 10 pts)
En s’aidant de la figure, illustrer l’action du Tri Par Tas sur le tableau suivant h5,13,2,25,7,17,20,8,4i.
La s´equence suivante est-elle un Tas-max h23,17,14,6,13,10,1,5,7,12i? Pourquoi ?
Exercice 7 ( 10 pts)
Que faut-il changer `a l’algorithme Entasser-Max afin que celui-ci devienne Entasser-Min(A, i),
3
un algorithme qui effectue la mˆeme manipulation mais sur une Tas-min 1. Comparer le temps
d’ex´ecution de Entasser-Max `a Entasser-Min.
Quel est le temps d’ex´ecution l’algorithme du Tri par Tas sur un tableau de taille ndont tous les
´el´ements sont d´ej`a tri´es en ordre croissant ?
2.2 Tri-Rapide
Exercice 8 ( 10 pts)
Comment devez-vous modifier l’algorithme du Tri Rapide pour qu’il tri en ordre d´ecroissant ?
Quel est le temps d’ex´ecution du Tri Rapide lorsque tous les ´el´ements `a trier ont la mˆeme valeur.
Exercice 9 (10 pts)
On suppose que les d´ecoupages (Partitionnements)`a chaque niveau du tri rapide se font `a 1 α
contre α, o`u αest une constante et 0 < α 1/2.
Montrer que la profondeur minimale d’une feuille de l’arbre r´ecursif est lgn/lgα et la profondeur
maximale est de lgn/lg(1 α)
2.3 Tri en temps lin´eaire
Exercice 10 ( 10 pts)
Donnez une analyse d´etaill´ee du temps d’ex´ecution du Tri-par base
1. La propri´et´e d’un Tas-min est que pour chaque noeud iautre que la racine A[par(i)] T[i]
4
1 / 4 100%