Eléments de Théorie des Graphes

Documents pareils
Eléments de Théorie des Graphes et Programmation Linéaire

Introduction à la théorie des graphes. Solutions des exercices

Chapitre 5 : Flot maximal dans un graphe

Programmation linéaire

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Programmation linéaire

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

MIS 102 Initiation à l Informatique

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

Introduction à l étude des Corps Finis

Fonctions de plusieurs variables

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Le produit semi-direct

Introduction à la théorie des graphes

Les indices à surplus constant

Programmation linéaire et Optimisation. Didier Smets

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

LE PROBLEME DU PLUS COURT CHEMIN

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Raisonnement par récurrence Suites numériques

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

Université Paris-Dauphine DUMI2E 1ère année, Applications

Peut-on imiter le hasard?

Suites numériques 3. 1 Convergence et limite d une suite

Résolution d équations non linéaires

Introduction à MATLAB R

Chapitre 1 : Évolution COURS

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Chapitre 2 Le problème de l unicité des solutions

Plus courts chemins, programmation dynamique

Logique. Plan du chapitre

Cours de mathématiques

Chapitre 2. Matrices

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

3 Approximation de solutions d équations

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Cours 02 : Problème général de la programmation linéaire

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

Rappel sur les bases de données

Chapitre 6. Fonction réelle d une variable réelle

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Date : Tangram en carré page

Probabilités sur un univers fini

BACCALAUREAT GENERAL MATHÉMATIQUES

Résolution de systèmes linéaires par des méthodes directes

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

III- Raisonnement par récurrence

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Architecture matérielle des systèmes informatiques

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

Chp. 4. Minimisation d une fonction d une variable

Chapitre 2. Eléments pour comprendre un énoncé

Faculté des sciences Département de mathématiques. Théorie des graphes

Image d un intervalle par une fonction continue

Continuité et dérivabilité d une fonction

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

1 Complément sur la projection du nuage des individus

Initiation à l algorithmique

Qualité du logiciel: Méthodes de test

Construction d un cercle tangent à deux cercles donnés.

Corps des nombres complexes, J Paul Tsasa

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

CH.6 Propriétés des langages non contextuels

Calcul différentiel sur R n Première partie

chapitre 4 Nombres de Catalan

Carl-Louis-Ferdinand von Lindemann ( )

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Représentation d un entier en base b

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Quelques algorithmes simples dont l analyse n est pas si simple

Théorie et codage de l information

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

La persistance des nombres

CONSEIL NATIONAL DE LA COMPTABILITÉ Remplacement d instruments

Correction de l examen de la première session

Pourquoi l apprentissage?

Intégration et probabilités TD1 Espaces mesurés Corrigé

La fonction exponentielle

enquête pour les fautes sur le fond, ce qui est graves pour une encyclopédie.

Calcul intégral élémentaire en plusieurs variables

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Chapitre VI - Méthodes de factorisation

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Cours d analyse numérique SMI-S4

Table des matières. 1 Programmation linéaire 1

Transcription:

INSTITUT NATIONAL POLYTECHNIQUE DE LORRAINE Ecole Nationale Supérieure d Electricité et de Mécanique Eléments de Théorie des Graphes Didier Maquin Version provisoire du mai 00

Table des matières Avant propos Un bref historique de la théorie des graphes Introduction 6. Qu est-ce qu un graphe?................................ 6. Graphes et applications multivoques......................... 7. Principales définitions................................. 8 Modes de représentation d un graphe 9. Listes de succession................................... 9. Matrice d adjacence.................................. 0. Matrice d incidence................................... Etude de la connexité. Chaînes et cycles, élémentaires et simples....................... Chemins et circuits, élémentaires et simples...................... Graphes et sous-graphes connexes............................ Graphes et sous-graphes fortement connexes...................... Cycles et nombre cyclomatique............................ Parcours eulériens et hamiltoniens. Chaînes et cycles eulériens................................ Chaînes et cycles hamiltoniens............................ 7 6 Méthode de recherche de chemins 8 6. Rappel sur les opérations booléennes sur les matrices................ 8 6. Recherche de chemins................................. 9 6. Le problème du plus court chemin.......................... 0 7 Arbres et arborescences 7. Définitions et propriétés................................ 7. Arbres couvrants de poids minimum......................... 8 Réseaux, réseaux de transport et problèmes de flots 6 8. Définitions........................................ 6 8. Recherche d un flot complet.............................. 7 8. Amélioration du flot.................................. 8 8. Recherche d un flot maximal : algorithme de Ford et Fulkerson.......... 9 8. Exemple traité manuellement............................. 9 8.6 Recherche d un flot maximal à coût minimal..................... 9 Couplages 9. Le problème du couplage maximal.......................... 9. Couplage maximal et flot maximal.......................... 9. Couplage de poids maximal.............................. 6 9. Problèmes d affectation................................ 7

0 Problèmes d ordonnancement 0 0. Le graphe potentiels-tâches.............................. 0. Le graphe potentiels-étapes ou graphe PERT.................... 0. Résolution........................................ 0. Compléments...................................... Annexe A - Implémentation de l algorithme de Moore-Dijkstra 6 Annexe B - Implémentation de l algorithme de Floyd 0 Annexe C - Implémentation de l algorithme de Prim Références

Avant propos Faut t faire un dessin?. La représentation d un problème par un dessin, un plan, une esquisse contribue souvent à sa compréhension. Le langage des graphes est construit, à l origine, sur ce principe. Nombres de méthodes, de propriétés, de procédures ont été pensées ou trouvées à partir d un schéma pour être ensuite formalisées et développées. Chacun d entre nous a, au moins une fois, vu ou utilisé un plan de métro, une carte de lignes ferroviaires, un plan électrique, un arbre généalogique ou un organigramme d entreprise ; ainsi, tout le monde sait plus ou moins intuitivement ce qu est un graphe. Toutefois, entre cette notion vague où des points, représentant des individus, des objets, des lieux ou des situations, sont reliés par des flèches, il y a une longue élaboration des concepts. La première difficulté à laquelle on peut être confronté concerne la terminologie (très abondante en théorie des graphes). Nous avons donc choisi d isoler les principales définitions du reste du cours en utilisant une mise en page différente. La théorie des graphes constitue aujourd hui un corpus de connaissances très important. Comme son nom l indique, ce cours ne constituera donc qu une introduction à cette théorie. Nous le préciserons ultérieurement, le développement de cette théorie doit beaucoup à celui des calculateurs. Il nous a donc semblé incontournable d exposer quelques algorithmes de base (recherche de chemin, d arbre, de flots, etc.). Cependant, ceci ne constitue pas le corps de cet enseignement même si les problèmes pratiques de mise en œuvre sont importants. Nous n évoquerons pas, par exemple, l optimalité de telle ou telle représentation d un graphe au regard du traitement que l on souhaite effectuer, ni la complexité (au sens nombre d opérations élémentaires) des algorithmes. De manière à permettre au lecteur intéressé de juger des difficultés de mise en œuvre des algorithmes littéraux, plus clairs pour la compréhension, décrits dans le corps du texte, quelques implémentations à l aide du langage Matlab r sont donnés en annexe. Ces fonctions ne prétendent nullement à être efficaces ou efficientes sur des données quelconques ; elles ne sont données qu à titre d illustration. De même, nous nous sommes efforcés ce citer, au moment de l introduction des méthodes de base, les fonctions de la boîte à outils de manipulation de graphes Metanet du logiciel Scilab c qui leur correspondent. Un bref historique de la théorie des graphes Tout le monde s accorde à considérer que la théorie des graphes est née en 76 avec la communication d Euler (707-78) dans laquelle il proposait une solution au célèbre problème des ponts de Königsberg (Euler, 76). Le problème posé était le suivant. Deux îles A et D sur la rivière Pregel à Königsberg (alors capitale de la Prusse de l Est, aujourd hui rebaptisée Kaliningrad) étaient reliées entre elles ainsi qu aux rivages B et C à l aide de sept ponts (désignés par des lettres minuscules) comme le montre la figure. Fig. La rivière Pregel et l île de Kneiphof

