Chapitre 2 Arbres et Arborescences 1. Introduction Ce chapitre présente un type spécial de graphes que l on appelle arbres. Les arbres sont des graphes particulièrement importants qui ont donné lieu à des applications très variées. Ils peuvent parfois être le support de réseaux de communication ou de transport. 2. Construction d un arbre Définition 1: Un arbre est défini comme un graphe connexe et sans cycles. 2.1 Caractérisation des arbres 2.1.1 Théorème 1 : conséquence de l ajout d un arc dans un graphe L ajout d un arc (a,b) dans un graphe G=(X,A) entraine l une des 2 conséquences : - Soit il diminue le nombre de composantes connexes de 1 si a et b appartiennent à 2 CC différentes. - Soit il ne change pas le nombre de CC si a et b appartiennent à la même CC. D après le théorème 1, on peut envisager le résultat suivant : Résultat : la suppression d un arc (a,b) a l une des conséquences suivantes : - L augmentation du nombre de CC de 1 si a et b n appartiennent pas au même cycle. - Le nombre de CC reste inchangé si a et b appartiennent au même cycle. L arc dont la suppression augmente le nombre de CC dans G est appelé isthme. 2.1.2 Théorème 2 : Cardinalité de A dans un graphe connexe et sans cycles Etant donné G=(X,A) un graphe d ordre n. i. Si G est connexe alors A n-1 ii. Si G est sans cycles alors A n-1 Corollaire : Un graphe G=(X,A) possède un graphe partiel (ou couvrant) qui constitue un arbre. 2.1.3 Théorème 3 : Théorème de caractérisation des arbres Etant donné un graphe G=(X, A) d ordre n 2. Les propriétés suivantes sont équivalentes et caractérisent un arbre. (1) G est connexe et sans cycles (2) G est sans cycles et admet n-1 arcs 12
(3) G est sans cycles et l ajout d un arc crée un cycle unique (4) G est connexe et admet n-1 arcs (5) G est connexe et la suppression d un arc déconnecte G (6) Tout couple de sommets est relié par une chaine et une seule 2.2 Définition d une forêt Définition 2 : Une forêt est un graphe dont chaque composante connexe est un arbre. 3. Arborescence En informatique, plusieurs applications nécessitent l utilisation d arborescences, particulièrement pour les arbres binaires. Comme exemple d applications les arbres généalogiques. 3.1 Définition d une arborescence Si un arbre possède un sommet particulier s qui peut mener vers tous les autres sommets ( x X il existe un chemin de s vers x), alors cet arbre est qualifié d arborescence. Définition 3 : Une arborescence est un graphe G =(X,A) tel que : - x X est racine de G - G est un arbre Remarques : - Une arborescence est donc un arbre mais l inverse n est pas toujours vrai. - Le concept d arborescence est orienté puisque la notion de racine et de chemin sont utilisées dans sa définition. 3.2 Caractérisation des arborescences 3.2.1 Théorème 4 : Théorème de caractérisation des arborescences Etant donné un graphe G=(X,A) d ordre n 2, les conditions suivantes sont équivalentes et caractérisent une arborescence : (1) G est un arbre admettant le sommet r pour racine (2) x X il existe un chemin unique de r vers x (3) G admet r pour racine et est minimal pour cette propriété (Si on supprime un arc, r n est plus racine) (4) G est connexe et d - (r) = 0 et x X d - (x) = 1 (5) G est sans cycles et d - (r) = 0 et x X d - (x) = 1 13
(6) G admet r comme racine et est sans cycles (7) G admet r comme racine et possède n-1 arcs 4. Parcours d un arbre Parfois on est amené à parcourir tous les sommets d un arbre en vue d effectuer certains traitements comme rechercher un élément particulier ou afficher les éléments de l arbre. A cet effet, plusieurs algorithmes ont été proposés pour le parcours d un arbre en profondeur et en largeur. Pour un parcours donné, il est possible de parcourir de gauche à droite ou de droite à gauche. 5. Problème de l arbre de poids minimal Le problème de l arbre de poids minimal se pose pour les graphes dont les arcs sont valués. On appelle ces valeurs des poids. Cette section est dédiée à la présentation du problème et aux solutions proposées pour sa résolution. 5.1 Présentation du problème On considère un graphe G=(X, A) connexe dont les arcs ont des valeurs. Le problème de l arbre de poids minimal revient à trouver un graphe partiel de G qui soit un arbre et pour lequel la somme des poids des arcs soit minimale. Le problème de l arbre de poids minimal ou maximal a plusieurs applications comme les réseaux téléphoniques, les réseaux électriques, etc. Exemple : Dans une ville possédant plusieurs quartiers on veut construire un réseau d alimentation en eau reliant tous les quartiers et qui coute le moins cher possible. Ce problème peut être représenté par un graphe dont les sommets sont les différents quartiers et les arcs sont les branches du réseau qui relient deux quartiers. Chaque branche possède une valeur qui représente son cout de construction. La solution revient à déterminer un graphe partiel qui soit connexe (pour relier tous les quartiers) et qui ne possède pas de cycles (ces derniers sont inutiles et entrainent un cout d installation supplémentaire). On cherche donc un arbre de poids minimal. 5.2 Résolution du problème Plusieurs algorithmes ont été proposés pour la résolution de ce genre de problèmes. Dans ce qui suit, sont présentées deux méthodes : l algorithme de Kruskal et l algorithme de Sollin. 14
5.2.1 Algorithme de Kruskal Cet algorithme mis au point par J. Kruskal permet de trouver un arbre de poids minimal pour un graphe connexe et valué. Il retrouve un sous ensemble d arcs qui forment un arbre touchant tous les sommets, c'est-à-dire un arbre couvrant. Si le graphe n est pas connexe, l application de l algorithme permet de trouver une forêt de poids minimal (un arbre de poids minimal pour chaque CC). Algorithme : Soit G=(X,A)/ X = n, A = p Etape 1 : Initialisation /* numéroter les arcs par ordre croissant selon leur poids */ v(a1) v(a2) v(a3). v(ap) ; Am ; /* Am contient les arcs de l arbre de poids min*/ V 0 ; /* Valeur de l arbre de poids minimal */ I 1 ; Etape 2 : traitement Pour I = 1, p faire Si Am {ai} ne comporte pas de cycles alors Am Am {ai} ; V = V+ v(ai) ; Fin si Fin pour Etape 3 : Résultat (X, Am ) est l arbre de poids min Fin Remarques : - Pour trouver l arbre de poids maximal, il suffit d ordonner les arcs dans un ordre décroissant selon leur poids. - Si toutes les valeurs sont différentes, alors l arbre couvrant de poids minimal est unique. 5.2.2 Algorithme de Sollin (Borůvka) L algorithme de Borůvka est un algorithme pour la recherche d un arbre de poids minimal pour un graphe dont tous les poids des arcs sont distincts. Il a été publié en 1926 par O. Borůvka comme une méthode permettant de construire un réseau électrique optimal. L algorithme a été redécouvert en 1965 par Sollin. Le principe de l algorithme est de réduire G en contractant des arêtes : on choisit peu à peu les arêtes qui seront dans l'arbre, et à chaque fois que l'on en choisit une, on fusionne les nœuds que cette arête relie. Ainsi, il ne reste plus qu'un sommet à la fin. 15
Algorithme : Soit G=(X,A)/ X = n, A = p et tous les v(aj) distincts Etape 1 : Initialisation Am ; /* Am contient les arcs de l arbre de poids min*/ V 0 ; /* Valeur de l arbre de poids minimal */ Etape 2 : traitement Tant que X > 1 /* G n est pas réduit à un sommet */ faire Détruire les boucles de G Remplacer les arêtes multiples entre 2 sommets par une seule dont le poids est minimum Pour tout xi X faire Trouver l arête ax de poids min adjacente à x Am Am {ax} ; V = V+ v(ax) ; Contracter ax ; /* fusionner les sommets extrémités de ax Fin pour Fin tant que Etape 3 : Résultat (X, Am ) est l arbre de poids min Fin 16