République Algérienne Dénwcratique et PopultUre
Ministère de l'enseignement supérieur et de la recherche scientifique
... ~LN~ ~'JI 4)\$.~l.J W-?.êl ~ r-LJI ~ A •
-<
(J 1\...
9.
.Q
.
~
.:)
.
3
... :
~~I ~.)
'---·
--~.IA.OG/A~
Université
Mohamed Seddik Ben Yahia
-Jijel-FaculJé des Sciences Exactes
etlnformatûJue
Département de 17nformatique
Mémoire
De Fin d'Etude pour l'obtention du Diplôme de Master en Informatique
Option : Intelligence Artificielle
Thème
Un algorithme d'évolution différentielle pour la résolution
du problème d'arbre dominant
Réalisé par:
laib Bilal
Bouchenine Houcine
Encadré par :
Dr. Berghida Meryem
"?v1
--=lJ
~,~ciement:
Jfous
remercions
avant tout,
«
)f./la,n »
[e
tout puissant
qui nous a écfairé
[e
cliemin
de
{a
réussite et du savoir et
nous a donné
[e
courage
et
{a
vo(onté
pour réa(iser
ce
travail
J{ous remercions tout
cf'
a6ord notre directrice de mémoire
(])r:Meryem <Bergnidâ
qui a accepté de nous encadrer
et consacrer son temps
à
nous orienter afin
cf'
accompfir
ce travail
Jfous tenons
à
remercier égafement (es mem6res
du jury,
pour avoir accepté de juger ce mémoire.
Table des matières
Introduction Générale
1 Introduction à l'optimisation 1.1 L'optimisation combinatoire 1.2 Les heuristiques . . . . . . .
1.3 Généralités Sur Les Métaheuristiques 1.3.1 Définition . . 1.3.2 Classification 1.4 Conclusion . . . . 1 4 5 7 8 8 10
2 Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé 11
2.1 L'algorithme d'évolution différentielle 12
2.1.l Mutation . 13
2.1.2 Croisement 13
2 .1. 3 Sélection . . 14
2.2 L'algorithme de recuit simulé (Simulated Annealing) 15 2.2. l Principe général . . . . . 15
2.2.2 Schéma d'algorithme de recuit simulé 15
2.2.3 Fonction CritMetropolis ( ~' T) 16
2.2.4 Paramètre de température . . . 16
2.3 Conclusion . . . .
3 Problème de l'arbre dominant 3.1 Généralités sur les graphes . .
3.1.1 Graphe . . . .
3.1.2 Notion d'adjacence entre sommets . 3.1.3 Notion de degré d'un sommet 3.1.4 Cheminements et connexités .
3.1.4.1 3.1.4.2 3.1.4.3
Notions de chemin, chaine, cycle et circuit Notions de connexité Distance 17 18
19
19
21 21 22 22 23 233.1.5 Arbres . . . 3.2 Quelques problèmes principaux
3.2.l 3.2.2 3.2.3 3.2.4 3.2.5 Ensemble dominant . . . Arbre de poids minimal (MST) Couverture par sommets Couverture par arêtes La coloration . . . . . 3.3 Problème de l'arbre dominant
3.4 Problèmes connexes au problème DTP
3.4.1 The Connected Dominating Set Problem (CDSP) 3.4.2 Tree Cover Problem (TCP)
3.5 Conclusion . . . . . . . . . . . .
4 Algorithme d'évolution différentielle amélioré 4.1 Encodage de la solution . . . . . . . . . . 4.2 Algorithme d'Evolution Différentielle Amélioré
4.2.l Réglage de paramètres . . . . 4.2.2 Création de la population initiale 4.2.3 Evaluation . 4.2.4 Mutation 4.2.5 Croisement 4.2.6 Sélection . 4.2.7 Recuit simulé 4.3 Conclusion . 5 Résultats et expérimentation 5 .1 Environnement de travail . 5.2 Données de test . . . . . . 5.3 Présentation de l'interface 5.4 Résultats et comparaison .
5.4.l Comparaison avec les petites instances 5.4.2 Comparaison avec les grandes instances . 5.5 Conclusion . . . .
Conclusion générale et perspectives
Table des matières
24 24 24 24 25 26 26 27 29 29 29 29 30 31 31 32 33 38 39
40
42 44 47 48 49 49 50 54 54 57 61 62Liste des figures
3.1 exemples des graphes orientés . . . . 3.2 exemples des graphes non orientés . . . . . 3.3 exemple d'un graphe partiel et sous-graphe 3.4 degré d'un sommet dans un graphe non orienté 3.5 degré d'un sommet dans un graphe orienté . . 3.6 degré d'un graphe . . . . 3. 7 chemin, circuit élémentaire et non élémentaire
3.8 exemples de couverture par sommets
3.9 exemples de couverture par arêtes 3.10 exemple d'un problème DT . . . .
4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9
exemple de solution faisable d'un graphe
choix aléatoire du 1er sommet (s9 ) pour solution initiale .
choix aléatoire du 2ème sommet (s8 ) pour solution initiale
choix aléatoire du 3ème sommet (s7 ) pour solution initiale
choix aléatoire du 4ème sommet (s5 ) pour solution initiale
choix aléatoire du 5ème sommet ( s0 ) pour solution initiale
exemple de construction d'une solution initiale par une heuristique
Première étape de la 3ème méthode de génération d'une solution initiale Deuxième étape de la 3ème méthode de génération d'une solution initiale
19 20 20 21 22 22 23 25 26 28 31 34 34 34 35 35 36 37 38 4.10 arbre dominant de la 3ème méthode de génération d'une solution initiale 38
5.1 Représentation d'une instance dans un fichier texte 5.2 Fenêtre principale de l'application
5.3 barre de menu . . . . . . . . . . .
49 50
50
5.4 Chemin d'accès au (aux) fichier(s) des instances . . . . . . 51 5.5 Précision les valeurs des paramètres de l'algorithme d'évolution différentiel 51 5.6 Histogramme des valeurs de fitness . . . . . . . . . . . . . . . . 52 5.7 histogramme de nombre de sommets . . . .
5.8 la barre des raccourcis (barre d'outils) de l'application.
5.9 fenêtre de visualisation du graphe et de l'arbre de dominant
52
53 53
Liste des figures
5.10 zone des résultats . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5.11 Représentation graphique des résultats (EADA Vs VNS) pour les petites
instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 5.12 Représentation graphique des résultats (EADA Vs VNS) pour les grandes
Liste des tableaux
5.1 5.2 5.3
Résultats de comparaison entre VNS Vs. Solution optimale
Résultats obtenus par notre approche AEDA pour les petites instances Résultats de comparaison entre AEDA Vs. Solution optimale
54 55 56 5.4 Résultats obtenus par l'approche VNS pour les grandes instances . . . 57 5.5 Résultats obtenus par notre approche AEDA pour les grandes instances 58 5.6 Résultats AEDA Vs VNS pour les grandes instances . . . . . . . . 59
Liste des algorithmes
2.1 Les principales étapes de l'évolution différentielle 14 2.2 Schéma d'algorithme de recuit simulé . . . . 16 3.1 Algorithme de Kruskal . . . 25 3.2 Algorithme de coloration de Welsh et Powell 27 4.1 Pseudo code de l'algorithme AEDA . . . 33 4.2 Création d'une solution initiale aléatoire
..
33 4.3 Construction d'une solution initiale par une heuristique 364.4 Evaluation d'une solution 38
4.5 Mutation .. 39
4.6 Croisement 41
4.7 Recuit simulé 45
4.8 Algorithme voisinage_ l 46
Introduction Générale
Un graphe permet de représenter la structure. les connexions d'un ensemble com-plexe en exprimant les relations entre ses éléments : réseau de communication. réseaux routiers, interaction de diverses espèces animales, circuits électriques, ... etc. Les graphe constituent donc une méthode de pensée qui permet de modéliser une grande variété de problèmes en se ramenant à l'étude de sommets et d'arcs. Les travaux en théorie des graphes sont souvent effectués par des informaticiens, du fait de l'importance qu'y revêt l'aspect algorithmique. La façon dont le graphe est représenté en tant qu'objet mathé-matique est très simple mais l'algorithmique qui on découle de cette représentation sert de support à la résolution d'un vaste échantillon de problèmes.
Au cours des dernières années, de nombreux problèmes d'optimisation combinatoire ont été rencontrés dans le domaine des réseaux de capteurs sans fil (WSN). Le problème de l'arbre dominant (DTP) est l'un des problèmes NP-Hard dans les WSN. Une solution au DTP propose une application pour fournir un squelette virtuel pour le routage dans les réseaux de capteurs. Ce problème consiste à trouver un arbre, disons DT, avec un poids minimum total des arêtes sur un graphe non orienté, pondéré et connexe, de sorte que chaque sommet du graphe soit en DT ou adjacent à un sommet en DT. Il existe des procédures heuristiques efficaces pour ce problème qui atteignent de bonnes solutions en un temps de calcul très court pour les cas avec des centaines de nœuds. Néanmoins, du point de vue des modèles de programmation en nombres entier, seuls quelques modèles exponentiels disponibles peuvent être explorés dans des méthodes exactes pour prouver l'optimalité des instances DT.
Le problème DT comporte plusieurs applications dans la conception de réseau et le routage réseau. Par exemple, la multidiffusion implique la distribution des mêmes données à partir d'un serveur central à plusieurs nœuds du réseau. Dans ce contexte, nous pouvons considérer le poids d'arête comme la consommation d'énergie pour envoyer un message le long de cette arête. Ainsi, le problème devient choisir un ensemble d'arêtes (ou de liens de communication) de poids minimum pour que le serveur achemine les données, ce qui est exactement le problème de DT. Étant donné que tous les nœuds sont au plus à un bond
Liste des algorithmes
de l'arbre, un message peut être transmis au nœud le plus proche dans l'arbre. Ensuite le message peut être acheminé dans le DT jusqu'à ce qu'il atteigne sa destination. En outre, l'utilisation de DT comme squelette de routage peut aider à réduire la complexité des frais généraux du message.
De nos jours, il existe de nombreux algorithmes d'optimisation qui fonctionnent en utilisant des techniques de recherche à base de gradient et heuristiques dans des contextes déterministes et stochastiques. Afin d'élargir l'applicabilité de l'approche d'optimisation à divers domaines problématiques, les principes naturels et physiques sont imités pour développer des algorithmes d'optimisation robustes. Les algorithmes évolutifs. le recui simulé, l'optimisation des colonies de fourmis, les algorithmes mémétiques, l'optimisa-tion des essaims de particules sont quelques exemples de tels algorithmes. Au cours de la dernière décennie, les algorithmes évolutifs ont été largement utilisés dans différent domaines problématiques et ont réussi à trouver efficacement les solutions quasi opti-males. Depuis sa création en 1995, l'évolution différentielle s'est mérité la réputation d'un optimiseur mondial très efficace (Storn and Price, 1995).
L'algorithme d'évolution différentielle (DE) est une branche de la programmation évolutive développée par Rainer Storn et Kenneth Price (Price and Storn, 1997) pour des problèmes d'optimisation sur des domaines continus. En DE, la valeur de chaque va-riable est représentée par un nombre réel. Les avantages de DE sont sa structure simple, sa facilité d'utilisation, sa vitesse et sa robustesse. DE est l'un des meilleurs algorithmes de type génétique pour résoudre des problèmes avec les variables réelles.
L'évolution différentielle est un outil de conception d'une excellente utilité qui est immé-diatement accessible pour des applications pratiques. DE a été utilisé dans plusieurs ap-plications de sciences et d'ingénierie pour découvrir des solutions efficaces à des problèmes presque intraitable sans faire appel à des connaissances spécialisées ou à des algorithmes de conception complexes. Si un système est susceptible d'être évalué rationnellement, DE peut fournir les moyens d'en extraire les meilleures performances possibles.
Nous nous intéressons dans ce travail à la résolution approchée du problème de l'arbre dominant par un algorithme d'évolution différentielle. Le problème ainsi défini est noté DTP.
L'objectif de ce mémoire est d'adapter l'algorithme d'évolution différentielle pour ré-soudre le problème de l'arbre dominant DTP. L'approche proposée est nommée AEDA (Algorithme d'Evolution Différentielle Amélioré). Cette amélioration est effectuée par l'application de l'algorithme de recuit simulé dans chaque itération. Notre contribution réside dans la discrétisation de cette métaheuristique destinée à résoudre les problèmes
Liste des algorithmes
continus et d'appliquer le recuit simulé dans chaque itération.
Ce mémoire est constitué de cinq chapitres. Les trois premiers sont consacrés aux études théoriques. Le quatrième chapitre décrit l'approche proposée et le cinquième pré-sente les résultats d'expérimentations sur différentes instances prises de la littérature. Une brève description de ces chapitres est faite dans les paragraphes suivants :
Dans le premier chapitre, nous présentons des notions liées à l'optimisation com -binatoire. Ensuite, nous introduisons la notion des métaheuristiques en présentant de généralités sur ces derniers. Dans le chapitre 2 nous présentons en détails les étapes de l'algorithme d'évolution différentielle pour l'optimisation des problèmes continus. ainsi que l'algorithme de recuit simulé. Dans le chapitre 3, nous présentons quelques notions de bases sur les graphes. Ensuite, nous présentons le problème de l'arbre dominant et le problèmes connexes au problème DT.
Dans le chapitre 4, nous développons l'approche proposée pour résoudre le problème de l'arbre dominant (DTP), pour cela, nous présentons l'approche proposée. à savoir l'algorithme d'évolution différentielle améliorée. Le chapitre 5 est réservé à l'implémen-tation de la méthode proposée (environnement de travail, données de test, résultats et comparaison avec d'autres méthodes). Ce mémoire est clôturé par une conclusion géné -rale.
Chapitre
1
Introduction
à
l'optimisation
Sommaire
1.1 L'optimisation combinatoire
1.2 Les heuristiques . . . . 1.3 Généralités Sur Les Métaheuristiques
1.4 Conclusion . . . .
5 7 8 10
L'optimisation combinatoire est un domaine vaste où on cherche à optimiser une fonc-tion objectif en fonction de certaines contraintes. Par exemple, on peut vouloir trouver l'arbre couvrant minimal (MST) d'un graphe, le plus court chemin entre deux nœuds d'un graphe, l'appariement maximal dans un graphe biparti ... etc.
Une question connexe consiste à vérifier si une réponse donnée est en effet la solution optimale. Par exemple, compte tenu d'une arborescence, on voudrait vérifier rapidement si l'arbre est en fait l'arbre couvrant minimal (MST). Si l'arbre donné n'est pas le MST, un certificat pour ce fait peut être un arbre couvrant moins coûteux. Cependant, si l'arbre est en effet le MST, on peut essayer d'énumérer tous les arbres et montrer que l'arbre donné est bien l'optimal. Ceci, cependant, n'est pas efficace. On parle alors d'un problème d'optimisation difficile à résoudre.
L'optimisation combinatoire tient une place importante dans la recherche opération-nelle, en mathématiques discrètes et en informatique. En effet, les problèmes d'optimi-sation combinatoire représentent une catégorie de problèmes très difficiles à résoudre [Papadimitriou and Steiglitz, 1982] et de nombreux problèmes pratiques peuvent être formulés sous la forme d'un problème d'optimisation
[Maculan and
Ribeiro
,
1994].
Dans ce chapitre, nous présentons des notions liées à l'optimisation combinatoire et nous introduisons la notion des métaheuristiques qui seront utilisées dans notre travail.
Chapitre 1. Introduction à l'optimisation
1.1
L'optimisation
combinatoire
Un problème d'optimisation combinatoire, consiste dans un espace discret (i. c. énu-mérable) de solutions réalisables, à trouver la meilleure solution (ou un ensemble des meilleures solutions). La notion de « meilleure solution » est donnée par un critère de qualité via une fonction objectif. Formellement, un problème d'optimisation combina-toire peut être défini par : L'ensemble discret des solutions réalisables du problème. on parle alors d'espace de recherche , et
f
:
n
---+ R la fonction objectif associée au critère de qualité. Le but est de trouver s* En
tel que :s* = argmax{f(s)}
(1.1) s* E r2
On parle d'un problème de maximisation quand la qualité est donnée par une fonction objectif à maximiser et d'un problème de minimisation quand la qualité est donnée par une fonction objectif à minimiser.
La valeur de fitness d'une solution de l'espace de recherche est la valeur de la fonction objectif pour cette solution. L'évaluation d'une solution correspond au calcul de sa valeur de fitness.
Dans ce contexte, nous définissons les termes d'optimum global et d'optimum local associés à un problème d'optimisation. Pour un problème de minimisation (resp. maximisation), un optimum global est une solution s*
En
tel que :Vs
En
f(s*) ~ f(s) (1.2)(resp. f(s*) ~ J(s)) (1.3)
Si l'espace de recherche
n
est muni d'une relation de voisinage V. Un optimum local est alors défini comme une solution s* En
tel que :Vs E V(s*), J(s*)
<
f(s) (1.4)(resp. f(s*)
>
f(s)) (1.5)Les problèmes d'optimisation peuvent être rencontrés dans plusieurs domaines comme les sciences, l'ingénierie, la gestion ... etc. Par exempl~, un commerçant doit livrer des articles chez ses clients partout en France et souhaite minimiser le coût lié à la livraison. Il dispose de plusieurs camions et doit affecter à chacun d'eux une liste de clients à livrer. Ceci peut être modélisé par un problème d'optimisation combinatoire où l'ensemble des
Chapitre 1. Introduction à l'optimisation
solutions réalisables correspond à tous les chemins de livraisons possibles et où la distance parcourue par l'ensemble des camions doit être minimale. Ce problème d'optimisation, identifié comme un problème de tournées de véhicules, voit sa difficulté s'accroître à
mesure que le nombre de clients augmente.
Une instance d'un problème est obtenue en donnant des valeurs explicites pour chacun des paramètres du problème instancié. Dans l'exemple précédent. une instance du problème peut correspondre à une liste de clients et, d'articles à livrer et un ensemble de véhicules disponibles le jour considéré. Le jour suivant, l'instance sera différente et la résolution du problème également.
Un algorithme est une séquence d'opérations élémentaires (affectation de variable tests, etc.) qui, quand on le donne une instance d'un problème en entrée. il donne la solution de ce problème en sortie après l'exécution de l'opération finale.
Les deux paramètres les plus importants pour mesurer la qualité d'un algorithme son
son temps d'exécution et l'espace de mémoire qui est utilisée. Le premier paramètre est exprimé en termes de nombre d'instructions nécessaires pour exécuter l'algorithme. Le second paramètre correspond au nombre d'unités de mémoire utilisées par l'algorithme afin de résoudre un problème.
L'utilisation du nombre d'instructions comme unité de temps se justifie par le fait que le même programme utilise le même nombre d'instructions sur deux machines diffé-rentes, mais le temps peut varier, en fonction des vitesses respectives des machines. Nous considérons généralement qu'une instruction correspond à une opération élémentaire, par exemple une affectation, un test, une addition, une multiplication, etc. Ce que nous ap-pelons la complexité en temps ou tout simplement la complexité d'un algorithme nous donne une indication sur le temps qu'il faudra pour résoudre un problème d'une taille donnée. La complexité est généralement définie en termes d'analyse au pire des cas. La complexité d'un problème est équivalente à la complexité du meilleur algorithme résolvant ce problème. Un problème est traitable (ou facile) s'il existe un algorithme polynomial pour le résoudre.
Une grande partie des problèmes d'optimisation combinatoire font partie des pro-blèmes NP-difficiles pour lesquels il n'existe pas d'algorithme de résolution efficace pour toutes les instances [Garey and Johnson, 1990]. Il existe deux classes de méthodes pour résoudre ces problèmes d'optimisation, les méthodes :
• Les méthodes exactes : elles garantissent la complétude de
la résolution,
• Les méthodes approchées : elles perdent la complétude mais gagnent enChapitre 1. Introduction à l'optimisation
Ces méthodes sont souvent testées au préalable sur des instances de la littérature. Ces instances permettent de comparer les méthodes et leur efficacité. On appelle Best-Known Solution BKS, la meilleure solution connue d'une instance. Cette solution
peut être la meilleure parmi les solutions de l'espace de recherche. c'est donc une solution
optimale, ou la meilleure solution trouvée.
Les méthodes exactes énumèrent implicitement toutes les solutions de l'espace de
recherche en utilisant :
• Des mécanismes qui détectent des échecs (calcul de bornes : inférieures (Lower
Bound LB) ou supérieures (Upper Bound UP))
• Et des heuristiques spécifiques au problème qui orientent les choix.
Ces méthodes ont permis de trouver des solutions optimales. Mais ces méthode s'avèrent, malgré les progrès réalisés, plutôt inefficaces à mesure que la taille du problème devient importante.
Les méthodes approchées constituent une alternative très intéressante pour traiter le
problèmes d'optimisation de grande taille si l'optimalité n'est pas primordiale. En effe elles permettent d'obtenir des solutions de qualité intéressante en un temps de calcul ré-duit. Les métaheuristiques font partie de ces méthodes approchées [Jin-Kao et al., 2000]. Les métaheuristiques sont composées de concepts fondamentaux qui permettent de les adapter et de les appliquer à une large classe de problème d'optimisation.
1.2 Les heuristiques
Les heuristiques permettent de trouver des bonnes solutions sur des instances du problème de grande taille. Elles permettent d'obtenir des performances acceptables à des coûts acceptables sur une grande gamme de problèmes. En général, les heuristiques n'ont pas une garantie de performance sur les solutions obtenues.
Elles peuvent être classées en deux familles : les heuristiques constructives qm
sont principalement dédiés à un problème spécifique et essayent de construire une solu-tion unique avec la meilleure qualité possible en choisissant soigneusement les éléments de solution prometteuses. Les heuristiques de recherche mettent en œuvre une
Chapitre 1. Introduction à l'optimisation
1.3
Généralités Sur Les Métaheuristiques
1.3.1
Définition
Les métaheuristiques sont généralement des stratégies de haut niveau qui guident une heuristique sous-jacente plus spécifique au problème, à améliorer sa performance. L'ob-jectif principal est d'éviter les inconvénients de l'amélioration itérative et, en particulier la descente multiple en permettant à la recherche locale de s'échapper de l'optimum lo-cal. Ceci est réalisé soit en permettant des mouvements de détérioration (accepter une certaine dégradation), ou en générant de nouvelles solutions de départ pour la recherche locale de manière plus intelligente que de fournir des solutions initiales aléatoires.
Les métaheuristiques sont des algorithmes d'usage général qui peuvent être appliqués pour résoudre presque n'importe quel problème d'optimisation. Elles peuvent être consi-dérées comme des méthodes générales de haut niveau qui peuvent être utilisées en tant que stratégie de guidage dans la conception des heuristiques pour résoudre des problèmes d'optimisation spécifiques.
Les métaheuristiques sont utilisées lorsque le problème est difficile et de grande taille leurs objectif est de trouver une solution proche de l'optimal rapidement.
1.3.2
Classification
On peut faire la différence entre les métaheuristiques qui s'inspirent de phénomènes naturels et celles qui ne s'en inspirent pas. Par exemple, les algorithmes génétiques et les algorithmes de colonies de fourmis s'inspirent respectivement de la théorie de l'évolution et du comportement de fourmis à la recherche de nourriture. Par contre, la méthode Tabou ne semble pas être inspirée d'un phénomène naturel.
Une telle classification ne semble cependant pas très utile et est parfois difficile à réaliser. En effet, il existe de nombreuses métaheuristiques récentes qu'il est difficile de les classer dans l'une des deux catégories. Certains se demandent par exemple si l'utilisation d'une mémoire dans la méthode Tabou n'est pas directement inspirée de la nature.
Une autre façon de classifier les métaheuristiques est de distinguer celles qui travaillent avec une population de solutions de celles qui ne manipulent qu'une seule solution à la fois. Les méthodes qui tentent itérativement d'améliorer une seule solution sont appelées méthodes de recherche locale ou méthodes à trajectoire. La méthode Tabou, le Recuit Simulé et la Recherche à Voisinages Variables sont des exemples typiques de méthodes
à trajectoire. Ces méthodes construisent une trajectoire dans l'espace des solutions en tentant de se diriger vers la solution optimale.
Chapitre 1. Introduction à l'optimisation
Les métaheuristiques à base de population cherchent à améliorer, au fur et à mesure des itérations, une population de solutions. L'exemple le plus connu des méthodes qui travaillent avec une population de solutions est l'algorithme génétique.
Les métaheuristiques peuvent également être classées selon leur manière d'utiliser la fonction objectif. Étant donné un problème d'optimisation consistant à minimiser une fonction
f
sur un espace S de solutions, certaines Métaheuristiques dites statique. travaillent directement surf
alors que d'autres, dites dynamiques, font usage d·une fonction g obtenue à partir def
en ajoutant quelques composantes qui permettent de modifier la topologie de l'espace des solutions, ces composantes additionnelles peuvent varier durant le processus de recherche.Des chercheurs préfèrent classifier les métaheuristiques en fonction du nombre de structures de voisinages utilisées. Étant donné qu'un minimum local relativement à un type de voisinage ne l'est pas forcément pour un autre type de voisinage, il peut être intéressant d'utiliser des métaheuristiques basées sur plusieurs types de voisinages.
Certaines métaheuristiques font usage de l'historique de la recherche au cours de l'optimisation, alors que d'autres n'ont aucune mémoire du passé. Les algorithmes sans mémoire sont en fait des processus markoviens puisque l'action à réaliser est totalement déterminée par la situation courante. Les métaheuristiques qui font usage de l'historique de la recherche peuvent le faire de diverses manières. On différentie généralement les méthodes ayant une mémoire à court terme de celles qui ont une mémoire à long terme. Finalement, mentionnant que certaines métaheuristiques utilisent les concepts addi -tionnels que sont la diversification et l'intensification.
La diversification (ou exploration, synonyme utilisé presque indifféremment dans la littérature) désigne les processus visant à explorer différentes zones dans l'espace de recherche du problème à optimiser. L'intensification (ou exploitation) vise à parcourir une zone de l'espace de recherche pour trouver la meilleure solution. La mémoire est le support de l'apprentissage, qui permet à l'algorithme de ne tenir compte que des zones où l'optimum global est susceptible de se trouver, évitant ainsi les optima locaux.
Les métaheuristiques progressent de façon itérative, en alternant des phases d'intensification, de diversification et d'apprentissage. L'état de départ est souvent choisi aléatoirement, l'algorithme se déroulant ensuite jusqu'à ce qu'un critère d'arrêt soit atteint. Les notions d'intensification et de diversification sont prépondérantes dans la conception des métaheuristiques, qui doivent atteindre un équilibre délicat entre ces deux dynamiques de recherches. Les deux notions ne sont donc pas contradictoires, mais complémentaires, et il existe de nombreuses stratégies les mêlant.
Chapitre 1. Introduction à l'optimisation
Les métaheuristiques présentent une classe des méthodes simples à mettre en œuvre, comme le cas du recuit simulé, d'autres sont bien adaptées à la résolution de certaines classes de problèmes ... etc. Selon le« No Free Lunch Theorem [Ho and Pepyne, 2002]», il n'existe pas de métaheuristique qui soit meilleure que toutes les autres métaheuristiques pour tous les problèmes. Dans la pratique, il existera toujours des instances pour les-quelles une métaheuristique est meilleure qu'une autre. Quel que soit la métaheuristique choisie, elle présente des avantages et des inconvénients.
1.4 C
oncl
us
io
n
La majorité des problèmes d'optimisation combinatoire appartiennent à la classe NP-Difficile. Leur résolution ne peut se faire que de manière approchée, car à ce jour il n'existe aucun algorithme permettant leur résolution en un temps polynomial. Pour cela, on fait appel aux métaheuristiques.
Dans le chapitre suivant, nous présentons les métaheuristiques utilisées dans notre travail à savoir l'évolution différentielle et le recuit simulé.
Chapitre
2
é
: Evolution
Différentielle et Recuit Simulé
Sommaire
2.1 L'algorithme d'évolution différentielle
2.2 L'algorithme de recuit simulé (Simulated Annealing) 2.3 Conclusion . . . .
12
15
17
L'évolution différentielle ED est une méthode pour l'optimisation mathématique des
fonctions multidimensionnelles. Elle est très utile lorsque les paramètres ne peuvent pas
être codés comme des vecteurs réels. L'idée principale derrière l'évolution différentielle
est l'utilisation d'un opérateur de recombinaison ternaire pour la création de nouvelles
générations. Le nouvel individu est créé en ajoutant la différence entre deux individus
à un troisième individu. Cette méthode a beaucoup évolué depuis le modèle de base et
plusieurs améliorations lui ont été proposées.
L'ED est un algorithme à base de population, alors que l'algorithme de recuit simulé est un algorithme à trajectoire inspiré d'un processus utilisé en métallurgie.
Dans ce chapitre, nous présentons en détails les étapes de l'algorithme d'évolution différentielle pour l'optimisation des problèmes continus, ainsi que l'algorithme de recuit simulé.
Chapitre 2. Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé
2.1
L'algorithme
d'évolution
différentielle
L'évolution différentielle (Differential Evolution DE) est une métaheuristique d'opti-misation stochastique. Elle a été inspirée par les algorithmes génétiques et des stratégies évolutionnaires combinées avec une technique géométrique de recherche. Les algorithmes génétiques changent la structure des individus en utilisant la mutation et le croisemen alors que les stratégies évolutionnaires réalisent l'auto-adaptation par une manipula-tion géométrique des individus. Ces idées ont été mises en œuvre grâce à une opération simple, mais puissante, de mutation de vecteurs, proposée en 1995 par K. Price et R. Storn [Storn and Price, 1997].
Même si, à l'origine, la méthode de l'évolution différentielle était conçue pour les problèmes d'optimisation continus et sans contraintes, ses extensions actuelles peuvent permettre de traiter les problèmes à variables mixtes et gèrent les contraintes non linéaires [Lampinen and Zelinka, 1999]. Cette méthode a montré son efficacité lors de son applica-tion sur différents problèmes d'optimisation [Bell, 2012, Vucetic, 2012, Gong et al., 2010 Ali and Ahmed, 2015].
Dans la méthode DE, la population initiale est générée par tirage aléatoire uniforme sur l'ensemble des valeurs possibles de chaque variable. Les bornes inférieures et supé
-rieures des variables sont spécifiées par l'utilisateur selon la nature du problème. Après
l'initialisation, l'algorithme effectue une série de transformations sur les individus, dans un processus appelé évolution.
DE s'inspire en partie de la boucle évolutionnaire car il peut se décomposer en plu-sieurs phases proches des techniques évolutionnaires :
• initialisation ;
• mutation;
• croisement ;
• sélection.
La population contient N individus. Chaque individu xi,G est un vecteur de dimension
D, où G désigne la génération :
Xi,G
=
(x1i,G1 X2i,G1 ... , XDi,G) avec i=
1, 2, ... N (2.1)A chaque génération, l'algorithme applique successivement les trois opérations
Chapitre 2. Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé
vector)
ui,G+l - (uli,G+li U2i,G+1, ... , UDi,G+l) avec i = 1, 2, ... N (2.2)
Une opération de sélection permet de choisir les individus à conserver pour la nouvelle
génération ( G
+
1).2.1.1
Mutation
La mutation est une phase importante pour DE car elle permet la génération d·un
vecteur variant qui est généré pour chaque vecteur xi,G de la population. Pour chaque
vecteur courant xi,G, on génère un vecteur mutant vi,G+l qui peut être créé en utilisant
une des stratégies de mutation suivantes :
• Rand/1 : Vi , G+l = Xrl G '
+
F.(Xr2 G -, Xr3 a) '(
2
.
3
)
• Best/1 : Vi , G+l = Xbest G '+
F.(xrl G ' - Xr2 a) )(2
.
4)
• Current to best/1 :Vi G+l =Xi G ' '
+
F.(xri G , - Xr2 , a) + F.(Xbest G ' - Xi , a)(
2
.
5
)
• Best/2:
Vi,G+l = Xbest,G
+
F.(Xrl,G - Xr2,a)+
F.(x3,G - X4,a)(2.6)
• Rand/2 :
Vi G+l = Xrl G
+
F.(Xr2 G - Xr3 a)+ F.(xr4 G - Xr5 a)l ' ' ' , , (2.7)
Les indices r1, r2, r 3 , r4 et r 5 E {1, 2, ... , N} sont des entiers aléatoires et tous différents.
Ils sont également choisis différents de l'indice courant i. Xbest,G est le meilleur individu
à la Gème génération. F E [O, 2] est une valeur constante, appelée differential weight, qui
contrôle l'amplification de la variation différentielle de ( Xri,G - Xrj,G).
2.1.2 Croisement
Après la mutation, une opération de croisement binaire forme le vecteur d'essai final
ui,G+i, selon le vecteur xi,G et le vecteur mutant correspondant vi,G+l · Le croisement
permet dans le cadre de l'évolution différentielle de conserver un certain taux de diversité
Chapitre 2. Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé
crée et l'opérateur de croisement garantit qu'au minimum un des éléments du vecteur
variant sera conservé. Le nouveau vecteur ui,G+l est donné par la formule suivante :
V1i,G+1 si ( randb(j) ::; CR) ou j = rnbr( i)
Uji,G+l = pour tout j E {1, 2, ... , D} (2.8)
Xji,G si (randb(j)
>
CR) et j =/:- rnbr( i)Où randb(j) est la jème valeur procurée un générateur de nombre aléatoire uniforme
appartenant à l'intervalle (0, 1].
CR est le coefficient de croisement qui appartient à l'intervalle
[O,
1] et est déterminé parl'utilisateur. rnbr(i) est un indice choisi au hasard dans l'ensemble {1, 2, ... , N}.
2.1.3
Sélection
Pour décider quel vecteur, parmi ui,G+l ou xi,G, doit être choisi dans la génération
G
+
1, on doit comparer les valeurs de fonction du cout de ces deux vecteurs. En effet, ongarde le vecteur ayant la plus petite valeur de fonction du cout en cas de minimisation.
Le nouveau vecteur xi,G+l est choisi selon l'expression suivante :
{
Ui,G+l si J(ui,G+1)
<
j(xi,G)Xi,G+l =
xi,G sinon
(2.9)
Ces quatre étapes sont réitérées jusqu'à ce qu'un nombre maximal d'itérations soit at
-teint ou jusqu'à ce qu'une solution soit trouvée. Une des grandes forces de l'évolution
différentielle est qu'elle est relativement simple à programmer et que seuls trois princ i-paux paramètres sont nécessaires a son bon fonctionnement : la taille de la population (N), le taux de croisement (CR) et le facteur d'échelle (F). L'algorithme 2.1 résume les
principales étapes de l'évolution différentielle :
Algorithm 2.1 Les principales étapes de l'évolution différentielle
1: pour tout les vecteurs
xi
faire2: Calculer r 1 , r2, r3 et r 4 tels que i =/:- r1 =/:- r2 =/:- r3 =/:- r 4
3: Calculer le vecteur variant
Vi
4: Créer le vecteur d'essai Ui5: si
f
(Ui)<
f
(Xi) alors6: remplacer
xi
parui
7: fin si
8: fin pour
Chapitre 2. Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé
2.2
L'algorithme de
recuit
simulé (Simulated
Annea-ling)
Le recuit est le fait de tremper certains alliages de métal, de verre ou de cristal en chauffant au-dessus de son point de fusion, en maintenant sa température, puis en
le refroidissant très lentement jusqu'à ce qu'il se solidifie dans une structure cristalline
parfaite. Ce processus physique / chimique produit des matériaux de haute qualité. La simulation de ce processus est connue sous le nom de recuit simulé (Simulated Annealing SA) [Cerny, 1985, Kirkpatrick et al., 1983].
L'état de cristal sans défaut correspond à la configuration d'énergie minimale globale. Il existe une analogie de SA avec une procédure d'optimisation. Les états des matériaux physiques correspondent à des solutions du problème, l'énergie d'un état correspond au coût d'une solution et la température correspond à un paramètre de contrôle.
L'algorithme de Metropolis est une méthode simple pour simuler l'évolution à
l'équi-libre thermique d'un solide pour une température donnée [Metropolis et al., 1953]. SA
[Kirkpatrick et al., 1983] est une variante de l'algorithme de Metropolis, où la tempéra-ture change de haut en bas. SA se compose essentiellement de deux processus stochas -tiques : un processus de génération de solutions et l'autre pour l'acceptation de solutions.
2.2.1
Principe général
L'idée est d'effectuer un mouvement selon une distribution de probabilité qui dépend de la qualité des différents voisins : Les meilleurs voisins ont une probabilité plus éle
-vée; Les moins bons ont une probabilité plus faible. On utilise un paramètre, appelé la
température (notée T) :
• T élevée : tous les voisins ont à peu près la même probabilité d'être acceptés.
• T faible : un mouvement qui dégrade la fonction de coût a une faible probabilité d'être choisi.
• T = 0 : aucune dégradation de la fonction de coût n'est acceptée.
La température varie au cours de la recherche : T est élevée au début, puis diminue et finit par tendre vers O.
2.2.2 Schéma d'algorithme de recuit simulé
L'algorithme illustrant le schéma d'algorithme de recuit simulé est présenté dans
Chapitre 2. Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé
Algorithm 2.2 Schéma d'algorithme de recuit simulé
1: Engendrer une configuration initiale Sa de S;
2: S :=Sa
3: Initialiser T en fonction du schéma de refroidissement
4: répéter
5: Engendrer un voisin aléatoire S' de S 6: Calculer !:l
=
f
(S') -f
(S)7: si CritMetropolis ( tl, T) alors
8: S := S'
9: Mettre T à jour en fonction du schéma de refroidissement 10: fin si
11: jusqu'à condition de fin
12: Retourner la meilleure configuration trouvée
2.2.3
Fonction CritMetropolis
(~,T)
Si !:l :::; 0 renvoyer VRAI
Sinon
• avec une probabilité de exp( - ~) renvoyer VRAI • Sinon renvoyer FAUX
./ Un voisin qui améliore (!l
<
0) ou à coût égal (!l=
0) est toujours accepté ../ Une dégradation faible est acceptée avec une probabilité plus grande qu'une dégra-dation plus importante .
./ La fonction CritMetropolis ( !l, T) est une fonction stochastique : appelée deux fois
avec les mêmes arguments, elle peut renvoyer tantôt «vrai» et tantôt «faux».
2.2.4 Paramètre de température
Dans la fonction CritMetropolis ( !l, T), le paramètre T (température) est un réel positif. La température permet de contrôler l'acceptation des dégradations : Si T est grand, les dégradations sont acceptées avec une probabilité plus grande. A la limite, quand T tend vers l'infini, tout voisin est systématiquement accepté. Inversement, pour T
=
0, une dégradation n'est jamais acceptée.La fonction qui spécifie l'évolution de la température est appelé le schéma de
refroi-dissement.
Dans la méthode RS, les mécanismes d'intensification et de diversification sont contrô-lés par la température. Pendant le processus de recherche, La température « T » va dimi-nuer. L'idée est de diminuer petit à petit la chance d'accepter des solutions qui dégradent la fonction objectif.
Chapitre 2. Métaheuristiques utilisées : Evolution Différentielle et Recuit Simulé
2.3
Conclusion
Dans ce chapitre, nous avons présenté les algorithmes généraux des métaheuristiques utilisées dans notre mémoire, à savoir, l'algorithme d'évolution différentielle et l'algo-rithme de recuit simulé.
Dans le chapitre qui suit, nous allons introduire le problème étudié de l'arbre domi-nant.
Chapitre
3
Pro blèrne de l'arbre dominant
Sommaire
3.1 Généralités sur les graphes . 3.2 Quelques problèmes principaux
3.3 Problème de l'arbre dominant . . .
3.4 Problèmes connexes au problème DTP 3.5 Conclusion . . . . 19 24 27 29 29
Un mathématicien confronté à un problème de la vie réelle s'empresse de traduire celui-ci en un problème mathématique, qu'il peut alors tenter de résoudre. Dans sa boîte
à outils mathématiques, les graphes peuvent s'avérer fort utiles. [Topart, 2011]
Les graphes sont un outil de modélisation puissant et très intuitif. Ils sont naturel-lement utilisés pour représenter des réseaux de transport, de communication, et plus généralement des flux de matières ou d'informations. Ils sont également utilisés pour
modéliser des problèmes dans lesquels des objets sont en relation, les sommets du graphe représentant ces objets et les arêtes (ou arcs si une orientation est considérée) les relations
entre ces objets. [Diestel, 2000]
Le problème d'optimisation considéré est modélisé par les outils de la théorie des
graphes ensuite une solution est cherchée qui est généralement un algorithme. Parmi les
problèmes modélisés par la théorie des graphes on cite : le problème d'affectation, de flot
maximum ou minimum, de transport, de voyageur de commerce, de l'arbre dominant
etc. [MOUHOUB, ]
Dans ce chapitre nous présentons des généralités sur les graphes et le problème de l'arbre dominant liées au travail ainsi que les problèmes connectés au problème DT.
Chapitre 3. Problème de l'arbre dominant
3.1
Généralités
sur
les
graphes
L'histoire de la théorie des graphes débute peut-être avec les travaux d,Euler au
XVIIIe siècle et trouve son origine dans l'étude de certains problèmes, tels que celui
des ponts de Konigsberg (les habitants de Konigsberg se demandaient s,il était possible
en partant d,un quartier quelconque de la ville, de traverser tous les ponts sans passer
deux fois par le même et de revenir à leur point de départ), la marche du cavalier sur
P échiquier ou le problème de coloriage de cartes.
3.1.1
Graphe
Un graphe G (S, A) est défini par :
- Un ensemble S
=
{
s1 , s2 , s3 , ... } de points (appelés « sommets»),
le plus souventsymbolisés par des numéros (1, 2, 3, etc ... ), ou par des lettres (a, b, c ... ).
Des liens A = { a1 , a2 , a3 , ... } reliant certains sommets entre eux ; ces liens qui créent
donc des couples de sommets (si, sj) E 82, se nommeront (et se représenteront sur
le dessin) par des « arcs
»
ou des « arêtes».
Un graphe peut être orienté ou non :
Dans un graphe orienté, les couples (si, sj) E A sont orientés, c'est à dire que
(si, sj) est un couple ordonné, où si est le sommet initial, et Sj le sommet terminal.
Un couple (si, Sj) est appelé un arc, et est représenté graphiquement par si - t Sj
Par exemple,
I ~ ,'\..~,
'
'
?:;
, '\
2 ! . ... . . ,. 1 j _ /,/
. ..,\.
./
... ~,... ..,,,,. ... -.... -·"'''" ..,~'
-..__,,( ~·~ -·· .... ~A.,/-.... ,;'_,&~ ff1•1 j f .,:'\v
FIGURE 3.1 - exemples des graphes orientés
la figure 3.1 représente le graphe orienté G = (S, A) avec S = {l; 2; 3; 4; 5; 6} et
A= {
(
l
;
2);
(2; 4); (2; 5); (4; 1); (4; 4); (4; 5); (5; 4); (6; 3)}.- Dans un graphe non orienté, les couples
(si, sJ)
E A ne sontpas orientés
,
c'est
à dire que (si, sj) est équivalent à (sj, si)· Une paire (si, sj) est appelée une arête,
Chapitre 3. Problème de l'arbre dominant
Par exemple, la figure 3.2 représente le graphe non orienté G = (S, A) avec S = {l; 2; 3; 4; 5; 6} et A
=
{
(1; 2); (1; 5); (5; 2); (3; 6)}.,,--
-( ... 1 \ .) - --j_ __ >__
-". / ') /-:;-</
\.._: j(0
(..
) '-- ,.,.FIGURE 3.2 - exemples des graphes non orientés
Terminologie
L'ordre d'un graphe est le nombre de ses sommets.
Une boucle est un arc ou une arête reliant un sommet à lui-même.
Un graphe non-orienté est dit simple s'il ne comporte pas de boucle, et s'il ne comporte jamais plus d'une arête entre deux sommets. Un graphe non orienté qui
n'est pas simple est un multigraphe.
Dans le cas d'un multi-graphe, A n'est plus un ensemble mais un multi-ensemble d'arêtes. On se restreindra généralement dans la suite aux graphes simples.
Un graphe orienté est un p-graphe s'il comporte au plus parcs entre deux sommets.
Le plus souvent, on étudiera des 1-graphes.
Un graphe partiel d'un graphe orienté ou non est le graphe obtenu en supprimant certains arcs ou arêtes.
Un sous-graphe d'un graphe orienté ou non est le graphe obtenu en supprimant certains sommets et tous les arcs ou arêtes incidents aux sommets supprimés. La figure 3.3 est un exemple de graphe partiel et sous-graphe :
-
cv
G
Grnohi! partiel Sous-graphe iuduft pa:r 1.2,J.~
Chapitre 3. Problème de l'arbre dominant
Un graphe orienté est dit élémentaire s'il ne contient pas de boucle.
Un graphe orienté est dit complet s'il comporte un arc (si, sj) et un arc (sj, si) pour tout couple de sommets différents si, Sj E s2 .De même, un graphe non-orienté est dit complet s'il comporte une arête (si, Sj) pour toute paire de sommets différents
si, Sj E 82 .
3.1.2 Notion
d'adjacence
entre sommets
Dans un graphe non orienté, un sommet si est dit adjacent à un autre sommet Sj s1
il
existe une arête entre si et Sj . L'ensemble des sommets adjacents à un sommet si e
défini par: adj(si) = {sj/(si, sj) E A ou (sj, si) E A}
- Dans un graphe orienté, on distingue les sommets successeurs des sommets prédé -cesseurs : suce( si)= {sj/(si, sj) E A}
pred(si) = {sj/(sj,si) E A}
3.1.3
Notion de degré d'un sommet
Dans un graphe non orienté, le degré d'un sommet est le nombre d'arêtes incidentes
à ce sommet (dans le cas d'un graphe simple, on aura d0(si)
= ladj(si)I. La figure 3.4 montre le degré d'un sommet dans un graphe non orienté.
FIGURE 3.4 - degré d'un sommet dans un graphe non orienté
Ce graphe possède 6 arêtes et chaque sommet du graphe est de degré 3.
Dans un graphe orienté, le demi-degré extérieur d'un sommet si, noté d0+(si), est le
nombre d'arcs partant de si (dans le cas d'un 1-graphe, on aura d0+(si) = lsucc(si)I. De même, le demi-degré intérieur d'un sommet si, noté d0-(si), est le nombre d'arcs
arrivant à si (dans le cas d'un 1-graphe, on aura d0
- ( si)
=
lpred( si)I ·
La figure 3.5 montre le degré d'un sommet dans un graphe orienté.Chapitre 3. Problème de l'arbre dominant
G
FIGURE 3.5 - degré d'un sommet dans un graphe orienté
d0+(2) = 3, d0- ( 4) = 2
Propriété : La somme des degrés de tous les sommets d'un graphe est égale au double
du nombre total d'arêtes de ce graphe.En particulier, c'est un nombre pair.
Le degré d'un graphe est le degré maximum de tous ses sommets. Dans la figure 3.6
le degré du graphe est 4, à cause du sommet 3.
FIGURE 3.6 - degré d'un graphe
Un graphe dont tous les sommets ont le même degré est dit régulier. Si le degré
commun est k, alors on dit que le graphe est k-régulier.
3.1.4
Cheminements et connexités
3.1.4.1 Notions de chemin, chaine, cycle et circuit
Dans un graphe orienté, un chemin d'un sommet u vers un sommet v est une séquence
<
so, s1, s2, .... , sk >de sommets tels que u = s0 , v = sk, et (si_1; si) E A pour i E [1..k]. La longueur du chemin est le nombre d'arcs dans le chemin, c'est-à-dire k. On dira quele chemin contient les sommets s0 , si, ... , sk, et les arcs (s0 , s1), (s1, s2), ... , (sk-1, sk)· S'il
existe un chemin de u à v, on dira que v est accessible à partir de u. Un chemin est
élémentaire si les sommets qu'il contient sont tous distincts.
Dans un graphe orienté, un chemin
<
sO, sl, ... , sk > forme un circuit si sO=
sk etsi le chemin comporte au moins un arc ( k ~
l).
Ce circuit estélémentaire
si
en plus
les sommets sl, s2, ... , sk sont tous distincts. Une boucle est un circuit de longueur 1.
Chapitre 3. Problème de l'arbre dominant
ltj)
l
'-'
1(3)
/,,
...__,.,
/
!~
\::_./FIGURE 3.7 - chemin, circuit élémentaire et non élémentaire
Un chemin élémentaire dans ce graphe est
<
1; 4; 2; 5>
.
Un chemin non élémentaire dans ce graphe est<
3; 6; 6; 6>
.
Un circuit élémentaire dans ce graphe est<
l; 2; 5; 4; 1>
.
Un circuit non élémentaire dans ce graphe est
<
l; 2; 5; 4; 2; 5; 4; 1>.
On retrouve ces différentes notions de cheminement dans les graphes non orientés. Dans
ce cas, on parlera de chaine au lieu de chemin, et de cycle au lieu de circuit. Un graphe sans cycle est dit acyclique.
3.1.4.2 Notions de connexité
Un graphe non orienté est connexe si chaque sommet est accessible à partir de n'importe quel autre. Autrement dit, si pour tout couple de sommets distincts
(si, s j) E 82, il existe une chaine entre si et s j.
Une composante connexe d'un graphe non orienté G est un sous-graphe G' de
G qui est connexe et maximal.
Un graphe orienté est fortement connexe si chaque sommet est accessible à partir
de n'importe quel autre. Autrement dit, si pour tout couple de sommets distincts
(Si, s j) E 82, il existe un chemin de si vers s j , et un chemin de s j vers si.
Une composante fortement connexe d'un graphe orienté Gest un sous-graphe
G' de G qui est fortement connexe et maximal (c'est à dire qu'aucun autre
sous-graphe fortement connexe de G ne contient G').
3.1.4.3 Distance
Soit G un graphe et s, s' deux sommets. La distance entre s et s' est la plus petite
longueur d'un chemin d'extrémité s et s'. Dans un graphe orienté, la distance de s vers
s' est la plus petite longueur d'un chemin orienté allant de s à s'.
Le diamètre D( G) du graphe G est la plus grande des distances dans G : D( G)
Chapitre 3. Problème de l'arbre dominant
3.1.5
Arbres
On appelle arbre tout graphe connexe sans cycle. Un graphe sans cycle mais non connexe est appelé une forêt. Une feuille ou sommet pendant est un sommet de degré 1.
Quelques propriétés : 1. G est un arbre,
2. G est sans cycle et connexe,
3. G est sans cycle et comporte n - 1 arêtes,
4. Gest connexe et comporte n - 1 arêtes,
5. chaque paire u, v de sommets distincts est reliée par une seule chaîne simple (et le graphe est sans boucle).
3.2
Quelques problèmes principaux
3.2.1
Ensemble dominant
Un sous-ensemble de sommets, D Ç V, est un ensemble dominant du graphe G =
(V, E) si chaque sommet de G est soit un membre de D, soit adjacent à un sommet de D. En outre, si D induit un sous-graphe connexe, il est appelé ensemble dominant connexe ( connected dominating set, CDS). Le cardinal minimum d'un ensemble dominant connexe, noté {c(G), est appelé le nombre de dominance connexe de G. Un CDS ayant une taille égale au nombre de domination connexe est dit ensemble dominant connexe minimum ou minimum connected dominating set (MCDS) en anglais.
Plus formellement, un ensemble dominant d'un graphe G
=
(V, E) est un sous-ensemble D Ç V tel que T(D)UD =V. Autrement dit, Vv EV; (T(v)U{ v} )nD#
0.
Un ensemble dominant D est dit connexe si le sous-graphe (D, E(D)), qu'il induit, est connexe, avec E(D) = { {i,j} E Eli E D,j ED}.3.2.2
Arbre de poids minimal (MST)
Soit le graphe G = (V, E) avec un poids associé à chacune de ses arêtes. On veut trouver, dans G, un arbre maximal A= (V, F) de poids total minimum.
Problème : relier n villes par un réseau câblé de la manière la plus économique possible. • On suppose connue la longueur de câble nécessaire reliant les villes
i
etj.
• Le réseau doit être connexe et n'admet pas de cycles pour être de cout minimum. • C'est donc un arbre et ce doit être l'arbre maximum le plus économique.
,.
"'
'
..
Chapitre 3. Problème de l'arbre dominant
L'algorithme de l'arbre couvrant de poids minimal du Kruskal noté algorithme 3.1 est
comme suit:
Algorithm 3.1 Algorithme de Kruskal
ENTRÉES:
1: Graphe G =(V, E)(IVI = n,
IEI
= m)2: pour chaque arête e de E, son poids c(e) faire.
SORTIES:
3: Arbre ou forêt maximale A = (V, F) de poids minimum.
4: Trier et renuméroter les arêtes de G dans l'ordre croissant de leur poids : c(e1) ~
c(e2) ~ ... ~ c(em)·
5: fin pour
6: Poser ,F :=
0
,k := 07: tantque k
<
m &!FI
<
n - 1 faire8: si ek+l ne forme pas de cycle avec F alors
9: F :=FU
{
ek+i
}
10: fin si
11: k := k + 1
12: fin tantque
Remarque : S'il y a plusieurs arêtes de même poids, il peut y avoir plusieurs arbres
couvrants de poids minimum : tout dépend de l'ordre dans lequel ces arêtes ont été triées.
3.2.3
Couverture par sommets
Une couverture par sommets, ou transversale d'un graphe G est un ensemble C de
sommets tel que chaque arête de G = (V, E) est incidente à au moins un sommet de
C, ie un sous-ensemble de sommets S Ç V tel que pour chaque arête ( u, v) de G on a
u E S ou v E S. On dit que l'ensemble C couvre les arêtes de G. La figure 3.8 montre
des exemples de couvertures des sommets de deux graphes (l'ensemble C est formé des
sommets noires).
~~
FIGURE 3.8 - exemples de couverture par sommets
Une couverture minimale par sommets est une couverture des sommets de taille
minimale.
- La recherche d'un ensemble transversal minimum (minimum vertex cover problem)
Chapitre 3. Problème de l'arbre dominant
Données : Graphe G
Question : Le plus petit nombre k tel que G a un transversal de taille k
Problème de décision correspondant (vertex cover pro blem) Données : Graphe G et un entier positif k
Question : Est-ce que G contient un transversal de taille k ?
Si un ensemble de sommets S est un transversal, son complément est un stable (ou ensemble indépendant).
3.2.4
Couverture par
arêtes
La couverture par arêtes d'un graphe Gest un ensemble des arêtes C tel que chaque sommet de Gest incident avec au moins une arête en C. L'ensemble C est censé recouvrir les sommets de G. La figure 3.9 montre des exemples de couverture des arêtes de deux graphes.
~~
FIGURE 3.9 - exemples de couverture par arêtes
3.2.5
La coloration
La coloration des sommets d'un graphe G = (V, E) consiste à affecter à tous les sommets de ce graphe une couleur de telle sorte que deux sommets adjacents ne portent
pas la même couleur. Une coloration avec k couleurs est donc une partition de l'ensemble des sommets en k stables.
Nombre chromatique : Le nombre chromatique du graphe G, noté r(G), est le plus
petit entier k pour lequel il existe une partition de V en k sous-ensembles stables. L'algorithme 3.2 résume les étape d'algorithme de coloration de Welsh et Powell.
Chapitre 3. Problème de l'arbre dominant
Algorithm 3.2 Algorithme de coloration de Welsh et Powell
1: Étape 1 :
- Classer les sommets du graphe dans l'ordre décroissant de leur degré, et attribuer
à chacun des sommets son numéro d'ordre dans la liste obtenue.
2: Étape 2 :
- En parcourant la liste dans l'ordre, attribuer une couleur non encore utilisée au
premier sommet non encore coloré, et attribuer cette même couleur à chaque
sommet non encore coloré et non adjacent à un sommet de cette couleur.
3: Étape 3:
4: si il reste des sommets non colorés dans le graphe alors
5: revenir à l'étape 2.
6: sinon
7: Fin.
8: fin si
3.3 Problème de l'arbre dominant
Le problème de l'arbre dominant, abordé dans cet article, a récemment été présenté
par Shin et al. Dans [Shin et al., 2010]. Ce problème est défini comme suit :
Soit G = (V, E) un graphe non orienté, connecté, pondéré, où V désigne l'ensemble des sommets et E désigne l'ensemble des arêtes. A chaque arête e E E, un poids non négatif
We est attribué. Un arbre T = (V(T), E(T)) du graphe Gest appelé arbre dominant si chaque sommet v EV qui n'est pas dans Test adjacent à un sommet en T. ou autrement dit :
Un arbre dominant T
=
(V(T), E(T)) de G avec V(T)c
V et E(T)c
E est un graphe connexe acyclique où chaque nœud v E V\ V(T) est adjacent à un nœud en V(T). Lepoids d'un arbre T est défini comme suit :
L
Ce(3.1)
eEE(T)
Où Ce ER+ désigne le poids d'une arête e E E.
Le problème de l'arbre dominant (DTP) est de construire un arbre dominant T du graphe
G avec un poids minimal.
Le DTP a plusieurs applications dans la conception de réseau et le routage réseau. La
multidiffusion est un exemple donné dans [Shin et al., 2010], dont le but est la livraison
simultanée des mêmes données à un groupe
d
'
ordinateurs de destination.
Les serveurs
sont connectés par une structure de réseau arborescente T, et tous les autres ordinateursChapitre 3. Problème de l'arbre dominant
des données d'un serveur à l'autre, la somme des poids des arêtes en T équivaut à un coût global pour transmettre des données d'un serveur à l'autre.
Les premières approches métaheuristiques pour résoudre le DTP ont été proposée dans [Sundar and Singh, 2013], où les auteurs ont mis en œuvre deux techniques d'intelli-gence d'essaim : la colonie d'abeilles artificielles et l'optimisation des colonies de fourmi..,. L'algorithme d'optimisation des colonies de fourmis a produit de meilleurs résultats sur la plupart des grandes instances, mais il était plus lent que l'algorithme d'optimisation des colonies d'abeilles artificielles.
La figure 3.10 montre un exemple du problème DT.
FIGURE 3.10 - exemple d'un problème DT
Formulation du problème
Soit un arbre dominant T de G représenté par un vecteur d'incidence x E {O, l}IEI,
où Xuv = 1 si uv E E(T) et Xuv = 0, sinon.
Définir les variables binaires Yv E {0,1} pour tout v EV, où Yv
=
1 si v E V(T), etYv = 0, sinon. Soit E(S) désigne l'ensemble des arêtes avec les deux points d'extrémité dans SC V et soit N(v) = {u 1 uv E E} représente le voisinage d'un nœud v. Un modèle
exponentiel [Shin et al., 2010] pour ce problème est comme suit :
(P)
min L CuvXuv x,y uvEE s.t. L Xuv - L Yv = -1, uvEE vEV L Xuv~
ISI -
1, V S C V, uvEE(s)Yu+ Yv ~ 2xuv, Vuv E E,