1 Conception des algorithmes (40 pts)

publicité
Université de Sherbrooke
IFT 436 - Algorithmes et structures de données
Devoir #3
Ces exercices sont à remettre le mardi 23 juillet après le cours.
• Il est à noter que 5% de la note pourra être déduit pour la présentation du devoir.
• Ces exercices doivent être faits en équipe d’au moins deux personnes (vous pouvez
utiliser les mêmes groupes que le Devoir #1). Veuillez communiquer avec moi si
vous n’avez pas de coéquipier.
• Ce devoir compte pour 10% de la note finale.
• Pour ce devoir et concernant la description des algorithmes, donner juste une description concise pour chaque étape (pas de pseudo-code).
1
Conception des algorithmes (40 pts)
Exercice 1 (10 pts)
Soit une matrice carrée contenant n × n nombres. Chaque ligne et chaque colonne est triée en ordre
croissant, comme illustré dans l’exemple suivant (n = 3) :
1 2 30
16 21 31
17 22 33
– Décrivez un algorithme qui détermine si un nombre x est dans la matrice en O(n).
– Donner en fonction de Θ l’ordre asymptotique exacte du temps d’exécution de votre algorithme ?
Exercice 2 (10 pts)
Élaborer un algorithme vorace optimale qui trouve le temps minimum requis afin de servir un
groupe de n clients. Chaque client nécessite un certain temps t(i) ∈ N afin d’être servi. Vous pouvez
servir les clients dans n’importe quel ordre. Il est à noter que lorsque vous servez un client, les autres
attendent. Ainsi, le temps total d’attente pour un ordonnancement particulier de n clients est :
n−1
X
(n − i) × t(i)
i=1
Expliquer de quelle manière cet algorithme exhibe la propriété du choix vorace .
Quel est l’ordre asymptotique du temps d’exécution de votre algorithme ?
1
1.1
Le problème du sac à dos
Exercice 3 ( 10 pts)
– Trouvez la valeur de la solution optimale pour un sac de capacité 11, à l’aide de la programmation
dynamique au problème du sac à 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ème du sac à dos 0-1, l’ordre des articles quand ils sont triés
par poids croissants, soit le même que lorsqu’ils sont triés par valeur décroissantes, comme illustré
dans l’exemple suivant :
Item Valeur Poids
1
28
1
2
22
2
3
18
5
4
6
6
5
1
7
Décriver un algorithme efficace pour trouver une solution optimale à cette variante du problème du
sac à dos.
2
2
Tri (60 pts)
Exercice 5 ( 10 pts)
Soit S, un ensemble contenant n nombres réels et x un nombre réel.
– Décrivez un algorithme qui détermine s’il y a deux éléments de S dont la somme est exactement
x (Le temps d’exécution de l’algorithme doit être de l’ordre de O(n lg n)).
– Supposons maintenant que l’ensemble S est trié. Décrivez un algorithme qui solutionne le même
problème 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équence 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 à l’algorithme Entasser-Max afin que celui-ci devienne Entasser-Min(A, i),
3
un algorithme qui effectue la même manipulation mais sur une Tas-min 1 . Comparer le temps
d’exécution de Entasser-Max à Entasser-Min.
– Quel est le temps d’exécution l’algorithme du Tri par Tas sur un tableau de taille n dont tous les
éléments sont déjà triés 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écroissant ?
– Quel est le temps d’exécution du Tri Rapide lorsque tous les éléments à trier ont la même valeur.
Exercice 9 (10 pts)
On suppose que les découpages (Partitionnements)à chaque niveau du tri rapide se font à 1 − α
contre α, où α est une constante et 0 < α ≤ 1/2.
Montrer que la profondeur minimale d’une feuille de l’arbre récursif est −lgn/lgα et la profondeur
maximale est de −lgn/lg(1 − α)
2.3
Tri en temps linéaire
Exercice 10 ( 10 pts)
– Donnez une analyse détaillée du temps d’exécution du Tri-par base
1. La propriété d’un Tas-min est que pour chaque noeud i autre que la racine A[par(i)] ≤ T [i]
4
Téléchargement