Le problème posé consistait, à partir d une terre quelconque A, B, C, ou D, à traverser chacun des ponts une fois et une seule et à revenir à son point de départ (sans traverser la rivière à la nage!). Euler représenta cette situation à l aide d un dessin où les sommets représentent les terres et les arêtes, les ponts comme le montre la figure. C A D B Fig. Graphe associé au problème des ponts de Königsberg Comme nous le montrerons ultérieurement, Euler démontra que ce problème n a pas de solution. Le problème des ponts de Königsberg est identique à celui consistant à tracer une figure géométrique sans lever le crayon et sans repasser plusieurs fois sur un même trait. Pendant les cent années qui suivirent, rien ne fut fait dans ce domaine de recherche. En 87, Kirchhoff (8-887) développa la théorie des arbres pour l appliquer à l analyse de circuits électriques. Dix ans plus tard, Cayley (8-89) découvrit la notion d arbre alors qu il essayait d énumérer les isomères saturés des hydrocarbures de type C n H n+. A cette époque, deux autres problèmes d importance pour la théorie des graphes furent également proposés et partiellement résolus. Le premier est la conjecture des quatre couleurs qui affirme que quatre couleurs suffisent pour colorier n importe quelle carte plane telle que les pays ayant une frontière commune soient de couleurs différentes. C est sans doute Möbius (790-868) qui présenta le premier ce problème dans l un de ses cours en 80. Environ dix ans après, de Morgan (806-87) essaya de résoudre ce problème. Les lettres de de Morgan à ces divers collègues mathématiciens constituent les premières références à la conjecture des quatre couleurs. Le problème devint célèbre après sa publication, par Cayley en 879, dans le premier volume des Proceedings of the Royal Geographic Society. Ce problème est resté très longtemps sans solution. Il fallut attendre jusqu en 976 pour que Appel et Haken prouvent ce théorème en réduisant le problème à un nombre fini de situations particulières et en trouvant une solution pour chacune d entre elles à l aide d un ordinateur. Le second problème est dû à Sir Hamilton (80-86). En 89, il inventa un casse-tête qu il vendit pour guinées à un fabricant de jouet de Dublin. Ce jeu consiste en un dodécaèdre régulier en bois (un polyèdre à faces et 0 sommets), chaque face étant un pentagone régulier comme le montre la figure. Trois arêtes sont donc issues de chaque sommet. Un clou est fiché sur chaque sommet marqué du nom de vingt grandes villes mondiales. Le casse-tête consiste à enrouler une ficelle passant une fois et une seule fois par chacune des villes (sommets). Bien que la solution de ce problème soit aisée à obtenir, personne n a encore trouvé de condition nécessaire et suffisante de l existence d un tel chemin (appelé chemin Hamiltonien) dans un graphe quelconque. Cette période fertile fut suivie d un demi-siècle de relative inactivité. Les années 90 virent 6

Fig. Un dodécaèdre régulier la résurgence de l intérêt pour les graphes. L un des pionniers de cette période fut König à qui l on doit le premier ouvrage consacré entièrement à la théorie des graphes (König, 96). Il est sans doute à l origine de l utilisation du terme graphe pour désigner ce qui était préalablement considéré comme un ensemble de points et de flèches. A partir de 96, la théorie des graphes a connu un développement intense sous l impulsion de chercheurs motivés par la résolution de problèmes concrets. Parmi ceux-ci, citons de manière privilégiée Kuhn (9), Ford et Fulkerson (96) et Roy (99). Parallèlement, un important effort de synthèse a été opéré en particulier par Claude Berge. Son ouvrage Théorie des graphes et ses applications publié en 98 (Berge, 98) marque sans doute l avènement de l ère moderne de la théorie des graphes par l introduction d une théorie des graphes unifiée et abstraite rassemblant de nombreux résultats épars dans la littérature. Depuis, cette théorie a pris sa place, en subissant de très nombreux développement essentiellement dus à l apparition des calculateurs, au sein d un ensemble plus vaste d outils et de méthodes généralement regroupées sous l appellation recherche opérationnelle ou mathématiques discrètes. Introduction. Qu est-ce qu un graphe? Définition On appelle graphe G = (X, A) la donnée d un ensemble X dont les éléments sont appelés sommets et d une partie de A symétrique ( (x, y) A (y, x) A) dont les éléments sont appelés arêtes. En présence d une arête a = (x, y) qui peut être notée simplement xy, on dit que x et y sont les extrémités de a, que a est incidente en x et en y, et que y est un successeur ou voisin de x (et vice versa). On dit qu un graphe est sans boucle si A ne contient pas d arête de la forme (x, x), c est-à-dire joignant un sommet à lui-même. Le nombre de sommets est appelé ordre du graphe. Un graphe ne possédant pas de boucle ni d arêtes parallèles (deux arêtes distinctes joignant la même paire de sommets) est appelé graphe simple ou -graphe. En revanche un p-graphe ou graphe généralisé est un graphe pour lequel il n existe jamais plus de p arêtes de la forme (x, x). Graphiquement, les sommets peuvent être représentés par des points et l arête a = (x, y) par un trait reliant x à y. On notera que la disposition des points et la longueur ou la forme 7

