approche vorace - Département d`informatique et de génie logiciel

Analyse d’Algorithmes 2001
Ch. 6 - APPROCHE VORACE 1
CHAPITRE 6
APPROCHE VORACE
1 Introduction à l’approche vorace (6.1 et 6.2)
Constituants d’une approche vorace
Structure générale d’une approche vorace
Caractéristiques de l’approche vorace
Exemple: Rendre la monnaie
2 Algorithmes voraces sur les graphes (6.3 et 6.4)
2.1 Arbres recouvrants minimaux: Kruskal et Prim. (6.3)
2.2 Plus courts chemins: Dijkstra. (6.4)
Problème du sac alpin (exercice 1 ou 6.5)
3 Ordonnancement de travaux (6.6)
3.1 Minimisation de l’attente (6.6.1)
3.2 Ordonnancement avec échéances (6.6.2)
4 Heuristiques voraces (13.1)
4.1 Coloration d’un graphe (13.1.1)
4.2 Le commis voyageur (13.1.2)
2 Ch. 6 - APPROCHE VORACE ©2001
R. Lelouche
1 INTRODUCTION
À L’APPROCHE VORACE
Constituants d’une approche vorace
1. Un ensemble de candidats disponibles
(initial ou courant)
Une liste de candidat(e)s désirant se présenter comme
représentants du PR (Parti Responsable).
Il existe un(e) ou plusieurs candidats(es) possibles pour chaque comté, et
chaque candidat postule un ou plusieurs comtés.
2. Un ensemble
(courant)
de candidats déjà choisis
Au cours du processus de nomination, certains candidats
ont déjà été choisis comme représentants.
Les autres soit sont encore disponibles, soit ont été éliminés.
3. Un test de solution
(finale du problème)
Pour chaque comté, un candidat a été choisi comme
représentant, de manière à maximiser la qualité globale
(les chances de succès du PR).
4. Un test de réalisabilité
= Il est toujours possible de construire une solution
Pour chaque comté, au plus un candidat a été choisi
comme représentant.
5. Une fonction de sélection
du candidat le plus prometteur
Une fonction qui permet au Chef de parti de choisir
comme représentant le candidat le plus prometteur pour
le parti, en autant qu’il n’a pas été choisi auparavant.
6. Une fonction objective
(= valeur de la solution)
C’est cette fonction qu’il faut optimiser.
Fonction de mesure globale de la qualité des candidats
choisis comme représentants.
Analyse d’Algorithmes 2001
Ch. 6 - APPROCHE VORACE 3
1 INTRODUCTION À L’APPROCHE VORACE:
Structure générale d’une approche vorace
FONCTION VORACE (C: ensemble): ensemble;
Exemple: Choisir dans l’ensemble C de candidats disponibles un candidat
par comté, de manière à optimiser la valeur de la fonction objective.
S Ø;
Initialement, l’ensemble des candidats sélectionnés est vide.
TANT QUE ¬ Solution (S) ET C Ø FAIRE
Tant que les comtés ne sont pas tous pourvus et qu’il reste des candidats,
x élément de C maximisant
Sélect (x)
Sélectionner le meilleur candidat restant
C C – {x}
L’enlever de l’ensemble des candidats disponibles
SI Réalisable (S {x}) ALORS
Si le comté visé par ce candidat n’est pas comblé
S S {x}
le candidat est choisi sans remise en question
(sinon il est définitivement rejeté)
FIN TANT QUE.
SI Solution (S) tous les comtés sont pourvus ALORS Retourner S
les candidats correspondants
SINON Retourner “pas de solution”.
certains comtés n’ont pas de candidats.
FIN Vorace.
Note: L’APPROCHE PEUT NE PAS DONNER
UNE SOLUTION OPTIMALE, NI MÊME UNE SOLUTION.
4 Ch. 6 - APPROCHE VORACE ©2001
R. Lelouche
1 INTRODUCTION
à l’approche vorace (suite)
Caractéristiques de l’approche vorace
Le meilleur morceau à chaque étape.
Pas de retour arrière: sélection et/ou rejet sont définitifs.
Fonctionnement correct ou non selon le cas.
Fonctionnement correct
Définition:
Fournit toujours une solution optimale.
(sinon, il s’agit d’une heuristique et non d’un algorithme)
Exemple: rendre la monnaie (cf. livre section 6.1)
Définir les constituants.
Expliciter et faire tourner l’approche.
Prouver que l’approche fonctionne correctement:
c’est donc un algorithme (exercice 2, anc. problème 3.1.1).
Si on ajoute des pièces de 12 cents (exercice 2 b):
- l’approche ne fonctionne plus correctement.
Si toutes les pièces ne sont pas disponibles:
- l’approche peut même ne pas trouver de solution
(alors qu’il en existe une!)
Analyse d’Algorithmes 2001
Ch. 6 - APPROCHE VORACE 5
2 ALGORITHMES VORACES SUR LES GRAPHES
2.1 Arbres sous-tendants (ou recouvrants) minimaux
Énoncé du problème
Soient G = <N, A> un graphe connexe non orienté,
N l’ensemble des sommets,
A l’ensemble des arêtes,
c
a
0 le coût associé à chaque arête
a
A.
Il s’agit de déterminer T A, tel que:
<N, T> soit un graphe connexe,
a
T
c
a
soit minimale.
Il sera appelé un
arbre sous-tendant minimal.
Théorème (ancien problème 3.2.1):
<N, T> est un arbre.
Preuve: Un arbre est un graphe connexe sans cycle.
1º <N, T> est certainement connexe.
2º Supposons maintenant que <N, T> contienne un cycle. On
pourrait alors enlever une arête quelconque du cycle, diminuant
ainsi le coût total sans perdre la connexité, d’où contradiction.
Applications
Application 1:
N = un ensemble de villes,
A = un ensemble de routes possibles à construire de ville à
ville,
•c
a
= le coût de construction de la route
a
,
objectif = construction d’un réseau routier reliant toutes les
villes à coût minimal.
Application 2:
N = un ensemble de nœuds de calcul,
A = un ensemble de câbles de communication pouvant relier
ces nœuds de calcul,
•c
a
= le coût de construction du câble
a
, ou la distance entre
les 2 nœuds de calcul associés à l’arête
a
,
objectif = construction d’un réseau informatique à coût
minimal (sans connexions autres que sur les nœuds).
Application 3:
Les tunnels de l’Université Laval.
6 Ch. 6 - APPROCHE VORACE ©2001
R. Lelouche
Arbres sous-tendants minimaux
(suite)
DÉFINITIONS
Solution:
ensemble d’arêtes T tel que <N, T> soit un arbre sous-tendant.
Ensemble réalisable:
un ensemble d’arêtes ne contenant aucun cycle.
Ensemble réalisable prometteur:
un ensemble réalisable qui peut
être complété pour former une solution réalisable optimale.
Une arête
quitte
un ensemble de sommets
si une de ses deux extrémités est dans cet ensemble et l’autre pas.
Lemme de l’augmentation d’un ensemble prometteur
Lemme 6.3.1 (propriété 3.2.1 de l’ancien livre)
Soit G = <N,A> un graphe connexe non orienté, avec une
longueur associée à chaque arête. Soit B N un sous-
ensemble strict des sommets de G. Soit T A un
ensemble prometteur d’arêtes tel qu’aucune arête de T ne
quitte B. Soit e une arête de longueur minimale parmi celles
qui quittent B. Alors T {
e
} est prometteur.
N–B
e’
e”
e
B
Arêtes rejoignant B
(non vide)
L’arête
e
est ajoutée à T et le sommet de B appartenant à
e
est enlevé de B.
Note:
Dans l’algo de Prim, les arêtes de T sont toutes dans N–B, qui comprend donc exactement les
sommets de N déjà connectés. Dans l’algo de Kruskall, la définition de B et N–B change à chaque nouvelle
arête, et les arêtes de T sont en partie dans B, en partie dans N–B.
Analyse d’Algorithmes 2001
Ch. 6 - APPROCHE VORACE 7
Algorithme de Kruskal
PRINCIPE
À chaque itération, on ajoute la plus petite arête parmi
celles qui ne créent pas de cycle, quelle que soit sa localisation
EXEMPLE
123
45 6
7
12
6
3
54
8
6
74 3
4
a) Tri des arêtes en ordre de longueurs croissantes
(1,2), (2,3), (4,5), (6,7), (1,4), (2,5), (4,7), (3,5), (2,4), (3,6), (5,7), (5,6).
b) Arête ajoutée Composantes connexes associées
(Initialisation) {1}, {2}, {3}, {4}, {5}, {6}, {7}
(1,2) {1,2}, {3}, {4}, {5}, {6}, {7}
(2,3) {1,2,3}, {4}, {5}, {6}, {7}
(4,5) {1,2,3}, {4,5}, {6}, {7}
(6,7) {1,2,3}, {4,5}, {6,7}
(1,4) {1,2,3,4,5}, {6,7}
(2,5) (refusée)
(4,7) {1,2,3,4,5,6,7}.
8 Ch. 6 - APPROCHE VORACE ©2001
R. Lelouche
Algorithme de Kruskal (
suite)
FONCTIONNEMENT
Théorème 6.3.2, p. 193 sq. (ancien problème 3.2.2)
L’algorithme de Kruskal fonctionne correctement
Preuve
Il est clair que les arêtes retenues à la fin forment un graphe connexe et sans
cycle, donc un arbre sous-tendant. Il suffit de montrer qu’il est à coût minimal,
c’est-à-dire qu’à chaque étape, incluant la dernière, les arêtes retenues
forment un ensemble prometteur.
Base
C’est vrai pour l’état initial (il n’y a aucune arête, et l’ensemble vide est
trivialement prometteur).
Induction
Hypothèse d’induction:
Supposons que c’est vrai pour
k
–1 arêtes, c’est-à-dire
que les
k
–1 premières arêtes forment un ensemble prometteur.
Soit
e
= (
u
,
v
) la
k
e arête choisie. Soit B l’ensemble des sommets reliés à
u
avant l’ajout de
e
. Avant l’ajout de
e
, B est inclus strictement dans N car
v
n'appartient à B. De plus, aucune arête ne quitte B (ne relie B à N–B). Enfin,
e
est de longueur minimale parmi les arêtes qui quittent B. Donc, le lemme
de l’augmentation d’un ensemble prometteur peut s’appliquer, et par suite
l’ensemble des arêtes retenues après l’ajout de
e
est prometteur.
Lorsque la dernière arête est ajoutée, l’ensemble des arêtes accumulées est
prometteur, c’est-à-dire que l’arbre sous-tendant obtenu est minimal.
Analyse d’Algorithmes 2001
Ch. 6 - APPROCHE VORACE 9
Algorithme de Kruskal (
suite)
IMPLANTATION
Choix des structures de données
Pour chaque arête (
x
,
y
), il faut déterminer à quelle composante connexe
x
et
y
appartiennent. - détection de cycles
- fusion de 2 ensembles
Choix: structure d’ensembles disjoints.
2˚ Algorithme
FONCTION Kruskal (G=<N,A>: graphe;
longueur: tableau [A] R*)
: ensemble d’arêtes
DÉBUT.
Trier A par longueurs croissantes.
n
Card(N); C A; T Ø.
Former une composante pour chacun des nœuds de N.
TANT QUE Card(T) < n – 1 FAIRE
{N.B. - L’algorithme ne marcherait pas si on mettait
n
au lieu de
n
–1:
dès que Card(T) =
n
– 1, on chercherait en vain à ajouter à T une
n
e arête}
(
u
,
v
) plus courte arête de C.
Enlever l’arête (
u
,
v
) de C.
Ucomp Trouver (
u
). {trouver la composante Ucomp contenant
u
}
Vcomp Trouver (
v
). {trouver la composante Vcomp contenant
v
}
SI Ucomp Vcomp ALORS
Fusionner (Ucomp, Vcomp).
Ajouter l’arête (
u
,
v
) à T.
FIN SI.
FIN TANT QUE.
RETOURNER T.
FIN.
Exercice (problème 6.10 a ou ancien 3.2.4)
Qu’arrive-t-il si, par erreur, on fait tourner l’algorithme sur un graphe non
connexe? 10 Ch. 6 - APPROCHE VORACE ©2001
R. Lelouche
Algorithme de Kruskal
(suite)
ANALYSE
Soit un graphe G ayant
n
sommets et
a
arêtes.
1º Tri des arêtes
Il y a
a
arêtes, d’où un tri dans O(
a
lg
a
)
Mais
n
–1
a
n
(
n
–1)
2 . Donc O(
a
) O(
n
2) d’où O(lg
a
) = O(lg
n
).
D’où un tri dans: O(
a
lg
n
)
2º Initialisation des n ensembles
Dans O(
n
)
3º Opérations Trouver et Fusionner
Comme il y a au plus 2
a
opérations Trouver et
n
–1 opérations Fusionner sur
un univers à n éléments, ce nombre est en pire cas dans:
O((2
a
+
n
–1) lg*
n
)
où lg*
n
min {
k
| lg lg...lg
n
0}.
k
fois
Mais O(lg*
n
) O(lg
n
) (voir exemple 2.2.10) et O(
a
+
n
) = O(
a
) par 1º.
Donc au plus dans: O(
a
lg
n
)
D’où un ordre global pour l’algorithme de Kruskal:
O(
a
lg
n
)
—> Problème 6.9 ou ancien 3.2.5 (exercice 3)
1 / 13 100%

approche vorace - Département d`informatique et de génie logiciel

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !