Title: CSI 3505 Algorithmes Voraces
1CSI 3505Algorithmes Voraces
- Algorithmes voraces pour l'ordonnancement des
(tâche) travaux problème de minimisation de
l'attente
n clients Un seul serveur
ti temps que prendra le client i (connu
a-priori)
On veut minimiser la somme totale des attentes
des clients
2CSI 3505Algorithmes Voraces
Il y a 6 ordres possibles 123 5 (5 10)
(5 10 3) 38 132 5 (5 3) (5
3 10) 31 213 10 (10 5) (10 5
3) 43 231 10 (10 3) ( 10 3 5)
41 312 3 (3 5) (3 5 10) 29 321
3 (3 10) ( 3 10 5 ) 34
t1 5 t2 10 t3 3
Algorithme voraceA chaque étape, ajouter à la
fin de la liste le client demandant le moins de
service entre tous ceux qui restent.
3CSI 3505Algorithmes Voraces
- Théorème. L'algorithme vorace donne toujours la
solution optimale. - Preuve.
- Soit I (i1,i2,,in) une permutation quelconque
des - entiers 1,2, , n. Si les clients sont servis
dans l'ordre I, - le temps total que tous les clients passent dans
le système - T(I) ti1 (ti1 ti2 ) (ti1 ti2 ti3
) .. -
4CSI 3505Algorithmes Voraces
- Supposons que dans cet ordre
- I 1 2 .... a ... b . n
- On a a lt b et tia gt tib
Si on inverse les positions de ces deux clients
I 1 2 .... b ... a . n
ti1 ti2 .... tib ... tia . tin
5CSI 3505Algorithmes Voraces
- Comparons les deux ordres
T(I) - T(I') (n - a 1) (tia- tib) (n - b
1) (tib - tia) (b-a) (tia- tib) gt 0
Donc lordre I dexécution des tâches est
meilleur que I
6CSI 3505Algorithmes Voraces
- Conclusion Lalgorithme vorace donne toujours
une solution optimale. - Une solution qui nest pas construite avec une
méthode vorace ne peut être optimale.
7CSI 3505Algorithmes Voraces
- Ordonnancement avec échéances
- n tâches a exécuter - chacune en temps unitaire
- une et une seule tâche est exécuter a chaque
instant - t 1, 2 .
- La tâche i apporte un gain gi gt 0 si et seulement
si elle est exécutée au plus tard a l'instant di
On nest pas obligé dexécuter toutes les tâches
Exemple n 4
i 1 2 3 4 gi 50 10 15 30 di 2 1 2 1
8CSI 3505Algorithmes Voraces
- Il y des séquences qui ne donne aucun gain 0
les autres ..
Séq. possibles gain 1 50 2 10 3 15 4
30 1,3 65 2,1 60 2,3 25 3,1 65 4,1 80
4,3 45
i 1 2 3 4 gi 50 10 15 30 di 2 1 2 1
Les séquences 1 et 1, 2, 3 correspondent au même
gain. Il ny a que la tâche 1 qui donne un gain.
9CSI 3505Algorithmes Voraces
- Ensemble de tâche T est réalisable sil existe au
moins un ordre des tâche de T (séquence
réalisable) et qui permet d'exécuter toutes les
tâches de l'ensemble T avant leur échéances - Un ensemble de tâche T est réalisable si est
seulement si la séquence croissante des tâches de
T triées par leurs temps déchéance est
réalisable
10CSI 3505Algorithmes Voraces
- Supposons que S est réalisable suivant lordre
- t1 t2 ti tj tk
- Et que d(tj) lt d(ti), en échangeant ti et tj dans
lordre S, on obtient un ordre réalisable - t1 t2 tj ti tk
- En utilisant dune façon répétitive ces échanges
on arrive aux mêmes tâches dans lordre
croissant, et qui est aussi réalisable. - Linverse est évidemment vrai.
11CSI 3505Algorithmes Voraces
- Conséquence
- Comment savoir si un ensemble de tâches est
réalisable? - Il suffit de tester les tâches dans un seul
ordre lordre croissant des tâches de T triées
par leurs temps déchéance
12CSI 3505Algorithmes Voraces
- Algorithme vorace
- Construire l'ensemble des tâches à exécuter
étape par étape, - Ajouter, a chaque étape, la tâche non encore
considérée ayant la plus grande valeur de gi a
condition que le nouveau ensemble de tâches soit
réalisable. - Combien détapes? n-1
13CSI 3505Algorithmes Voraces
- trier lensemble des tâches T en ordre
décroissant relativement au gain - S ?
- répéter
- Choisir la tâche e ?T avec le gain le plus
grand - T T - e
- Si S ? e est réalisable
- S S ? e
- jusqu'a ce que T est vide
14CSI 3505Algorithmes Voraces
- Complexité - Cas Pire
- taille du problème n, le nombre de tâches
- opération comparaisons
- Trier les tâches O(n log n)
- A chaque pas
- (i-1) comparaisons pour ajouter la i-ème tâche
- i comparaisons pour vérifier si l'ensemble est
réalisable