(rectiligne ou incurvée) des traits n a aucune importance. Seule l incidence des différentes arêtes et sommets compte. A titre d exemple, les deux graphes de la figure sont identiques. Fig. Deux représentations graphiques d un même graphe Dans le tracé graphique d un graphe, deux arêtes peuvent sembler avoir une intersection en un point qui n est pas un sommet. C est le cas, par exemple, des arêtes e et f du graphe de la figure. De telles arêtes peuvent être vues comme étant placées dans des plans différents et n ayant donc aucun point commun. a e d b f c Fig. Les arêtes e et f n ont pas de point commun Les graphes ainsi définis sont dits graphes non orientés. Dans certaines situations cependant, l orientation des arêtes est importante. Définition On appelle graphe orienté ou digraphe G = (X, A) la donnée d un ensemble X dont les éléments sont appelés sommets et d une partie A de X X dont les éléments sont appelés arcs ou arêtes. En présence d un arc a = (x, y) qui peut être noté simplement xy, on dit que x est l origine (ou extrémité initiale) et y l extrémité (terminale) de a, que a est sortant en x et incident en y, et que y est un successeur de x tandis que x est un prédécesseur de y. On dit aussi que x et y sont adjacents.. Graphes et applications multivoques L ensemble des successeurs d un sommet x X est noté Γ(x). L application Γ qui, à tout élément de X, fait correspondre une partie de X (un élément de P(X)) est appelée une application multivoque. L ensemble des prédécesseurs d un sommet x X peut alors être noté Γ (x) 8

où Γ est l application (multivoque) réciproque de Γ. Si le graphe G est un -graphe, on constate qu il est parfaitement déterminé par la donnée de l ensemble X et de l application multivoque Γ de X P(X). Un tel graphe peut donc aussi être noté : G = (X, Γ).. Principales définitions Les définitions qui suivent sont énoncées dans le cadre des graphes orientés. Le lecteur transposera aisément ces définitions (si elles ont un sens) au cas des graphes non orientés. Définition On appelle degré sortant ou demi-degré extérieur d un sommet x le nombre d arcs de la forme a = (x, y) avec y x, c est-à-dire le nombre d éléments de Γ(x)\ {x}. On note d s (x) ce degré. On appelle degré entrant ou demi-degré intérieur d un sommet x le nombre d arcs de la forme a = (y, x) avec y x, c est-à-dire le nombre d éléments de Γ (x)\ {x}. On note d e (x) ce degré. On appelle degré de x (ou valence) la somme du degré entrant et du degré sortant. Un sommet de degré entrant non nul et de degré sortant nul est appelé puits, tandis qu un sommet de degré entrant nul et de degré sortant non nul est appelé source. Un sommet n ayant pas d arcs incidents est appelé sommet isolé ; ces sommets ont un degré nul. Deux arcs adjacents sont dits en série si leur sommet commun est de degré égal à deux. Dans la définition d un graphe, l ensemble des arcs A peut être vide ; dans ce cas, on a affaire à un graphe nul. Tous les sommets d un graphe nul sont donc des sommets isolés. En revanche, l ensemble des sommets X ne peut être vide sinon le graphe correspondant n existe pas. Cela signifie donc qu un graphe comporte au moins un sommet. Définition On appelle graphe réflexif un graphe possédant une boucle sur chaque sommet. Un graphe est symétrique si, pour tout arc a a = (y, x) appartient également à A. = (x, y) appartenant à A, l arc Un graphe est antisymétrique si, pour tout arc a = (x, y) appartenant à A, l arc a = (y, x) n appartient pas à A. Enfin, un graphe est transitif si, quelque soit deux arcs adjacents a = (x, y) et a = (y, z) appartenant à A, alors l arc a = (x, z) appartient également à A. Le concept de graphe symétrique est très proche de celui des graphes non orientés. En fait, à tout graphe symétrique, on peut associer un graphe non orienté en substituant aux arcs a = (x, y) et a = (y, x), une arête a = (y, x). 9

Définition Un graphe G = (X, A) est dit complet si, pour toute paire de sommets (x, y), il existe au moins un arc de la forme (x, y) ou (y, x). Un graphe simple complet d ordre n est noté K n. Un sous-ensemble de sommets C X tel que deux sommets quelconques de C sont reliés par une arête est appelé une clique. Définition 6 Soit un graphe G = (X, A) et X X. Le sous-graphe engendré par X est G = (X, A ), A étant formé des arêtes dont les deux extrémités sont dans X. Si l on se donne un sous-ensemble A de A, le graphe partiel engendré par A est G = (X, A ). Dans certaines situations, les sommets de G ayant un degré nul (sommets isolés n ayant aucune arête incidente appartenant à A ) peuvent être supprimés du graphe partiel. D après la définition précédente, une clique d un graphe G est donc un sous-graphe complet de G. Modes de représentation d un graphe Comme nous l avons mentionné précédemment, l essor de la théorie des graphes est essentiellement dû à l avènement de puissants calculateurs. Il est donc légitime de s intéresser à la manière de représenter les graphes au sein d un ordinateur. Plusieurs modes de représentation peuvent être envisagés selon la nature des traitements que l on souhaite appliquer au graphe considéré.. Listes de succession Un graphe peut être représenté à l aide d un dictionnaire ; il s agit d une table à simple entrée où chaque ligne correspond à un sommet et comporte la liste des successeurs ou des prédécesseurs de ce sommet. Considérons le graphe de la figure 6. 7 6 8 Fig. 6 Un graphe élémentaire Celui-ci peut être représenté par les deux tables suivantes : 0

,,, -,,,, Dans la mesure où, pour une table donnée, le nombre de successeurs ou de prédécesseurs n est pas le même pour chaque sommet, il est préférable de représenter le dictionnaire sous forme de deux tableaux : le premier comprenant autant d éléments que de sommets, ces éléments pointant, dans un second tableau, les débuts de listes de successeurs (ou de prédécesseurs). La figure 7 montre cette organisation en ce qui concerne la table des successeurs. 6 0 7 Fig. 7 Codage d une liste de successeurs Cette représentation est un peu redondante dans le cas des graphes non orientés ; elle est cependant assez commode pour parcourir le graphe. L encombrement de cette représentation est minimal puisqu il correspond exactement à la quantité d information fournie par le graphe.. Matrice d adjacence Les outils classiques d algèbre linéaire peuvent également être utilisés pour coder les graphes. La première idée consiste à considérer chaque arc comme un lien entre deux sommets. Définition 7 Considérons un graphe G = (X, A) comportant n sommets. La matrice d adjacence de G est égale à la matrice U = (u ij ) de dimension n n telle que { si (i, j) A (c est-à-dire (i, j) est une arête) u ij = 0 sinon Une telle matrice, ne contenant que des 0 et des est appelée, de manière générale, une matrice booléenne. Un graphe orienté quelconque a une matrice d adjacence quelconque, alors qu un graphe non orienté possède une matrice d adjacence symétrique. L absence de boucle se traduit par une diagonale nulle. La matrice d adjacence du graphe de la figure 6 est la suivante : U = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Ce mode de représentation engendre des matrices très creuses (i.e. comprenant beaucoup de zéros). Cependant la recherche de chemins ou de chaînes s effectue aisément avec une telle représentation (cf 6.). De plus, la matrice d adjacence possède quelques propriétés qui peuvent être exploitées. Considérons un graphe G et sa matrice d adjacence associée U : la somme des éléments de la i eme ligne de U est égale au degré sortant d s (x i ) du sommet x i de G. la somme des éléments de la j eme colonne de U est égale au degré entrant d e (x j ) du sommet x j de G. U est symétrique si, et seulement si, le graphe G est symétrique.. Matrice d incidence La seconde idée permettant une représentation matricielle d un graphe exploite la relation d incidence entre arêtes et sommets. Définition 8 Considérons un graphe orienté sans boucle G = (X, A) comportant n sommets x,..., x n et m arêtes a,..., a m. On appelle matrice d incidence (aux arcs) de G la matrice M = (m ij ) de dimension n m telle que : si x i est l extrémité initiale de a j m ij = si x i est l extrémité terminale de a j 0 si x i n est pas une extrémité de a j Pour un graphe non orienté sans boucle, la matrice d incidence (aux arêtes) est définie par : { si xi est une extrémité de a m ij = j 0 sinon La matrice d incidence du graphe de la figure 6 s écrit sous la forme suivante : M = Etude de la connexité 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0. Chaînes et cycles, élémentaires et simples Définition 9 Une chaîne est une séquence finie et alternée de sommets et d arêtes, débutant et finissant par des sommets, telle que chaque arête est incidente avec les sommets qui l encadre dans la séquence. Une arête ne doit pas intervenir plusieurs fois dans la séquence contrairement à un sommet. Le premier et le dernier sommet sont appelés (sommets) extrémités de la chaîne.

La longueur de la chaîne est égale au nombre d arêtes qui la composent. Si aucun des sommets composant la séquence n apparaît plus d une fois, la chaîne est dite chaîne élémentaire. Si aucune des arêtes composant la séquence n apparaît plus d une fois, la chaîne est dite chaîne simple. Un cycle est une chaîne dont les extrémités coïncident. Un cycle élémentaire (tel que l on ne rencontre pas deux fois le même sommet en le parcourant) est un cycle minimal pour l inclusion, c est-à-dire ne contenant strictement aucun autre cycle.. Chemins et circuits, élémentaires et simples Toutes les définitions précédentes, s appliquant au cas des graphes non orientés, peuvent être transposées au cas des graphes orientés. Définition 0 Un chemin est une séquence finie et alternée de sommets et d arcs, débutant et finissant par des sommets, telle que chaque arc est sortant d un sommet et incident au sommet suivant dans la séquence (cela correspond à la notion de chaîne orientée ). Si aucun des sommets composant la séquence n apparaît plus d une fois, le chemin est dit chemin élémentaire. Si aucune des arêtes composant la séquence n apparaît plus d une fois, le chemin est dit chemin simple. Un circuit est un chemin dont les extrémités coïncident. En parcourant un circuit élémentaire, on ne rencontre pas deux fois le même sommet.. Graphes et sous-graphes connexes De manière intuitive, la notion de connexité est triviale. Un graphe est connexe si l on peut atteindre n importe quel sommet à partir d un sommet quelconque en parcourant différentes arêtes. De manière plus formelle, on a : Définition Un graphe G est connexe s il existe au moins une chaîne entre une paire quelconque de sommets de G. La relation : x i R x j { soit xi = x j soit il existe une chaîne joignant x i à x j est une relation d équivalence (réflexivité, symétrie, transitivité). Les classes d équivalence induites sur X par cette relation forment une partition de X en X, X,..., X p.

Le nombre p de classes d équivalence distinctes est appelé nombre de connexité du graphe. On peut alors donner une autre définition concernant la connexité d un graphe. Un graphe est dit connexe si et seulement si son nombre de connexité est égal à. Les sous-graphes G, G,..., G p engendrés par les sous-ensembles X, X,..., X p sont appelés les composantes connexes du graphe. Chaque composante connexe est un graphe connexe. La vérification de la connexité d un graphe est un des premiers problèmes de la théorie des graphes. Nous décrirons ultérieurement des algorithmes permettant d établir cette connexité. Définition Un point d articulation d un graphe est un sommet dont la suppression augmente le nombre de composantes connexes. Un isthme est une arête dont la suppression a le même effet. Un ensemble d articulation E X d un graphe connexe G est un ensemble de sommets tel que le sous-graphe G déduit de G par suppression des sommets de E, ne soit plus connexe.. Graphes et sous-graphes fortement connexes Définition Un graphe orienté est dit fortement connexe s il existe un chemin joignant deux sommets quelconques. La relation : soit x i = x j x i R x j soit il existe à la fois un chemin joignant x i à x j et un chemin joignant x j à x i est une relation d équivalence et les classes d équivalence induites sur X par cette relation forment une partition de X en X, X,..., X q. Les sous-graphes G, G,..., G q engendrés par les sousensembles X, X,..., X q sont appelés les composantes fortement connexes du graphe. Pour le graphe de la figure 8, les différentes composantes fortement connexes sont : C = {,,,, } C = {6, 7} C = {8} Définition On appelle graphe réduit G r le quotient du graphe G par la relation de forte connexité G r = G/R ; les sommets de G r sont donc les composantes fortement connexes et il existe un arc entre C i et C j si et seulement s il existe au moins un arc entre un sommet de C i et un sommet de C j dans le graphe G. On vérifie que le graphe G r est sans circuit. Le graphe réduit correspondant au graphe de la figure 8 est donné figure 9. La recherche des composantes fortement connexes et la détermination du graphe réduit revêtent une grande importance pour l analyse structurale d un système.

7 6 8 Fig. 8 Graphe orienté C C C Fig. 9 Graphe réduit du graphe de la figure 8. Cycles et nombre cyclomatique Les notions de cycle et de cycle élémentaire ont déjà été définies au paragraphe.. Pour un cycle µ donné, on désigne par µ + l ensemble des arcs du cycle orientés dans le sens de parcours et par µ l ensemble des arcs orientés en sens contraire. Si le graphe possède m arcs désignés par a,..., a m, on peut faire correspondre à tout cycle µ un vecteur µ = (µ, µ,..., µ m ) tel que : si a i µ + µ i = si a i µ 0 si a i / µ + µ On remarque que µ est aussi un vecteur associé au cycle µ (obtenu en choisissant l autre sens de parcours). Au signe près, on pourra donc identifier le cycle µ au vecteur µ. Définition On dit que p cycles µ, µ,..., µ p sont dépendants s il existe, entre leurs vecteurs associés, une relation vectorielle de la forme : avec les λ i non tous nuls. λ µ + λ µ +... + λ p µ p = 0 Si la satisfaction de la relation précédente implique λ i = 0, i =,..., p, les p cycles sont dits indépendants.

Une base de cycles est un ensemble minimal de cycles indépendants tel que tout vecteur représentatif d un cycle puisse s exprimer comme combinaison linéaire des cycles de la base. On appelle nombre cyclomatique d un graphe G, la dimension de la base de cycles. On peut noter que le nombre cyclomatique v(g) d un graphe à n sommets, m arcs et p composantes connexes est égal à v(g) = m n + p. Parcours eulériens et hamiltoniens L étude des problèmes eulériens ou hamiltoniens (recherche d une chaîne ou d un cycle passant exactement une fois par chaque arête ou par chaque sommet ) remonte aux origines de la théorie des graphes. L intérêt porté aujourd hui à ces problèmes s explique par leurs nombreuses applications : tournées de distribution, tracé automatique sur ordinateur, problèmes d ordonnancement d atelier, etc.. Chaînes et cycles eulériens Il s agit là d une généralisation du jeu bien connu consistant à dessiner toutes les arêtes d un graphe avec un crayon sans jamais le soulever, ni passer deux fois sur la même arête. Définition 6 Soit G = (X, A) un graphe orienté. Une chaîne eulérienne est une chaîne empruntant une fois et une fois seulement chaque arête de G. Un cycle eulérien est une chaîne eulérienne dont les extrémités coïncident. Un graphe possédant un cycle eulérien est appelé graphe eulérien. Le problème de l existence et de la détermination d un cycle eulérien (d une chaîne eulérienne) dans un graphe non orienté a été posé la première fois et résolu par Euler en 76 à propos du célèbre problème des ponts de Königsberg évoqué au premier paragraphe. Euler prouva l impossibilité de l obtention d une solution en démontrant le théorème suivant : Théorème Un graphe non orienté connexe possède une chaîne eulérienne si et seulement si le nombre de sommets de degré impair est égal à 0 ou. Il admet un cycle eulérien si et seulement si tous ses sommets ont un degré pair. Montrons que la condition est nécessaire. Si le cycle eulérien existe, on peut l orienter de manière arbitraire. En chaque sommet, le nombre d arcs incidents doit être égal au nombre d arcs sortants, les sommets doivent donc être de degré pair. Dans le cas d une chaîne, les deux extrémités font exception ; on part ou l on arrive une fois de plus, d où un degré impair pour ces 6

deux sommets extrémités. Montrons maintenant que la condition est suffisante. Raisonnons par récurrence en supposant que le théorème est vérifié pour des graphes connexes ayant moins de m arêtes. Soit G = (X, A) un graphe de m arêtes vérifiant la condition du théorème. Si G possède deux sommets de degré impair, soient a et b ces sommets (si tous les sommets de G sont de degré pair, on choisit a quelconque et b confondu avec a). Soit L la chaîne parcourue par un voyageur partant de a dans une direction quelconque et seulement soumis à l interdiction d emprunter deux fois la même arête. Si, à un instant donné, il arrive en un sommet x b, il aura utilisé un nombre impair d arêtes incidentes à x et il pourra donc repartir par une arête non déjà utilisée. Quand il ne peut plus bouger, c est donc qu il est en b. Si toutes les arêtes ont été utilisées, L est une chaîne eulérienne et le théorème est vrai. Dans le cas contraire, le graphe partiel, défini par les arêtes non utilisées, a tous ses sommets de degré pair (de part la nature des suppressions effectuées). Soient G, G,..., G p les composantes connexes de G qui comportent au moins une arête. Chacun des sous graphes G i possède moins de m arêtes et d après l hypothèse de récurrence, il admet un cycle eulérien µ i. Comme G est connexe, L rencontre successivement G, G,..., G p en les sommets x, x,..., x p. Le parcours alors constitué par : la chaîne L entre a et x, le cycle µ entre x et x, la chaîne L entre x et x, le cycle µ entre x et x,... la chaîne L entre x p et b. constitue bien une chaîne eulérienne entre a et b dans G. Le théorème est donc vrai à l ordre m. Comme il est vrai à l ordre, il est démontré pour tout m. Le problème d Euler peut aussi être considéré avec des sens uniques. Définition 7 Un chemin dans un graphe orienté est dit eulérien s il passe exactement une fois par chaque arête. Un graphe orienté est dit eulérien s il admet un circuit eulérien. La démonstration précédente peut aisément être adaptée à cette nouvelle situation. Théorème Un graphe orienté connexe admet un chemin eulérien (mais pas de circuit eulérien) si, et seulement si, pour tout sommet sauf deux (a et b), le degré entrant est égal au degré sortant et d e (a) = d s (a) et d e (b) = d s (b) + Un graphe orienté connexe admet un circuit eulérien si, et seulement si, pour tout sommet, le degré entrant est égal au degré sortant. Parmi les problèmes prototypes classiques des formulations précédentes, citons le problème du postier chinois (non orienté) qui consiste à parcourir les rues d une ville en passant au moins 7

une fois dans chaque rue, le graphe n étant pas nécessairement eulérien ; on cherche bien sûr à minimiser la longueur totale du parcours. On rencontre ce genre de problème dans les organisations de tournées de distribution de courrier, de ramassage d ordures, d inspection de réseaux de distribution. Dans le cas orienté où chaque arc doit être emprunté dans un sens privilégié, le problème se ramène à la recherche d un flot à coût minimum (cf. 8.). Il s agit d abord de savoir si le parcours chinois a au moins une solution. Nous énonçons ici sans démonstration les résultats suivants. Théorème Un graphe non orienté admet un cycle chinois si, et seulement si, il est connexe. Un graphe orienté admet un circuit chinois si, et seulement si, il est fortement connexe. La résolution du problème du postier chinois peut s inspirer des méthodes de recherche de chaînes ou cycles eulériens. Cependant, on préfèrera formuler le problème en termes de couplage parfait de poids minimum (cf. 9.). Chaînes et cycles hamiltoniens Soit G = (X, A) un graphe connexe d ordre n. Définition 8 On appelle chemin hamiltonien (chaîne hamiltonienne) un chemin (une chaîne) passant une fois, et une fois seulement, par chacun des sommets de G. Un chemin hamiltonien (une chaîne hamiltonienne) est donc un chemin (une chaîne) élémentaire de longueur n. Un circuit hamiltonien (un cycle hamiltonien) est un circuit (un cycle) qui passe une fois, et une seule fois, par chacun des sommets de G. On dit qu un graphe G est hamiltonien s il contient un cycle hamiltonien (cas non orienté) ou un circuit hamiltonien (cas orienté). La notion de cycle hamiltonien trouve son origine dans le jeu inventé par Hamilton que nous avons évoqué au premier paragraphe. De nombreux problèmes concrets peuvent être formulés en termes de recherche de parcours hamiltoniens. On peut en particulier citer le problème du voyageur de commerce. Un représentant de commerce doit rendre visite à n clients x, x,..., x n en partant d une ville x 0 et revenir à son point de départ. Il connaît les distances d 0j qui séparent le dépôt x 0 de chacun de ses clients x j, ainsi que la distance d ij entre deux clients quelconques x i et x j. Dans quel ordre doit-il rendre visiste à ses clients pour que la distance totale parcourue soit minimale? Ce problème revient à chercher un cycle hamiltonien de longueur totale minimale dans le graphe complet G construit sur l ensemble des sommets X = {x 0, x,..., x n }, les 8

arêtes étant munies des longueurs d ij. Lorsque le point d arrivée est différent du point de départ, le problème revient à rechercher une chaîne hamiltonienne de longueur totale minimale. Un autre problème classique concerne l ordonancement de tâches. On cherche un ordre dans lequel on peut effectuer n tâches données (deux tâches quelconques ne pouvant être effectuées simultanément) tout en respectant un certain nombre de contraintes d antériorité. Si l on construit le graphe G dont l ensemble des sommets correspond à l ensemble des tâches, et où il existe un arc (i, j) si la tâche i peut être effectuée avant la tâche j, le problème revient à déterminer un chemin hamiltonien de G. D autres problèmes concrets peuvent se ramener également à la problématique précédente. On appelle cycle (circuit) préhamiltonien d un graphe G, un cycle (un circuit) passant au moins une fois par chaque sommet de G. Un graphe G qui admet un tel cycle (ou circuit) est appelé graphe préhamiltonien et une condition nécessaire et suffisante pour qu il en soit ainsi est que G soit connexe (fortement connexe). La recherche d un cycle (circuit) préhamiltonien de longueur minimale dans un graphe G où les arêtes (arcs) ont des longueurs données se ramène à un problème de recherche de cycle (circuit) hamiltonien dans le graphe complet G construit sur le même ensemble de sommets, la longueur d une arête (arc) (i, j) de G étant égale à la longueur de la plus courte chaîne (chemin) entre i et j. De nombreux problèmes du type voyageur de commerce sont en réalité des problèmes préhamiltoniens et, pour les résoudre, on commencera par calculer la matrice des plus courts chemins (des plus courtes chaînes). Notons que l on ne connaît pas de condition nécessaire et suffisante d existence de cycles ou de circuits hamiltoniens. 6 Méthode de recherche de chemins 6. Rappel sur les opérations booléennes sur les matrices Rappelons brièvement les deux opérations d addition et de multiplication booléenne notées et. Les variables A et B sont booléennes et prennent donc leur valeur dans {0, } A B A B A B 0 0 0 0 0 0 0 0 Avant de procéder à la recherche systématique de chemins, examinons, de façon générale, la signification des opérations sur les matrices d adjacence en termes de graphes. 9

Addition booléenne des matrices Soient deux graphes G et G, possédant les mêmes sommets, et leurs matrices d adjacence associées U et U de dimension n n. Calculons U = U U telle que : (U ) ij = (U ) ij (U ) ij Chaque élément non nul de U représente, par définition, un arc de G décrit par la matrice U. Pour qu un élément de U soit non nul, il faut que l un au moins des éléments correspondants de U ou U soit non nul. On conclut donc que cette opération revient à construire un graphe G comportant à la fois les arcs de G et ceux de G. Multiplication booléenne des matrices Considérons de nouveau les deux graphes G et G précédents et calculons U = U U telle que : (U ) ij = (U ) i (U ) j (U ) i (U ) j... (U ) in (U ) nj Pour que (U ) ij soit égal à, il faut qu il existe au moins un indice k tel que simultanément les éléments (U ) ik et (U ) kj soit égaux à. Cela revient à construire un graphe G dans lequel un arc (i, j) existe si et seulement s il existe un sommet k tel que (i, k) soit un arc de G et (k, j) un arc de G. 6. Recherche de chemins Soit U la matrice d adjacence associée au graphe G. Par définition, U ij = indique l existence d un chemin de longueur entre les sommets i et j. Multiplions U par elle-même, soit U = U U et considérons le graphe G associé à U. Chaque arc (i, j) de G exprime l existence d un chemin de longueur du sommet i au sommet j. En effet, d après l interprétation précédente, (i, j) existe si et seulement s il existe un sommet k tel que (i, k) et (k, j) sont des arcs de G. Démontrons par récurrence que, plus généralement, U p donne l existence des chemins de longueur p. Soit un graphe possédant n sommets et U sa matrice d adjacence associée. Admettons la propriété pour p et démontrons la pour p. Un chemin de longueur p entre les sommets i et j peut se décomposer en un chemin de longueur p entre les sommets i et k auquel on ajoute l arc (k, j). L existence du chemin entre les sommets i et k est donnée, par hypothèse, par l élément (U p ) ik, celle de l arc (k, j) par U kj. L existence d un chemin joignant les sommets i et j et passant par le sommet k est donc donnée par (U p ) ik U kj. Or, le sommet k est quelconque et peut être l un des n sommets du graphe. L existence d un chemin entre les sommets i et j s écrit donc : C ij = ( U p ) i U j ( U p ) i U j... ( U p ) in U nj L expression de C ij est, par définition, celle donnée pour calculer l élément (U p ) ij. Comme nous l avons vérifiée pour p =, la propriété est vraie quel que soit p. Remarquons que pour un graphe à n sommets, un chemin élémentaire comprend au plus n arcs. Il suffit donc, pour avoir l existence de tous les chemins, d élever successivement la matrice U jusqu à la puissance n. De plus, si deux matrices successives ainsi calculées sont identiques, il est inutile de poursuivre le calcul jusqu à la puissance n. 0

6. Le problème du plus court chemin Le problème de la recherche du plus court chemin dans un graphe se rencontre dans de nombreuses applications. On peut citer entre autres : les problèmes de tournées, certains problèmes d investissement et de gestion de stocks, les problèmes de programmation dynamique à états discrets et temps discret, les problèmes d optimisation de réseaux (routiers, télécommunications), certaines méthodes de traitement numérique du signal, de codage et de décodage de l information, les problèmes de labyrinthe et de récréations mathématiques. Le problème considéré se formule ainsi. Etant donné un graphe orienté G = (X, A), on associe à chaque arc a A un nombre l(a) R appelé longueur de l arc. On dit alors que G est valué par les longueurs l(a). Si a = (i, j), on utilisera également la notation l ij pour la longueur de l arc a. Le problème du plus court chemin entre deux sommets i et j sera de trouver un chemin µ(i, j) de i et j dont la longueur totale l(µ) = a µ(i,j) l(a) soit minimum. Ce problème a de nombreuses applications pratiques car la longueur l(a) peut s interpréter aussi bien comme un coût de transport sur l arc a, comme les dépenses de construction de l arc a, comme le temps nécessaire pour parcourir l arc a, etc. Selon les propriétés du graphe traité (les longueurs sont quelconques, positives ou toutes égales, le graphe est quelconque ou sans circuit) et selon le problème considéré (recherche du plus court chemin d un sommet à un autre, ou d un sommet à tous les autres, ou entre tous les couples de sommets) il existe de nombreux algorithmes permettant l obtention d une solution. Nous nous contenterons simplement ici de décrire les algorithmes les plus classiques, sans explorer toutes les situations. Dans beaucoup de situations, les longueurs sont positives. On utilisera alors l algorithme de Moore-Dijkstra pour calculer le plus court chemin d un sommet (arbitrairement le sommet numéro ) à tous les autres. Posons X = {,,..., n}. Soit l ij la longueur de l arc (i, j) si (i, j) A. Définissons π (i) comme la longueur minimum des chemins du sommet au sommet i ; en particulier π () = 0. L algorithme procède en n itérations. Au début de chacune des itérations, l ensemble des sommets est partitionné en deux sous-ensembles S et S = X\S. Le sous-ensemble S (initialisé à {}) contient les sommets définitivement marqués, c est-à-dire les sommets pour lesquels la marque π(i) représente effectivement la longueur du plus court chemin entre le sommet et le sommet i. Le complémentaire S contient tous les sommets ayant une marque provisoire définie par : k S : π(k) = min i S Γ k (π(i) + l ik ) On démontre alors aisément qu à une étape quelconque si j est le sommet de marque provisoire π(j) minimale c est-à-dire : π(j) = min (π(k)) k S

alors π(j) = π (j), c est-à-dire que le sommet j peut être inclus dans l ensemble S des sommets définitivement marqués (et, bien sûr, enlevé de S). On mettra donc à jour l ensemble S en incluant j (S S {j}) ainsi que les marques provisoires des sommets k de S reliés par un arc (j, k). Ceci se fera en considérant successivement tous les sommets k Γ(j) S et en remplaçant π(k) par π(j) + l jk chaque fois que π(j) + l jk < π(k). Si l on souhaite déterminer explicitement le plus court chemin, et non pas seulement sa longueur, on conservera, dans un tableau de prédécesseurs, l information selon laquelle le prédécesseur de k est j. Algorithme (Moore-Dijkstra) Recherche du plus court chemin entre deux sommets dans un graphe à longueurs positives. (a) - Initialisations S = {,,..., n} π() = 0 { li si i Γ() π(i) = + sinon (b) - Sélectionner j tel que π(j) = min (π(k)) k S Faire S S\{j} Si S = alors FIN (c) - Faire pour tout i S Γ(j) π(i) min (π(i), π(j) + l ji ) Retourner en (b) On trouvera en annexe A, un programme Matlab r implémentant cet algorithme. Sous Scilab c, la commande relative à la recherche du plus court chemin entre deux sommets se nomme shortest path. Considérons, à titre d exemple, le graphe de la figure 0. Les itérations de l algorithme précédent sont les suivantes : (a) S = {,,,, 6}, π() = 0, π() = 7, π() =, π() = π() = π(6) = (b) j =, S = {,,, 6} (c) S Γ() = {,, 6}, π() = min(7, + ) = 6, π() = min(, + ) =, π(6) = min(, + 7) = 8 (b) j =, S = {,, 6} (c) S Γ() = {, }, π() = min(6, + ) =, π() = min(, + ) = 8 (b) j =, S = {, 6} (c) S Γ() = {, 6}, π() = min(8, + ) = 8, π(6) = min(8, + ) = 6 (b) j = 6, S = {} (c) S Γ() = (b) j =, S =

7 7 6 Fig. 0 Graphe orienté Les longueurs des plus courts chemins seront donc : π() = 0, π() =, π() =, π() = 8, π() = et π(6) = 6 On peut également s intéresser à la détermination des plus courts chemins entre toutes les paires de sommets (on se place toujours dans la situation où les longueurs sont toutes positives). On peut, bien sûr, utiliser l algorithme précédent, mais son efficacité est faible devant ce type de problème. On préfèrera un algorithme se rattachant aux méthodes matricielles. L algorithme de Floyd que nous allons présenter est particulièrement simple dans sa mise en œuvre. Notons L = (l ij ) la matrice n n dont le terme (i, j) est égal à la longueur de l arc (i, j) si (i, j) A et + sinon (pour les termes diagonaux, on pose l ii = 0). Pour k n, notons L (k) = (l (k) ij ) la matrice dont le terme (i, j) représente la longueur minimale d un chemin d origine i et d extrémité j, et astreint à la condition que tous les sommets intermédiaires appartiennent au sous-ensemble {,,..., k}. Pour k = 0, on a L (0) = L, puisque l ij est la longueur du chemin direct (unique) entre i et j (sans sommet intermédiaire). On remarque alors que les matrices L (k) sont liées par la relation de récurrence : ( ) l (k) ij = min l (k ) ij, l (k ) ik + l (k ) kj En effet, deux situations peuvent se produire suivant que le plus court chemin de i à j à sommets intermédiaires dans {,,..., k} emprunte le sommet k ou non. Dans le premier cas, ce chemin est formé d un sous-chemin entre i et k, suivi d un sous-chemin entre k et j, chacun ne pouvant utiliser comme sommets intermédiaires que des sommets de {,,..., k } et devant être de longueur minimale. On doit donc avoir l (k) ij = l (k ) ik +l (k ) kj. Dans le second cas, on doit évidemment avoir l (k) ij = l (k ) ij. La matrice L (n), donnant l ensemble des valeurs des plus courts chemins dans le graphe, pourra donc être déterminée en n étapes de récurrence à partir de la relation précédente.

Algorithme (Floyd) Recherche de la matrice des plus courts chemins dans un graphe à longueurs positives. Pour k de à n Pour tout i et j de à n faire l ij = min (l ij, l ik + l kj ) Comme pour l algorithme précédent, si l on souhaite, en plus de la longueur des chemins, exhiber explicitement le chemin, on mettra à jour, au fûr et à mesure de l introduction d un nouveau sommet k, une matrice de prédécesseurs. Un programme Matlab r implémentant cet algorithme est donné en annexe B. 7 Arbres et arborescences 7. Définitions et propriétés Définition 9 Un arbre est un graphe connexe sans cycles. Un graphe sans cycle qui n est pas connexe est appelé une forêt (chaque composante connexe est un arbre). Par définition même, un arbre est donc un graphe simple. On constate également que T = (X, T ) est un arbre si et seulement s il existe une chaîne et une seule entre deux sommets quelconques. Etant donné un graphe quelconque G = (X, A) un arbre de G est un graphe partiel connexe et sans cycles. Si ce graphe partiel inclut tous les sommets du graphe G, l arbre est appelé arbre maximum ou arbre couvrant. Une forêt de G est un graphe partiel sans cycle de G (non nécessairement connexe). Une forêt maximale de G est une forêt de G maximale pour l inclusion (l ajout d une seule arête supplémentaire du graphe à cette forêt crée un cycle). Considérons un graphe G = (X, A) comportant n sommets, m arcs et p composantes connexes ; l algorithme suivant permet de construire une forêt maximale de G. Initialement, tous les arcs du graphe sont incolores. La méthode consiste à examiner successivement tous les arcs du graphe (dans n importe quel ordre) et à les colorer soit en rouge soit en vert. A une étape quelconque, G c est le graphe partiel engendré par les arcs colorés (rouges ou verts) et G r le graphe partiel engendré par les arcs rouges. Chaque fois qu un nouvel arc a incolore est examiné : soit il passe par a un cycle élémentaire µ dont tous les arcs (autres que a) sont rouges ; on colore alors l arc en vert, le nombre de connexité de G c et de G r reste constant, soit un tel cycle n existe pas, auquel cas l arc a permet de connecter deux sommets qui n étaient pas encore connectés dans G c ; on colore l arc a en rouge, le nombre de connexité de G c et de G r décroît de.

Pour montrer que le graphe partiel G r obtenu est bien une forêt maximale de G, il suffit d observer qu à tout instant, le graphe G r est sans cycle (c est donc bien une forêt de G) ; à la fin de la procédure, elle est bien maximale pour l inclusion car, en ajoutant un arc vert quelconque à G r, on crée un cycle. On peut également facilement démontrer les propriétés suivantes : Si G possède n sommets et p composantes connexes, une forêt maximale de G comporte exactement n p arcs. Soit T = (X, T ) une forêt maximale de G = (X, A). Alors T et G ont le même nombre de connexité. Soit T = (X, T ) une forêt maximale de G = (X, A). Alors, par tout arc a T = A T, il passe un cycle et un seul µ a dont tous les arcs (autres que a) appartiennent à T. Cette dernière propriété est importante car elle permet de construire une base de cycles d un graphe G (voir.). Soit un graphe G = (X, A) comportant n sommets, m arcs et p composantes connexes. Soit T = (X, T ) une forêt maximale de G = (X, A) et pour a T = A T, notons µ a le cycle (unique) contenu dans T + {a}. Les cycles {µ a } forment une base de cycles du graphe G, dont la dimension est le nombre cyclomatique de G. La notion d arborescense est l adaptation de la structure d arbre aux -graphes orientés. Définition 0 Un graphe G est une arborescence s il existe un sommet R appelé racine de G tel que, pour tout sommet S de G, il existe un chemin et un seul de R vers S. La notion d arborescence couvrante se définit comme celle d arbre couvrant, mais elle est plus délicate car il faut trouver une racine (qui n existe pas toujours). 7. Arbres couvrants de poids minimum Considérons le problème qui consiste à relier n villes par un réseau cablé de la manière la plus économique possible. On suppose connue la longueur l ij = l(a ij ) la longueur de câble nécessaire pour relier les villes i et j. Le réseau doit évidemment être connexe et il ne doit pas admettre de cycles pour être de coût minimal ; c est donc un arbre et ce doit être l arbre maximum le plus économique. Le problème à résoudre se pose donc dans les termes suivants : Définition Soit un graphe non orienté G, connexe, pondéré par une fonction positive l attachée aux arêtes. Soit un arbre couvrant T = (X, B) défini comme graphe partiel de G avec un ensemble d arêtes B. Son poids (ou coût) total est :

l(t ) = l(a) a B On dit que T est un arbre couvrant de poids minimal de G si l(t ) est minimal parmi les poids de tous les arbres couvrants possibles de G. On peut montrer que si toutes les arêtes sont de poids différents, l arbre couvrant de poids minimal est unique. Plusieurs algorithmes ont été proposés pour résoudre ce problème. Les plus simples sont les algorithmes de Prim et de Kruskal. L algorithme de Prim consiste à bâtir progressivement un arbre à partir d un sommet quelconque (arbitrairement le sommet numéro ) et en y greffant, à chaque étape, l arête de poids minimal parmi celles qui permettent de maintenir un graphe partiel qui soit un arbre. Si le graphe est connexe, le processus s arrête avec un arbre couvrant. Sinon, il aboutit à un arbre couvrant pour une composante connexe ; on poursuit avec les autres composantes connexes pour obtenir une forêt couvrante. Plus précisément, on construit progressivement, à partir du sommet numéro, un sousensemble de sommet S X contenant {} et un sous-ensemble T A tel que le graphe partiel (S, T ) soit un arbre de poids minimal du sous-graphe engendré par S. Pour cela, à chaque étape, on sélectionne dans le cocycle : ω(s) = {(k, l) (k, l) A, k S, l X\S} l arête de poids minimal, soit a = (i, j). Les sous-ensembles S et T sont alors augmentés en leur ajoutant le sommet j et l arête a respectivement : S S {j}, T T {a}. La mise en œuvre de cet algorithme peut se faire aisément à l aide d une procédure de marquage de la façon suivante. On associe, à chaque sommet i, un nombre réel π(i) appelé marque du sommet i. A une étape quelconque, la marque π(i) d un sommet i X\S représente le poids de l arête de poids minimal dans l ensemble des arêtes joignant i à S. D autre part, on conserve dans un tableau α l indice α(i) de l arête ayant permis d attribuer au sommet i, la marque π(i). Ces informations permettent aisément d obtenir, à l étape courante, l arête de poids minimal dans le cocycle ω(s) : il suffit en effet de déterminer le sommet i X\S ayant une marque minimale et l arête cherchée est α(i). Par ailleurs, lorsque le sous-ensemble S est augmenté du sommet i, les marques sont mises à jour en examinant toutes les arêtes issues de i et dont l autre extrémité j ne fait pas encore partie de l arbre (j X\S) et en effectuant la substitution π(j) min(π(j), l ij ). Chaque fois qu une marque est améliorée, le tableau α est mis à jour. Si le graphe est connexe, l algorithme s arrête lorsque S = X (tous les sommets ont été intégrés à l arbre). Les éléments du tableau α représentent alors les indices des arêtes constituant l arbre couvrant de poids minimal. Algorithme (Prim) Recherche d un arbre couvrant de poids minimal. (a) - Initialisations π() = 0 π(i) =, i {,,..., n} α(i) =, i {,,..., n} S = 6