Vous êtes sur la page 1sur 189

ALGORITHMIQUE DES GRAPHES

Jean-Michel H elary 1 IFSIC Cours C66 Juin 2004

1. c IFSIC 2004

c IFSIC 2004

Table des mati` eres


1 Introduction, exemples 1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Relations graphes et informatique . . . . . . . . . . . . 1.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Le probl` eme du chou, de la ch` evre et du loup . 1.3.2 Blocage mutuel dans un partage de ressources . 1.3.3 Fiabilit e dans les r eseaux . . . . . . . . . . . . 2 Graphes : un mod` ele math ematique 2.1 D enitions math ematiques et notations . 2.1.1 Lobjet math ematique . . . . . . . 2.1.1.1 Vision ensembliste . . . . 2.1.1.2 Vision fonctionnelle . . . 2.1.1.3 Vision relationnelle . . . 2.1.2 Vocabulaire . . . . . . . . . . . . 2.1.3 Propri et es de graphes . . . . . . . 2.2 Notion de chemin . . . . . . . . . . . . . . 2.3 Repr esentations de lobjet math ematique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 9 9 10 10 11 12 15 15 15 15 15 16 16 18 19 19 21 21 21 21 22 22 23 23 24 26

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . .

3 Aspect algorithmique : un type de donn ees abstrait 3.1 Les sommets et les arcs . . . . . . . . . . . . . . . . . 3.1.1 Le type Sommet . . . . . . . . . . . . . . . . . 3.1.2 Le type Arc . . . . . . . . . . . . . . . . . . . . 3.2 Trois exemples de repr esentation concr` ete . . . . . . . 3.2.1 Repr esentation par tableaux . . . . . . . . . . . 3.2.2 Repr esentation par tableaux et listes . . . . . . 3.2.3 Repr esentation d ecentralis ee par listes . . . . . 3.3 Le type abstrait Graphe : les m ethodes . . . . . . . . . 3.4 Notations . . . . . . . . . . . . . . . . . . . . . . . . . 4 Relations et op erateurs entre 4.1 Relation dordre . . . . . . 4.2 Union . . . . . . . . . . . . 4.3 Composition . . . . . . . .

graphes 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
c IFSIC 2004

4 4.3.1 4.3.2 D enition . . . . . . . . . . . . Algorithme . . . . . . . . . . . 4.3.2.1 Analyse . . . . . . . . 4.3.2.2 Texte de lalgorithme 4.3.3 Complexit e . . . . . . . . . . . Puissances dun graphe . . . . . . . . Graphe transpos e. . . . . . . . . . . . Sous-graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

` TABLE DES MATIERES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 31 31 32 32 33 34 34 37 37 38 40 40 41 41 41 43 43 44 44 46 47 48 49 51 51 53 53 53 55 56 56 56 58 58 58 58 59 59 60 60 62

4.4 4.5 4.6

5 Fermeture transitive 5.1 Retour sur la transitivit e. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.2 Caract erisation du graphe G+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3 Algorithme des puissances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 Texte de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.2 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4 Algorithme de Roy-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.1 Principe de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.2 Texte de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.3 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4 Routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4.1 D enition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4.2 Construction des routages par lalgorithme de Roy-Warshall 5.4.4.3 Exemple dex ecution . . . . . . . . . . . . . . . . . . . . . . . . 5.4.4.4 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5 -minimalit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 M ethodes dexploration 6.1 D eveloppement arborescent issu dun sommet donn e . . . . 6.2 Exploration de la descendance de x . . . . . . . . . . . . . . 6.2.1 Sp ecication du r esultat . . . . . . . . . . . . . . . . 6.2.2 Principe des m ethodes dexploration . . . . . . . . . 6.2.3 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2.4 Texte de lalgorithme g en eral dexploration . . . . . 6.2.5 Complexit e . . . . . . . . . . . . . . . . . . . . . . . 6.3 Strat egies dexploration particuli` eres : largeur et profondeur 6.3.1 Exploration en largeur dabord . . . . . . . . . . . . 6.3.1.1 Une structure de donn ees : la le . . . . . . 6.3.1.2 Texte de lalgorithme . . . . . . . . . . . . 6.3.1.3 Exemple dex ecution . . . . . . . . . . . . . 6.3.2 Recherche en profondeur dabord . . . . . . . . . . . 6.3.2.1 Une structure de donn ees : la pile . . . . . 6.3.2.2 Texte de lalgorithme . . . . . . . . . . . . 6.3.2.3 Exemple dex ecution . . . . . . . . . . . . . 6.4 Exemple dapplication : calcul de lensemble des descendants
c IFSIC 2004

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . .

` TABLE DES MATIERES 6.4.1 Cas de la recherche en largeur . . . . . . . . . 6.4.2 Cas de la recherche en profondeur : expression Enum eration des chemins el ementaires issus de x . . 6.5.1 Algorithmes gloutons et non gloutons . . . . . . . . . . r ecursive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5 63 63 64 66 71 71 71 72 72 72 73 74 77 81 81 83 83 84 84 85 85 85 85 87 87 88 90 93 93 93 94 97 97 99 99 100 102 102 104 106 106 106

6.5

7 Circuits. Composantes fortement connexes 7.1 D etermination de lexistence de circuits . . . . . . . . . . . 7.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . 7.1.2 Algorithme de Marimont . . . . . . . . . . . . . . . 7.1.2.1 Analyse . . . . . . . . . . . . . . . . . . . . 7.1.2.2 Texte de lalgorithme . . . . . . . . . . . . 7.1.2.3 Complexit e . . . . . . . . . . . . . . . . . . 7.2 Application des graphes sans circuit : fonction ordinale . . . 7.3 Application : fermeture anti-transitive et -minimalit e . . . 7.4 Composantes fortement connexes . . . . . . . . . . . . . . 7.4.1 D enition . . . . . . . . . . . . . . . . . . . . . . . . 7.4.2 Algorithme de FOULKES . . . . . . . . . . . . . . 7.4.2.1 Principe . . . . . . . . . . . . . . . . . . . . 7.4.2.2 Texte de lalgorithme . . . . . . . . . . . . 7.4.2.3 Complexit e . . . . . . . . . . . . . . . . . . 7.4.3 Algorithme descendants-ascendants . . . . . . . . . 7.4.3.1 Principe . . . . . . . . . . . . . . . . . . . . 7.4.3.2 Texte de lalgorithme . . . . . . . . . . . . 7.4.3.3 Complexit e . . . . . . . . . . . . . . . . . . 7.4.4 Algorithme de TARJAN . . . . . . . . . . . . . . . . 7.4.4.1 Principe de lalgorithme de TARJAN . . . 7.4.4.2 Exemple . . . . . . . . . . . . . . . . . . . 7.4.4.3 Mise en uvre et texte de lalgorithme . . 7.4.4.4 Complexit e . . . . . . . . . . . . . . . . . 7.4.5 Applications . . . . . . . . . . . . . . . . . . . . . . 7.4.5.1 Recherche dun graphe minimal dans (G) 7.4.5.2 Calcul rapide de la fermeture transitive . . 8

Chemins de valeur optimale 8.1 D enitions et probl` emes pos es . . . . . . . . . . . . . . . . . . 8.2 Chemins de valeur additive minimale issus dun sommet donn e 8.2.1 Existence . . . . . . . . . . . . . . . . . . . . . . . . . . 8.2.2 Caract erisation . . . . . . . . . . . . . . . . . . . . . . . 8.3 Algorithme de FORD : exploration . . . . . . . . . . . . . . . . 8.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . 8.3.2 Texte de lalgorithme . . . . . . . . . . . . . . . . . . . 8.3.3 Une heuristique dam elioration . . . . . . . . . . . . . . 8.4 Algorithme de BELLMANN-KALABA . . . . . . . . . . . . . 8.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . .
c IFSIC 2004

` TABLE DES MATIERES 8.4.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.3 Texte de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.4 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.5 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 8.4.6 Acc el eration de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . 110 Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA . . . . . . . 112 8.5.1 Principe de lalgorithme de DIJKSTRA . . . . . . . . . . . . . . . . . . . 113 8.5.2 Analyse de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 8.5.3 Exemple dex ecution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.4 Texte de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.5 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.6 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Cas des graphes sans circuit : algorithme ORDINAL . . . . . . . . . . . . . . . . 118 8.6.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 8.6.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.6.3 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.6.4 Texte de lalgorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.6.5 Complexit e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 8.6.6 Adaptations et am eliorations . . . . . . . . . . . . . . . . . . . . . . . . . 122 8.6.6.1 Calcul progressif des attributs . . . . . . . . . . . . . . . . . . . 122 8.6.6.2 Mise ` a jour de lensemble des points dentr ee . . . . . . . . . . . 122 8.6.6.3 Nouvelle version de lalgorithme . . . . . . . . . . . . . . . . . . 123 8.6.6.4 G en eralisation au cas o` u 1 nest pas n ecessairement point dentr ee124 Valeurs optimales de tout sommet ` a tout sommet . . . . . . . . . . . . . . . . . 124 8.7.1 De la fermeture transitive aux valeurs optimales . . . . . . . . . . . . . . 124 8.7.2 Transformation de lalgorithme des puissances . . . . . . . . . . . . . . . . 124 8.7.3 Transformation de lalgorithme de Roy-Warshall . . . . . . . . . . . . 126 Alg` ebres de chemins : transformations dalgorithmes . . . . . . . . . . . . . . . . 128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 135 136 136 137 138 140 140 142 145 145 147 149 149

8.5

8.6

8.7

8.8 9

Probl` emes dordonnancement 9.1 Nature des probl` emes . . . . . . . . . . . . . . . . . . . . 9.2 Mod elisation ` a laide de graphe . . . . . . . . . . . . . . 9.2.1 graphe potentiel-t ache . . . . . . . . . . . . . . . 9.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . 9.3 Ordonnancements particuliers; chemin critique; marges. 9.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.5 Choix des algorithmes de r esolution . . . . . . . . . . . . 9.6 Elimination de contraintes redondantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10 Arbres ; arbre partiel de poids optimum 10.1 D enition et propri et es caract eristiques . . . . . 10.2 Arbres partiels dans un graphe non orient e valu e 10.3 Algorithme de KRUSKAL . . . . . . . . . . . . . 10.3.1 Principe . . . . . . . . . . . . . . . . . . .
c IFSIC 2004

` TABLE DES MATIERES 10.3.2 Texte de lalgorithme . . . . . 10.3.3 Exemple . . . . . . . . . . . . . 10.3.4 Complexit e . . . . . . . . . . . 10.4 Algorithme de PRIM . . . . . . . . . . 10.4.1 Principe de lalgorithme . . . . 10.4.2 Mise en uvre de lalgorithme 10.4.3 Texte de lalgorithme . . . . . 10.4.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7 150 151 151 152 152 153 154 154 157 157 158 161 161 162 163 165 165 165 166 167 168 168 176 176 177 179 181

11 Flots dans un r eseau de transport 11.1 Exemple introductif . . . . . . . . . . . . . . . . . . . . . 11.2 D enitions et propri et es g en erales . . . . . . . . . . . . . . 11.3 Recherche dun ot compatible de valeur maximum . . . . 11.3.1 Sch ema g en eral . . . . . . . . . . . . . . . . . . . . 11.3.2 Marquage . . . . . . . . . . . . . . . . . . . . . . . 11.3.3 Am elioration . . . . . . . . . . . . . . . . . . . . . 11.4 Algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . 11.4.1 Fonction marquage . . . . . . . . . . . . . . . . . . 11.4.2 Proc edure am elioration . . . . . . . . . . . . . . . 11.4.3 Algorithme . . . . . . . . . . . . . . . . . . . . . . 11.4.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . 11.4.5 Complexit e . . . . . . . . . . . . . . . . . . . . . . 11.5 Cas des r eseaux bi-partis : mise en uvre par tableaux . . 11.6 Application: probl` emes de couplage des graphes bi-partis . 11.6.1 Le probl` eme . . . . . . . . . . . . . . . . . . . . . . 11.6.2 Mod elisation en r eseau bi-parti . . . . . . . . . . . 11.6.3 Exemple: syst` eme de repr esentants distincts . . . .

A Les op erations de la classe GRAPHE et leur s emantique

c IFSIC 2004

` TABLE DES MATIERES

c IFSIC 2004

Chapitre 1

Introduction, exemples
1.1 Historique

La th eorie des graphes a pris naissance en 1736 : le math ematicien allemand L. Euler apporta une r eponse au probl` eme que se posaient les habitants de la ville de Koenigsberg ; ` a savoir :comment traverser les sept ponts de cette ville sans jamais passer deux fois par le m eme. Jusquen 1946, la th eorie des graphes reste du domaine des math ematiques; les math ematiciens ayant associ e leurs noms aux travaux les plus marquants sont, entre autres : au 19` eme si` ecle : Kirchoff, Hamilton, Sylvester, Kempe, Lucas, Petersen, Tarry e, Kuratowski, Hall, Polya, eme si` ecle (1` ere moiti e) : Poincare, Sainte-Lagu au 20` nig, Whitney, Tutte. Ko Des recherches militaires li ees au conit mondial de 1939-45 na t la Recherche Op erationnelle provoquant un d eveloppement de la th eorie des graphes comme mod` eles de probl` emes concrets ; cet aspect est encore renforc e, dans les ann ees qui suivent, par le d eveloppement des Sciences Economiques et de Gestion. Les grands sp ecialistes de cette nouvelle orientation des graphes hn, Dantzig, Ford, Fulkerson, Ghouila-Houry, Harary, seront des auteurs tels que Ku Saaty, Bellmann, Roy, Berge, Faure, Kaufmann, etc... Une troisi` eme epoque a et e ouverte dans les ann ees 1960, avec le d eveloppement des sciences de linformation et de la communication. Des informaticiens tels que Dijkstra, Knuth, Wirth, Sakharovitch, Gondran et beaucoup dautres, participent au d eveloppement de lalgorithmique des graphes autant qu` a la mod elisation de probl` emes n es de ces nouvelles sciences en terme de graphes. Une approche a un ouvrage historique historique se trouve dans lintroduction de [GM79], qui renvoie dailleurs ` complet sur la premi` ere epoque de la th eorie des graphes (1746-1936) [BLW76].

1.2

Relations graphes et informatique

Les relations entre graphes et informatique sont ` a double sens : 1. linformatique, outil de r esolution de probl` emes de graphes 2. les graphes, outil de mod elisation de probl` emes informatiques. On aboutit donc, dans certaines situations, ` a linformatique comme outil de r esolution de ses propres probl` emes (via la mod elisation en termes de graphes). Ce cours sint eresse essentiellement
c IFSIC 2004

10

Introduction, exemples

` a la partie 1. Outre la n ecessit e quil y a, pour un informaticien, de conna tre les algorithmes adapt es aux principaux types de probl` emes de graphe et la mani` ere de les programmer, il faut mettre laccent sur un aspect essentiel : l etude des techniques de programmation dalgorithmes de graphe. Cette etude est enrichissante par elle- m eme car elle donne loccasion daborder sur des exemples non triviaux des notions dalgorithmique aussi fondamentales que les structures de donn ees et lad equation de la repr esentation au probl` eme trait e, les niveaux de programmation (types abstraits et mise en oeuvre), la complexit e, etc.. Cependant la mod elisation de probl` emes en terme de graphes ne doit pas etre n eglig ee. Nous donnons dans la section suivante trois exemples de situations dorigine informatique ou non qui se pr etent ` a une telle mod elisation.

1.3
1.3.1

Exemples
Le probl` eme du chou, de la ch` evre et du loup

L enonc e Un passeur, disposant dune barque, doit faire traverser une rivi` ere ` a un chou, une ch` evre et un loup. Outre le passeur, la barque peut contenir au plus une des trois unit es qui doivent traverser. Dautre part, pour des raisons de s ecurit e, le passeur ne doit jamais laisser seuls la ch` evre et le chou, ou le loup et la ch` evre. (Par contre, le loup ne mangera pas le chou... et r eciproquement). Comment le passeur doit-il sy prendre? Mod elisation Il sagit dune situation tr` es classique dun syst` eme ` a etats poss edant un etat initial, un etat nal, et des transitions autoris ees. Chaque etat se traduit par un sommet, ou point. Chaque transition autoris ee dun etat ` a un autre se traduit par un arc, allant du premier etat vers le second. Dans cet exemple, un etat est une conguration possible sur la rive de d epart. D esignons par P le passeur, L le loup, X la ch` evre, C le chou. Une conguration sera alors d esign ee par lensemble des pr esents sur la rive de d epart. L etat initial est PLXC et l etat nal . Chaque arc, repr esentant une transition possible, sera libell e pour la clart e de la mod elisation par la description de laction entreprise (A signie : aller , R signie retour. On obtient alors le graphe suivant : Probl` eme Chaque solution correspond ` a un chemin dans le graphe, de PLXC ` a et alternant les etiquettes A et R. Un chemin correspond ` a une s equence dactions encha nables les unes aux autres (l etat initial dune action est egal ` a l etat nal de la pr ec edente). R esolution Pour linstant, ` a la main (ou au pif, comme on veut !), on trouve deux solutions : soit 7 travers ees simples, quelle que soit la solution. Laissons au lecteur le soin de fournir au passeur, en langage naturel, les explications n ecessaires ` a laccomplissement de sa mission.
c IFSIC 2004

1.3. Exemples

11

PLX
A(PX) R(PL)

A(PX) R(PX) R(PC) A(PL)

PX
R(P)

A(PC)

PXLC

A(PX)

PLC
R(PL) A(PL) A(PC)

LC

R(P) R(PC) A(PX)

PXC
R(PX)

Fig. 1.1 graphe des transitions

L PLXC LC PLC C

PLX X PXC PX

Fig. 1.2 Solution du probl` eme des travers ees

1.3.2

Blocage mutuel dans un partage de ressources

3 philosophes chinois A, B, C poss` edent, ` a eux trois, trois baguettes R, S, T. Pour manger, chacun a besoin de 2 baguettes. Lorsquun des philosophes d esire manger, il requiert deux baguettes et ne les lib` ere que lorsquil a ni son repas 1 . Par contre, tant quil na pas obtenu les deux baguettes, il ne peut rien faire quattendre : m eme sil a eu la chance dobtenir une baguette, il ne la rend pas tant quil na pas pu aller au bout de son repas. Consid erons alors la situation suivante : les 3 philosophes ont envie de manger exactement au m eme moment, et chacun se pr ecipite sur les baguettes... mais chacun nen obtient quune. Pour xer les id ees :

A poss` ede R et requiert S


1. apr` es les avoir soigneusement lav ees!
c IFSIC 2004

12
B poss` ede S et requiert T C poss` ede T et requiert R

Introduction, exemples

Bigre ! Il va bien falloir faire preuve de patience... et de philosophie. Ils ne peuvent pas sortir de ce blocage mutuel, et vont donc mourir de faim, sauf si quelquun (cest-` a-dire lun deux, ou un personnage ext erieur) se rend compte de la situation et intervient autoritairement, par exemple en lib erant de force une des baguettes pour lattribuer ` a un des deux autres. Cette situation est un exemple de ce qui peut se passer dans les syst` emes informatiques complexes, o` u plusieurs entit es (processeurs, p eriph eriques,etc.) se partagent des ressources. Les entit es en question etant a priori moins intelligentes que les philosophes chinois, il faut pallier cette lacune en etant capable de d etecter automatiquement les situations dinterblocage. Quel que soit le nombre dentit es et de ressources, les congurations de possession/requ ete des ressources par les entit es peuvent etre mod elis ees par un graphe de la mani` ere suivante : . chaque entit e est repr esent e par un sommet . un arc existe, depuis le sommet X vers le sommet Y si X requiert une ressource que poss` ede Y. Ainsi, dans lexemple des philosophes et des baguettes, on obtient le graphe dessin e gure 1.3 :

B (S)
Le libell e sur larc d esigne

A (R) C

(T)

la ressource demand ee (par lorigine) et poss ed ee (par lextr emit e)

Fig. 1.3 graphe des attentes Un tel graphe est dynamique dans la mesure o` u les ressources sont lib er ees et r e-allou ees au cours du temps. Mais ` a chaque instant, il y a un graphe et un seul et de plus, si une situation dinterblocage appara t, le graphe n evolue plus. Maintenant, il est clair que linterblocage entre plusieurs entit es se produit si et seulement si les sommets correspondants sont situ es sur un circuit, cest ` a dire un chemin dont lextr emit e co ncide avec lorigine. Cest donc un algorithme de d etection de circuit qui permettra, ici, de r esoudre le probl` eme de d etection de linterblocage. Le probl` eme pr esent e (interblocage) est un exemple dun type de situation tr` es courant mettant en jeu des objets (les entit es) et des relations entre ces objets (la requ ete dune ressource poss ed ee par un autre).

1.3.3

Fiabilit e dans les r eseaux

Un r eseau est un syst` eme de communication dans lequel des sites communiquent entre eux soit directement, soit par linterm ediaire dautres sites, en envoyant des messages qui circulent le long de lignes de communication. La repr esentation de tels r eseaux par des graphes est ici evidente, les sites et les lignes correspondant trivialement aux sommets et aux arcs. Mais selon
c IFSIC 2004

1.3. Exemples

13

le genre d etudes que lon souhaite eectuer, le graphe mod elisant le r eseau devra etre pr ecis e; par exemple : les communications sont-elles uni- ou bidirectionnelles? Un message emis parvient-il s urement ou de mani` ere al eatoire ` a destination? Les lignes de communication peuvent-elles acheminer une quantit e illimit ee ou non dinformations par unit e de temps? (d ebit dune ligne) etc... Autant de probl` emes, autant de solutions que lon cherche ` a exprimer en termes dalgorithmes de graphe. A titre dexemple, nous montrons deux probl` emes li es ` a des etudes de abilit e.

Fig. 1.4 r eseau 1


C F

Fig. 1.5 r eseau 2 Exemple 1. R esistance aux pannes Dans un r eseau, il peut se produire quune ligne de communication soit coup ee, ne transmettant plus aucun message. Il en est de m eme pour un site dont la panne peut etre assimil ee ` a la coupure de toutes les lignes qui y aboutissent ou qui en partent. Supposons que, dans un r eseau, on achemine des informations dun sommet A vers un sommet B, eventuellement via des sites interm ediaires servant de relais. De telles informations doivent emprunter des chemins allant de A ` a B. Ainsi, une information issue de A parviendra ` a B si et seulement si au moins un chemin est valide (cest ` a dire la s equence darcs qui le constitue ne comporte que des arcs non d et erior es). Le probl` eme pos e est alors le suivant : quel est le nombre maximum de pannes auquel cet acheminement peut r esister? Autrement dit, quel est le nombre maximum de chemins ind ependants existant entre A et B? (deux chemins sont ind ependants si et seulement si ils sont disjoints au sens des arcs et des sommets interm ediaires).
c IFSIC 2004

14

Introduction, exemples

Dans le r eseau 1, ce nombre est egal ` a 2 car, sil ny a quune panne, quelle que soit sa localisation (site ou ligne) il reste toujours un chemin valide. Par contre il existe des congurations a 2 pannes (lignes AC et DB par exemple) auxquelles lacheminement ne r ` esiste pas. Dans le r eseau 2, ce nombre est egal ` a 3 (sites D, F, G). Exemple 2. Routage de abilit e maximale Dans ce mod` ele, chaque ligne (arc) est munie dune valeur, egale ` a la probabilit e quun message emis ` a lorigine parvienne sans alt eration ` a lextr emit e. Un emetteur A emet vers un r ecepteur B, plusieurs parcours dacheminement etant possibles. Si on suppose que les alt erations des messages sont des ev` enements ind ependants, la probabilit e de non alt eration le long dun chemin est donc egale au produit des probabilit es de chaque arc le constituant. On cherche donc ` a d eterminer un routage de abilit e maximale de A ` a B (cest ` a dire un chemin de A ` a B de probabilit e maximale), repr esent e de la mani` ere suivante : a chaque sommet de ce chemin, on associe le sommet suivant. `

c IFSIC 2004

Chapitre 2

Graphes : un mod` ele math ematique


2.1
2.1.1
2.1.1.1

D enitions math ematiques et notations


Lobjet math ematique
Vision ensembliste

D enition 2.1 Un graphe est un doublet G = (X,), o` u X = ensemble en g en eral ni appel e ensemble des sommets 2 =ensemble de couples (x,y ) X , appel e ensemble des arcs. Ainsi, X 2 . Par d enition dun ensemble, entre deux sommets donn es il existe au plus un arc; on peut toutefois, dans certains cas, consid erer des multi-graphes dans lesquels plusieurs arcs distincts existent entre deux sommets, mais il faut alors adopter une d enition di erente pour . Exemple : graphe G1 X = {1,2,3,4,5,6,7,8,9} = {(1,2),(1,3),(2,5),(3,3),(3,4),(3,6),(4,2),(4,5),(5,6),(5,7),(5,8),(6,3),(8,7)} 2.1.1.2 Vision fonctionnelle

D enition 2.2 Un graphe est un doublet G = (X,), o` u X = ensemble des sommets = fonction de X dans lensemble 2X des parties de X . Ainsi, ` a tout sommet x est associ e lensemble (x) X . La notation 2X pour d esigner lensemble des parties de X vient du fait que, si X est de cardinal ni |X |, le nombre de sous-ensembles
c IFSIC 2004

16

Graphes : un mod` ele math ematique

(parties) de X est egal ` a 2|X | . En eet, si X = {x1 ,x2 , . . . ,xn } la construction dun sous-ensemble de X revient ` a d ecider, pour chaque xi , si cet el ement fait partie ou non du sous-ensemble. Il y a donc n d ecisions binaires ind ependantes, soit 2 2 . . . 2 = 2n = 2|X | constructions possibles. Exemple : graphe G1 X = {1,2,3,4,5,6,7,8,9} (1) = {2,3} ; (4) = {2,5} ; (7) = ; 2.1.1.3 (2) = {5} ; (5) = {6,7,8} ; (8) = {7} ; (3) = {3,4,6} ; (6) = {3} ; (9) =

Vision relationnelle

A tout graphe G = (X,) est associ ee une relation binaire R sur X, et r eciproquement, par l equivalence suivante : xRy (x,y ) Nous verrons ult erieurement qu` a chaque propri et e des relations binaires correspond une propri et e du graphe. Equivalences et ordres Parmi les relations binaires, celles qui v erient les propri et es de r eexivit e et transitivit e sont particuli` erement importantes. On les appelle des pr e-ordres, car elles elles expriment en particulier les relations de classement avec ex-aequo. Exemple de pr e-ordre Soit E un ensemble d el ements. Chaque el ement x est muni dune estampille enti` ere n(x). Il est facile de voir que la relation x y n(x) n(y ) est un pr eordre. Deux el ements distincts x et y sont ex-aequo si n(x) = n(y ). La gure 2.1.a montre le graphe dune telle relation. Un pr e-ordre est sp ecialis e en equivalence ou en ordre selon quil est sym etrique ou antisym etrique. Ainsi, la relation dex-aequo est une equivalence car elle est sym etrique (la gure 2.1.b en montre le graphe) tandis que la relation x y x = y n(x) < n(y ) est un ordre car elle est antisym etrique (gure 2.1.c). Rappellons qun ordre est dit total si pour tout couple d el ements x et y , on a toujours xRy ou y Rx. Un ordre non complet est dit partiel. Cest le cas notamment de lexemple de la gure 2.1.c), car certains el ements ne sont pas comparables.

2.1.2

Vocabulaire

Pour un arc (x,y ) , x est lorigine et y est lextr emit e de larc On dit aussi que y est successeur de x, ou que x est pr ed ecesseur de y. On note : (x) = {y X | (x,y ) } lensemble des successeurs de x 1 (x) = {z X | (z,x) } lensemble des pr ed ecesseurs de x
c IFSIC 2004

2.1. D enitions math ematiques et notations

17

ement El Estampille
j g

a 10
c h

b 5

c 4
b d

d 5

e 7

f 7
e f

g 3

h 4
a k

i 5

j 2

k 10

a) preordre (sans les consequences transitives ni les boucles de reexivite)

c h

b d

e f

a k

b) equivalence (sans les boucles de reexivite)

c h

b d

e f

a k

c) ordre (sans les consequences transitives ni les boucles de reexivite)

Fig. 2.1 Pr e-ordre, equivalence et ordre

c IFSIC 2004

18 Si A X : (A) =
xA

Graphes : un mod` ele math ematique

(x)

1 (A) =
xA

1 (x)

d+ (x) = card((x)) est le

1 degr e ext erieur de x 2

d (x) = card(1 (x)) est le

1 degr e int erieur de x 2

d(x) = d+ (x) + d (x) est le degr e de x

2.1.3

Propri et es de graphes

On montre, pour quelques propri et e des relations binaires, une propri et e caract eristique du graphe correspondant. La caract erisation de la transitivit e ne sera abord ee quau chapitre 5 (fermeture transitive). Dans ce qui suit, on pose = {(x,x)|x X } (ensemble des boucles). R eexivit e x X : (x,x) . Boucle sur chaque sommet . x X : (x,x) . Graphe sans boucle . = x X,y X : (x,y ) = (y,x) . Lexistence dun arc implique lexistence de larc oppos e. 1 = x X,y X : (x,y ) (y,x) = x = y . Lexistence dun arc interdit lexistence de larc oppos e, sauf dans le cas dune boucle. 1
c IFSIC 2004

Anti-r eexivit e

Sym etrie

Anti-sym etrie

2.2. Notion de chemin

19

2.2

Notion de chemin
D enition 2.3 Un chemin de G est une suite de sommets [xi1 ,xi2 , . . . ,xik ] telle que : (xi1 ,xi2 ) , (xi2 ,xi3 ) , . . . , (xik1 ,xik ) emit e et les xij (2 j k 1), sils xi1 en est lorigine, xik lextr existent, les sommets interm ediaires.

Un chemin allant de x ` a y , dont on ne pr ecise pas les sommets interm ediaires, sera not e: u = [x y ] Si lon souhaite d esigner des sommets interm ediaires, on utilisera la notation telle que : u = [x1 xp xq xk ] y est alors un descendant de x et x un ascendant de y. La longueur du chemin u , ou |u|, est le nombre darcs qui le composent. u v d esigne la concat enation de deux chemins tels que extr emit e de u = origine de v ; on a alors |u v | = |u| + |v |. Un circuit est un chemin dont lextr emit e co ncide avec lorigine. Un chemin (resp. circuit) el ementaire est d eni par une suite de sommets sans r ep etition (sauf lorigine et lextr emit e pour un circuit)

2.3

Repr esentations de lobjet math ematique

On sint eresse aux repr esentations visuelles, destin ees au traitement ` a la main. On peut utiliser : a)- le graphique (diagramme sagittal) Exemple : graphe G1

Fig. 2.2 Diagramme Sagittal


c IFSIC 2004

20

Graphes : un mod` ele math ematique

Cette repr esentation pose des probl` emes de topologie (croisements darcs) et de lisibilit e lorsquil y a beaucoup de sommets et/ou darcs. Leurs attributs sont port es sur le graphique, ce qui peut aussi etre source dambigu t e. Elle nest adapt ee en g en eral que pour les petits graphes (card(X ) 10). b)- un tableau dattribution des arcs. Sil sagit de repr esenter lexistence des arcs, ce tableau sera une matrice bool eenne.
extr emit es origines

2 1

3 1

5 1

1 2 3 4 5 6 7 8 9 c)1 2 3 4 5 6 7 8 9

1 1 1

1 1

1 1 1 1

1 resp. des pr ed ecesseurs 1 / 2 1, 4 3 1, 3, 6 4 3 5 2, 4 6 3, 5 7 5, 8 8 5 9 /

dictionnaire des successeurs 2, 3 5 3, 4, 6 2, 5 6, 7, 8 3 / 7 /

Un seul de ces deux tableaux sut ` a sp ecier compl` etement le graphe.

c IFSIC 2004

Chapitre 3

Aspect algorithmique : un type de donn ees abstrait


Dans ce chapitre on donne dabord trois exemples de repr esentation algorithmique. Puis on fait abstraction des repr esentations particuli` eres en d enissant le type de donn ees abstrait GRAPHE. Le probl` eme est de repr esenter, ` a laide de structures de donn ees algorithmiques, le doublet math ematique (X,) avec X 2 .

3.1

Les sommets et les arcs

La d enition des types Sommet et Arc est utilis ee dans toutes les repr esentations de graphes. Elle est pr esent ee ci-dessous.

3.1.1

Le type Sommet

Tout sommet est identi e par un num ero (entier), qui sera d esign e par num. En g en eral, on suppose que num 1. La notation algorithmique est la suivante :
ENT SOMMET::num ;

signiant que les objets de type SOMMET ont un attribut de nom num et de type entier. Lexpression x.num d esigne alors le num ero du sommet x.

3.1.2

Le type Arc

Tout arc poss` ede deux sommets (son origine et son extr emit e).
SOMMET ARC::ori ; SOMMET ARC::ext ;

Si est un objet de type arc, lexpression .ori (resp. .ext) d esigne le sommet origine (resp. extr emit e) de larc , et .ori.num (resp. .ext.num) le num ero du sommet origine (resp. extr emit e) de .
c IFSIC 2004

22

Aspect algorithmique : un type de donn ees abstrait

Dans une repr esentation graphique on utilisera souvent le sch ema ci-dessous pour indiquer que larc dessin e relie le sommet de num ero i au sommet de num ero j. Par commodit e de notation, on d esignera souvent par (x,y) larc tel que .ori=x et .ext=y, ou par (i,j) larc tel que .ori.num=i et .ext.num=j.

3.2

Trois exemples de repr esentation concr` ete

Ces exemples utilisent les structures de donn ees suppos ees connues TABLEAU[G], TABLEAU2[G], LISTE[G]. La premi` ere d ecrit les tableaux ` a une dimension, la deuxi` eme les tableaux ` a deux dimensions et la troisi` eme les listes cha n ees. Lidenticateur G d esigne le type des el ements contenus dans ces structures (type g en erique formel).

3.2.1

Repr esentation par tableaux

ENT GRAPHE::nmax ; -- num ero maximum de sommet. On repr esente les graphes dont les sommets peuvent etre num TABLEAU[BOOL] GRAPHE::vs ; -- G.vs[i] indique lexistence du sommet de num ero i, 1 i G.nmax TABLEAU2[BOOL] GRAPHE::m ; -- G.m[i,j] indique lexistence de larc (i,j), 1 i, j G.nmax

On a toujours limplication i j : G.m[i,j] G.vs[i] G.vs[j] (un arc ne peut relier que des sommets existants). Dans cette repr esentation de G = (X,), les ensembles X et sont repr esent es de la mani` ere suivante : x X G.vs[x.num] (x,y ) G.m[x.num,y.num]

Exemple : Graphe G1 nmax = 10 ;


vs

1 v

2 v

3 v

4 v

5 v

6 v

7 v

8 v

9 v

10 f

c IFSIC 2004

3.2. Trois exemples de repr esentation concr` ete 1 1 2 3 4 5 6 7 8 9 10 2 v 3 v v v v v 4 5 v v v v v v


les cases vides ont des valeurs faux

23 10

3.2.2

Repr esentation par tableaux et listes

Les attributs nmax et vs sont d enis comme pr ec edemment.


TABLEAU[LISTE[SOMMET]] GRAPHE::ts ; -- G.ts[i] d esigne la liste des successeurs du sommet de num ero i, 1 i G.nmax.

On a toujours : si G.vs[i] est faux, alors G.ts[i] est n ecessairement vide (en fait, cette liste nest m eme pas d enie). Dans cette repr esentation de G = (X,), les ensembles X et sont repr esent es de la mani` ere suivante : x X G.vs[x.num] (x,y ) G.ts[x.num].contient(y) Exemple : Graphe G1 nmax = 10 ;
vs

1 v

2 v

3 v

4 v

5 v

6 v

7 v

8 v

9 v

10 f

3.2.3

Repr esentation d ecentralis ee par listes

Le type SOMMET est enrichi : chaque sommet a maintenant comme attribut la liste de ses successeurs. Le graphe se r eduit alors ` a la liste de ses sommets.
ENT SOMMET::num ; -- comme pr ec edemment LISTE[SOMMET] SOMMET::ls ; -- x.ls est la liste des sommets successeurs de x. LISTE[SOMMET] GRAPHE::lsom ; -- G.lsom est la liste des sommets du graphe G.

Dans cette repr esentation du graphe G = (X,), les ensembles X et sont repr esent es de la mani` ere suivante : x X G.lsom.contient(x)
c IFSIC 2004

24
ts
1 2 3 4 5 6 7 8 9 10 [ 2; 3 ] [5] [ 3; 4; 6 ] [ 2; 5 ] [ 6; 7; 8 ] [3] [] [7 ] [9]

Aspect algorithmique : un type de donn ees abstrait

(x,y ) G.lsom.contient(x) et G.lsom.contient(y) et x.ls.contient(y)


lsom
1 G1 2 3 4 5 6 7 8 9

x.ls

[ 2; 3 ]

[5]

[ 3; 4; 6 ] [ 2; 5 ]

[ 6; 7; 8 ] [3]

[]

[7 ]

[9]

Exemple : Graphe G1

3.3

Le type abstrait Graphe : les m ethodes

La plupart des algorithmes de r esolution de probl` emes mod elis es par des graphes peuvent etre d ecrits ` a laide de traitements plus ou moins el ementaires sur le graphe mod elisant le probl` eme. Cette description encha nement contr ol e des actions est evidemment, ` a un certain niveau, intrins` eque, cest ` a dire ind ependante de la repr esentation choisie pour le graphe. Par exemple, lalgorithme de saisie ci-apr` es construit un graphe ` a partir de donn ees lues dans un chier. Le format de pr esentation des donn ees est le suivant : S equence des arcs, chaque arc etant donn e comme un couple dentiers (num ero dorigine, num ero dextr emit e), termin ee par (0,0); s equence des num eros des sommets isol es, termin ee par 0. Exprim e en faisant abstraction dune repr esentation concr` ete particuli` ere, on obtient le texte:
GRAPHE construction cest local ENT i, j ;
c IFSIC 2004

3.3. Le type abstrait Graphe : les m ethodes


GRAPHE G ;

25

d ebut
-initialisation au graphe vide G. creer ; --

lecture de la liste des arcs depuis i lire ; j lire jusqu a i=0 et j=0 faire G. ajoutarc(i, j) ; i lire ; j lire fait ;

lecture de la liste des sommets isol es depuis i lire jusqua i=0 faire G. ajout sommet(i) ; i lire fait ; Result G -- Result est une variable exprimant le r esultat dune fonction n
--

Lalgorithme, pr esent e sous cette forme, peut sappliquer ` a nimporte quelle repr esentation interne du graphe : il sut, dans chaque cas, de traduire convenablement les op erations indiqu es en italique. Dans ce texte, le type GRAPHE nest pas d eni concr` etement : on lappelle type abstrait. Cela signie, qu` a ce niveau dexpression, on na pas besoin den savoir plus sur les structures de donn ees qui seront eectivement utilis ees pour repr esenter concr` etement lobjet G. Les traitements el ementaires en italique ont et e d enomm es. On les appelle des m ethodes du type abstrait GRAPHE, et tout ce que lon a besoin de conna tre est leur s emantique. Ainsi, on aura d eni une fois pour toutes que :
creer : proc edure qui initialise le graphe courant au graphe vide (,). ajoutarc(ENT i; ENT j) : ajout au graphe courant de larc (i, j) (et au besoin des sommets de num ero i et j) ajout sommet(ENT i) : ajout au graphe courant du sommet de num ero i

La liste compl` ete des acc` es, avec leur s emantique, est donn ee en Annexe. On peut poursuivre cette d emarche. En eet, les structures de donn ees utilis es dans les repr esentations concr` etes des graphes peuvent etre elles aussi consid er ees comme des types de donn ees abstraits (cest le cas par exemple du type g en erique LISTE[T]). Ces types de donn ees abstraits peuvent ` a leur tour etre manipul es ` a travers leurs m ethodes, et mis en oeuvre selon diverses repr esentations concr` etes, etc. Dans le cas du type LISTE[T], par exemple, la m ethode
c IFSIC 2004

26

Aspect algorithmique : un type de donn ees abstrait contient

BOOL contient(T x) est telle que .contient(x) renvoie vrai si et seulement si la liste un el ement de type T, de valeur x.

Nous ne d etaillerons pas ici ces repr esentations, qui sont etudi ees dans les cours de techniques de programmation ou structures de donn ees. Il faut n eanmoins mettre laccent sur le fait essentiel que la d emarche est absolument identique dans le cas des graphes, des listes, etc... : s eparer la partie intrins` eque dun algorithme des d etails de mise en oeuvre, ou dimpl ementation. On peut toujours d enir de nouveaux niveaux dabstraction, ` a condition de bien pr eciser les types abstraits manipul es et leurs m ethodes. Remarquons enn que les types pr ed enis, m eme el ementaires (r eel, entier, caract` ere, bool een) utilis es dans les langages de haut niveau sont eux aussi des types abstraits par rapport ` a la machine, leur impl ementation concr` ete en m emoire d ependant du mat eriel utilis e ; les m ethodes sont alors, dans un langage donn e, les op erations pr ed enies du langage telles que : lecture/ ecriture, op erations arithm etiques ou logiques, comparaisons, etc... Cette d emarche de programmation par abstractions successives est r ealis ee, notamment, dans les langages dits de programmation par objets, appel es encore, improprement, langages orient es objets. Citons, parmi les plus connus, Eiffel, Java, C++, dans une moindre mesure Turbo-Pascal (` a partir de la version 6) ou encore, plus anciens, Simula et Smalltalk. Dans ces langages, les types sont d ecrits dans des classes, contenant tout ` a la fois les valeurs des objets du type (appel es attributs) et les m ethodes permettant de manipuler ces valeurs (en lecture ou en ecriture). Nous renvoyons, pour plus de d etail, aux cours de programmation sappuyant sur la d emarche par objets. Dans la suite de ce polycopi e, les notations utilis ees dans la description des algorithmes seront proches de celles utilis ees dans de tels langages, sans pour autant etre li ee a lun dentre eux en particulier. Le . est lop ` erateur dapplication de m ethode ou dattribut ` a lobjet d esign e. Par exemple, G.ajout arc(i,j) est une instruction, signiant que lon applique lop eration ajout arc, avec les deux param` etres eectifs i et j ` a lobjet de type GRAPHE d esign e par G. De m eme, G.valid arc(i,j) est une expression dont l evaluation renvoie une valeur bool eenne, valant vrai si et seulement si lobjet de type GRAPHE d esign e par G poss` ede larc (i, j).

3.4

Notations

Lapproche objet interdit en g en eral dacc eder directement aux attributs dun objet distant, que ce soit en ecriture (cest-` a-dire pour aecter directement sa valeur) ou m eme en lecture (pour obtenir sa valeur). Dans ce cas, des ecritures telles que x.att := valeur (aectation ` a distance, cest-` a-dire via x, de lattribut att), ou m eme v:=x.att (lecture ` a distance, cest-` a-dire via x de lattribut att) sont souvent interdites; de telles op erations ne peuvent en eet etre r ealis ees que par des m ethodes (proc edures ou fonctions) equipant le type de lobjet d esign e par x. Par exemple, avec la d eclaration
REEL SOMMET::lambda ;

la mise ` a jour de lattribut lambda dun objet de type SOMMET d esign e par x ne pourra se faire que si le type SOMMET poss` ede une m ethode

c IFSIC 2004

3.4. Notations
affecter lambda(REEL v) post lambda=v

27

qui eectue, de mani` ere interne, laectation lambda:=v. Linstruction externe r ealisant une telle mise ` a jour s ecrira alors :
x.affecter lambda(4.18)

Toutefois, an dall eger l ecriture des algorithmes et den faciliter la lecture, nous utiliserons le symbole ayant la signication suivante: x.lambda 4.18 suppose que le type SOMMET est equip e dune m ethode r ealisant cette aectation. L ecriture ci-dessus est alors equivalente ` a linstruction dappel x.affecter lambda(4.18). Dans un m eme souci de simplication, une expression telle x.lambda d elivre la valeur de lattribut lambda de lobjet d esign e par x, en supposant que le type de x est equip e dune m ethode permettant cette lecture (certains langages, comme Eiel, permettent de telles lectures directes, ` a condition que lattribut soit exportable). Enn, toujours pour all eger le formalisme, si a et b d esignent deux objets de m eme type, l ecriture a b d enote linstruction de copie de lobjet d esign e par b dans lobjet d esign e par a (aectation de valeurs). Finalement, dans les parties math ematiques (propri et es, d emonstrations, etc.) nous utiliserons des notations fonctionnelles plus classiques telles que (x) ou pred(x) (au lieu des notations algorithmiques x.lambda ou x.pred). Dune mani` ere g en erale, x d esignant un objet dun type C , et att un attribut de ce type, les deux notations att(x) et x.att seront consid er ees comme ayant la m eme signication.

c IFSIC 2004

28

Aspect algorithmique : un type de donn ees abstrait

c IFSIC 2004

Chapitre 4

Relations et op erateurs entre graphes


Dans ce qui suit, nous d esignerons par G (X ) lensemble des graphes ayant X comme ensemble de sommets. Sur G (X ), nous pouvons consid erer un certain nombre de relations ou op erations; dans ce chapitre, nous en etudions quelques unes. On note : G1 = (X,1 ),G2 = (X,2 ) deux el ements de G (X ).

4.1

Relation dordre

La relation G1 G2 1 2 qui se lit : G1 est un graphe partiel de G2 est une relation dordre partiel sur G (X ). Pour cette relation, G (X ) a un minimum : (X,) maximum : (X,X 2 ) Toute partie de G (X ) poss` ede dailleurs au moins un minorant et un majorant, comme cest le cas de toute partie nie dun ensemble ordonn e.

4.2

Union
G1 G2 = (X,1 2 )

Cet op erateur poss` ede toutes les propri et es de lunion ensembliste.


c IFSIC 2004

30

Relations et op erateurs entre graphes

4.3
4.3.1

Composition
D enition
G3 = G1 G2 = (X,3 )

est d eni par : 3 = {(x,y ) | z X : (x,z ) 1 (z,y ) 2 } Lop erateur nest pas commutatif. Toutefois, il est associatif et poss` ede un el ement neutre, a savoir le graphe diagonal : ` D = (X,) o` u = {(x,x) | x X } En eet, G G (X ) : G D = D G = G. Par abus de notation, on ecrira parfois 3 = 1 2 lorsque G3 = G1 G2 Proposition 4.1 est distributif par rapport ` a Autrement dit : G1 ,G2 ,G3 G (X ) : (G1 G2 ) G3 = (G1 G3 ) (G2 G3 ) G1 (G2 G3 ) = (G1 G2 ) (G1 G3 )

(D emonstration laiss ee au lecteur). Par contre, nest pas distributif par rapport ` a : (G1 G2 ) G3 = (G1 G3 ) (G2 G3 ) contre-exemple G1 = G2 G3 = D G1 G2 = (X,) (G1 G2 ) G3 = D Dautre part : (G1 D) (G2 D) = G1 D Proposition 4.2 Lop erateur est compatible ` a gauche et ` a droite avec la relation dordre d enie en 3.1
1 3 G1=G2 D 2 1 3 2

c IFSIC 2004

4.3. Composition

31

D emonstration : Cet enonc e signie que G1 ,G2 ,G3 G (X ) : G1 G2 Si Gi = (X,i ) (i = 1,2,3), on a :

(G1 G3 (G3 G1

G2 G3 ) G3 G2 )

(x,y ) 1 3 z X : (x,z ) 1 (z,y ) 3 z X : (x,z ) 2 (z,y ) 3 (x,y ) 2 3 ce qui montre que G1 G3 G2 G3 . La deuxi` eme in egalit e se montre de mani` ere analogue.2

4.3.2

Algorithme

Nous donnons ci-dessous un algorithme de construction de G3 = G1 G2 , en supposant pour simplier que X = [1..n] 4.3.2.1 Analyse

Pour tout couple (x,y ) X 2 , il faut d eterminer si (x,y ) est ou non un arc de G3 . Par d enition, (x,y ) 3 z (1 z n) ((x,z ) 1 ) ((z,y ) 2 ) Notons P (z ) la proposition : ((x,z ) 1 ) ((z,y ) 2 ). Il sagit d evaluer le pr edicat : t 1 t n : P (t). Cette evaluation est mise en uvre par un calcul it eratif. La gure ci-dessous en d etermine linvariant :
zone deja examinee 1 z z+ 1 zone non encore examinee n

cest-` a-dire, plus formellement : I (0 z n) (b = t 1 t z : P (t)) Le calcul sera termin e lorsque : (z = n) b et, lorsque ceci se produit : si b alors (t 1 t z : P (t)) (z n), cest-` a-dire (t 1 t n : P (t)) (*succes*) si b alors (z = n) (t 1 t n : P (t)) (* echec *) Le r esultat est donc egal ` ab Si le calcul nest pas termin e, on progresse en mettant ` a jour les variables z et b de la mani` ere suivante : z z + 1 ; bP (z )
c IFSIC 2004

32

Relations et op erateurs entre graphes Les valeurs initiales doivent satisfaire linvariant ; par exemple, on peut prendre : z 0 ; bf alse De cette analyse d ecoule le texte de lalgorithme.

4.3.2.2

Texte de lalgorithme

Il est donn e page 32.

ALGORITHME DE CONSTRUCTION DE G1G2

GRAPHE composer(GRAPHE G1, G2) cest -- pr e : G1 et G2 ont le m eme ensemble de sommets : -G1.ens som=G2.ens som={1,...,n} local SOMMET x,y,z; BOOL b;

d ebut
Result.creer;

Result est une variable implicite de type GRAPHE, exprimant le r esultat de la fonction pour tout x de G1.ens som pour tout y de G1.ens som depuis z 0 ; b false jusqua z n ou b faire z z+1; b G1.validarc(x,z) et G2.validarc(z,y) fait; si b alors Result.ajoutarc(x,y) fsi fpour fpour n
--

4.3.3

Complexit e

La boucle interne depuis ... jqa comporte au plus n pas , et elle est ex ecut ee exactement n2 fois. La complexit e maximum est donc : 2n3 acc` es validarc n3 op erations et n2 acc` es ajoutarc
c IFSIC 2004

4.4. Puissances dun graphe

33

On dit que cest un algorithme en O(n3 ), en termes dacc` es validarc. Remarques 1) La complexit e de mise en uvre de chacun des acc` es d epend evidemment de la repr esentation choisie pour chacun des 3 graphes G1, G2, Result. 2) Si les graphes sont tous les trois repr esent es par leur matrice bool eenne, alors il est facile de voir que M3 = M1 M2 o` u le d esigne le produit matriciel bool een de deux matrices :
n

1 i,j n : m3ij =

(m1ik m2kj )
k=1

4.4

Puissances dun graphe

On d enit par r ecurrence sur p N le graphe G[p] = (X,[p] ) de la mani` ere suivante : D enition 4.3 G[0] = D p 1 : G[p] = G[p1] G = G G[p1] propri et es : G[k] G[l] = G[k+l] (G[k] )[l] = G[kl] (identiques aux puissances des nombres r eels) Nous allons interpr eter les puissances dun graphe.
`me dun graphe Proposition 4.4 Soit G[p] = (X,[p] ) la puissance pe [ p ] G = (X,). Alors, (x,y ) si et seulement si il existe, dans G, un chemin de longueur p, allant de x ` a y (ce chemin est un circuit si x = y).

D emonstration Par r ecurrence sur p : Pour p= 1, le r esultat est evident : G[1] = (X,) et les arcs sont les chemins de longueur 1. Supposons d emontr e jusqu` a p-1.

(x,y ) [p] = [p1] z X : (x,z ) [p1] (z,y )


c IFSIC 2004

34

Relations et op erateurs entre graphes z X : u = [x z ], | u |= p 1 v = [zy ], | v |= 1 w = u.v = [x y ], | w |=| u | + | v |= p ce qui d emontre le r esultat pour p 2

4.5

Graphe transpos e

D enition 4.5 Le graphe transpos e de G = (X,) est : Gt = (X,t ) avec (x,y ) t (y,x)

Cest donc le graphe d eduit de G par inversion du sens de tous les arcs. On utilise parfois 1 la notation , lorsquon veut exprimer le fait que lapplication multivoque associ ee ` a Gt est linverse de lapplication multivoque li ee ` a G. Remarquons toutefois que les relations 1 1 = ou = ne sont en g en eral pas v eri ees. Ainsi, 1 ne doit pas etre consid er e comme la puissance moins un du graphe, mais bien comme une notation d esignant lensemble des arcs du graphe transpos e.

4.6

Sous-graphe

Dans ce paragraphe, les graphes consid er es ne sont pas tous construits sur le m eme ensemble de sommets. En eet, si nous avons un graphe G = (X,), certaines op erations sur G peuvent amener ` a supprimer des sommets. Or, si un sommet est ot e du graphe, il va de soi que les eventuels arcs adjacents ` a X doivent aussi etre supprim es : la suppression dun objet entra ne la suppression de toutes les relations relatives ` a cet objet ! Cette remarque pr eliminaire conduit ` a la d enition suivante : D enition 4.6 Soit G = (X,) G (X ) et A X . Le sous-graphe engendr e par A est d eni par : GA = (A,A ) G (A),avec A = {(x,y ) | x A,y A,(x,y ) } On peut donner un algorithme de construction du sous-graphe engendr e par A :
sous graphe(ENS[SOMMET] A) cest local SOMMET z
c IFSIC 2004

4.6. Sous-graphe d ebut pourtout z de ens som faire si z A alors oter sommet(z) fsi fpourtout n

35

c IFSIC 2004

36

Relations et op erateurs entre graphes

c IFSIC 2004

Chapitre 5

Fermeture transitive
Le probl` eme etudi e dans ce chapitre est celui de lexistence des chemins entre tous les couples de sommets. Plus pr ecis ement : Etant donn e un graphe G = (X,), construire le graphe G+ = (X,+ ) tel que (x,y ) + il existe un chemin de G allant de x ` a y . G+ sappelle la fermeture transitive de G. Nous allons voir successivement les bases th eoriques, puis deux algorithmes permettant de r esoudre le probl` eme, et enn des exemples dapplication.

5.1

Retour sur la transitivit e

Un graphe est transitif si la relation binaire qui lui est associ ee est transitive. En dautres termes : x,y,z X : (x,y ) (y,z ) = (x,z ) . Voici une propri et e caract eristique des graphes transitifs: Proposition 5.1 Un graphe G est transitif si et seulement si tout chemin de longueur deux est sous-tendu par un arc, cest-` a-dire : [2] D emonstration 1. Supposons G transitif. G transitif xy z ((x,y ) (y,z ) (x,z ) ) xz (y ((x,y ) (y,z ) ) (x,z ) ) xz (x,z ) [2] (x,z ) [2] 2. R eciproquement, supposons [2] . (x,z ) (z,y ) (x,y ) [2] (x,y ) G est transitif Cette propri et e admet un corollaire evident:
c IFSIC 2004

38

Fermeture transitive

Corollaire 5.2 Un graphe G est transitif si et seulement si tout chemin est sous-tendu par un arc, cest-` a-dire : k 2 : [k] D emonstration Par r ecurrence sur k : vrai pour k = 2, dapr` es la proposition pr ec edente. [ k 1] Hypoth` ese de r ecurrence : . Cela signie: G[k1] G
[k ]

G. On a alors :

= G

[k1]

G G(hypoth` ese de r ecurrence et proposition 4.2) G[2] G (proposition 5.1) 2 Linterpr etation concr` ete de ce corollaire est la suivante : dans un graphe transitif, la notion de chemin se confond avec la notion darc. Nous allons maintenant aborder les caract erisations et les algorithmes de calcul de la fermeture transitive. Le terme de fermeture transitive provient du fait que, dune part, G+ est transitif (par construction!), et dautre part, G+ est le plus petit graphe transitif sup erieur ou egal ` aG (au sens de la relation ). Plus pr ecis ement : + G est transitif, G G+ Si H est transitif et G H , alors G+ H Intuitivement, on obtient G+ ` a partir de G en rajoutant juste ce quil faut darcs pour rendre le graphe transitif. La d emonstration de ces propri et es ne pr esente aucune dicult e. Elle est laiss ee en exercice au lecteur.

5.2

Caract erisation du graphe G+


Proposition 5.3 G+ = G G[2] . . . G[k] . . .

D emonstration Posons G+ = (X,+ ) et, k 1, G[k] = (X,[k] ). Par d enition, (x,y ) + u = [x y ] dans G (x,y ) [k] ,o` u k = |u| (x,y ) [2] . . . [k] . . . 2 La proposition suivante montre que le probl` eme se r eduit ` a lexistence des chemins el ementaires.
c IFSIC 2004

5.2. Caract erisation du graphe G+

39

Proposition 5.4 Les deux propositions suivantes sont equivalentes : i) Dans le graphe G, il existe un chemin de x ` a y, ii) Dans le graphe G, il existe un chemin el ementaire de x ` ay D emonstration ii) i). Evident puisque tout chemin el ementaire est un chemin. i) ii). Supposons quil existe un chemin u = [x y ]. Sil est el ementaire, la d emonstration est termin ee; sinon, la suite de sommets le d enissant comporte au moins une r ep etition : u = [x z z y ] ( eventuellement, z = x ou z = y ) On a donc : u = u1 u2 u3 avec u1 = [x z ],u2 = [z z ],u3 = [z y ] et u = u1 u3 est un chemin de x ` a y, obtenu ` a partir de u en court-circuitant le circuit [z z ]. En it erant ce raisonnement tant quil y a des r ep etitions (circuits contenus dans le chemin), on obtient n ecessairement un chemin el ementaire reliant x ` a y. 2 Des deux propositions pr ec edentes r esulte la caract erisation suivante : Corollaire 5.5 Soit G = (X,) et n =| X |. On a : G+ = G G[2] . . . G[n] D emonstration Le r esultat d ecoule des deux propositions pr ec edentes et du fait que tout chemin el ementaire est de longueur n (et m eme n 1 si ce nest pas un circuit). 2 On peut encore etre plus pr ecis : Proposition 5.6 Soit k el ementaires de G. Alors : i) k n,
k k+1

la

longueur

maximum

des

chemins

ii)

G[j ] = =G

G[j ] . . . G[k]

j =1 iii) G+

j =1 G[2]

D emonstration i) : par d enition des chemins el ementaires (longueur n)


k+1

ii) Si (x,y )
j =1

G[j ] alors il existe dans G un chemin u de longueur k + 1, allant de x ` a y.

Dapr` es la proposition 5.4, il existe dans G un chemin el ementaire allant de x ` a y ; autrement dit,
c IFSIC 2004

40
k

Fermeture transitive
k k+1

il existe un entier

k tel que (x,y )

G[ ] .

Comme

G[ ]

j =1

[j ]

on a bien
j =1

[j ]

=
j =1

G[j ] . 2

iii) Imm ediat Dapr` es le point pr ec edent et le corollaire 5.5

5.3

Algorithme des puissances

Lalgorithme des puissances calcule G+ en se basant sur la proposition 5.6. Il est construit en maintenant invariante la proposition ci-dessous : (G+ = G ... G[k] ) (H = G ... G[k1] ) (1 k n) Le calcul sera donc termin e lorsque H = G+ Si le calcul nest pas termin e, la progression consiste ` a mettre ` a jour les variables H,G+ : H G+ ; G+ G (G+ G) En eet :
k

si G+ =
j =1

G[j ] alors

k+1

G+ G =
j =2

G[j ] (distributivit e de par rapport ` a ) do` u

k+1

G (G+ G) =
j =1

G[j ]

Les valeurs initiales doivent v erier linvariant et etre faciles ` a evaluer en fonction des donn ees : G+ G, H arbitraire (mais = G+ , par exemple : H (,)). Le texte de lalgorithme en d ecoule.

5.3.1

Texte de lalgorithme

Il est donn e page 41


c IFSIC 2004

5.4. Algorithme de Roy-Warshall

41

FERMETURE TRANSITIVE : PUISSANCES


GRAPHE fermeture-transitive-puissance(GRAPHE G) cest local GRAPHE H

d ebut depuis Result G ; H.creer jusqua H=Result faire H Result ; Result G (G Result) fait n

5.3.2

Complexit e

Au maximum, n pas dit eration sont eectu es. A chaque pas, sont eectu es : 2 aectations de graphe, 1 comparaison de 2 graphes, 1 op eration , en O(n2 ) acc` es el ementaires, en O(n2 ) acc` es el ementaires, en O(n3 ) acc` es el ementaires (chapitre 4, section4.3.3)

1 op eration , en O(n2 ) acc` es el ementaires. Cest donc un algorithme en O(n4 ) acc` es el ementaires. De plus, lespace utilis e est de 3 graphes.

5.4

Algorithme de Roy-Warshall

Par rapport ` a l algorithme pr ec edent, bas e sur les calculs de puissances, celui-ci pr esente les avantages suivants : sa complexit e est en O(n3 ) acc` es, e nest que de 1 graphe, lespace utilis il ore la possibilit e de calculer des routages, cest ` a dire dobtenir le trac e de chemins el ementaires.

5.4.1

Principe de lalgorithme

Lalgorithme est bas e sur lop eration el ementaire suivante :


c IFSIC 2004

42

Fermeture transitive

D enition 5.7 Soit x X . Si G = (X,) G (X ), alors x (G) G (X ) a pour ensemble darcs : x () = {(y,z ) | (y,x) (x,z ) } Autrement dit, x enrichit le graphe en lui ajoutant les arcs reliant les pr ed ecesseurs de x aux successeurs de x. Lalgorithme est bas e sur une nouvelle caract erisation de la fermeture transitive : G+ =
xX

x (G)

o` u d esigne le produit (composition) des op erations x , cest ` a dire, si X = {1,2, . . . ,n} est une num erotation des sommets : G+ = n (n1 (. . . (1 (G)) . . .))

Lemme 5.8 Soit Vi lensemble des couples (y,z ) X 2 tels quil existe dans G un chemin el ementaire de longueur 1 ou dont tous les sommets interm ediaires sont de num ero inf erieur ou egal ` a i. On a alors : 1 i n : i i1 . . . 1 () = Vi D emonstration Par r ecurrence sur i : Pour i= 1, 1 () = {(y,z ) | (y,1) (1,z ) } est lensemble des couples reli es par un chemin de longueur 1, {(y,z ) | (y,1) (1,z ) } est lensemble des couples reli es par un chemin el ementaire de longueur 2 de sommet interm ediaire num ero 1. La propri et e est donc v eri ee. Supposons la vraie pour i-1 et montrons quelle est vraie pour i. Hypoth` ese : i1 . . . 1 () = Vi1 Il faut montrer : i i1 . . . 1 () = Vi . Dapr` es lhypoth` ese de r ecurrence, cela revient ` a montrer que :i (Vi1 ) = Vi . Mais, par d enition de i : i (Vi1 ) = Vi1 {(y,z ) | (y,i) Vi1 (i,z ) Vi1 } Soit (y,z ) i (Vi1 ). Il y a deux possibilit es: 1. Si (y,z ) Vi1 alors (y,z ) Vi (car Vi1 Vi )
c IFSIC 2004

5.4. Algorithme de Roy-Warshall

43

2. Si (y,i) Vi1 (i,z ) Vi1 alors il existe un chemin de y ` a z dont tous les sommets interm ediaires sont de num ero inf erieur ou egal ` a i, donc (proposition 5.4) il existe un chemin el ementaire de y ` a z dont tous les sommets interm ediaires sont de num ero inf erieur ou egal ` a i, cest-` a-dire (y,z ) Vi . On a donc montr e i (Vi1 ) Vi . R eciproquement, soit (y,z ) Vi . Il existe donc un chemin el ementaire u de y ` a z , dont tous les sommets interm ediaires sont de num ero inf erieur ou egal ` a i. Il y a deux cas : 1. u ne passe pas par le sommet i. Dans ce cas, tous les sommets interm ediaires sont de num ero inf erieur ou egal ` a i 1 donc (y,z ) Vi1 i (Vi1 ) 2. u passe par le sommet i. Comme il est el ementaire, il se d ecompose en deux chemins u1 et u2 , avec u1 Vi1 et u2 Vi1 . Par cons equent, (y,i) Vi1 et (i,z ) Vi1 do` u (y,z ) i (Vi1 ). On a donc montr e Vi i (Vi1 ). 2

Proposition 5.9

G+ = n n1 . . . 1 (G)

D emonstration Tout chemin de G est de longueur 1, ou poss` ede des sommets interm ediaires {x1 , . . . ,xn } = X . Le th eor` eme d ecoule donc du lemme pr ec edent, avec i = n. 2

5.4.2

Texte de lalgorithme

Il est donn e page 44

5.4.3

Complexit e

Pour chaque op eration , il y a au plus : n + n2 acc` es validarc n2 acc` es ajoutarc soit, globalement : au plus n2 + n3 acc` es validarc au plus n3 acc` es ajoutarc do` u un algorithme en O(n3 ) en termes dacc` es el ementaires. De plus, lespace m emoire nest que de 1 graphe (le graphe courant Result). En eet, le graphe donn e G nest utilis e que pour initialiser Result, il est donc inutile de le garder en m emoire.
c IFSIC 2004

44

Fermeture transitive

ALGORITHME DE ROY-WARSHALL
GRAPHE roy-warshall(GRAPHE G) cest local SOMMET x,y,z ; ENS[SOMMET] X;

d ebut
Result G ; X G.lst som ; pour tout x de X pour tout y de X si Result.validarc(y,x) alors pour tout z de X si Result.validarc(x,z) alors Result.ajoutarc(y,z)

fsi fpourtout fsi fpourtout fpourtout n

5.4.4
5.4.4.1

Routage
D enition

Lid ee du routage est la suivante: si lon calcule la fermeture transitive G+ dun graphe G, on est capable de r epondre ` a la question : quels que soient les sommets x et y , existe-t-il dans G un chemin de x ` a y ? Une information de routage doit permettre de compl eter cette r eponse, en fournissant le trac e dun tel chemin (lorsque celui-ci existe). Il y a plusieurs mani` eres dobtenir un routage. Nous en d ecrivons une, bas ee sur la notion de table. Rappelons quune table est une structure de donn ees mettant en oeuvre une correspondance entre un ensemble de clefs et un ensemble de valeurs. Le type abstrait TABLE[K,E] d ecrit les tables dont lensemble des clefs est K et lensemble des valeurs E (math ematiquement, ce sont les applications de K dans E). Une table est d eclar ee TABLE[K,E] T; elle est alors acc ed ee par les op erations suivantes : elivre la valeur v de type E correspondant ` a la clef x (de type K). T[x] : d T[x] v aecte la valeur v de type E ` a l el ement correspondant ` a la clef x (de type K). Les objets de type SOMMET sont alors munis dune table, selon la d eclaration ci-dessous :
TABLE[SOMMET,SOMMET] SOMMET::R

avec la signication suivante:


c IFSIC 2004

5.4. Algorithme de Roy-Warshall Pour tout sommet y , pour tout sommet z , nil si z + (y ) ou ` nil signif ie pas de successeur y.R[z ] = successeur de y sur un chemin de y a ` z dans G si z + (y )

45

La connaissance des sommets y.R[z ] permet-elle de d eterminer le trac e dun chemin de y ` a z, ` a partir de nimporte quel y ? La r eponse nest pas toujours positive ! En eet, lalgorithme de trac e a lallure suivante (si y.R[z ] = nil) :

d ebut local SOMMET somcour; depuis ecrire y ; somcour y.R[z]; jusqua somcour = z faire ecrire somcour ; somcour somcour.R[z]; fait; ecrire z n Mais rien ne prouve que cet algorithme se termine ; par exemple :
1 2 4

y.R[4]

1 avec, pour R[4] : 2 3 4

2 3 2 nil

A partir des sommets 1, 2 ou 3, lalgorithme boucle, et pourtant les valeurs R[4] sont bien conformes ` a la d enition. Nous allons donc renforcer la d enition, an d eviter cette dicult e, en imposant ` a y.R[z], + si z (y ), d etre le successeur de y sur un chemin el ementaire de y ` a z. Il est alors facile de v erier que lalgorithme de trac e se termine, puisque les valeurs successives de la variable somcour sont distinctes. (Sauf eventuellement y = z pour un circuit el ementaire). Pour tout sommet y , pour tout sommet z , nil si z + (y ) y.R[z ] = successeur de y sur un chemin el ementaire de y ` a z dans G si z + (y ) Dans lexemple pr ec edent, les valeurs y.R[4] deviennent :
c IFSIC 2004

46

Fermeture transitive

y.R[4]

1 2 3 4

2 4 2 nil

et lalgorithme de trac e vers le sommet 4, ex ecut e` a partir de y=1, ache 1 2 4. 5.4.4.2 Construction des routages par lalgorithme de Roy-Warshall

y X , on consid` ere les valeurs initiales de la table y.R : nil si (y,z ) z X : y.R[z ] = z si (y,z ) Cest donc lattribut de routage vers z lorsquon se restreint aux chemins de longueur 1. On modie alors les op erations x , an quelles mettent ` a jour les valeurs des tables R : dans le cas o` u x rajoute un arc entre y et z , alors y.R[z] y.R[x]. En eet, le chemin el ementaire de y a z qui vient d ` etre rep er e passe par x : pour aller de y ` a z , on doit dabord se diriger vers x. Do` u le texte de lalgorithme, modi e routage : ALGORITHME DE ROY-WARSHALL avec ROUTAGE

GRAPHE roy-warshall(GRAPHE G) cest local SOMMET x,y,z ; ENS[SOMMET] X;

d ebut
Result G ; X G.lst som ; -- initialisation des tables de routage pour tout y de X pour tout z de X si Result.validarc(y,z) alors y.R[z] z sinon y.R[z] nil fsi

fpourtout fpourtout ; -- op erations avec gestion des tables de routage pour tout x de X pour tout y de X si Result.validarc(y,x) alors pour tout z de X si Result.validarc(x,z) alors si non Result.valid arc(y,z) alors Result.ajoutarc(y,z); y.R[z] y.R[x] fsi
c IFSIC 2004

5.4. Algorithme de Roy-Warshall fsi fpourtout fsi fpourtout fpourtout n

47

5.4.4.3

Exemple dex ecution

A la main, la repr esentation la mieux adapt ee est matricielle. Pour g erer le routage, au lieu dutiliser la matrice bool eenne, nous utilisons la matrice de routage R, telle que y z : R[y,z ] = y.R[z ] si (y,z ) 0 si (y,z )

Nous traitons lexemple suivant (les cases de valeur 0 sont laiss ees vides): 1 1 2 3 4 5 6 7 8 9 2 3 4 5 6 6 7 8 9

2 1 4 5

7 7

8 3 1 2

Op eration 1 : il sagit de parcourir la colonne num ero 1, et de sarr eter sur toute ligne de valeur = 0 (correspondant ` a Result.validarc(y,1)). Pour une telle ligne, on eectue la recopie des el ements non nuls de la ligne 1 sur la ligne y , en mettant la valeur R[y,1] en toute case nulle R[y,z ] telle que R[1,z ] = 0 (ce qui correspond ` a: si Result.validarc(1,z) alors si non Result.valid arc(y,1) alors Result.ajoutarc(y,z); y.R[z] y.R[1] fsi fsi Lapplication de 1 ne modie que les lignes 4 et 9, et donne le tableau suivant :
c IFSIC 2004

48

Fermeture transitive

1 1 2 3 4 5 6 7 8 9

6 6

2 1 4 5 1

7 7

8 3 1 2 1

Le d etail des di erentes etapes serait trop long; notons cependant que 2 ne rajoute aucun arc (le sommet 2 est un point de sortie, cest-` a-dire un sommet sans successeur); de m eme 9 , car le sommet 9 est un point dentr ee (cest-` a-dire un sommet sans pr ed ecesseur). On donne ci-dessous le r esultat nal : 1 2 3 4 5 6 7 8 9 1 6 2 6 2 5 7 4 8 3 2 3 6 8 5 7 4 8 3 1 4 6 5 6 6 6 7 6 7 5 7 4 8 3 1 8 6 8 5 7 4 8 3 1 9

1 4

1 4

5 4

1 4

A titre dexemple, on va chercher le trac e dun chemin du sommet 1 au sommet 2; on obtient successivement: R[1,2] = 6; R[6,2] = 4; R[4,2] = 5; R[5,2] = 7; R[7,2] = 8; R[8,2] = 3; R[3,2] = 2 do` u le chemin : [1,6,4,5,7,8,3,2] 5.4.4.4 Preuve

Pour d emontrer la validit e de cet algorithme, nous etablissons les lemmes suivants : Lemme 5.10 Si pour un couple (y, z) on a, ` a lissue de lalgorithme, y.R[z ] = nil, alors y.R[z ] est successeur de y sur le premier chemin allant de y ` a z rencontr e au cours de lalgorithme. D emonstration Pour tout y et tout z , la valeur y.R[z ] est mise ` a jour au plus une fois. En eet, si (y,z ) , cette aectation a lieu ` a linitialisation, et de plus: Result.validarc(y,z) est v eri e. Si (y,z ) , la pr econdition de cette aectation implique : Result.validarc(y,z), et sa postcondition implique Result.validarc(y,z) 2
c IFSIC 2004

5.5. -minimalit e

49

Lemme 5.11 Si z + (y ) alors le premier chemin allant de y ` a z rencontr e au cours de lalgorithme est un chemin el ementaire. D emonstration Si (y,z ) , ce chemin est un arc et donc il est el ementaire. Supposons que tous les chemins rep er es jusqu` a lop eration i1 incluse soient el ementaires. Soit alors u = [y xi ] [xi z ] un chemin rep er e par lop eration i , cest-` a-dire tel que laectation y.R[z] y.R[xi ] ait lieu ; si u nest pas el ementaire, il existe j < i tel que u = [y xj xi ] [xi xj z ] et tous les autres sommets interm ediaires sont dans {x1 , . . . ,xi1 } et di erents de xj , dapr` es lhypoth` ese de r ecurrence. Mais cela signie quil existe un chemin u = [y xj ] [xj z ] avec {x1 , . . . ,xi1 } et donc i 1 : (y,z ) V Au cours du pas dit eration no laectation y.R[z] y.R[x ] a donc lieu, et cela contredit laectation de y.R[z] lors du pas no i > . 2 De ces deux lemmes on d eduit le r esultat : Th eor` eme 5.12 A lissue de lalgorithme, z X : les valeurs R[z ] d enissent un routage vers z

5.5

-minimalit e

La -minimalit e constitue une notion int eressante du point de vue des possibilit es de cheminement. Il sagit de mettre en evidence un graphe partiel de G, ayant la m eme fermeture transitive que G donc les m emes possibilit es de cheminement mais minimal au sens o` u la suppression dun arc quelconque de ce graphe partiel supprime au moins une possibilit e de cheminement. Il ny a en g en eral pas unicit e de la solution. D enition 5.13 La relation binaire sur G (X ) : G G G+ = G + est une relation d equivalence, appel ee - equivalence. La classe de G sera not ee : (G)

c IFSIC 2004

50

Fermeture transitive

D enition 5.14 On appelle graphe -minimal de G un el ement minimal du sous-ensemble (G), vis-` a-vis de lordre (chapitre 4). Nous verrons au chapitre 7 des techniques pour d eterminer un graphe -minimal de G, soit de mani` ere algorithmique si G est sans circuit, soit de mani` ere mi-heuristique, mi-algorithmique, en utilisant la d ecomposition de G en composantes fortement connexes, si G poss` ede des circuits.

c IFSIC 2004

Chapitre 6

M ethodes dexploration
6.1 D eveloppement arborescent issu dun sommet donn e
D enition 6.1 On appelle arborescence un graphe A = (S,) tel que : i) un sommet s0 S et un seul tel que 1 (s0 ) = . ii) s = s0 : 1 (s) poss` ede un seul el ement. iii) A est sans circuit. s0 sappelle racine de A, et tout sommet s sans successeur sappelle une feuille de larborescence. Un chemin de la racine ` a une feuille sappelle branche de larborescence. Soit maintenant G = (X,) un graphe, et x X . On construit une arborescence Ax de la mani` ere suivante : x est la racine , erativement sur k 1 : y [k] (x) : (y ) = (y ) It Ax sappelle d eveloppement arborescent issu dun sommet donn e ; chaque branche de larborescence correspond ` a un chemin issu de x (certaines branches peuvent etre innies).

c IFSIC 2004

52

M ethodes dexploration

Exemple 5.1
2 6 7

G
5

A
1 2

7 2 2

Fig. 6.1 Un graphe et son d eveloppement arborescent issu du sommet 1

c IFSIC 2004

6.2. Exploration de la descendance de x

53

Les probl` emes de cheminement issus de x que nous allons voir correspondent tous ` a des parcours dune partie de larborescence Ax , selon di erentes strat egies. De tels parcours sont encore connus sous le nom dexploration de la descendance de x

6.2
6.2.1
o` u

Exploration de la descendance de x
Sp ecication du r esultat

Explorer la descendance dun sommet x, cest eectuer un parcours du graphe Gx = ( (x),x ) (x) est lensemble des descendants de x (rappelons que x (x)) et x = {(y,z ) | (y,z ) y (x)}. (Remarquons que (y,z ) x z (x)). Ce parcours doit permettre de visiter au moins une fois chaque sommet y (x) et exactement une fois chaque arc (y,z ) x . A chaque sommet (resp. arc) on attribue un bool een sommet visit e (resp. arc visit e) : y.sommet visite (resp. (y,z ).arc visite ) est vrai si et seulement si le sommet y (resp. larc (y,z )) a et e visit e. La coh erence des etats visit es est exprim ee par les axiomes suivants : (1) x.sommet visite (2) z = x : z.sommet visite y (y,z ).arc visite z (x) (3) y z : (y,z ).arc visite y.sommet visite z.sommet visite (y,z ) x Dans l etat initial, on a x.sommet visite z = x z.sommet visite y z : (y,z ).arc visite et dans l etat nal, on doit avoir : z : z.sommet visite z (x) y z : (y,z )z.arc visite (y,z ) x

6.2.2

Principe des m ethodes dexploration

Invariant. Au cours dune exploration issue de x, tout sommet y X est dans lun des trois etats suivants : dehors : y.visite en attente : y.visite z (y,z ) (y,z ).visite termin e y.visite z (y,z ) (y,z ).arc visite . etat visit e ou non visit e tout arc est dans l Si lon d esigne par D (resp. A, T ) lensemble des sommets d etat dehors (resp en attente, termine ) et V lensemble des arcs d etat visit e, les axiomes se traduisent par : A1 x A T
c IFSIC 2004

54 A2 z = x : z A T (y (y,z ) V ) z (x) A3 y z (y,z ) V y A T z A T (y,z ) x Condition darr et Proposition 6.2 A = (T = (x) V = x )

M ethodes dexploration

D emonstration i) Supposons A = . Montrons que T = (x) et V = x . Comme A T (x), on a T (x). (x,z1 ) Soit y (x). Il existe un chemin u = [x,z1 , . . . ,zk ,y ](k 0). Mais x T arc visite sommet visite (z1 ) z1 A T = T . En r ep etant ce raisonnement, on obtient zk T (zk ,y ) sommet visite (y ) y A T = T . Donc (x) T . arc visite V x , par construction. a-dire y T do` u arc visite (y,z ) soit (y,z ) V . Soit (y,z ) x . On a donc y (x), cest-` Donc, x V . ii) R eciproquement, supposons T = (x) V = x ). Si A = , il existe y A. On a donc y (x) (car A (x)) et z (y,z ) , (y,z ) V . Mais y (x) (y,z ) x = V . Contradiction. Donc A = . 2

Progression (* A = *) Soit y un sommet de A Soit S un ensemble de successeurs de y tel que z S : (y,z ) V . Pour tout z S , l etat de (y,z ) devient visit e si z est dans l etat dehors alors (premi` ere visite de z ) si (z ) = alors z passe dans l etat termin e sinon z passe dans l etat en attente fsi sinon z a d ej` a et e visit e` a partir dun autre de ses pr edecesseurs fsi si z (y ) l etat de (y,z ) est visit e alors l etat de y devient termine fsi Valeurs initiales D = X \ {x} A = T V = si (x) = alors sinon {x} si (x) = alors {x} sinon

=
c IFSIC 2004

6.2. Exploration de la descendance de x

55

6.2.3

Preuve

Proposition 6.3 Les valeurs initiales satisfont linvariant D emonstration A1 x A T A2 Si z = x on a z D donc z A T . A3 V = 2 Proposition 6.4 La progression maintient linvariant D emonstration Soit D, A , T , V les valeurs au d ebut dune etape de lit eration, y le sommet et S lensemble des successeurs de y s electionn es au d ebut de cette etape; par hypoth` ese, ces valeurs satisfont (A1) ` a (A3). Soit D , A , T , V les valeurs ` a la n du pas. Prouvons quelles v erient les trois axiomes. A1 A T A T donc x A T A2 Soit z = x. Si z A T . Il y a deux cas : 1) z A T . Comme (A2) est satisfait au d ebut de l etape, on a (y (y,z ) V ) z (x). Comme V V , on a bien (y (y,z ) V ) z (x). 2) z D. Alors z a et e visit e` a partir de y A T , donc (y,z ) a et e visit e lors de cette etape : V = V {(y,z ). De plus, dapr` es (A2) au d ebut de l etape, y (x) ce qui implique z (x). Donc on a bien (y (y,z ) V ) z (x). A3 Soit (y,z ) V . Il y a deux cas : 1) (y,z ) V . Comme (A3) est satisfait au d ebut de l etape, on a y A T z A T (y,z ) x . Comme A T A T , on a aussi y A T z A T (y,z ) x . 2) (y,z ) V . Cet arc a donc et e visit e lors de cette etape, donc y A A T et, ` a lissue de la visite, z A T . De plus, (A2) etant vrai au d ebut de l etape, y A y (x) et donc (y,z ) x . On a donc bien y A T z A T (y,z ) x . 2

Proposition 6.5 Linvariant et la condition darr et impliquent le r esultat D emonstration Dapr` es la proposition 6.2 2

Proposition 6.6 Lalgorithme sarr ete apr` es un nombre ni d etapes

c IFSIC 2004

56

M ethodes dexploration

D emonstration La r` egle de progression fait d ecro tre strictement la quantit e enti` ere card()card(V ) et cette quantit e est minor ee par 0. 2

6.2.4

Texte de lalgorithme g en eral dexploration

L etat des sommets est mis en uvre ` a laide des trois ensembles D, A, T et celui des arcs ` a laide de lensemble V ; en outre, ` a chaque sommet de y A est associ e un ensemble de sommets a visiter contenant les successeurs z de y tels que (y,z ) V (si y D, a visiter nest pas d eni et, si y T , on a a visiter = ). La fonction sous ensemble, appliqu ee ` a un ensemble non vide, d elivre un sous-ensemble de cet ensemble. La fonction el ement, appliqu ee ` a un ensemble non vide, d elivre un el ement quelconque de cet ensemble (sans le retirer). Le texte de lalgorithme est donn e page 57

6.2.5

Complexit e

Chaque sommet de (x) passe une fois et une seule dans l etat en attente. Lorsquun sommet etabli, par lappel de lacc` es z passe de l etat dehors ` a l etat en attente, lensemble a visiter(z ) est lst succ. Il y a donc card( (x)) appels de lacc` es lst succ et, chaque acc` es etant, selon sa mise en uvre, au pire en O(n), on a un algorithme en O(n2 ) (en termes dop erations du type validarc)

6.3

Strat egies dexploration particuli` eres : largeur et profondeur

Les strat egies dexploration que nous allons maintenant d evelopper d ependent de la gestion de lensemble A, du crit` ere de choix dun el ement y dans cet ensemble (celui ` a partir duquel on tente de prolonger lexploration lors dun pas dit eration) et du choix de lensemble S . Nous en d eveloppons deux, appel ees respectivement : 1. recherche en largeur dabord (breadth-rst ou width rst search) 2. recherche en profondeur dabord (depth-rst search) Dautre part, le canevas dexploration de la descendance dun sommet x peut etre utilis e pour eectuer un calcul particulier sur le graphe, par exemple : Ensemble des descendants de x eration des chemins et circuits el ementaires issus de x Enum d eveloppement arborescent de hauteur minimum issu de x Arborescence de chemins de valeur optimum issus de x dans un graphe valu e (ce probl` eme sera trait e au chapitre 8) etc. Dans la suite de ce chapitre, les deux premiers exemples seront examin es; la strat egie dexploration en largeur et une expression r ecursive de la strat egie dexploration en profondeur seront explicit ees sur le premier dentre eux, et lexploration en profondeur sur le second.
c IFSIC 2004

6.3. Strat egies dexploration particuli` eres : largeur et profondeur

57

ALGORITHME GENERAL DEXPLORATION


ENS[SOMMET] D, T; ENS[ARC] V ; exploration-generale(GRAPHE G; SOMMET x) cest local ENS[SOMMET] A, S; ENS[SOMMET] SOMMET::a visiter ; SOMMET y, z ;

d ebut depuis D G.lst som\{x} ; V ; x.a visiter G.lst succ(x) ; si x.a visiter = alors A ; T {x} sinon A {x} ; T fsi jusqua A = faire y A.element ; S y.a visiter.sous ensemble; -- mise ` a jour du statut de y y.a visiter y.a visiter\ S; si y.a visiter= alors A A\{y} ; T T {y} fsi ; pour tout z de S V V {(y,z)} ; -- mise ` a jour du statut de z si z D alors D D\{z} ; z.a visiter lst succ(G,z) ; si z.a visiter = alors T T {z} sinon A A {z} fsi fsi fpourtout fait -- exploration termin ee : (x) = T , x = V n

c IFSIC 2004

58

M ethodes dexploration

6.3.1
6.3.1.1

Exploration en largeur dabord


Une structure de donn ees : la le

Cette strat egie consiste ` a s electionner dans A le sommet y le plus anciennement ajout e et ` a choisir S = (y ). Au niveau de larborescence, cela revient ` a eectuer un parcours en largeur ( niveau par niveau) : x est visit e, puis tous les arcs issus de x; ensuite, tous les successeurs de x et les arcs qui en sont issus, puis tous les sommets de [2] (x) qui nont pas et e visit es , et ainsi de suite. Lalgorithme qui r esulte de cette strat egie visite donc les el ements de (x) dans lordre suivant :
k 1

x; (x) \ {x}; [2] (x) \ (x) \ {x}; . . . ; [k] (x) \


j =0

[j ] (x); . . .

Pour cette raison, il est parfois quali e de concentrique. Nous allons mettre en oeuvre cette technique avec une structure de donn ees qui sappelle une le. Une le est une liste sur laquelle les seules modications possibles sont : 1. ajout dun el ement en queue (mettreenle) 2. retrait de l el ement de t ete (oterdele) On dit encore que cette liste est g er ee selon la discipline P.A.P.S. (Premier Arriv e Premier Sorti) ou F.I.F.O. (First In First Out). Nous consid erons une le comme un type abstrait et la d eclaration FILE[E] f d eclare un objet f de type le dobjets de type E. Les primitives dacc` es sont : creer cr ee une nouvelle le, vide BOOL filevide pr edicat ` a valeur vrai si et seulement si la le courante est vide mettreenfile(E v) ajoute lobjet d esign e par v en queue de le E oterdefile d elivre le premier el ement et lenl` eve de la le. Le principe de mise en uvre est alors le suivant : pour le sommet y en t ete de le, on examine s equentiellement tous les successeurs et chacun deux est imm ediatement ajout e en queue de le sil na pas encore et e visit e; puis y est ot e de la le puisquil ne peut plus apporter dinformation nouvelle. Il est donc inutile, avec cette strat egie, de g erer les ensembles de successeurs a visiter, puisque tous les arcs issus du sommet s electionn e (t ete de le) sont visit es lors du m eme pas dit eration. 6.3.1.2 Texte de lalgorithme

Le texte de lalgorithme est donn e ci-apr` es, page 59. 6.3.1.3 Exemple dex ecution

La gure 6.2 montre le r esultat de lexploration en largeur dabord issue du sommet 1 dans le graphe de la gure 6.1
c IFSIC 2004

6.3. Strat egies dexploration particuli` eres : largeur et profondeur

59

EXPLORATION LARGEUR DABORD


ENS[SOMMET] D, T; ENS[ARC] V; exploration-largeur(GRAPHE G; SOMMET x) cest local ENS[SOMMET] S; -- ensemble des successeurs de la t ete de le FILE[SOMMET] A; SOMMET y, z;

d ebut depuis D G.lst som\{x} ;


A.creer ; A.mettreenfile(x) ; T ; V ; jusqua A.filevide

faire y A.oterdefile ; T T {y} ; S G.lst succ(y) ; pour tout z de S V V {(y,z)} ; si z D alors D D\{z} ; A.mettreenfile(z) fsi fpourtout fait -- exploration termin ee n

6.3.2
6.3.2.1

Recherche en profondeur dabord


Une structure de donn ees : la pile

Cette recherche consiste ` a s electionner dans A le sommet y le plus r ecemment ajout e, et pour S un arc non visit e issu de y . Au niveau de larborescence, cela revient ` a eectuer un parcours en descendant le plus loin possible sur chaque branche. Lorsquun sommet est rencontr e: etat dehors, il devient en attente sil est dans l sil nest pas dans l etat dehors, il marque larr et de la descente, et la recherche reprend ` a partir de son pr ed ecesseur dans larborescence. Pour mettre en oeuvre cette technique, on utilise une structure de donn ees qui sappelle une pile; il sagit dune liste sur laquelle les seules modications possibles sont : 1. ajout dun el ement en queue de liste (empiler) 2. retrait du dernier el ement de la liste (d epiler).
c IFSIC 2004

60 le 1 2, 4 4, 3, 6 3, 6 6 7 D 2, 3, 4, 5, 6, 7 3, 5, 6, 7 5, 7 5, 7 5, 7 5 5 R 1 1, 2 1, 2, 4 1, 2, 4, 3 1, 2, 4, 3, 6 1, 2, 4, 3, 6, 7 4 6 3 2

M ethodes dexploration arborescence 1 4 6 2

7 2

R = (1) = {1,2,3,4,6,7} = X \ {5} V = 1 = {(1,2),(1,4),(2,3),(2,6),(3,4),(3,6),(4,2),(6,7),(7,2)} = \ {(5,4)} Fig. 6.2 exploration en largeur L el ement de queue de cette liste est aussi d esign e sous le nom de sommet de pile. On dit encore que cette liste est g er ee selon la discipline DAPS (Dernier Arriv e Premier Sorti) ou encore LIFO (Last In First Out). Nous consid erons donc une pile comme un type abstrait, et la d eclaration PILE[E] d eclare une liste dobjets de type E g er es en pile. Les op erations sur les piles sont alors : creer cr ee une nouvelle pile vide BOOL pilevide pr edicat ` a valeur vrai si et seulement si la pile est vide empiler(E z) ajout de z en queue d epiler retrait de l el ement de queue (erreur si la pile est vide) E sommetpile d elivre la valeur du sommet de pile (consultation sans d epiler) 6.3.2.2 Texte de lalgorithme

Il est donn e ci-apr` es, page 61 6.3.2.3 Exemple dex ecution

La gure 6.3 montre le r esultat de lexploration en profondeur dabord issue du sommet 1 dans le graphe de la gure 6.1
c IFSIC 2004

6.3. Strat egies dexploration particuli` eres : largeur et profondeur

61

EXPLORATION PROFONDEUR DABORD


ENS[SOMMET] D, T; ENS[ARC] V; recherche-profondeur(GRAPHE G; SOMMET x) cest local PILE[SOMMET] A; ENS[SOMMET] SOMMET::a visiter ; SOMMET y; -- sommet de pile SOMMET z; -- sommet courant

d ebut depuis D G.lst som\{x} ; V A.creer ; x.a visiter G.lst succ(x) ; si x.a visiter = alors T {x} sinon A.empiler(x); T fsi ; jusqua A.pilevide faire y A.sommetpile ; si y.a visiter = alors z (y.a visiter).element ; y.a visiter y.a visiter\{z} ; V V {(y,z)} ; si z D alors D D\{z} ; z.a visiter G.lst succ(z) ; si z.a visiter = alors T T {z} sinon A.empiler(z) fsi fsi sinon T T {y} ; A.depiler fsi fait -- exploration termin ee n

c IFSIC 2004

62 pile 1 1, 2 1, 2, 3 1, 2, 3, 4 1, 2, 3, 4 1, 2, 3 1, 2, 3, 6 1, 2, 3, 6, 7 1, 2, 3, 6, 7 1, 2, 3, 6 1, 2, 3 1, 2 1, 2 1 1 D 2, 3, 4, 5, 6, 7 3, 4, 5, 6, 7 4, 5, 6, 7 5, 6, 7 5, 6, 7 5, 5, 7 5, 7 5 5 5 5 5 5 5 5 5 R 4 4 4 4 4, 7 4, 7, 6 4, 7, 6, 3 4, 7, 6, 3 4, 7, 6, 3, 2 4, 7, 6, 3, 2 4, 7, 6, 3, 2, 1 Fig. 6.3 exploration en profondeur 2 2 4 3 2

M ethodes dexploration arborescence 1

6 7

6.4

Exemple dapplication : calcul de lensemble des descendants

Lalgorithme g en eral de recherche permet dobtenir lensemble des descendants du sommet de d epart : en eet, cet ensemble est egal, ` a lissue de lalgorithme, ` a T . Toutefois, lexploration peut etre simpli ee, dans la mesure o` u lon ne cherche pas ` a calculer lensemble V des arcs du graphe Gx , mais seulement lensemble (x) de ses sommets. Quelle que soit la strat egie dexploration retenue, la simplication est la suivante : Suppression de la variable V Le statut des sommets peut etre m emoris e` a laide de 2 ensembles seulement :A et DESC ,
c IFSIC 2004

6.4. Exemple dapplication : calcul de lensemble des descendants

63

ce dernier contenant ` a tout instant du calcul lensemble des sommets reconnus comme descendants de x, cest-` a-dire A T . En eet, y D y DESC y T y A y DESC

6.4.1

Cas de la recherche en largeur

Nous donnons le texte de lalgorithme simpli e dans le cas de lexploration en largeur (page 63). CALCUL DES DESCENDANTS : LARGEUR DABORD
ENS[SOMMET] DESC; descendants-largeur(GRAPHE G;SOMMET x) cest local ENS[SOMMET] S; FILE[SOMMET] A; SOMMET y, z ;

d ebut depuis
DESC {x} ; A.creer ; A.mettreenfile(x) jusqua A.filevide faire y A.oterdefile ; S G.lst succ(y) ; pour tout z de S si z DESC alors DESC DESC {z} ; A.mettreenfile(z)

fsi fpourtout fait n

La gure 6.4 montre, ` a titre de comparaison avec lexploration compl` ete (gure 6.2), le r esultat de la recherche des descendants du sommet 1 dans le graphe de la gure 6.1

6.4.2

Cas de la recherche en profondeur : expression r ecursive

Le texte de cet algorithme est donn e page 65


c IFSIC 2004

64

M ethodes dexploration

le 1 2, 4 4, 3, 6 3, 6 6 7

DESC 1 1, 2, 4 1, 2, 4, 3, 6 1, 2, 4, 3, 6 1, 2, 4, 3, 6 1, 2, 4, 3, 6, 7 1, 2, 4, 3, 6, 7 3

arborescence 1 2 6 4

DESC = (1) = {1,2,3,4,6,7} = X \ {5}


Fig. 6.4 calcul des descendants (largeur) On peut alors v erier que le mode de recherche correspond ` a une recherche profondeur dabord. Dans une expression it erative de cet algorithme r ecursif, la manipulation de la pile serait alors explicite, via la variable A (cette manipulation correspond ` a la m emorisation des contextes de retour des di erents appels de la proc edure desc local).

6.5

Enum eration des chemins el ementaires issus de x

Le probl` eme pos e ici est plus complexe, puisquil sagit dobtenir les trac es de tous les chemins el ementaires issus du sommet x. Il faut donc parcourir une sous-arborescence plus importante, puisquun m eme sommet peut appara tre plusieurs fois (comme extr emit e de plusieurs chemins distincts de G). En fait, les chemins el ementaires issus de x sont les branches de larborescence, parcourues jusqu` a trouver une r ep etition dans la suite des sommets situ es sur une branche. Dans lexemple de la gure 6.1, il sagit de larborescence repr esent ee graphiquement. Le choix dune exploration en profondeur sexplique par la propri et e suivante : Proposition 6.7 Lors dune exploration en profondeur, l etat de la pile est un chemin el ementaire dorigine x et dextr emit e le sommet de pile. D emonstration Elle se fait par induction sur l etat de la pile. Le premier etat non vide de la pile est x, donc v erie la propri et e. et e v eri ee au d ebut dun pas dit eration, Supposons la propri
c IFSIC 2004

et

soit

6.5. Enum eration des chemins el ementaires issus de x

65

CALCUL DES DESCENDANTS : FORMULATION RECURSIVE


ENS[SOMMET] DESC; desc local (SOMMET y) cest local ENS[SOMMET] S; SOMMET z;

d ebut
DESC DESC {y} ; S G.lst succ(y) ; pour tout z de S faire si z DESC alors desc local(z) fsi

fpourtout n

descendants-recursif(GRAPHE G; SOMMET x) cest

d ebut
DESC ; desc local(x)

x . . . t y l etat de la pile. Montrons quelle reste v eri ee ` a la n du pas. etat de la pile. Ce cas est trivial; cas 1 Le pas courant ne modie pas l cas 2 Le pas courant eectue une op eration d epiler; le r esultat est evident puisquun chemin el ementaire priv e de son dernier sommet reste un chemin el ementaire; ici, le chemin obtenu va de x ` a t, ce dernier sommet etant le sommet de pile; cas 3 Le pas courant eectue une op eration empiler. Soit z le sommet empil e. Par construction, z est un successeur de y, donc le nouvel etat de la pile x . . . t y z est bien un chemin de x au sommet de pile z. De plus le sommet z etant empil e` a cette etape, il appartenait ` a D, donc ne gurait pas dans la pile au d ebut du pas; par cons equent, l etat de la pile ` a la n du pas est un chemin el ementaire. 2 Par rapport ` a lalgorithme dexploration vu au 6.3.2, il faut consid erer toutes les occurrences possibles dun sommet dans larborescence dexploration : chacune delles, provenant dun pr ed ecesseur di erent, engendre un nouvel ensemble de chemins via sa descendance. Ainsi, la progression doit etre modi ee de la mani` ere suivante : Progression Soit y le sommet de la pile; s electionner un successeur de y, non encore visit e. Sil ny en a pas, alors d epiler y, qui passe dans l etat termin e; sil y en a un soit z ; si z A
c IFSIC 2004

66

M ethodes dexploration

alors il ne d enit pas de nouveau chemin (sauf si z = x : circuit el ementaire); si z D, on lempile (cest la premi` ere fois quil est visit e), et donc tous ses arcs sortants deviennent ` a visiter (a visiter(z ) lst succ(G,z )); si z T (il est d ej` a pass e dans la pile puis en est ressorti), il faut proc eder de m eme puisque l etat de la pile est un chemin el ementaire de x` a z, et tous les chemins el ementaires ayant cet etat de pile comme pr exe vont alors etre reconnus. Un exemple dex ecution est donn e page 67. Le texte de lalgorithme est donn e page 68, et une version r ecursive page 69. N.B. : lacc` es ecrirechemin permet dacher l etat dune pile, qui correspond alors ` a un chemin el ementaire issu de x. Un circuit el ementaire passant par un sommet z pr esent dans la pile est obtenu par lacc` es ecrirecircuit(z) qui ache l etat de la pile depuis le sommet z, suivi du sommet z. Ces acc` es permettent dailleurs dincorporer des restrictions sur la nature des chemins que lon souhaite enum erer : conditions sur la longueur, sur les sommets travers es, etc.

6.5.1

Algorithmes gloutons et non gloutons

Les algorithmes dexploration pr esent es dans ce chapitre se classent en gloutons et non gloutons. Lexploration de la descendance rentre dans la cat egorie des gloutons, ce qui signie que certains r esultats sont d enitivement acquis avant la n de lex ecution de lalgorithme : cest le cas, ici, lorsquun sommet passe de l etat en attente ` a l etat termin e : on enregistre ainsi le fait que toute linformation que lon peut obtenir ` a partir de ce sommet a et e obtenue. Au contraire, l enum eration des chemins el ementaires est un algorithme non glouton, car aucun r esultat ne peut etre consid er e comme d enitif avant davoir rencontr e la condition darr et; ce qui se traduit, ici, par le fait que le statut termin e dun sommet peut etre remis en cause lorsque ce sommet est ` a nouveau visit e` a partir dun nouveau pr ed ecesseur, toute lexploration issue de ce sommet doit etre refaite, et donc le sommet r egresse dans l etat o` u il etait lors de son passage dehors en attente. Nous retrouverons au chapitre 8 cette distinction entre algorithmes gloutons et non gloutons, a loccasion des calculs de chemins de valeur optimale. `

c IFSIC 2004

6.5. Enum eration des chemins el ementaires issus de x

67

Exemple dex ecution Enum eration des chemins et circuits el ementaires issus du sommet 1 dans le graphe de la gure 6.1 : pile chemin circuit 1 1,2 1,2 1,2,3 1,2,3 1,2,3,4 1,2,3,4 1,2,3,4,2 2,3,4,2 1,2,3,4 1,2,3 1,2,3,6 1,2,3,6 1,2,3,6,7 1,2,3,6,7 1,2,3,6,7,2 2,3,6,7,2 1,2,3,6,7 1,2,3,6 1,2,3 1,2 1,2,6 1,2,6 1,2,6,7 1,2,6,7 1,2,6,7,2 2,6,7,2 1,2,6,7 1,2,6 1,2 1 1,4 1,4 1,4,2 1,4,2 1,4,2,3 1,4,2,3 1,4,2,3,6 1,4,2,3,6 1,4,2,3,6,7 1,4,2,3,6,7 1,4,2,3,6,7,2 2,3,6,7,2 1,4,2,3,6,7 1,4,2,3,6 1,4,2,3 1,4,2,3,4 4,2,3,4 1,4,2,3 1,4,2 1,4,2,6 1,4,2,6 1,4,2,6,7 1,4,2,6,7 1,4,2,6,7,2 2,6,7,2 1,4,2,6,7 1,4,2,6 1,4,2 1,4 1
c IFSIC 2004

68

M ethodes dexploration

ENUMERATION DES CHEMINS ELEMENTAIRES


ENS[SOMMET] D, T ENS[ARC] V; enumeration-chemins(GRAPHE G; SOMMET x) cest local PILE[SOMMET] A; ENS[SOMMET] SOMMET.a visiter ; SOMMET y; -- sommet de pile SOMMET z; -- sommet courant

d ebut depuis D G.lst som\{x} ;


A.creer; x.a visiter G.lst succ(x)\{x} ; si x.a visiter = alors A.empiler(x) fsi jusqua A.pilevide

faire y A.sommetpile ; si y.a visiter = alors z (y.a visiter).element ; y.a visiter y.a visiter\{z} ; si z A alors si z D alors D D\{z} fsi ; z.a visiter G.lst succ(z) ;
A.empiler(z) ; A.ecrirechemin sinon A.ecrirecircuit(z)

fsi sinon T T {y} ; A.depiler fsi fait n

c IFSIC 2004

6.5. Enum eration des chemins el ementaires issus de x

69

ENUMERATION DES CHEMINS ELEMENTAIRES : VERSION RECURSIVE


ENUM[dehors, en attente, termin e] SOMMET::etat ;-PILE[SOMMET] chemin courant ; enumerer(SOMMET y) cest -- pre : y.etat=en attente local SOMMET z

type enum er e

d ebut pour tout z de G.lst succ(y) -- y est le p` ere de z dans larborescence dexploration cas z.etat= dehors,termin e
chemin courant.empiler(z) ; chemin courant.ecrirechemin ; z.etat en attente ; enumerer(z) z.etat=en attente chemin courant.ecrirecircuit(z)

fcas fpourtout;
chemin courant.depiler ; -- le sommet y est d epil e y.etat termin e n -- enumerer enumeration-recursive(GRAPHE G; SOMMET x) cest

d ebut
chemin courant.creer ; pour tout y de G.lst som y.etat dehors fpourtout ; x.etat en attente ; chemin courant.empiler(x); enumerer(x)

c IFSIC 2004

70

M ethodes dexploration

c IFSIC 2004

Chapitre 7

Circuits. Composantes fortement connexes


7.1
7.1.1

D etermination de lexistence de circuits


Principe

Dans de nombreuses applications, on souhaite savoir si un graphe donn e poss` ede ou non des circuits (cf. exemple de linterblocage). Certains des algorithmes que nous avons vus pr ec edemment (Roy-Warshall, descendants) pourraient etre utilis es : avec Roy-Warshall on obtient lensemble des sommets situ es sur un circuit, puisque de tels + sommets v erient (x,x) G . a lexistence de circuits situ es dans le sous-graphe engendr e par (x), x si on se restreint ` etant un sommet donn e, on peut utiliser l algorithme de recherche des descendants de x en profondeur, sachant quun circuit existe d` es lors quon trouve un sommet successeur du sommet de pile, et appartenant d ej` a` a desc. Mais, avec Roy-Warshall, la complexit e est elev ee (cet algorithme r esout le probl` eme plus g en eral de la fermeture transitive), et avec la recherche des descendants de x, on ne d etecte que les circuits passant par les sommets de (x). Nous allons voir un algorithme sp ecique, appel e algorithme de Marimont, permettant de r esoudre le probl` eme avec une complexit e moindre que celle de Roy-Warshall. Cet algorithme est fond e sur la propri et e suivante : Proposition 7.1 Les propositions suivantes sont equivalentes : i) G est sans circuit, ii) G et tous ses sous-graphes poss` edent au moins un point dentr ee (sommet sans pr ed ecesseur) et un point de sortie (sommet sans successeur). D emonstration. i) ii) Supposons G = (X,) sans circuit, et que G na pas de point de
c IFSIC 2004

72 sortie. Alors : x X,y X : y (x)

Circuits. Composantes fortement connexes

Autrement dit, partant dun sommet xi quelconque, on peut construire un chemin es que la longueur est > n, on xi ,xi1 ,xi2 , . . . ,xik , . . . de longueur aussi grande que lon veut ; et d` obtient un circuit. Do` u contradiction avec lhypoth` ese. On montre de mani` ere identique que G a au moins un point dentr ee. Enn, si G est sans circuit, tout sous-graphe engendr e par une partie de X est aussi sans circuit, ce qui montre la premi` ere partie de la proposition. ii) i) Supposons que G ait un circuit et soit G le sous-graphe engendr e par les sommets de ce circuit. Par construction, G na ni point dentr ee ni point de sortie, ce qui contredit lhypoth` ese. 2 Le principe de lalgorithme est alors tr` es simple : si G ne poss` ede pas de points dentr ee ou de points de sortie, on peut conclure que G a des circuits. Sinon, on ote les points dentr ee et les points de sortie, et on recommence sur le sous-graphe engendr e. Si on aboutit au graphe vide (tous les sommets de G ont et e ot es), on conclut que G est sans circuit. Remarquons que cet algorithme peut etre mis en oeuvre uniquement ` a partir des points dentr ee, ou des points de sortie, ou ` a partir des deux. Nous ne donnons, ci-dessous, que cette derni` ere variante.

7.1.2
7.1.2.1

Algorithme de Marimont
Analyse H sous-graphe de G ; E = ensemble des points dentr ee de H ; S = ensemble des points de sortie de H . H vide ou E = ou S = Traitement de sortie : il y a des circuits si et seulement si H est non vide.

Invariant :

Arr et :

Progression : ( H non vide et E = et S = ) H oter de H les points dentr ee et les points de sortie. Valeurs initiales : H G

Pour am eliorer lecacit e au niveau de la programmation, nous m emorisons dans une variable bool eenne h vide le r esultat du test vide(H) 7.1.2.2 Texte de lalgorithme

Il est donn e page 73


c IFSIC 2004

7.1. D etermination de lexistence de circuits

73

EXISTENCE DE CIRCUITS : MARIMONT


BOOL marimont(GRAPHE G) cest local GRAPHE H ; -- graphe de travail ENS[SOMMET] E, S; -- points dentr ee, de sortie BOOL h vide ;

d ebut depuis H G ; h vide H.vide ; si non h vide alors E H.points entree ; S H.points sortie fsi ; jusqua h vide ou E= ou S = faire H H.sous graphe(G.lst som \ E S) ; h vide H.vide ; si non h vide alors E H.points entree; S H.points sortie fsi fait ; -- ici, h vide ou E = ou S = Result non h vide n

7.1.2.3

Complexit e

Dans le cas le pire (tous les sommets de G sont ot es, et seulement 2 sommets ` a chaque pas o dit eration), il y a n/2 pas d it eration. Le pas n k n ecessite 1 acc` es points entr ee 1 acc` es points sortie sur un sous-graphe ` a n 2(k 1) sommets, soit : n 2k + 2 acc` es lst pred n 2k + 2 acc` es lst succ Au total, il y a donc au pire :

n/2

(n 2k + 2) acc` es lst pred et autant dacc` es lst succ.


k=1
c IFSIC 2004

74 Mais :
n/2

Circuits. Composantes fortement connexes

(n 2k + 2) =
k=1

n(n+2) 4 (n+1)2 4

si n est pair, si n est impair

soit O(n2 ) acc` es lst pred, lst succ.

7.2

Application des graphes sans circuit : fonction ordinale


D enition 7.2 On appelle fonction ordinale dun graphe G = (X,) une fonction f : X N telle que (x,y ) f (x) < f (y )

On peut aussi d enir une fonction ordinale inverse f t , qui nest autre quune fonction ordinale du graphe transpos e: (x,y ) f t (x) > f t (y ) Th eor` eme 7.3 Un graphe poss` ede une fonction ordinale si et seulement si il est sans circuit. D emonstration. Supposons que G poss` ede une fonction ordinale, et quil ait un circuit : = [xi1 ,xi2 , . . . ,xik ,xi1 ] On a : f (xi1 ) < f (xi2 ) < . . . < f (xik ) < f (xi1 ) do` u, par transitivit e: f (xi1 ) < f (xi1 ) ce qui est absurde. R eciproquement supposons G sans circuit et consid erons lalgorithme de Marimont ne prenant en compte que les points dentr ee. Au pas dit eration no k, le sous-graphe courant a des points dentr ee E. On pose alors, par d enition : x E : f (x) = k (k = 1,2, . . . ,p) o` u p est le nombre de pas, major e par n. f d enit bien une fonction ordinale : si (y,z ) alors le sommet y est ot e avant le sommet z, car z ne peut pas etre point dentr ee dun sous-graphe poss edant le sommet y ; donc : (y,z ) f (y ) < f (z ). De plus, tous les sommets etant ot es, f est bien d enie sur X. 2
c IFSIC 2004

7.2. Application des graphes sans circuit : fonction ordinale

75

La d emonstration du th eor` eme montre que lon peut obtenir une fonction ordinale en appliquant lalgorithme de Marimont ` a partir des points dentr ee, ` a condition dintroduire un compteur de marquage des sommets. Nous laissons au lecteur le soin de r e- ecrire lalgorithme. Remarquons quune fonction ordinale inverse peut aussi etre obtenue en op erant ` a partir des points de sortie. Enn, ces deux fonctions ordinales sinterpr` etent concr` etement comme suit : ` a partir des points dentr ee : x X : f (x) = 1 + longueur maximum des chemins issus dun point dentr ee et aboutissant ` ax La relation suivante est v eri ee : 1 si 1 (x) = x X : f (x) = maxy1 (x) (f (y )) + 1 si 1 (x) = ` a partir des points de sortie : x X : f t (x) = 1 + longueur maximum des chemins issus de x et aboutissant ` a un point de sortie La relation suivante est v eri ee : 1 si (x) = t x X : f (x) = maxy(x) (f (y )) + 1 si (x) = Une fonction ordinale nest pas n ecessairement injective : deux sommets distincts x = y peuvent avoir une m eme image f (x) = f (y ). Une fonction non injective ne convient donc pas pour num eroter les sommets. Cest pourquoi lon introduit la notion de num erotation conforme, qui nest autre quune fonction ordinale injective. D enition 7.4 Soit G = (X,) avec card(X ) = n. On appelle num erotation conforme de X une injection num : X N telle que (x,y ) num(x) < num(y ) Th eor` eme 7.5 Un graphe G poss` ede une num erotation conforme si et seulement si il est sans circuit. D emonstration. On peut d emontrer ce th eor` eme comme corollaire du th eor` eme pr ec edent 7.3. Toutefois, nous pr ef erons en donner une d emonstration directe: celle-ci montre comment obtenir une telle num erotation ` a partir dune exploration en profondeur. i) Si G poss` ede une num erotation conforme, il est clairement sans circuit. ii) Pour montrer la r eciproque, on suppose le graphe sans circuit, et on utilise lalgorithme suivant, bas e sur l exploration en profondeur: partant dun sommet quelconque, on explore la descendance de ce sommet, en num erotant les sommets visit es de mani` ere d ecroissante lors de leur sortie de la pile. Tant quil reste des sommets non num erot es, on r eit` ere le proc ed e, en se limitant au sous-graphe engendr e par les sommets non encore num erot es. Lanalyse de cet algorithme est donn ee ci-dessous: Invariant :
c IFSIC 2004

76

Circuits. Composantes fortement connexes T =ensemble des sommets d ej` a num erot es, D = X \ T Le sous-graphe engendr e par T poss` ede une num erotation conforme, der num=plus petit num ero de sommet dans T (dernier num ero attribu e).

Arr et : D = . Progression : Soit x D. Explorer en num erotant la descendance de x (voir d etail de ce traitement ci-apr` es). Valeurs initiales : D = X , T = , der num=une valeur quelconque telle que der num > n(= card(X )). Explorer en num erotant: eectuer lexploration en profondeur de la descendance de x dans le sous-graphe engendr e par les sommets de D (non encore num erot es). La num erotation des nouveaux sommets visit es se fait lors de leur sortie de pile, en faisant d ecro tre le compteur der num. Ce traitement se termine lorsque lexploration est nie. A ce moment, tous les descendants de x dans le graphe sont num erot es, et cette num erotation est conforme. Avant de d emontrer que cet algorithme permet bien dobtenir une num erotation conforme, nous en donnons un exemple an de faciliter la compr ehension. 1. sommet de d epart: h (choix arbitraire) 3. sommet de d epart: c pile pile h c hk ce hkl cef hklo ce num(f)=6 hkl num(o)=15 cei hk num(l)=14 ce num(i)=5 hkm c num(e)=4 hk num(m)=13 num(c)=3 hkn n de la troisi` eme etape; der num = 3 hk num(n)=12 4. sommet de d epart: a h num(k)=11 pile num(h)=10 a n de la premi` ere etape; der num = 10 num(a)=2 2. sommet de d epart: d n de la quatri` eme etape; der num = 2 pile d 5. sommet de d epart: b dg pile dgj b dg num(j)=9 num(b)=1 d num(g)=8 n de la num erotation num(d)=7 n de la deuxi` eme etape; der num = 7
c IFSIC 2004

7.3. Application : fermeture anti-transitive et -minimalit e


a d b e c h i k n f g j m o l

77

Fig. 7.1 Construction dune num erotation conforme Preuve. Il faut montrer que (x,y ) num(x) < num(y ). pour cela, il sut de montrer que (x,y ) y sort de la pile avant x. Soit donc (x,y ) . Lorsque y passe de l etat dehors ` a l etat en attente, cest-` a-dire lorsque y est empil e, trois cas sont ` a consid erer selon le statut de x: 1. x est dehors. Cela veut dire que x na pas encore et e empil e. Mais, par hypoth` ese, le graphe est sans circuit, et comme (x,y ) , on a n ecessairement (y,x) + . Donc, x ne sera pas empil e tant que y est dans la pile (les sommets empil es pendant que y est dans la pile sont n ecessairement des descendants de y ). Il en r esulte que y sort de la pile avant que x soit empil e, donc a fortiori avant que x soit d epil e. Dans lexemple, ce cas se produit notamment pour x=e, y =h. 2. x est en attente. Cela veut dire que x est dans la pile lorsque y est empil e. Dapr` es les propri et es structurelles de la pile, y sera n ecessairement d epil e avant x. Dans lexemple, ce cas se produit notamment pour x=k, y =l ou m ou n. 3. x est termin e (cest-` a-dire d ej` a num erot e). Ce cas ne peut se produire, car il impliquerait que x ait et e empil e, puis d epil e, sans que son successeur y nait et e visit e. 2 Remarques. 1. Si, dans lalgorithme pr ec edent, on avait num erot e les sommets dans lordre de leur sortie de pile (et non pas en d ecroissant) on aurait obtenu une num erotation conforme inverse cest-` a-dire une fonction ordinale inverse injective, v eriant (x,y ) num(x) > num(y ) 2. Une num erotation conforme peut aussi etre obtenue pratiquement ` a partir de la fonction ordinale des points dentr ee, en num erotant arbitrairement les sommets de niveau 1, puis ceux de niveau 2, etc., avec une num erotation strictement croissante.

7.3

Application : fermeture anti-transitive et -minimalit e

A la section 5.5 nous avons mis en evidence la notion de -minimalit e, tout en faisant remarquer quun graphe donn e pouvait poss eder plusieurs equivalents -minimaux. Par contre, comme va le montrer le th` eor` eme suivant, un graphe sans circuit G poss` ede un seul equivalent -mimimal, not e G. Lint er et de G provient du fait que cest le seul graphe orant les m emes possibilit es de cheminement que G, sans quaucun arc ne soit redondant.
c IFSIC 2004

78

Circuits. Composantes fortement connexes On pr ecise dabord la notion de graphe fortement anti-transitif : D enition 7.6 Un graphe est fortement anti-transitif si (u = [x y ] |u| 2) (x,y ) .

Autrement dit, aucun chemin de longueur sup erieure ou egale ` a 2 ne peut etre sous-tendu par un arc. On a le r esultat suivant : Proposition 7.7 Soit G = (X,) un graphe sans circuit. Il existe un seul graphe partiel de G -minimal - equivalent ` a G (D ef. 5.13 et 5.14). Ce graphe G est un el ement maximal de lensemble des graphes partiels de G fortement anti-transitifs. D emonstration. Soit (G) la classe d equivalence de G. Si H (G), alors H est sans circuit. En eet, si H poss edait un circuit passant par x, alors (x,x) serait une boucle de H + (= G+ ) et G aurait un circuit passant par x. Supposons alors que (G) ait deux el ements minimaux G1 = (X,1 ) et G2 = (X,2 ) et soit (x,y ) 1 et (x,y ) 2 + On a donc (x,y ) + u: 1 = 2 do`
+ z X,z = x,z = y : (x,z ) + 2 (z,y ) 2

soit encore :
+ (x,z ) + 1 (z,y ) 1

Mais aucun chemin allant de x ` a z dans G1 ne peut passer par y, sans quoi on aurait :
+ + (y,z ) + 1 (z,y ) 1 (y,y ) 1 donc G1 aurait un circuit.

De m eme, aucun chemin allant de z ` a y dans G1 ne peut passer par x. Il existe donc, dans G1 , un chemin allant de x ` a y, distinct de larc (x,y ), ce qui contredit la -minimalit e de G1 . Lhypoth` ese (x,y ) 1 et (x,y ) 2 est donc absurde, do` u G1 = G2 =G. Dautre part on sait que dans une partie nie, lunicit e de l el ement minimal en fait un minimum, cest ` a dire un el ement comparable ` a tous les el ements de cette partie. G est donc un graphe partiel de G. Enn, montrons que G est un el ement maximal de lensemble des graphes partiels de G, fortement anti-transitifs. On remarque dabord que G est le seul graphe fortement anti-transitif de (G). En eet, soit H = (X,), H (G) et H fortement anti-transitif. Alors : H = (X, ) H , H est fortement anti-transitif. Soit (x,y ) et (x,y ) . Alors (x,y ) + et par cons equent, H (G) do` u on conclut que H est minimal dans (G), et donc H = G.
c IFSIC 2004

7.3. Application : fermeture anti-transitive et -minimalit e Enn, si G est un graphe partiel de G, fortement anti-transitif, on a : G G et donc : G+

79

(1) G + Si par ailleurs G (2) G+

G alors G

G + mais comme G = G+ on en d eduit :

G + . De (1) et (2) d ecoule :

G (G) cest ` a dire G =G 2 Nous proposons ci-dessous (texte page 80) un algorithme, adapt e de lalgorithme de RoyWarshall, permettant dobtenir G. Il consiste ` a construire la fermeture transitive de G et ` a rep erer les arcs nouveaux introduits par les op erations . On travaille sur deux copies de G, et a lissue de lalgorithme on v ` erie, sur G+ , que G etait bien sans circuit. (On se place dans le cas o` u X = 1..n).

Fig. 7.2 Un graphe sans circuit

Exemple Soit le graphe repr esent e gure 7.2. Les op erations successives produisent les r esultats suivants: Op eration ajout dans G2 retrait dans G1 a (d,b) (c,b) b (a,f),(d,f) (c,f) c (d,e),(g,a),(g,b),(g,f) (d,a) d (g,c),(g,e) e f (a,e),(b,e) (c,e),(c,f) g Do` u la fermeture -minimale repr esent ee gure 7.3
c IFSIC 2004

80

Circuits. Composantes fortement connexes

Fig. 7.3 Fermeture -mininale

GRAPHE SANS CIRCUIT : -MINIMALITE


GRAPHE tau-minimalite(GRAPHE G) cest local GRAPHE G1, G2 ; SOMMET x, y, z; ENS[SOMMET] X;

d ebut G1 G ; G2 G ; X G.lst som ; pour tout x de X pour tout y de X si G2.validarc(y, x) alors pour tout z de X si G2validarc(x, z) alors
G1.oter arc(y,z) ; G2.ajout arc(y,z)

fsi fpourtout fsi fpourtout fpourtout ; si existe x de G2.lst som telque G2.validarc(x, x) alors -- G a un circuit : pas de fermeture -minimale sinon Result G1 fsi n

c IFSIC 2004

7.4. Composantes fortement connexes

81

7.4
7.4.1

Composantes fortement connexes


D enition

D enition 7.8 Soit G = (X,) un graphe. On consid` ere la relation binaire sur X : xRy (x (y )) (y (x)) Cest une relation d equivalence dont les classes sappellent composantes fortement connexes de G (en abr eg e : c.f.c.).

Proposition 7.9 Deux sommets appartiennent ` a la m eme c.f.c. si et seulement si ils sont situ es sur un m eme circuit. D emonstration. Evident, puisque (x (y )) (y (x)) x et y sont sur un m eme circuit. 2

Proposition 7.10 Si deux sommets x et y appartiennent ` a une m eme c.f.c. C , alors tout chemin de x ` a y est enti` erement inclus dans C . D emonstration. Soit u un chemin de x ` a y (par hypoth` ese, de tels chemins existent), et z un sommet de ce chemin. On a donc : u = u1 u2 , avec u1 chemin de x ` a z , et u2 chemin de z ` a y .Par hypoth` ese, on a aussi : il existe un chemin u de y ` a x. Consid erant u2 u u1 , on obtient un circuit de z ` a z , passant par x et y . Donc z appartient ` a la m eme c.f.c. que x et y .

D enition 7.11 Un graphe est fortement connexe sil poss` ede une seule composante fortement connexe. On remarque donc que, si |X | = n, un graphe G G (X ) poss` ede - au plus n c.f.c.; ce cas extr eme est obtenu si et seulement si G est sans circuit (chacune c.f.c. est alors r eduite ` a un seul sommet), - au moins une c.f.c. : ce cas extr eme est obtenu lorsque le graphe est fortement connexe (tous les sommets sont sur un m eme circuit, ou encore, chaque couple de sommets est reli e par au moins un chemin).

c IFSIC 2004

82

Circuits. Composantes fortement connexes

D enition 7.12 Soit R une relation d equivalence sur X . Le graphe r eduit selon les classes de R est d eni par : GR = (X/R,R ), o` u X/R = ensemble des classes de la relation R (ensemble quotient) (Ci ,Cj ) R x Ci ,y Cj : ((x,y ) ) (Ci = Cj ) Autrement dit, tous les sommets situ es dans une m eme classe sont confondus en un seul sommet (on ne les distingue plus les uns des autres), et un arc relie une classe ` a une autre chaque fois que, dans le graphe initial, un repr esentant de la premi` ere classe etait pr ed ecesseur dun repr esentant de la seconde classe. Si on prend pour R la relation ayant servi ` a d enir les composantes fortement connexes, on obtient le graphe r eduit selon les c.f.c.. Proposition 7.13 Le graphe r eduit selon les composantes fortement connexes est sans circuit. D emonstration. Si il existait un circuit Ci1 , . . . ,Cik ,Ci1 dans GR , alors il existerait un circuit xi1 . . . xik xi1 dans G, avec xi1 Ci1 , . . . ,xik Cik et ceci impliquerait Ci1 = . . . = Cik 2 La propri et e pr ec edente signie en particulier que, en suivant un chemin de G, si on sort dune c.f.c. on ne peut plus y revenir. D enition 7.14 On appelle composante fortement connexe terminale de G un point de sortie du graphe r eduit. Autrement dit, si en parcourant un chemin de G on atteint une c.f.c. terminale, on ne peut plus en sortir. Proposition 7.15 Soit C un sous-ensemble de sommets tel que, x C, y C, (x (y )) (y (x)). Si C na pas darc sortant, alors C est une c.f.c. terminale. D emonstration. Clairement, tous les sommets de C sont dans une m eme c.f.c. C . On a donc C C . Supposons que C = C . Cela signie quil existe un sommet z , tel que z C et z C . Puisque x C on a x C et donc il existe un chemin de x ` a z . Comme x C et z C , ce chemin comporte un arc sortant de C , ce qui contredit lhypoth` ese. Donc, C = C , cest-` a-dire C est une c.f.c. Comme elle na pas darc sortant, elle est terminale. 2 Dans les sections suivantes, on donne trois algorithmes permettant de d eterminer les c.f.c. dun graphe. Puis nous verrons quelles applications on peut tirer de cette d ecomposition.
c IFSIC 2004

7.4. Composantes fortement connexes

83

7.4.2

Algorithme de FOULKES

Cet algorithme sapplique ` a la fermeture transitive G+ de G. (Il suppose donc celle-ci d ej` a d etermin ee). Il est bas e directement sur la d enition, qui peut s ecrire encore : xRy (x = y ) (x,y ) + (y,x) + 7.4.2.1 Il Principe

est tr` es simple, et sappuie sur trois constatations : un sommet appartient ` a sa propre classe un sommet ne peut appartenir qu` a une seule classe si un sommet nest pas son propre descendant, il est seul dans sa classe (il nest pas situ e sur un circuit). Les sommets sont examin es s equentiellement; soit x le sommet courant. Trois cas sont ` a distinguer quant ` a la situation de x : 1. x a d ej` a et e rang e comme el ement de la classe dun sommet y examin e avant lui (cest-` a-dire y x). Dans ce cas, cl(x) = cl(y ) (d ej` a calcul ee) 2. x nest pas encore class e et nest pas son propre descendant, cest-` a-dire (x,x) + . Dans ce cas, cl(x) = {x}. 3. x nest pas encore class e, et (x,x) + . Dans ce cas, les el ements de cl(x), outre x luim eme, sont ` a rechercher parmi les y tels que y > x; en eet, sil existait y x avec y cl(x), x aurait et e class e lors de lexamen de y , ant erieur ` a celui de x. Lanalyse de lalgorithme en d ecoule imm ediatement : Invariant (1 x n) P RIS = {y | cl(y ) est calcul e} {1 .. x 1} P RIS

Condition darr et x = n Progression cas x P RIS cl(x)cl(y ) (x P RIS ) ((x,x) + ) cl(x){x} (x P RIS ) ((x,x) + ) cl(x){x}; pourtout y de [x + 1..n] faire si ((x,y ) + ) ((y,x) + ) alors cl(x)cl(x) {y } ; fsi fpour fcas ; P RIS P RIS cl(x) ;
c IFSIC 2004

84 xx + 1 Valeurs initiales x1 ; P RIS

Circuits. Composantes fortement connexes

7.4.2.2

Texte de lalgorithme

Il est donn e page 84 ALGORITHME DE FOULKES


ENS[SOMMET] SOMMET::cl : ; foulkes(GRAPHE G+ ) cest local ENS[SOMMET] PRIS; SOMMET x, y;

d ebut
PRIS ; pour x depuis 1 jqa n faire si x PRIS alors x.cl {x} ; si G+ .validarc(x, x) alors -- x est sur un circuit ; recherche des sommets de sa classe pour y depuis x + 1 jqa n faire si G+ .validarc(x, y) et G+ .validarc(y, x) alors x.cl x.cl {y}

fsi fpour ; pour tout y de x.cl faire y.cl x.cl fpourtout ; PRIS PRIS x.cl fsi fsi fpour n

7.4.2.3

Complexit e

construction de la fermeture transitive : au moins O(n3 ) le nombre dacc` es validarc est n2


c IFSIC 2004

7.4. Composantes fortement connexes

85

7.4.3
7.4.3.1

Algorithme descendants-ascendants
Principe

Il op` ere directement sur le graphe donn e G, et utilise les algorithmes de recherche des ascendants et des descendants dun sommet donn e. Si on d esigne par asc(x) (resp. desc(x)) la fonction d elivrant lensemble des ascendants (resp. descendants) de x, on peut ecrire : cl(x) = asc(x) desc(x) En fait, lorsquon calcule la c.f.c. dun sommet x, il nest pas n ecessaire de calculer lensemble de tous les ascendants (resp. descendants) de x. En eet, comme le montre la proposition suivante, lors de lexploration de la descendance de x (calcul de desc(x)), si on rencontre un sommet y d ej` a class e, alors aucun descendant de y ne peut etre dans la classe de x. (M eme chose en rempla cant descendant par ascendant). Par cons equent, dans la proc edure de recherche des descendants de x (resp. ascendants) on peut se limiter au sous-graphe engendr e par les sommets de G non encore class es. Proposition 7.16 Soit y desc(x); si y cl(x) alors (desc(y )cl(x) = ) Soit y asc(x); si y cl(x) alors (asc(y ) cl(x) = )

D emonstration. Soit y (x) y cl(x); supposons que z (y ) cl(x). On a alors : z (y ) x (z ) x (y ) et comme y (x) ceci contredit y cl(x). On d emontre de m eme la deuxi` eme partie de la proposition (ascendants) 2 Ici, on donne une version r ecursive du calcul des ascendants, mais les autres versions (largeur ou profondeur it eratives) conviendraient. 7.4.3.2 Texte de lalgorithme

Le texte est donn e page 86 7.4.3.3 Complexit e

Chaque recherche de descendants-non-pris et ascendants-non-pris n ecessite exactement card( (x) (X \ P RIS )) n #(sommets class es) acc` es lst succ card (1 ) (x) (X \ P RIS ) n #(sommets class es) acc` es lst pred Or ` a lexamen de x, il y a au moins x 1 sommets class es, et donc la complexit e est, au plus : n(n + 1) acc` es lst succ, autant dacc` es lst pred, soit 2 n2 es lst succ, lst pred O( ) acc` 2
c IFSIC 2004

86

Circuits. Composantes fortement connexes

COMPOSANTES FORTEMENT CONNEXES : ASCENDANTS-DESCENDANTS


ENS[SOMMET] SOMMET::cl : ; ascendants-descendants(GRAPHE G) cest local ENS[SOMMET] D, A, PRIS;

d ebut -- initialisation PRIS ; -- classement pour tout x de G.lst som si x PRIS alors A asc non pris(x) ; D desc non pris(x) ; x.cl A D ; pour tout y de x.cl faire y.cl x.cl fpourtout ; PRIS PRIS x.cl fsi fpourtout n
ENS[SOMMET] S; ENS[SOMMET] asc non pris (SOMMET x) cest

d ebut S ; anp(x) ; Result S n;


anp(SOMMET y) cest local ENS[SOMMET] E; SOMMET z;

d ebut S S {y} ; E G.lst pred(y) ; E E \ PRIS ; pour tout z de E faire si z S alors anp(z) fsi fpourtout n;;
ENS[SOMMET] desc non pris (SOMMET x) cest ; -- identique ` a asc non pris en rempla cant lst pred par lst succ

c IFSIC 2004

7.4. Composantes fortement connexes

87

7.4.4

Algorithme de TARJAN

Cet algorithme fournit non seulement la d ecomposition du graphe en composantes fortement connexes, mais de plus il d elivre les composantes avec une num erotation conforme (par rapport au graphe r eduit selon ses composantes fortement connexes). 7.4.4.1 Principe de lalgorithme de TARJAN

Cet algorithme g en eralise aux graphes quelconques lalgorithme de num erotation conforme e sur lobdes graphes sans circuit, bas e sur lexploration en profondeur, vu en 6.3.2. Il est bas servation suivante : si le graphe etait sans circuit, les c.f.c. se confondraient avec les sommets, et lalgorithme de num erotation conforme des sommets r epond ` a la question. Si le graphe poss` ede des circuits, on se ram` ene ` a un graphe sans circuit en consid erant le graphe r eduit selon les c.f.c., ce qui revient ` a traiter des sous-ensembles de sommets situ es sur un m eme circuit comme un seul macro-sommet. Or, lors dune exploration en profondeur, on est capable de d eterminer des segments de pile dont tous les el ements appartiennent ` a un m eme circuit : chaque fois que lon visite un arc allant du sommet de pile y ` a un sommet z appartenant ` a la pile, tous les sommets situ es dans la pile depuis z jusqu` a y sont sur un m eme circuit (donc appartiennent ` a une m eme c.f.c.). De plus, dapr` es la proposition 7.15, on saura quun tel ensemble de sommets constitue une c.f.c. (terminale dans le sous-graphe engendr e par les sommets non encore class es) d` es que tous les arcs sortants de ce sous-ensemble sont visit es. Pour mettre en oeuvre cette id ee, il sut de remplacer les sommets par des sous-ensembles de sommets dans lalgorithme de num erotation conforme. On va donc travailler sur un graphe qui, ` a chaque etape, sera une r eduction du graphe initial selon des sous-ensembles de sommets reconnus comme faisant partie dune m eme c.f.c. Invariant X est partitionn e en C1 , . . . ,Ck : X = C1 . . . Ck , et i = j : Ci Cj = Chaque sous-ensemble C est dans lun des trois etats suivants: dehors, et dans ce cas, |C | = 1, et le sommet constituant C na pas et e visit e; en attente (dans la pile): y C , y est visit e et au moins un arc sortant de C nest pas visit e; termin e: y C , y est visit e et tous les arcs sortants de C ont et e visit es. Dans ce cas, C est une c.f.c. Arr et Pile vide (pas de sous-ensemble en attente). Ceux qui sont termin es constituent les c.f.c. d ej` a d etermin ees. Sil reste des sous-ensembles dehors, on recommence une exploration ` a partir de lun des ces sous-ensembles. Sinon, toutes les c.f.c. ont et e obtenues. Initialement Soit {x} le sous-ensemble (` a un sommet) dont est issu lexploration X = {1} {2} . . . {n} (en supposant que les sommets sont num erot es de 1 ` a n.
c IFSIC 2004

88 num=num ero initial de c.f.c

Circuits. Composantes fortement connexes

{x} est empil e si (x) = , termin e sinon (dans ce cas, cest la c.f.c. num ero num). Tous les autres sous-ensembles sont dehors. Aucun arc na et e visit e. Cette situation initiale v erie bien linvariant. En particulier, si (x) = , {x} = cf c(x) puisque x est alors point de sortie.

Progression Soit C le sommet de pile. e, alors Si C na pas darc sortant non visit A.depiler ; mettre C dans T , ensemble des sommets termin es ; num num 1 (C constitue une c.f.c, on lui attribue le num ero num) Sinon, soit (y,z ) un arc sortant de C , non visit e, et Cz le sous-ensemble contenant z (par construction, il y en a un et un seul, cf. invariant). e; larc (y,z ) devient visit Si Cz D (dans ce cas, Cz = {z }), alors A.empiler(Cz ); enlever Cz de D Si Cz A, fusionner dans C tous les sous-ensembles qui sont dans la pile depuis Cz jusqu` a C (tous les sommets de ces sous-ensembles sont sur un m eme circuit) Si Cz T , pas daction Nous ne d emontrerons pas formellement que la progression maintient linvariant, mais le lecteur peut ais ement sen convaincre.

7.4.4.2

Exemple

Nous allons dabord montrer sur lexemple de la gure 7.4 le fonctionnement de lalgorithme.

Fig. 7.4 Exemple pour l algorithme de TARJAN


c IFSIC 2004

7.4. Composantes fortement connexes


PILE {a} {a} {b} {a} {b} {d} {a} {b} {d} (b) {a} {b, d} {a} {b, d} {c} {a} {b, d} {c} {g } {a} {b, d} {c} {g } {h} {a} {b, d} {c} {g } {h} {o} {a} {b, d} {c} {g } {h} {o} (h) {a} {b, d} {c} {g } {h, o} {a} {b, d} {c} {g } {h, o} (g ) {a} {b, d} {c} {g, h, o} {a} {b, d} {c} {g, h, o} {i} {a} {b, d} {c} {g, h, o} {i} {j } {a} {b, d} {c} {g, h, o} {i} {j } (h) {a} {b, d} {c} {g, h, o, i, j }

89

Circuit d etect e vers b

Circuit d etect e vers h Circuit d etect e vers g Tous les arcs issus de o sont visit es: on remonte ` ah

{a} {b, d} {c} {a} {b, d} {c} {f } {a} {b, d} {c} {f } {e} {a} {b, d} {c} {f } {e} (g ) {a} {b, d} {c} {f } (d) {a} {b, d, c, f } {a} {b, d, c, f } (f ) {a} {b, d, c, f } {a} {a} (d)

Circuit d etect e vers h Tous les arcs issus de j sont visit es: on remonte ` a i puis ` a h puis ` ag Tous les arcs sortant de {g,h,o,i,j} sont visit es: on d epile ce sous-ensemble, qui est la c.f.c. C15 = {g,h,o,i,j }

g est d ej` a class e; tous les arcs sortant de {e} sont visit es: on d epile cette c.f.c C14 = {e} Circuit d etect e vers d Tous les arcs issus de f sont visit es: on remonte ` a c puis ` a d puis ` ab f appartient d ej` a au sommet d e pile: pas de nouveau circuit. Tous les arcs sortants de {b,d,c,f } sont visit es : on d epile cette c.f.c C13 = {b,d,c,f } d est d ej` a class e; tous les arcs sortant de {a} sont visit es: on d epile cette c.f.c C12 = {a} Pile vide : toute la descendance de f a a et e class ee.

c IFSIC 2004

90

Circuits. Composantes fortement connexes


Repartir dun sommet non class e. {k } {k } {k } {k } {k } {k } (a) {m } { m } { n} {m} {n} (m) {m, n} a est d ej` a class e.

{k } { } { } (b) { } (m)

Circuit d etect e vers m Tous les arcs issus de n sont visit es: on remonte ` am Tous les arcs sortant de {m,n} sont visit es: on d epile cette c.f.c C11 = {m,n} Tous les arcs sortant de {k} sont visit es: on d epile cette c.f.c C10 = {k }

b est d ej` a class e. m est d ej` a class e. Tous les arcs sortant de {l} sont visit es: on d epile cette c.f.c C9 = { } . Pile vide et tous les sommets sont class es : EXECUTION TERMINEE

On a obtenu 7 c.f.c, num erot ees de 9 ` a 15. On eectue une translation de num eros, en retranchant 8, pour avoir une num erotation contigu e de 1 ` a 7. On obtient alors le graphe r eduit erotation conforme (gure 7.5) qui montre quon a bien une num (Ci ,Cj ) R i < j

C5 C1 {k } {b,c,d,f } C7 {g,h,o,i,j }

C3 {m,n}

C4 {a }

C6 C2 { } {e}

Fig. 7.5 Graphe r eduit de la gure 7.4

7.4.4.3

Mise en uvre et texte de lalgorithme

Pour r ealiser lalgorithme ci-dessus, en plus de la pile, on attache ` a chaque sommet y X les attributs suivants :
c IFSIC 2004

7.4. Composantes fortement connexes d enit la position de y dans la pile (non d eni si y na pas encore et e atteint). ENT SOMMET::marque - 0 si y na pas encore et e atteint, - y.pospile lorsque y est empil e, - puis, eventuellement diminu ee lorsque y est rep er e comme appartenant ` a la c.f.c. dun sommet empil e avant lui. SOMMET SOMMET::pred p` ere du sommet y dans larborescence dexploration. ENS[SOMMET] SOMMET::S ensemble des successeurs de y, dans le sous- graphe partiel des sommets non class es, qui ne sont pas encore empil es (comme dans lalgorithme d enum eration des chemins el ementaires). ENT SOMMET::ncl num ero de la c.f.c. ` a laquelle appartient y (ind eni tant que y nest pas class e). Le texte de lalgorithme est donn e page 92 et suivantes.
ENT SOMMET::pospile

91

c IFSIC 2004

92

Circuits. Composantes fortement connexes

ALGORITHME DE TARJAN
tarjan(GRAPHE G) cest local PILE[SOMMET] L; ENS[SOMMET] NC; -- sommets non class es SOMMET finchemin, z ; ENT compt ; -- compteur du num ero de la cfc courante

d ebut depuis NC G.lst som ; L.creer ; compt 0 ; pourtout y de NC y.marque 0 fpourtout ; jusqua NC = faire finchemin el ement(NC) ; L.empiler(finchemin) ; finchemin.S G.lst succ(finchemin) ; finchemin.S finchemin.S NC ; finchemin.marque L.taille ; finchemin.pospile L.taille ; depuis jusqua L.vide faire si finchemin.S = alors z el ement(finchemin.S) ; si z.marque = 0 alors L.empiler(z) ; z.S G.lst succ(z) ; z.S z.S NC ; z.marque L.taille ; z.pospile L.taille ; z.pred finchemin ; finchemin z sinon si finchemin.marque > z.marque alors finchemin.marque z.marque fsi fsi sinon si finchemin.marque = finchemin.pospile alors z finchemin ; finchemin z.pred ; finchemin.marque z.marque sinon -- sortie dune nouvelle cfc depuis compt compt + 1 ; jusqua L.taille < finchemin.pospile
c IFSIC 2004

7.4. Composantes fortement connexes faire z L.sommetpile ; z.ncl compt ; NC NC \ {z} ;


L.d epiler fait ; finchemin finchemin.pred

93

fsi fsi fait fait n 7.4.4.4 Complexit e

Elle est du m eme ordre que lalgorithme de recherche profondeur dabord, puisque chaque sommet de X est empil e exactement une fois, et lacc` es lst succ est appel e une fois pour chaque sommet. Cest donc un algorithme en 0(n) acc` es lst succ.

7.4.5
7.4.5.1

Applications
Recherche dun graphe minimal dans (G)

Nous avons pr ec edemment montr e (7.3) que, si G est sans circuit, il poss` ede une fermeture fortement anti-transitive G ( el ement minimum de (G) ). Il nen est pas n ecessairement de m eme lorsque G poss` ede des circuits. On peut cependant mettre en evidence un graphe minimal dans (G) , cest ` a dire un graphe G tel que : emes possibilit es de cheminement) G + = G+ (m la suppression dun arc quelconque de G supprime une possibilit e de cheminement. Pour cela, on peut proc eder comme suit : 1. D eterminer les c.f.c. de G, et construire le graphe r eduit GR . 2. D eterminer la fermeture anti-transitive GR . Tout arc (Ci ,Cj ) ainsi supprim e dans GR entra ne la suppression de tous les arcs (x,y ) de G tels que x Ci et y Cj . 3. Pour les couples (Ci ,Cj ) GR , ne conserver quun seul arc (x,y ) dans G, tel que x Ci et y Cj . 4. A lint erieur de chaque c.f.c., on ordonne arbitrairement les sommets, ce qui d enit un ensemble darcs formant un circuit hamiltonien (passant une fois et une seule par chaque sommet). Le lecteur v eriera quun graphe G ainsi obtenu v erie bien les propri et es voulues. Remarquer que G nest pas n ecessairement un graphe partiel de G (` a cause du point 4). Si lon souhaite en outre que G G, le traitement ` a eectuer ` a lint erieur de chaque c.f.c. est heuristique, et il est dicile dassurer la -minimalit e. (Il faut obtenir un circuit passant par tous les sommets, en nempruntant que des arcs de G). Exemple voir gures 7.6 et 7.7
c IFSIC 2004

94

Circuits. Composantes fortement connexes

12 14

2 13

10

11

Fig. 7.6 Graphe donn e

12 14

2 13

10

11

Fig. 7.7 Graphe G , minimal dans (G)

7.4.5.2

Calcul rapide de la fermeture transitive

Nous avons vu (5.4) que lalgorithme de Roy-Warshall calcule la fermeture transitive dun graphe quelconque en O(n3 ). Dans le cas o` u G est sans circuit, lutilisation dune num erotation conforme (ou conforme inverse) r eduit la complexit e ; lalgorithme simpli e est donn e page 95.
c IFSIC 2004

7.4. Composantes fortement connexes

95

GRAPHE SANS CIRCUIT : ROY-WARSHALL SIMPLIFIE


GRAPHE roy warshall conforme(GRAPHE G) cest local SOMMET x, y, z

d ebut
Result G ; pour x depuis 2 jqa n-1 pour y depuis 1 jqa x-1 si Result.validarc(y, x) alors pour z depuis x+1 jqa n si Result.validarc(x, z) alors Result.ajoutarc(y, z) fsi

fpour fsi fpour fpour n

Le nombre maximum dop erations est alors :


n 1

(x 1)(n x) =
x=2

n(n 1)(n 2) 6

n3 6

en termes dacc` es validarc, ajoutarc Consid erons alors le proc ed e suivant : 1. Appliquer lalgorithme de Tarjan pour obtenir le graphe r eduit GR , avec une num erotation conforme inverse . 2. Appliquer lalgorithme de Roy-Warshall am elior e au graphe GR + 3. Pour tout couple (Ci ,Cj ) GR tel que card(Ci ) > 1 ou card(Cj ) > 1 rajouter ` a G tous les arcs (x,y ) avec x Ci ,y Cj 4. A lint erieur de chaque c.f.c., cr eer tous les arcs (x,y ). Sil y a p composantes C1 ,C2 , . . . ,Cp , de cardinal respectif k1 ,k2 , . . . ,kp , et si on d esigne par m le nombre darcs de G, la complexit e est en : O(n) acc` es lst succ pour le 1) p6 pour le 2) au plus n p
2 p1
3

(p i) =
i=1

n2 (p 1) 2p

pour le 3) [maximum obtenu lorsque k1 = k2 = . . . = kp = n p]


c IFSIC 2004

96

Circuits. Composantes fortement connexes

2 + k 2 + . . . + k 2 n2 pour le 4) k1 p 2 On peut observer que, lorsque p 1 (graphe fortement connexe), la complexit e est en O(n2 ) (op eration 4) pr epond erante), et lorsque p n (graphe sans circuit) cest lop eration 2) qui n3 domine, et la complexit e est alors en O( 6 ).

c IFSIC 2004

Chapitre 8

Chemins de valeur optimale


8.1 D enitions et probl` emes pos es

Nous avons vu au chapitre 2 que les arcs dun graphe peuvent etre munis dattributs de di erents types: pour un graphe non valu e, ces attributs sont de type bool een (larc existe ou nexiste pas), pour un graphe mod elisant des distances, ce seront des attributs de type num erique, etc. Les attributs peuvent etre statiques (donn es avec le graphe) ou dynamiques (calcul es lors de lex ecution dun algorithme: cf. par exemple le chapitre 10 sur les ots). Dans ce chapitre et les suivants, nous allons manipuler des graphes valu es sur les arcs, cest-` a-dire des graphes dont un attribut darc est pr ecis e dans la d enition du graphe, avec sa valeur (attribut statique). D enition 8.1 On appelle graphe valu e un doublet G = (X,v ), o` u v est une fonction d enie sur X X et ` a valeurs dans un ensemble E . Nous supposerons que lensemble E poss` ede une loi de composition , associative et munie dun el ement neutre e et dun el ement absorbant : w E : w e = ew = w w E : w = w = w1 w2 = w1 = w2 = L el ement absorbant permet de caract eriser lensemble des arcs de la mani` ere suivante: (x,y ) v (x,y ) = Exemples : E e 1) B ={vrai, faux} vrai faux (valeurs dexistence) 2) R + 0 (valeurs additives) 3) [0 , 1] 1 0 (probabilit es) 4) N {} min 0 (capacit es) Lassociativit e de la loi permet de prolonger v ` a lensemble des suites de sommets de longueur 2: v [x1 , . . . ,xp ] =
j =1...p1
c IFSIC 2004

v (xj ,xj +1 )

98

Chemins de valeur optimale

De plus, l el ement caract erise les chemins de la mani` ere suivante: Proposition 8.2 Soit [x1 , . . . ,xp ] (p 2) une suite de sommets de X . Cette suite d enit un chemin de G si,et seulement si: v [x1 , . . . ,xp ] = D emonstration v [x1 , . . . ,xp ] =

= j, 1 = j = p 1 (xj ,xj +1 ) [x1 , . . . ,xp ] est un chemin de G

j =1...p1 v (xj ,xj +1 )

2 Le but de ce chapitre etant l etude de chemins de valeur optimale, il nous faut d enir un crit` ere de comparaison sur les valeurs des chemins. Autrement dit, etant donn e deux sommets x et y et deux chemins reliant x ` a y , lequel des deux est pr ef erable? Pour cela, lensemble E doit aussi etre muni dune relation dordre totale, not ee , telle que: i) est compatible avec , cest-` a-dire: w1 w2 w1 w3 w3 w1 ii) est maximum pour w E : w : w2 w3 w3 w2

Soit alors deux suites u1 = [x,y1 , . . . ,yk ,y ], u2 = [x,z1 , . . . ,zp ,y ]. On dira que u1 est meilleur que u2 si, et seulement si: v (u1 ) v (u2 ). En particulier, une suite d enissant un chemin sera toujours pr ef er ee ` a une suite ne d enissant pas de chemin, gr ace ` a la propri et e ii) ci-dessus. Exemples de relations dordre: E B ={vrai, faux} faux vrai<faux R + [0,1] 0 N {} min 0 Ces d enitions etant donn ees, nous posons

existence valeurs additives minimales probabilit es maximales capacit es maximales les probl` emes :

Probl` eme 8.1 (x-optimal-y) Soit x,y deux sommets donn es de G = (X,,v ). D eterminer un chemin u = (x y ) de G, de valeur optimale parmi tous les chemins de x ` a y dans G. Probl` eme 8.2 (x-optimal ou optimal-y) Il sagit du probl` eme xoptimal-y pour tout y X (resp. x-optimal-y pour tout x X ) : chemins de valeur optimale issus de x (resp. aboutissant ` a y)

c IFSIC 2004

8.2. Chemins de valeur additive minimale issus dun sommet donn e

99

Probl` eme 8.3 (-optimal-) Il sagit du probl` eme x-optimal pour tout x X (chemins de valeur optimale entre tous les couples de sommets). Loptimalit e est ` a prendre, bien s ur, au sens de la relation dordre sur E . Dans ce qui suit, et jusquau paragraphe 8.8, nous prendrons : E R; +; cest-` a-dire le cas des valeurs additives minimales. Ceci nest pas une restriction car nous verrons au 8.8 comment adapter les r esultats et algorithmes aux autres cas, sous r eserve dune structure ad equate de (E, , ) Nous etudions successivement les probl` emes de type 8.2 (et 8.1 comme cas particulier) avec plusieurs algorithmes, puis les probl` emes de type 8.3 dans le cadre de la transformation dalgorithmes.

8.2

Chemins de valeur additive minimale issus dun sommet donn e

Nous supposons, dans cette section, que les sommets sont num erot es de 1 ` a n, et que le sommet de d epart est le sommet de num ero 1 (quitte ` a renum eroter).

8.2.1

Existence

Proposition 8.3 Le probl` eme 1-minimal admet des solutions si et seulement si le sous-graphe G1 = ( (1),1 ) ne contient pas de circuit de valeur < 0. D emonstration. Soit c = [x x] un circuit de valeur < 0 dans G1 . Comme x (1), = [1 x] de valeur ; par suite, .c a pour valeur + , .c.c a pour valeur + 2, ..., k N : .ck a pour valeur + k do` u:
k

lim ( + k)] =

Donc la valeur des chemins de 1 ` a x nest pas minor ee, et il en est de m eme pour tous les descendants de x. R eciproquement, si G1 na pas de circuit de valeur < 0, alors : si u est un chemin de 1 ` a x et ue un chemin el ementaire, inclus dans u, de 1 ` a x, on a : v (u) v (ue ) min v (ue ) (o` u min v (ue ) d enote le minimum des valeurs des chemins el ementaires). Comme lensemble des chemins el ementaires est ni, min v (ue ) est d eni et de plus min v (u) min v (ue ) ((o` u min v (u) d enote le minimum des valeurs des chemins). Dautre part, un chemin el ementaire est un chemin,
c IFSIC 2004

100 et donc min v (u) = min v (ue )

Chemins de valeur optimale

D enition 8.4 Un circuit de valeur < 0 sappelle circuit absorbant (sous entendu pour les valeurs additives minimales).

8.2.2

Caract erisation

Nous donnons maintenant un th eor` eme de caract erisation des valeurs minimales, dans le cas o` u ces valeurs existent. On note C1i lensemble de tous les chemins de 1 ` a i. On consid` ere les attributs de sommets suivants : i X : (i) = minuC1i v (u), avec (i) = + si C1i = (valeur minimale des chemins de 1 ` a i). Si (i) < +, pred(i) = pr ed ecesseur de i sur un chemin el ementaire de valeur optimale de 1 ` a i. (pred(1) nest pas d eni). En abr eg e, pred(i) sera d esign e comme pr ed ecesseur optimal de i. Le couple ((i),pred(i)) constitue les attributs minimaux (relativement au probl` eme pos e) du sommet i.

On montre dabord que les attributs (i) (i = 1, . . . ,n) sont solutions dun syst` eme din equations et dun syst` eme d equations. Proposition 8.5 Les attributs (i) (i = 1, . . . ,n) sont solution du syst` eme: i j : xi xj + v (j,i) D emonstration Il y a trois cas ` a consid erer : 1. (j,i) . Alors v (j,i) = + et la proposition est vraie. 2. j (1). Alors (j ) = + et la proposition est vraie. 3. (j,i) j (1). Soit u C1j tel que v (u) = (j ). Alors u = u (j,i) C1i donc (i) v (u ) = v (u) + v (j,i) = (j ) + v (j,i). La proposition est donc vraie. 2

Proposition 8.6 Les attributs (i) (i = 1, . . . ,n) sont solution du syst` eme: i : xi = minj (xj + v (j,i)) D emonstration Dapr` es la proposition 8.5, i : (i) min((j ) + v (j,i))
j

(8.1)

Il y a deux cas ` a consid erer: i C1i . Comme (i) = minuC1i v (u), il existe u C1i tel que v (u) = (i). Soit p lavantdernier sommet de u. On a donc u = u (p,i) o` u u C1p . On peut donc ecrire :
c IFSIC 2004

8.2. Chemins de valeur additive minimale issus dun sommet donn e (i) = v (u) = v (u ) + v (p,i) (p) + v (p,i) minj ((j ) + v (j,i), do` u (i) min((j ) + v (j,i))
j

101

(8.2)

i C1i . Dans ce cas, (i) = + minj ((j ) + v (j,i)), on obtient donc aussi l equation 8.2 Des equations 8.1 et 8.2 on d eduit (i) = minj ((j ) + v (j,i)) 2 Toutefois, les conditions enonc ees dans les deux propositions pr ec edentes ne sont pas susantes, comme le contre-exemple ci-apr` es (gure 8.1) va le montrer:

2 4 1 4 3 1

2 2

1 1

0 -2 2
Fig. 8.1 Contre-exemple

Le syst` eme d equations de la proposition 8.6 s ecrit : x1 = 0 x2 = min(x1 + 2) = x1 + 2 x3 = min(x1 + 4,x2 + 1,x4 + 2,x6 + 2) x4 = min(x2 + 2,x5 + 1) x = min(x3 2,x4 + 1) 5 x6 = min(x5 + 0) = x5 Les valeurs 1 = 0,2 = 2,3 = 2,4 = 1,5 = 0,6 = 0 satisfont ce syst` eme. Et pourtant, ce ne sont pas les valeurs minimales des chemins issus du sommet 1. Par exemple, la valeur minimale des chemins de 1 ` a 3 est egale ` a 3, alors que 3 = 2. Les valeurs propos ees ici constituent bien des minorants des valeurs de chemins, mais pas n ecessairement des minima : elles peuvent etre trop petites. Le th eor` eme de caract erisation suivant montre en eet que les valeurs minimales de chemins issus de 1 constituent LA solution maximale du syst` eme d equations. Th eor` eme 8.7 Les attributs (i) (i = 1, . . . ,n) constituent la solution maximale du syst` eme: 0 si i = 1 xi = minxj 1 (xi ) (xj + v (j,i))si i = 2, . . . ,n D emonstration Soit (i) (i = 1, . . . ,n) la solution maximale du syst` eme d equations. Il faut montrer : i (1 i n) : (i) = (i). Dapr` es la proposition 8.6, les (i) constituent une solution du syst` eme et donc : i (1 i n) : (i) (i) (8.3)
c IFSIC 2004

102

Chemins de valeur optimale

Pour montrer les in egalit es contraires, on consid` ere les deux cas possibles : 1. i (1). Dans ce cas, (i) = + et donc (i) (i). 2. i (1). Dans ce cas, il existe dans G un chemin u = [1,i1 , . . . ,ik ,i], de valeur (i). Puisque les (i) sont solution du syst` eme, les in egalit es suivantes sont v eri ees: (i1 ) (1) + v (1,i1 ) (i2 ) (i1 ) + v (i1 ,i2 ) ... (i) (ik ) + v (ik ,i) En sommant membre ` a membre, et comme (1) = 0, on obtient: (i) v (1,i1 ) + v (i1 ,i2 ) + . . . + v (ik ,i) = v (u) = (i) Regroupant les deux cas, on obtient : i (1 i n) : (i) (i) Des equations 8.3 et 8.4 on d eduit : i (1 i n) : (i) = (i) 2 Remarque. Consid erons le graphe Gmin (1) dont lensemble des sommets est lensemble des descendants du sommet 1, et lensemble des arcs est lensemble des couples (pred(i),i) pour tout i descendant du sommet 1. Formellement : Gmin (1) = ( (1),{(pred(i),i) | i (1)}) = ({i | (i) < +},{(i,j ) | (j ) = (i) + v (i,j )} Les caract erisations pr ec edentes montrent que ce graphe est une arborescence de racine 1. Les algorithmes de calcul des chemins minimaux issus de 1 que nous etudions ci-apr` es pourront donc etre vus comme des algorithmes dexploration de la descendance de 1, avec une strat egie de s election sp ecique ` a chacun deux. (8.4)

8.3
8.3.1

Algorithme de FORD : exploration


Principe

On note x0 le sommet initial. Le principe de cet algorithme consiste ` a ajuster progressivement les valeurs des attributs jusqu` a ce quils v erient le syst` eme caract eristique. Pour assurer quon obtient bien la solution maximale, on part de valeurs initiales dont on sait a priori quelles majorent les valeurs . Pour cela, nous allons tester tous les arcs du graphe selon un ordre de parcours induit par une exploration en profondeur analogue ` a celle r ealis ee pour l enum eration des chemins el ementaires issus de x0 (cf. 6.3). Un arc (y,z ) est test e lorsque y est sommet de pile et z est le successeur courant de y ; en eet, y est alors reconnu comme descendant de x0 , et l etat de la pile d enit le chemin courant de x0
c IFSIC 2004

8.3. Algorithme de FORD : exploration

103

` a y : ((y ), pred(y )) ont et e initialis es ou mis ` a jour lorsque y a et e empil e pour la premi` ere fois. Quant ` a z , plusieurs cas peuvent se pr esenter selon son etat relatif ` a lexploration (cf terminologie du chapitre 5) : 1er cas z est dehors. Il devient alors en attente (et va etre empil e), et ((z ), pred(z )) sont initialis es :

(z ) (y ) + v (y,z ); pred(z ) y
`me cas z est termin 2e e; cela signie que z a et e pr ec edemment empil e` a partir dun pr ed ecesseur = y puis d epil e apr` es que toute sa descendance ait et e explor ee; les attributs de z ont donc d ej` a une valeur, mais celle-ci peut etre remise en cause par larc (y,z ) qui doit donc etre test e: si (y ) + v (y,z ) < (z ) alors (z ) (y ) + v (y,z ) ; pred(z ) y ; z est empil e car la modication de (z ) peut remettre en cause les valeurs pr ec edemment attribu ees aux descendants de z , do` u la n ecessit e de refaire lexploration ` a partir de z .

sinon inutile dempiler z ` a nouveau : ses attributs ne sont pas modi es donc ceux de ses descendants non plus. fsi
`me cas z est en attente (il appartient donc ` 3e a la pile.)

u 1 z u 2 y

Cela signie quun circuit passant par y et z est rencontr e, puisque z est ` a la fois ant ec edent et successeur de y . Le test de mise ` a jour des attributs de z permet alors de d etecter si ce circuit est absorbant; examinons la gure ci-contre :

Proposition : le circuit u2 (y,z ) est de valeur <0 si et seulement si : (y ) + v (y,z ) < (z ) D emonstration Il existe un chemin u1 = [1 z ], de valeur (z ). Comme u1 u2 est le chemin courant de 1 ` a y , on a : (1) (y ) v (u1 ) + v (u2 ) = (z ) + v (u2 ) i) Supposons v (u2 ) + v (y,z ) < 0. Dapr` es (1), on a : (y ) + v (y,z ) (z ) + v (u2 ) + v (y,z ) < (z ) dapr` es lhypoth` ese. ii) R eciproquement, supposons (y ) + v (y,z ) < (z ). Lin egalit e (1) ne peut pas etre stricte : en eet, si (y ) < (z ) + v (u2 ), cela signie que y a et e visit e pr ec edemment comme extr emit e dun chemin ne passant pas par z ; y a alors et e empil e et sa descendance explor ee. Larc (y,z )
c IFSIC 2004

104

Chemins de valeur optimale

a donc et e test e et on doit avoir (z ) (y ) + v (y,z ), ce qui contredit (1). Par cons equent on a n ecessairement : (y ) = (z ) + v (u2 ), ce qui, avec lhypoth` ese, permet de d eduire : (y ) > (y ) + v (y,z ) + v (u2 ) do` u : 0 > v (y,z ) + v (u2 ) 2 La d etection dun circuit absorbant est un crit` ere darr et de lalgorithme; il sut de g erer une variable bool eenne absorbant, initialement ` a faux et qui passe ` a vrai lorsquun tel circuit est d etect e.

8.3.2

Texte de lalgorithme

Celui-ci est une adaptation de lalgorithme d enum eration des chemins el ementaires vu au 6.5. Le texte est donn e page 105 (voir la signication des acc` es ` a lannexe A).

c IFSIC 2004

8.3. Algorithme de FORD : exploration

105

FORD : EXPLORATION EN PROFONDEUR


REEL SOMMET:: ; SOMMET SOMMET::pred ; ford-profondeur(GRAPHE G, SOMMET x) cest local ENS[SOMMET] SOMMET::a visiter: ; ENUM[dehors, en attente, termin e] SOMMET::etat ; PILE[SOMMET] A; BOOL absorbant ; SOMMET y, z ;

d ebut depuis pourtout y de G.lst som faire y. etat dehors fpourtout ; absorbant faux ; A.creer ; A.empiler(x) ; x. etat en attente ; x. 0 ; x.a visiter G.lst succ(x) ; jusqua A.vide ou absorbant faire y A.sommetpile ; si y.a visiter = alors y. etat termin e ; A.depiler sinon z y.a visiter.element ; y.a visiter y.a visiter \{z} ; cas z. etat = dehors z. etat en attente ; z. y.+ G.v(y,z) ; z.pred y ; A.empiler(z) ; z.a visiter G.lst succ(z) en attente absorbant (z. > y. + G.v(y,z)) termin e si z. > y.+ G.v(y,z) alors z. etat en attente ; z. y.+ G.v(y,z) ; z.pred y ; A.empiler(z) ; z.a visiter G.lst succ(z) fsi fcas fsi fait ; -- si absorbant alors il y a un circuit absorbant sinon les sommets en attente sont inaccessibles n

c IFSIC 2004

106

Chemins de valeur optimale

8.3.3

Une heuristique dam elioration

Dans la strat egie dexploration en profondeur utilis ee, le choix dun successeur du sommet de pile est laiss e arbitraire. Il est posible de d enir un crit` ere de choix dun tel successeur, tenant compte de la nature du probl` eme ` a r esoudre, ` a savoir la recherche de chemins de valeur minimale sur un graphe dont les arcs sont valu es. Un tel crit` ere doit laisser esp erer une am elioration du temps dex ecution de lalgorithme, mais sans que le prix ` a payer pour sa mise en uvre ne devienne prohibitif: ce crit` ere ne devra donc prendre en compte que des informations locales, cest-` a-dire relatives ` a l etat courant du sommet courant. Par contre, lam elioration cens ee r esulter de lapplication de ce crit` ere ne pourra etre etablie s urement; dans certains cas, il pourrait m eme en r esulter une d et erioration du comportement, mais en moyenne une am elioration doit intervenir. Un crit` ere possible et simple ` a mettre en uvre consiste ` a choisir, parmi les successeurs possibles du sommet de pile y , un sommet z tel que v (y,z ) soit minimum. Lam elioration attendue r eside dans une diminution du nombre de retours dans la pile, donc de reprise de parcours d ej` a eectu es. Le prix ` a payer est un tri sur lensemble des valeurs des arcs issus de y .

8.4
8.4.1

Algorithme de BELLMANN-KALABA
Principe

Il sapplique ` a tout graphe valu e, et permet de d etecter d eventuels circuits absorbants. Nous poserons, par convention : v (1,1) = 0 et, si | u |= 0,v (u) = 0. Pour tout x X et tout entier k 1, on notera Cx lensemble des chemins de 1 ` a x, de (k) longueur k . Remarquer que Cx = si et seulement si tout chemin de 1 ` a x, sil en existe, est de longueur > k . Lalgorithme de Bellmann-Kalaba est fond e sur le r esultat suivant : Proposition 8.8 On v (1,x) (1) 0 x = +
k) k 2 : ( x = (k) (k)

consid` ere les valeurs x d enies par : si (1,x) si x = 1 si (1,x)


y 1 (x) k1) min [( + v (x,y )] y (k)

(k )

Alors x = minuC (k) v (u) (+ si Cx = ).


x

D emonstration. Par r ecurrence sur k : Base : V eri e pour k = 1, par d enition. Induction : Supposons la proposition v eri ee pour k 1 1 (k ) er 1 cas : Cx = .
c IFSIC 2004

8.4. Algorithme de BELLMANN-KALABA Soit u Cx


(k)

107

et y le pr ed ecesseur de x sur ce chemin. On a donc

(k1) u = u1 .(y,x) avec u1 Cy

Avec la convention | u1 |= 0 = v (u1 ) = 0, on obtient, dapr` es lhypoth` ese de r ecurrence et (k) la d enition de x :
k1) k) v (u) = v (u1 ) + v (x,y ) ( + v (x,y ) ( y x

Donc, x minuC (k) v (u).


x

(k)

Dautre part, par d enition de x , il existe y0 tel que


k) (k1) + v (y0 ,x) ( x = y0

(k)

et dapr` es lhypoth` ese de r ecurrence, il existe u1 Cy0


(k1) k1) avec v (u1 ) = ( y0

do` u u = u1 (y0 ,x) v erie


(k) k) u Cx et v (u) = ( x

Donc, dans ce cas, x = minuC (k) v (u).


`me cas : C 2e = . Pour tout sommet y 1 (x) on a Cy x (k ) (hypoth` ese de r ecurrence). Do` u, par d enition, x = + . 2 (k )
x

(k)

(k1)

= , et donc y

(k1)

= +

Corollaire 8.9 Il existe k n tel que k) (k1) x X : ( x = x si et seulement si le sous-graphe G0 ne comporte pas de circuit absorbant D emonstration. (n) (n1) (n) (n) Supposons que x X : x < x Alors : u Cx tel que x = v (u) et, pour tout (n1) chemin u Cx , on a : v (u) < v (u ). Par cons equent, | u |= n et donc u nest pas el ementaire, do` u lon d eduit lexistence dun circuit de valeur < 0 inclus dans u, donc dans le sous-graphe G0 . R eciproquement, dapr` es la proposition 8.8, le probl` eme 1-minimal admet alors une solution, ce qui prouve linexistence de circuit absorbant dans le sous-graphe G0 . 2 Corollaire 8.10 k 1,x (1), le pr ed ecesseur de x sur un che(k) min de Cx de valeur minimale est un sommet y k pour lequel le mini(k ) mum est atteint lors du calcul de x D emonstration. Elle r esulte imm ediatement de la d emonstration de la proposition 8.8 2
c IFSIC 2004

108

Chemins de valeur optimale

8.4.2

Analyse
1 k n [j ] A = k j =1 (1) (k1) x A anc(x) = valeur minimale des chemins de Cx (k) (x) = valeur minimale des chemins de Cx pred(x) = pr ed ecesseur optimal de x sur de tels chemins stab = anc (k = n) stab resultat si stab alors (, pred) sinon il y a des circuits absorbants fsi

Invariant

Termin e

Progression (* k < n stab *) anc ; stab vrai ; x X : (x) min anc(y ) + v (y,x) | y 1 A ; pred(x) valeur de y pour laquelle ce min est atteint ; si x A alors stab(stab (x) = anc(x)) sinon stab faux ; AA {x} fsi ; k k + 1 Valeurs initiales (1)0; x (1) : (x)v (1,x); pred(x)1; A{1} (1); k 1

8.4.3

Texte de lalgorithme

Il est donn e page 109.

8.4.4

Preuve

Nous ne la d etaillerons pas, la laissant en exercice au lecteur. Les quatre r esultats suivants doivent etre montr es : Lemme 8.11 Les valeurs initiales satisfont linvariant. D emonstration. Evidente, gr ace ` a la convention v (1,1) = 0
c IFSIC 2004

8.4. Algorithme de BELLMANN-KALABA

109

ALGORITHME DE BELLMANN-KALABA
REEL SOMMET:: ; SOMMET SOMMET::pred ; REEL SOMMET:: anc ; bellmann-kalaba(GRAPHE G, SOMMET x) cest local ENS[SOMMET] A, E; BOOL stab; ENT k; SOMMET x, y ;

d ebut depuis k 1 ; stab faux ; x. 0 ; A {x0 } ; E G.lst succ(x) ; pourtout x de E x. G.v(x,x) ; A A {x} fpourtout ; jusqua stab ou k n faire k k+1 ; pourtout x de G.lst som faire x. anc x. fpourtout ; stab vrai ; pourtout x de G.lst som faire E G.lst pred(x) ; E E A ; si E = alors (x., x.pred) min(y. anc + G.v(y,x), E) ; si x A alors stab stab et (x. =x. anc) sinon stab faux ; A A {x} fsi fsi fpourtout ; fait ; -si k < n alors Resultat : ( , pred) -sinon circuit absorbant d etect e n (w,y 0) min (f (y ),E ) est une primitive, signiant que w = min (f (y ) | y E ) = f (y 0), o` u f est une fonction E R

c IFSIC 2004

110

Chemins de valeur optimale

Lemme 8.12 La progression maintient linvariant. D emonstration. Utiliser : La proposition 8.8 pour les valeurs Le corollaire 8.10 pour les valeurs pred Le corollaire 8.9 pour le bool een stab Proposition 8.13 (Correction partielle). Lorsque lalgorithme sarr ete, on a lalternative : ou bien stab et dans ce cas, x (1) les attributs ((x), pred(x)) sont minimaux ou bien non stab et k = n et dans ce cas, il y a des circuits absorbants D emonstration. Cons equence de (stab Invariant) (k = n stab Invariant) Proposition 8.14 (Terminaison). Lalgorithme sarr ete en un nombre ni d etapes D emonstration. Consid erer la fonction n k

8.4.5

Complexit e

Lalgorithme ex ecute au plus n 1 pas dit eration, et pour chacun deux : n acc` es lst pred n calculs de min, sur un ensemble E , impliquant chacun : card(E ) acc` es valarc, card(E ) comparaisons et additions de r eels; comme card(E ) n, on obtient un algorithme en 0(n3 ). Remarque. Lalgorithme de Bellmann-Kalaba met en uvre, au niveau du probl` eme 8.2, le principe doptimalit e de Bellmann qui fonde les m ethodes de programmation dynamique : les etapes sont les longueurs des chemins examin es, les etats ` a l etape k sont les sommets qui peuvent etre atteints par un chemin de longueur k et les transitions possibles de l etape k -1 ` a l etape k sont d enies par les arcs issus des sommets etats ` a l etape k -1. La relation k) k1) ( min (( + v (x,y )) x = y
y 1 (x)

nest autre, dans ce contexte, que la traduction du principe doptimalit e.

8.4.6

Acc el eration de lalgorithme


(k) (k )

Il est possible dacc el erer lalgorithme en utilisant, dans le calcul de x , les valeurs y (avec y < x), d` es leur mise ` a jour dans l etape courante. En eet, on a les r esultats suivants :
c IFSIC 2004

8.4. Algorithme de BELLMANN-KALABA

111

Proposition 8.15 On d enit, par r ecurrence : (1) x comme dans la proposition 8.8
k) k 2 : ( x = y 1 (x) k) min (( y + v (y,x))

avec :
k) ( y =

y si y < x, (k1) y si y x

(k)

On a alors : (k) si Cx = : i) x minore la valeur minimale des chemins de Cx . ii) il existe un chemin de 1 ` a x, ayant pour valeur x . D emonstration Elle seectue par r ecurrence sur k , et pour chaque k , par r ecurrence sur x. Pour k = 1, la proposition est v eri ee. (k ) Supposons l` a v eri ee pour k - 1, et soit x tel que Cx = . (k ) Il existe u Cx et soit y le pr ed ecesseur de x sur u. Alors :
(k1) u = u .(y,x), u Cy , v (u) = v (u ) + v (y,x) (k ) (k) (k )

cest ` a dire, dapr` es lhypoth` ese de r ecurrence :


k1) v (u) ( + v (y,x) y

Montrons, par r ecurrence sur x, que x v (u) (k1) (k1) Pour x=1, on a y 1 donc y = y et par cons equent :
k) (k) v (u) ( y + v (y,x) x

(k )

Supposons que cette in egalit e est v eri ee jusqu` a x-1. On a alors : si y < x alors v (u )
(k1) Cy

min

k) (k ) v ( ) min v ( ) ( y = y Cy
(k )

do` u k) (k) v (u) ( tandis que si y x : y + v (x,y ) y


k1) k) ( = ( equent : y y et par cons k) (k) v (u) ( y + v (x,y ) y

Ceci montre la partie i) de la proposition.


c IFSIC 2004

112 Pour montrer la partie ii), consid erons la suite de sommets x = y0 > y1 > . . . > y et y y +1 telle que : (k) x (k) y1 (k) = y1 + v (y1 ,x) (k) = y2 + v (y1 ,y2 ) . . . = +1 + v (y +1 ,y )
(k) (k)

Chemins de valeur optimale

y existe n ecessairement ( eventuellement =0), puisque la suite est d ecroissante et minor ee par 1. Si on somme cette suite d egalit es, il vient :
k) (k1) ( x = y +1 + v (y +1 ,y ) + ... + v (y1 ,x)

Dapr` es lhypoth` ese de r ecurrence, il existe un chemin u = [1 y +1 ] avec v (u ) = y +1 . Le (k) chemin u (y +1 ,y , . . . ,y1 ,x) a donc pour valeur x . 2

(k1)

Corollaire 8.16 Il existe k n tel que k) (k1) x X : ( x = x si et seulement si le sous-graphe G0 ne comporte pas de circuit absorbant La d emonstration est identique ` a celle du corollaire 8.9 Nous ne d ecrivons pas lalgorithme acc el er e en entier, mais seulement les modications ` a apporter ` a lalgorithme pr ec edent : le tableau anc devient inutile ; on le remplace par une simple variable r eelle . (Laectation anc est donc ` a supprimer). Remarque. Comme pour lalgorithme de Ford, lalgorithme de Bellmann-Kalaba rentre dans une classe dalgorithmes par ajustements successifs, et donc napporte pas de solution el er ee permet de sp ecique au probl` eme 8.1. Par contre, lalgorithme dans sa version non acc restreindre le calcul aux chemins ayant une longueur maximum donn ee. Les deux algorithmes qui vont suivre rentrent dans la classe des algorithmes gloutons, cest a dire quils calculent le r ` esultat d enitif de chaque sommet, examin es dans un certain ordre, sans jamais revenir en arri` ere - cest ` a dire sans jamais remettre en cause les r esultats partiels d ej` a acquis. A ce titre, ils peuvent etre adapt es au probl` eme 8.1. Toutefois, ils ne sappliquent qu` a des graphes ayant des propri et es particuli` eres : valeurs positives ou nulles pour le premier, graphes sans circuit pour le second.

8.5

Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA

G = (X,,v ) est un graphe valu e, avec : v ( ) 0 si bien que G ne poss` ede aucun circuit absorbant.
c IFSIC 2004

8.5. Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA

113

8.5.1

Principe de lalgorithme de DIJKSTRA

L algorithme de Dijkstra est une strat egie particuli` ere de lalgorithme dexploration pour le calcul de la descendance du sommet 1 vu au 6.2. Il est donc plus simple que lalgorithme dexploration de Ford du 8.3, bas e sur lexploration de tous les chemins el ementaires issus de 1 : ceci est du ` a lhypoth` ese plus restrictive sur les valeurs des arcs. Par rapport au sch ema g en eral du 6.2, les pr ecisions et modications suivantes sont apport ees : Lorsquun sommet z devient en attente, ses attributs sont initialis es : (z )(y ) + v (y,z ); pred(z )y , o` u y est son p` ere dans larborescence dexploration. e, ses attributs ((z ), pred(z )) sont d enitifs (leur valeur Lorsquun sommet z est termin est correcte) La s election dun sommet d etat en attente se fait selon le crit` ere suivant : on choisit le sommet y d etat en attente dont lattribut (y ) est minimum. Le sommet s electionn e devient alors termin e et, pour tout z (y ) : si z est dehors, il devient en attente et ses attributs sont initialis es si z est en attente ses attributs sont r e evalu es de la mani` ere habituelle : si (y ) + v (y,z ) < (z ) alors (z )(y ) + v (y,z ); pred(z )y fsi si z est termin e, il est ignor e. Le fait que les attributs des sommets puissent atteindre leur valeur nale avant la n de lalgorithme, et que lon sache ` a quel moment de lex ecution ce fait se produit, indique que cet algorithme rentre dans la classe des algorithmes gloutons. Remarque. Au 6.2 nous avions mis en evidence les strat egies en largeur dabord et en profondeur dabord. La strat egie utilis e ici peut etre quali ee, elle, de meilleur dabord (best-rst search). Relativement au probl` eme trait e, cette strat egie est informante, cest-` a-dire quelle tient compte des informations d ej` a obtenues sur les valeurs de chemins (informations s emantiques), alors que les deux premi` eres sont aveugles, cest-` a-dire purement syntaxiques. La gestion de lensemble des sommets d etat en attente, not e A, va etre eectu ee selon la structure de donn ees appel ee tas, qui est une structure ordonn ee dans laquelle lacc` es ` a un el ement de valeur minimum parmi tous les el ements de lensemble se fait en temps constant, cesta-dire ind ` ependant du nombre d el ements contenus dans cette structure. De mani` ere analogue ere le type tas comme un type de donn ees aux les (6.3.1) et aux piles (6.3.2), on consid` abstrait. La d eclaration TAS[E ORD] t d eclare un tas dobjets de type E ORD, o` u E ORD est un type dont les valeurs sont ordonn ees. Les op erations sur les tas sont alors : creer cr ee un nouveau tas vide BOOL tasvide pr edicat ` a valeur vrai si et seulement si le tas est vide mettre en tas(E ORD v) ajout dans le tas de l el ement de valeur v
c IFSIC 2004

114
^ oter de tas E ORD mintas reorg(E ORD v1, v2)

Chemins de valeur optimale retrait dun el ement de valeur minimum (erreur si le tas est vide) d elivre un el ement du tas de valeur minimum, sans modier le tas (erreur si le tas est vide) remplacement dans le tas de la valeur v1 par la valeur v2 (erreur si la valeur v1 est absente). nb: t.reorg(v1,v2) est equivalent ` a la s equence : t.^ oter de tas(v1);
t.mettre en tas(v2)

La mise en uvre concr` ete dune telle structure abstraite et des acc` es est vue dans les cours de techniques ou m ethodes de programmation (elle se fait sous forme darbre binaire ordonn e, complet ` a gauche, souvent repr esent e en tableau). Noter que le terme liste de priorit e (priority queue) est aussi utilis e pour d esigner un tas.

8.5.2

Analyse de lalgorithme

Lanalyse correspondant au principe expos e ci-dessus est donc d eriv ee de celle de lalgorithme g en eral dexploration de la descendance de 1. Les el ements du tas sont ici des objets ` a deux champs (SOMMET, REEL), o` u` a chaque sommet x du graphe valu e est associ e son attribut (x) EL (lorsque celui-ci a et e initialis e). Les valeurs du type de base sont ordonn ees par le champ RE (attributs ) Invariant : (I1) : A = sommets d etat en attente (1) (I2) : T = sommets d etat termin e (1) (I3) : x T : (x) T A (I4) : x T : ((x), pred(x)) = attributs minimaux de x (I5) : x A : (x) = minyT 1 (x) ((y ) + v (y,x)) pred(x) = sommet pour lequel ce minimum est atteint Termin e: A.tasvide Progression : (nouv, ) A.mintas ; A.oter de tas ; T T {nouv } ; M OD (nouv ) ; x M OD : si x A alors mise ` a jour de ((x), pred(x)) sinon initialisation de ((x), pred(x)) ; A.mettre en tas(x, (x)) fsi T ; A.creer (x0 ) 0 ; A.mettre en tas((x0 ,0))
c IFSIC 2004

Valeurs initiales :

8.5. Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA

115

8.5.3

Exemple dex ecution

1
3 2 4 5

1 2

5
2 1 4 1

8
4

2
2

4
2 2

Fig. 8.2 Exemple pour lalgorithme de Dijkstra Etape init 1 2 3 4 5 6 7 nouv MOD tas (0,0) (1,3),(2,4),(3,5) (2,4),(5,4),(3,5) (5,4),(3,5),(4,8) (3,5),(4,8),(6,6) (6,6),(4,7) (4,7),(7,11) (7,9) Termin es

0 1 2 5 3 6 4

1,2,3 2,5 3,4 2,6 4 2,7 -,7

0 0,1 0,1,2 0,1,2,5 0,1,2,5,3 0,1,2,5,3,6 0,1,2,5,3,6,4

8 7 0,1,2,5,3,6,4,7 n de lalgorithme. Le sommet 8 est inaccessible

8.5.4 8.5.5

Texte de lalgorithme Preuve

Lemme 8.17 Les valeurs initiales v erient linvariant D emonstration. Evident. Lemme 8.18 Linvariant est maintenu par la progression. D emonstration. Les parties I1, I2 et I3 de linvariant sont maintenues par la progression : seul
c IFSIC 2004

116

Chemins de valeur optimale

ALGORITHME DE DIJKSTRA
REEL SOMMET:: ; SOMMET SOMMET::pred ; dijkstra(GRAPHE G, SOMMET x) cest local ENUM[dehors,en attente,termin e] SOMMET:: etat ; TAS[DOUBLET[SOMMET, REEL]] A; ENS[SOMMET] MOD -sommets modiables SOMMET z, nouv ; REEL w;

d ebut depuis pourtout x de G.lst som faire x. etat dehors fpourtout ;


A.creer ; x. etat en attente ; x. 0 ; A.mettre en tas((x,0)) ; jusqua A.vide

faire
(nouv,w) A.mintas ; -- w=nouv. A.^ oter de tas; nouv. etat termin e ;MOD G.lst succ(nouv) ; -- mise ` a jour des marques des sommets modiables pourtout z de MOD cas z. etat = dehors z. etat en attente ; z. w + G.v(nouv, z) ; z.pred nouv ; A.mettre en tas((z, z.)) z. etat = en attente si w + G.v(nouv, z) < z.

alors
A.reorg((z, z.),(z, w + G.v(nouv, z))); z. w + G.v(nouv, z) ; z.pred nouv

fsi
z. etat = termin e rien

fcas fpourtout
--

fait les sommets d etat dehors sont inaccessibles n

a l etat termin e; il est ot e de A, ajout e ` a T et il le sommet nouv passe de l etat en attente ` est descendant de 1. Dautre part, les nouveaux el ements de A sont successeurs de nouv, donc
c IFSIC 2004

8.5. Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA descendants de 1. Pour I4 et I5, il faut montrer : 1. le sommet nouv v erie I4 2. les sommets z A, dont les attributs sont initialis es ou modi es, v erient I5

117

Maintien de I4 : ici, T d esigne la valeur de lensemble des sommets d etat termin e au d ebut du pas dit eration (avant ladjonction de nouv). Soit u un chemin quelconque de 1 ` a nouv. Comme 1 T et nouv T , x ce chemin sort de T : soit z le der0 nouv nier sommet de u, faisant partie de T , et z son successeur sur u, qui appartient donc ` a A par construcz' z tion ( e ventuellement, z = nouv ). Le M chemin u se d ecompose en : u = [1 z ] (z,z ) [z nouv ], et donc : v (u) = v [1 z ] + v (z,z ) + v [z nouv ] v [1 z ] + v (z,z ) (valeurs des arcs 0) (z ) + v (z,z ) (z T ) et I4 (z ) (z 1 (z ) T et I5) (nouv ) (crit` ere de s election de nouv ) (nouv ) minore donc la valeur des chemins de 1 ` a nouv. Dautre part, soit y = pred(nouv ). Par construction : (nouv ) = (y ) + v (y,nouv ) Comme y T , il existe un chemin [1 y ], de valeur (y ). Le chemin [1 y ].(y,nouv ) a donc pour valeur (nouv ), ce qui montre le point 1 (maintien de I4). Maintien de I5 : Soit x (nouv ). etat dehors, alors 1 (x) T = {nouv }, sans quoi x serait d ej` a dans A au Si x est dans l d ebut de l etape. Par construction, les attributs de x v erient bien I5 Si x est dans l etat en attente, alors nouv est ajout e ` a 1 (x) T , et le test sur (x) montre que les nouveaux attributs de x v erient toujours I5 2 Proposition 8.19 (Correction partielle). Si lalgorithme sarr ete, on a ` a larr et : x (1)), les valeurs ((x), pred(x)) constituent les attributs minimaux de x D emonstration. Il sut de montrer que, lorsque lalgorithme est termin e, on a : T = (1); le r esultat d ecoule alors de I4. Dapr` es I1, on a T (1)
c IFSIC 2004

118

Chemins de valeur optimale

R eciproquement, dapr` es I3 et la condition darr et A = , tout successeur dun sommet de T appartient ` a T ; donc tout descendant dun sommet de T appartient aussi ` a T , ce qui montre linclusion inverse (1) T 2 Proposition 8.20 (Terminaison) Lalgorithme sarr ete au bout dun nombre ni dit erations D emonstration. La fonction card(T ) est strictement croissante, ` a valeurs enti` eres positives ou nulles et major ee par la valeur nie card( (1)); la condition darr et (A = ) (T = (1)) est donc obtenue en un nombre ni d etapes. 2

8.5.6

Complexit e

Lalgorithme eectue au plus n pas dit erations, et ` a l etape no k , on a : card(T ) = k, card(A) n k , `me sommet termin card(M OD) d+ (nouvk ), o` u d+ (x) = card((x)), et nouvk le k e e. + La boucle sur M OD comporte donc au plus d (nouvk ) additions, comparaisons et acc` es mettre en tas ou reorg (exclusivement lun de lautre). De plus, 1 acc` es min, 1 acc` es oter de tas et un acc` es lst succ sont eectu es ` a chaque etape. Au total, on a donc au plus (m d esigne le nombre darcs) : n + (nouv ) = m additions, comparaisons; d k k=1 m acc` es mettre en tas ou reorg n acc` es min, oter de tas; n acc` es lst succ Or, on d emontre (dans les cours sur les structures de donn ees ou sur les m ethodes de tri) que la gestion dun tas de p el ements n ecessite O(log2 p) comparaisons pour la mise en uvre oter de tas et O(1) pour min. des acc` es mettre en tas, reorg, La complexit e de lalgorithme est donc nalement : O(m + n log2 n) comparaisons O(n) acc` es lst succ Remarque. Supposons quil existe une constante d telle que x X : d+ (x) d (ce qui implique notamment m d.n). On a alors O(m) = O(n) et, de plus, la complexit e de mise en uvre dun acc` es lst succ est O(1). Lalgorithme est alors en O(n log2 n) (La m eme remarque vaut si le graphe est peu dense, cest-` a-dire m est beaucoup plus petit que n2 )

8.6
8.6.1

Cas des graphes sans circuit : algorithme ORDINAL


Principe

Comme lalgorithme de Dijkstra, cet algorithme rentre dans la cat egorie des algorithmes gloutons; cest lhypoth` ese restrictive dabsence de circuit qui rend cette simplication possible.
c IFSIC 2004

8.6. Cas des graphes sans circuit : algorithme ORDINAL

119

(Par contre, les valeurs des arcs peuvent etre de signe quelconque). Dans un premier temps, nous pr esentons un algorithme valable dans le cas o` u le sommet 1 est racine de G, cest ` a dire : 1 (1) = et (1) = X Nous verrons ensuite comment lever cette hypoth` ese. Le parcours de la liste des arcs est ici organis e selon la m ethode employ ee lors du calcul de la fonction ordinale (7.2) avec, en plus, la prise en compte des valeurs des arcs, do` u le nom donn e` a cet algorithme. Ainsi, un arc (x,y ) est examin e lorsque x est point dentr ee du graphe courant, sachant que les attributs d enitifs ((x), pred(x)) ont d ej` a et e calcul es. La mise en uvre de cet algorithme se fait alors selon lanalyse qui suit.

8.6.2

Analyse
H sous-graphe de G ; E = ensemble des points dentr ee de H ; M = G.ens som \ H.ens som (sommets qui ne sont pas dans H ). x M : ((x), pred(x)) = attributs minimaux de x H vide

Invariant :

Arr et :

Progression : (H non vide, donc E non vide puisque H na pas de circuit) x element(E ) ; - - tous les pr ed ecesseurs de x sont dans M (x) miny1 (x) ((y ) + v (y,x)) pred(x)=sommet pour lequel ce min est atteint M M {x}; H.oter sommet(x) ; E H.points entree Valeurs initiales : H G ; H.oter som(1) ; M {1} ; (1) = 0 ; pred(1) non d eni; E H.points entree

8.6.3

Preuve

Lemme 8.21 Les valeurs initiales satisfont linvariant. D emonstration Evident, par construction.
c IFSIC 2004

120

Chemins de valeur optimale

Lemme 8.22 La progression maintient linvariant. D emonstration Notons H ,M ,E les valeurs au d ebut de l etape. Par hypoth` ese, linvariant est v eri e pour ces valeurs. Soit H, M, E les valeurs ` a la n de l etape, et x le sommet s electionn e durant l etape. H = H priv e de x, donc H est un sous-graphe de G. M = M {x} donc M est lensemble des sommets qui ne sont pas dans H . E = ensemble des points dentr ee de H , par construction. y M : ((y ), pred(y )) = attributs minimaux de y . Il reste donc ` a montrer que ((x), pred(x)) = attributs minimaux de x. On peut ecrire : Cx =
y 1 (x)

Cy,x

o` u Cy,x est lensemble de chemins de 1 ` a x dont lavant-dernier sommet est y . On a donc, par associativit e du minimum :
uCx

min v (u) = = = = =

y 1 (x) uCy,x y 1 (x) uCy,x y 1 (x) u Cy y 1 (x) y 1 (x)

min ( min v (u))

min ( min (v [1 y ] + v (y,x))) min ( min (v (u ) + v (y,x)))


u Cy

min (v (y,x) + min v (u )) et, comme y M :

min (v (y,x) + (y ))

= (x) De plus, (x) = v (y,x) + (y ), avec y = pred(x). Donc pred(x) est bien le pr ed ecesseur de x sur un chemin de 1 ` a x, de valeur (x). Enn, par hypoth` ese sur G, tout chemin est el ementaire. Donc, ((x), pred(x)) satisfont la d enition des attributs minimaux de x. 2

Proposition 8.23 (Correction partielle) A larr et de lalgorithme : x X les attributs ((x), pred(x)) sont minimaux. D emonstration A larr et, on a H.vide donc M = G.ens som. Le r esultat d ecoule de linvariant. 2

Proposition 8.24 (Terminaison) Lalgorithme sarr ete au bout dun nombre ni d etapes.

c IFSIC 2004

8.6. Cas des graphes sans circuit : algorithme ORDINAL

121

D emonstration A la n de chaque etape, on a H.vide E = car le graphe est sans circuit (cf. proposition 7.1). Donc, dans chaque etape, la s election dun sommet x est possible. Ce sommet etant ot e de M lors de l etape, la fonction card(X \ M ), minor ee par 0, d ecro t strictement dune unit e` a chaque pas dit eration. 2

8.6.4

Texte de lalgorithme

Il est donn e page 121

ALGORITHME ORDINAL RACINE


REEL SOMMET:: ; SOMMET SOMMET::pred ; ordinal racine(GRAPHE G; SOMMET x) cest local ENS[SOMMET] M; -- sommets marqu es ENS[SOMMET] E; -- points dentr ee courants GRAPHE H ; -- graphe courant SOMMET x, y; d ebut depuis x. 0 ; H G; H.otersom(x) ; M {x0 } ; E H.points entree jusqua H.vide ou sinon E = faire -- selection dun sommet de E x E.element ; (x., x.pred) min(y.+G.v(y,x), G.lst pred(x)) ; M M {x} ; H.oter sommet(x) ; E H.points entree fait ; -- si E= alors G a des circuits : algorithme inapplicable

n min a la m eme signication que dans lalgorithme de Bellmann-Kalaba (cf. page 109).

c IFSIC 2004

122

Chemins de valeur optimale

8.6.5

Complexit e

Il y a exactement n etapes. A chaque etape, un sommet est d enitivement marqu e (mis dans M). Si x d esigne ce sommet, le calcul de x. est un calcul de minimum sur lensemble des pr ed ecesseurs de x, qui n ecessite | 1 (x) | 1 comparaisons. Lalgorithme eectue donc (| 1 (x) | 1) = m n comparaisons (m est le nombre darcs de G, avec m n2 ). Cest
xX

donc un algorithme en O(n2 ).

8.6.6
8.6.6.1

Adaptations et am eliorations
Calcul progressif des attributs

Au lieu de calculer les attributs ((x), pred(x)) dun seul coup (lorsque x est ot e du graphe), on peut les calculer progressivement en maintenant linvariant suivant: x E : ((x), pred(x))=attributs minimaux de x. Pour cela, on modie la progression ainsi(x d esigne le sommet s electionn e` a l etape courante) :
pour tout y de H.lst succ(x) si x.+H.v(x,y) < y. alors y. x.+H.v(x,y) ; y. pred x fsi fpour

Il est alors facile de v erier que tout sommet devenant point dentr ee de H aura d ej` a ses attributs minimaux. 8.6.6.2 Mise ` a jour de lensemble des points dentr ee

Dans la progression, lensemble des points dentr ee E est recalcul e. Or, si H et E (resp. H et E ) d esignent les valeurs au d ebut (resp. ` a la n) dune etape, on a : H est obtenu en enlevant de H un sommet x E , E est lensemble des points dentr ee de H . On pourrait exploiter la connaissance de E pour recalculer E : E = E \ {x}{nouveaux points dentr ee}. Or, les nouveaux points dentr ee ne peuvent etre que parmi les successeurs de x. On associe ` a chaque sommet y lattribut entier nb tel que nb(y )= nombre de pr ed ecesseurs de y dans H . Ces attributs sont g er es de la mani` ere suivante : D` es que y est visit e (cest-` a-dire lorsquun de ses pr ed ecesseurs est s electionn e) : y.nb H.nb pred(y) (initialisation). Lorsquun sommet x est ot e de H : y H.lst succ(x) : y.nb y.nb-1; si y.nb =0 alors E E {y}
c IFSIC 2004

8.6. Cas des graphes sans circuit : algorithme ORDINAL 8.6.6.3 Nouvelle version de lalgorithme

123

On peut mettre en uvre lune ou lautre de ces deux adaptations. On donne le texte de lalgorithme prenant en compte les deux ` a la fois. ALGORITHME ORDINAL RACINE (deuxi` eme version)
REEL SOMMET:: ; SOMMET SOMMET::pred ; ordinal racine(GRAPHE G, SOMMET x) cest local ENS[SOMMET] D; -- sommets dehors ENS[SOMMET] E; -- points dentr ee courants GRAPHE H ; -- graphe courant ENT SOMMET ::nb ; SOMMET x, y; d ebut depuis x. 0 ; H G; D G.ens som \ {x0 } ; E {x0 } jusqua H.vide ou sinon E = faire -- selection dun sommet de E x E.element ; pour tout y de H.lst succ(x) si y D alors y.nb H.nb pred(y) ; y. x.+H.v(x,y) ; y.pred x sinon si x.+H.v(x,y) < y. alors y. x.+H.v(x,y) ; y.pred x fsi ; y.nb y.nb - 1 ; si y.nb=0 alors E E {y} fsi fpourtout ; E E \ {x} fait ; -- si E= alors G a des circuits : algorithme inapplicable

c IFSIC 2004

124 8.6.6.4

Chemins de valeur optimale G en eralisation au cas o` u 1 nest pas n ecessairement point dentr ee

Il faut alors tenir compte des sommets x (1), pour lesquels (x) ne doit pas etre d eni. Lalgorithme doit alors mettre en evidence, parmi les sommets marqu es, ceux qui sont descendants de 1. Le calcul des attributs ((x), pred(x)) se fera en ne tenant compte que des descendants de 1, g er e comme dans les algorithmes dexploration. Nous laisserons au lecteur le soin d ecrire le texte de lalgortihme, d etablir la preuve et d etudier la complexit e, de mani` ere analogue ` a lalgorithme Ordinal-racine.

8.7
8.7.1

Valeurs optimales de tout sommet ` a tout sommet


De la fermeture transitive aux valeurs optimales

Le but de ce probl` eme est de calculer les nombres ij = valeurs minimales des chemins de i ` a j pour tous couples (i,j ) (si j + (i), on peut poser, arbitrairement, ij = +). Si on revient au probl` eme de la fermeture transitive, il sagissait alors de calculer les bool eens : bij = (j + (i)) Il est clair que ces bool eens v erient : (2) i X, j X : bij = [bik v (k,j )]
k1 (j )

o` u v (k,j ) est la valeur dexistence (bool eenne) de larc(k,j ). La comparaison de (1) et (2) montre quil y a une analogie entre les deux probl` emes, aux transformations suivantes pr` es : r eel {+} booleen + min 0 (neutre de +) vrai (neutre de ) + (neutre de min, faux (neutre de , absorbant de +) absorbant de Ceci sugg` ere lid ee suivante : de tout algorithme dexistence de chemin on peut d eduire un algorithme de chemin de valeur minimale. En particulier, les algorithmes de calcul de la fermeture transitive ont leur equivalent. valeur des arcs et des chemins : op erations sur les arcs : op erations sur les chemins : valeurs remarquables :

8.7.2

Transformation de lalgorithme des puissances

Pour lalgorithme des puissances, il sut de remplacer : eration par +, dont nous donnons lalgorithme ci-dessous page 125 Lop Lop eration par lop eration min telle que : G3 = (X,3,V 3) = min(G1,G2) est d eni par :
c IFSIC 2004

8.7. Valeurs optimales de tout sommet ` a tout sommet V 3(i,j ) = min[V 1(i,j ),V 2(i,j )] (par convention, (i,j ) v (i,j ) < +)

125

ALGORITHME G1

+ G2

GRAPHE composer-general(GRAPHE G1, G2) cest -- pr e : G1.lst som = G2.lst som; G1 et G2 ont m eme type de valeurs darcs local SOMMET x, y, z ; ENS[SOMMET] X REEL w1, w2, w3 ;

d ebut
Result.creer ; X G1.lst som ; -- ou G2.lst som pourtout x de X pourtout y de X w3 Result.v(x,y) ; pourtout z de X w1 G1.v(x,z) ; w2 G2.v(z,y) ; si w1 = nil et w2 = nil alors si w3 = nil alors w3 min(w1 + w2, w3) sinon w3 w1 + w2

fsi fsi fpourtout ; si w3 = nil alors Result.modif val(x,y,w3) fsi fpourtout fpourtout n

La validit e de lalgorithme des puissances (adapt e du 5.3) d ecoule des propri et es alg ebriques suivantes, faciles ` a v erier : min est associative, commutative + est associative, poss` ede l el ement neutre D = (X,) valu e par 0, et est distributive par rapport ` a min. Enn, k : la valeur v (k) de tout arc (x,y ) (k) est egale ` a la valeur minimale des chemins reliant x ` a y dans G, de longueur k . Toutefois, la possibilit e dexistence de circuits absorbants oblige ` a faire les v erications suppl ementaires suivantes pour lalgorithme des puissances (5.3) : il faut rajouter la condition darr et k = n qui, si elle est obtenue, est equivalente ` a lexistence dun circuit absorbant ;
c IFSIC 2004

126 en eet, on a alors : min(G, . . . ,G(n) ) = min(G, . . . ,G(n1) )

Chemins de valeur optimale

ce qui prouve quil existe un chemin de longueur n (circuit hamiltonien ou chemin non el ementaire), de valeur v < aux valeurs de tous les chemins el ementaires.

8.7.3

Transformation de lalgorithme de Roy-Warshall

En nous inspirant des m emes principes, nous pouvons adapter lalgorithme de Roy-Warshall (appel e Warshall-Floyd); nous donnons ci- dessous (page 127) la version avec routage proc edur e, suivie des proc edures de routage. Nous ne red emontrerons pas en d etail cet algorithme, la d emonstration etant en tous points analogue ` a celle de lalgorithme de roy- Warshall avec routage ; on a les 3 lemmes suivants : 1. A lissue de lalgorithme, z X,y X : y.R[z ] = nil si et seulement si (y,z ) + 2. Si G na pas de circuit absorbant alors, pour tout couple (y,z ) + on a, ` a lissue de lalgorithme : y.R[z ] est successeur de y sur un chemin de valeur minimale de y ` a z. 3. Si G na pas de circuit absorbant alors, pour tout couple (y,z ) + , tout chemin de valeur minimale de y ` a z est el ementaire On d eduit de ces trois lemmes que : si G na pas de circuit absorbant, les tables de routage R permettent dobtenir les trac es de chemins de valeur minimale entre tout couple de sommets. Cas o` u G a des circuits absorbants Cette situation peut etre d etect ee ` a lexamen du graphe Result ` a lissue de lalgorithme. En eet, lexistence dun circuit absorbant passant par un sommet x se manifestera par la propri et e: Result.v(x,x) < 0 Si tel est le cas, les valeurs des arcs de Result ne peuvent etre interpr et ees comme des valeurs minima, puisque les valeurs des chemins ne sont pas n ecessairement born ees inf erieurement. Toutefois, les fonctions de routage permettent dobtenir le trac e de circuits absorbants, et donc den eliminer. En eet, soit x X tel que Result.v(x,x) < 0. La suite d enie par x1 = x.R[x],x2 = x1 .R[x], . . . ,xj = xj 1 .R[x] comporte une r ep etition, laquelle correspond ` a un circuit absorbant. Exemple :
0 1 1 2 -2 3

-2

Sur une mise en uvre matricielle (y.R[z ] = R[y,z ]) on obtient, par applications successive de 1 , 2 , 3 (` a gauche : matrice des valeurs, ` a droite matrice R) :
c IFSIC 2004

8.7. Valeurs optimales de tout sommet ` a tout sommet

127

Algorithme WARSHALL-FLOYD
TABLE[SOMMET,SOMMET] SOMMET::R ; GRAPHE warshall floyd(GRAPHE G) cest local SOMMET x, y, z ; ENS[SOMMET] X ; REEL vy, vz, w ;

d ebut
Result G ; X G.lst som ; initroutage ; pourtout x de X pourtout y de X vy Result.v(y,x) ; si vy = nil alors pourtout z de X vz Result.v(x,z) ; si vz = nil alors w Result.v(y,z) ; si w = nil alors si vy + vz < w alors w vy + vz ; maj routage(y,z,x)

fsi sinon w vy + vz ; maj routage(y,z,x) fsi ;


Result.modif val(y,z,w)

fsi fpourtout fsi fpourtout fpourtout n avec : initroutage : z X, y X : y.R[z ] majroutage(y,z,x) : y.R[z ]y.R[x] nil si (y,z ) z si (y,z )

c IFSIC 2004

128 1 1 2 3 2 1 -2 2 1 -2 2 1 -2 3 -1 -2 -4 3 -2 0 1 1 2 3 1 2 3 3 -2 0 1 1 2 3 1 2 3 1 2 2 2 2 2 2 2 3 2 3 2 2 2 2 3 1 -1 -2 -4 2 -3 -4 -6 3 -5 -6 -8 1 2 3 2 2 2 3 2 3 2 3 2 1 3 3 1 1 1 2 3 3 3 1 1

Chemins de valeur optimale

1 2 3

1 2 3

do` u les suites (` a partir de 1, 2 et enn 3) : 1, R[1,1]=2, R[2,1]=3, R[3,1]=2 circuit 2,3,2 2, R[2,2]=3, R[3,2]=2 circuit 2,3,2 3, R[3,3]=2, R[2,3]=3 circuit 3,2,3 Le circuit absorbant 2,3,2 (valeur -4) est d etect e, mais pas le circuit 1,2,3,1 (valeur -1).

8.8

Alg` ebres de chemins : transformations dalgorithmes

Au paragraphe pr ec edent, nous avons mis en evidence la possibilit e de d eduction dun algorithme de chemin de valeur minimale ` a partir dun algorithme dexistence de chemin, gr ace ` a la transformation : ({vrai,faux}, ,) (R {+}, min ,+) On peut d egager une structure abstraite, appel ee dio de ou encore semi-anneau, ` a partir de laquelle dautres transformations pourront etre d eduites.
c IFSIC 2004

8.8. Alg` ebres de chemins : transformations dalgorithmes

129

D enition 8.25 On appelle dio de un triplet (S, ,) o` u S est en ensemble, muni des deux lois de composition internes et , et satisfaisant aux axiomes suivants : A1 est associative, commutative et poss` ede un el ement neutre . A2 est associative et poss` ede un el ement neutre e. A3 est distributive ` a droite et ` a gauche par rapport ` a . A4 est el ement absorbant de . La structure (E, , ) introduite au paragraphe 8.1 rentre dans ce cadre. En eet, la relation dordre d enit une loi , de la mani` ere suivante:

w1 w2 = w1 si w1 w2 si w2

w2 w1

Les axiomes A1 ` a A4 sont alors v eri es sur (E, ,). pour A1: La v erication de lassociativit e et de la commutativit e de sont imm ediates est maximum pour , donc w = w pour A2: les hypoth` eses sur sont identiques w1 w2 si w2 w3 compatibilt e avec w1 (w2 w3 ) = pour A3: w1 w3 si w3 < w2 Dautre part,

w2

w3 w1 w2

w1 w3

(w1 w2 ) (w1 w3 ) = w1 w2 et de m eme

w3

w2 w1 w3

w1 w2

(w1 w2 ) (w1 w3 ) = w1 w3 Dans les deux cas, on a donc : w1 (w2 w3 ) = (w1 w2 ) (w1 w3 ) On v erie de m eme la distributivit e` a droite. Par contre, la structure de dio de (E, ,) ne rentre pas toujours dans le cadre de la structure d enie au 8.1: on ne peut pas toujours d eduire une relation dordre total de la loi de composition . Ceci est illustr e notamment par les exemples 8 et 9 ci-apr` es. La structure de dio de est donc plus abstraite, mais aussi plus riche - puisquelle permet de rendre compte de situations plus nombreuses - que celle densemble totalement ordonn e.
c IFSIC 2004

130

Chemins de valeur optimale

Dans la structure de dio de, la notion de circuit absorbant se g en eralise comme suit : un circuit est dit absorbant si sa valeur v v erie : ve=e En fonction du choix du dio de (S, ,) on peut interpr eter concr` etement la valeur (dans S) v (x,y ) et la valeur (dans S) des expressions : x X,y X : (x,y ) =
{uX |u=[xy ]}

v (u) =
{uX |u=[xy ]v (u)=}

v (u)

o` u, si u = (x1 , . . . ,xp ), on a pos e v (u) =


j =1,...,p1

v (xj ,xj +1 )

Exemples 1) Existence dau moins un chemin S {faux,vrai}; ; ; = faux; e = vrai v (x,y ) = si(x,y ) alors vrai sinon faux; s S,s vrai = vrai donc il ny a pas de circuit absorbant ; (x,y ) = vrai si et seulement si il existe un chemin de x ` a y dans G. 2) Chemin de valeur minimale S = R {+}; = min; = +; = +; e = 0; v (x,y ) = si(x,y ) alors valeur num erique de larc sinon + Un circuit de valeur v telle que min(v,0) = 0 (cest ` a dire v < 0) est absorbant. (x,y ) = valeur minimale des chemins de x ` a y (sil ny a pas de circuit absorbant) 3) chemin de valeur maximale S = R {}; = max; = +; = ; e = 0; v (x,y ) = si (x,y ) alors valeur num erique de larc sinon Un circuit de valeur v telle que max(v,0) = 0 (cest ` a dire v > 0) est absorbant. (x,y ) = valeur maximale des chemins de x a ` y (sil ny a pas de circuit absorbant). 4) Chemin de abilit e maximale S = [0,1]; = max; = ; = 0; e = 1;
c IFSIC 2004

8.8. Alg` ebres de chemins : transformations dalgorithmes v (x,y ) = si (x,y ) alors abilit e de larc sinon 0 Toute valeur p S v erie max(p,1) = 1 donc il ny a pas de circuit absorbant. (x,y ) = abilit e maximale des chemins de x ` a y. 5) Chemin de capacit e maximale S = R+ {+}; = max; = min; = 0; e = +; v (x,y ) = si (x,y ) alors capacit e de larc sinon 0 Toute valeur c S v erie max(c, + ) = + donc il ny a pas de circuit absorbant. (x,y ) = capacit e maximale des chemins de x ` a y. 6) Chemin de abilit e minimale S = [0,1] {}( [0,1]); = min sur [0, 1], prolong ee par x S : x = x; = sur [0, 1], prolong ee par x S : x = ; e = 1; v (x,y ) = si (x,y ) alors abilit e de larc sinon

131

Toute valeur p S,p = 1,p = v erie p e = min(p,1) = p donc tout circuit de abilit e< 1 est absorbant. (x,y ) = abilit e minimale des chemins de x ` a y (sil ny a pas de circuit absorbant). 7) Chemin de capacit e minimale S = R+ {+} {}( R+ {+}); = min sur R+ {+}, prolong ee par x S : x = x; = min sur R+ {+}, prolong ee parx S : x = ; e = +; v (x,y ) = si (x,y ) alors capacit e de larc sinon Toute valeur p S,p = +,p = , v erie p e = min(p, + ) = p donc tout circuit de 2 capacit e < est absorbant. (toutefois, p p e = p e, o` u p2 = p p, donc un circuit nest absorbant quune fois). (x,y ) = capacit e minimale des chemins de x ` a y (sil ny a pas de circuit absorbant).
c IFSIC 2004

132 8) D enombrement des chemins S = N; = +; = ; = 0; e = 1 v (x,y ) = si (x,y ) alors 1 sinon 0

Chemins de valeur optimale

Toute valeur n N v erie n + 1 = 1 donc tout circuit est absorbant. (x,y ) = nombre de chemins distincts de x ` a y (sil ny a pas de circuit). 9) Enum eration des chemins el ementaires (exemple dicile) : + Soit X lensemble de toutes les suites sans r ep etition d el ements de X , ayant au moins un el ement. Notons n = |X |. S est alors lensemble constitu e des n(n 1) el ements sx,y , x X, y + X, x = y , o` u sx,y est un ensemble d el ements de X de la forme [x y ], des n el ements sx = {[x]} (x X ) et de l el ement e = xX sx (identi e` a X ). On a donc |S | = n2 + 1. Notons quon peut avoir sx,y = pour certains couples (x,y ), x = y . En outre, = ; = multiplication latine ; = La multiplication latine est d enie comme suit : s S : s = s = ( = est donc l el ement absorbant de S ). x, y, z, t, z = t : sx,z st,y = . x, z : sx,z sz,x = x, y ,z , y = z : sx,y sz = x, y ,z , x = z : sz sx,y = x, y : sx sx,y = sx,y x, y : sx,y sy = sx,y x, y, z , x = y : sx,z sz,y = {u X |u = [x z y ],[x z ] sx,z ,[z y ] sz,y Exemple : si s1,4 = {[1,4],[1,2,4]} et s4,5 = {[4,5],[4,2,5],[4,3,5]} on a : s1,4 s4,5 = {[1,4,5],[1,4,2,5],[1,4,3,5],[1,2,4,5],[1,2,4,3,5]}. Il est facile de v erier que l el ement neutre de est e. La valuation du graphe est alors : v (x,y ) = si(x,y ) alors {[xy ]} sinon Par ailleurs, dapr` es la d enition de , la valeur de tout circuit est egale ` a , donc v erie e = e. Il ny a donc pas de circuit absorbant. Enn, (x,y ) = ensemble des chemins el ementaires de x ` ay Le lecteur int eress e trouvera, dans ([GM79], chapitre 3) dautres exemples et dint eressants d eveloppements sur les alg` ebres de chemin.
c IFSIC 2004

8.8. Alg` ebres de chemins : transformations dalgorithmes

133

Pour conclure, on peut se poser la question de savoir quels sont les algorithmes de cheminement optimal qui peuvent etre transform es, sur la base de la structure de dio de appropri ee, pour r esoudre les probl` emes correspondants. Sans entrer dans les d etails, il sav` ere que les algorithmes nutilisant pas une proc edure de s election dun el ement r ealisant un optimum peuvent etre directement adapt es, en utilisant les op erations (` a la place de +) et (` a la place de min), ainsi que (` a la place de +) et e (` a la place de 0). Ainsi, on peut adapter directement Ford, Bellmann-Kalaba, Ford Ordinal, Puissances, Warshall. Mais ce nest pas le cas de Dijkstra : en eet, cet algorithme n ecessite que la loi v erie : a, b : a b {a,b} (s election du meilleur el ement en attente). Cest bien le cas lorsque ou, ou min, ou max (exemples 1 ` a 7) mais ce nest plus le cas pour + ou (exemples 8 et 9). De plus, lorsque la loi a cette propi et e, la condition dapplication de lalgorithme de dijkstra sexprime par : (x,y ) : v (x,y ) e = e Elle est donc toujours v eri ee pour les exemples 1,4,5 ; v eri ee si v (x,y ) 0 pour lexemple 2 v (x,y ) 0 pour lexemple 3 v (x,y ) = 1 pour lexemple 6 v (x,y ) = + pour lexemple 7 (donc irr ealistes pour ces deux exemples) Pour illustrer la puissance de ces transformations dalgorithme, nous donnons un exemple dapplication de lalgorithme de Bellmann-Kalaba pour l enum eration des chemins el ementaires issus du sommet 1 vers chacun des autres sommets (exemple 9). On doit donc calculer : i, i = 1 : i =ensemble des chemins el ementaires de 1 ` a i. La relation de r ecurrence est ici : 1 = {[1]}
n

k, i : k = i
j =1

1 k v (j,i) j

1 5

La matrice du graphe est : 1 2 3 1 {[1]} {[1,2]} {[1,3]} 2 {[2,3]} 3 4 {[4,3]} 5

4 {[2,4]} {[3,4]}

5 {[3,5]} {[4,5]}
c IFSIC 2004

134

Chemins de valeur optimale

Lex ecution de lalgorithme donne alors : 1 {[1]} {[1]} {[1]} 2 {[1,2]} {[1,2]} {[1,2]} 3 {[1,3]} {[1,3]} [1,2,3]} {[1,3]} [1,2,3] [1,2,4,3]} {[1,3]} [1,2,3] [1,2,4,3]} 4 {[1,2,4] [1,3,4]} {[1,2,4] [1,3,4] [1,2,3,4]} {[1,2,4] [1,3,4] [1,2,3,4]} 5 {[1,3,5]} {[1,3,5] [1,2,3,5] [1,2,4,5] [1,3,4,5]} {[1,3,5] [1,2,3,5] [1,2,4,5] [1,3,4,5] [1,2,4,3,5] [1,2,3,4,5]} {[1,3,5] [1,2,3,5] [1,2,4,5] [1,3,4,5] [1,2,4,3,5] [1,2,3,4,5]}

{[1]}

{[1,2]}

{[1]}

{[1,2]}

{[1,3]} [1,2,3] [1,2,4,3]}

{[1,2,4] [1,3,4] [1,2,3,4]}

stabilit e atteinte.

c IFSIC 2004

Chapitre 9

Probl` emes dordonnancement


9.1 Nature des probl` emes

Un projet peut etre d ecompos e en n t aches A1 ,A2 , . . . ,An telles que : Chaque t ache est indivisible ache est munie dune dur ee connue : di = dur ee de Ai Chaque t Chaque t ache est soumise ` a un ensemble de contraintes temporelles qui peuvent toujours sexprimer en fonction de contraintes sur la date de d ebut dex ecution de la t ache Ces contraintes sont de deux types : a) Contraintes d eterministes (ou potentiel) : La date de d ebut ti de la t ache Ai intervient au plus t ot (resp. au plus tard) ` a une date donn ee a priori ou li ee ` a la r ealisation dautres t aches du projet. Exemples . la t ache Ai ne peut pas commencer avant la date T : ti T ache Aj ne peut pas commencer avant lach` evement de la t ache Ai : . la t tj ti + di soit encore : tj ti di Lensemble des contraintes potentiel d enit un ensemble conjonctif de contraintes, qui sexprime sous la forme dun syst` eme simultan e din equations du premier degr e de la forme tj ti ai,j (i,j {0, . . . ,n + 1}) Par convention, t0 = 0 : date de d ebut du projet tn+1 : date de n dex ecution du projet (lorsque toutes les t aches sont termin ees) = dur ee totale dex ecution du projet b) Contraintes non d eterministes (ou disjonctives) : Elles expriment des incompatibilit es entre sous-ensembles de lensemble des t aches, mais laissent un degr e de choix quant ` a leur s equencement : chaque contrainte est exprim ee par un syst` eme din equations, dinconnues (ti )0in+1 li ees par des ou (une des in equations du syst` eme doit etre v eri ee)
c IFSIC 2004

136

Probl` emes dordonnancement

Exemples . la t ache Ai et la t ache Aj doivent etre totalement disjointes : ti tj + dj ou tj ti + di aches Ai ,Aj ,Ak ,A ne peut etre eectu ee quapr` es la date T : . une des 4 t ti T ou tj T ou tk T ou t T D enition 9.1 On appelle ordonnancement compatible (sous-entendu avec les contraintes) un vecteur de Nn+2 : T = (t0 ,t1 , . . . ,tn ,tn+1 ), o` u: ti = date de d ebut dex ecution de la t ache Ai (i = 1, . . . ,n) t0 et tn+1 respectivement dates de d ebut et de n dex ecution du projet, respectant les contraintes de chacune des t aches. Probl` eme 9.1 Parmi tous les ordonnancements compatibles avec un ensemble de t aches et de contraintes donn ees, en trouver un de dur ee minimale, cest ` a dire tel que tn+1 soit minimum. Probl` eme 9.2 Parmi tous les ordonnancements compatibles avec un ensemble de t aches et de contraintes donn ees, en trouver un de dur ee donn ee, cest ` a dire tel que tn+1 = T donn ee. Dans la suite de ce chapitre, on ne sint eresse quaux contraintes d eterministes ; les autres types de contraintes n ecessitent lutilisation de techniques combinatoires, par exemple de recherche arborescente telles que les Proc edures de S eparation et Evaluation Progressives (P.S.E.P.).

9.2
9.2.1

Mod elisation ` a laide de graphe


graphe potentiel-t ache

On associe au probl` eme un graphe valu e, d eni de la mani` ere suivante : X = {x0 ,x1 , . . . ,xn ,xn+1 } o` u xi Ai (1 i n) x0 d ebut xn+1 n = ensemble des contraintes, au sens suivant : si tj ti ai,j est une contrainte, alors (xi ,xj ) avec la valeur ai,j Exemples de contraintes et darc correspondant Contrainte au plus t ot sur Aj : tj ti ai,j (ai,j 0) xi xj
c IFSIC 2004

ai,j

9.2.

Mod elisation ` a laide de graphe

137

Contrainte au plus tard sur Ai : ti tj ai,j (ai,j 0), cest-` a-dire : tj ti ai,j xi xj Contraintes implicites relatives au d ebut : i(1 i n + 1) : ti 0 (x0 ,xi ) , de valeur 0 Contraintes implicites relatives ` a la n : i(1 i n) : tn+1 ti + di (xi ,xn+1 ) , de valeur di Parmi toutes ces contraintes, certaines peuvent etre redondantes, cest-` a-dire cons equences dautres contraintes, de mani` ere plus ou moins imm ediate; ceci sera plus particuli` erement vu au 9.6 de ce chapitre
ai,j

9.2.2

Exemple

Soit un projet compos e de 6 t aches : t ache A1 A2 A3 A4 A5 A6 dur ee 10 12 6 20 12 7 avec les contraintes : A1 : peut commencer d` es le d ebut des travaux. A2 : commence au plus t ot 7 u.t. apr` es le d ebut de A1 . A3 : encha nement sans d elai avec A2 . A4 : commence au plus t ot 3 u.t. apr` es lach` evement de A5 ; la seconde moiti e de A4 commence au plus t ot 13 u.t. apr` es lach` evement de A3 . A5 : commence au plus t ot lorsque les 3/4 de A2 sont achev es, au plus tard 6 u.t. apr` es lach` evement de A2 et au plus t ot 3 u.t. apr` es lach` evement de A6 . A6 : commence au plus t ot 20 u.t. apr` es le d ebut des travaux. Liste des in equations traduisant ces contraintes : t1 0; t2 t1 7; t3 t2 + 12 et t3 t2 + 12 t3 t2 12 et t2 t3 12; t4 t5 15; t4 + t5 t2 + 1 20 t3 + 19 t4 t3 9; 2

3 12 t5 t2 9; 4

t5 t2 + 18 t2 t5 18; t5 t6 10;
c IFSIC 2004

138 t6 20 et les contraintes implicites : ti 0 (i = 2,3,4,5); t7 ti di (i = 1, . . . ,6)

Probl` emes dordonnancement

Dans cet exemple, les contraintes (x0 ,xi ),i = 2,3,4,5 ainsi que les contraintes (xi ,x7 ),i = 2,3,5,6 sont evidemment superues (cf 9.6 ci-apr` es).
10 12

2
7 -12 9 -18

3
9 20

0
20

5
10

15

6
Fig. 9.1 graphe potentiel-t ache

9.3

Ordonnancements particuliers; chemin critique; marges.

Th eor` eme 9.2 Soit = (0 ,1 , . . . ,n ,n+1 ) lordonnancement d eni par : 0 = 0 i = valeur maximale des chemins de x0 ` a xi (i = 1, . . . ,n + 1). Cest un ordonnancement compatible, v eriant : i ti (i = 0, . . . ,n + 1) quelque soit lordonnancement compatible T = (t0 = 0,t1 , . . . ,tn ,tn+1 ). En particulier, il est de dur ee minimale. D emonstration Dapr` es le th eor` eme 8.7, appliqu e au probl` eme des valeurs additives maximales, les attributs i (i = 0, . . . ,n + 1) constituent la solution minimale du syst` eme d equations: xi = 0 si i = 0 maxxj 1 (xi ) (xj + v (j,i))si i = 2, . . . ,n
c IFSIC 2004

9.3.

Ordonnancements particuliers; chemin critique; marges.

139

Il en r esulte, dune part : j i ai,j sur tout arc (xi ,xj ), donc lordonnancement est compatible. Dautre part, tout ordonnancement compatible T = (t0 , . . . , tn+1 ) est aussi solution de ce syst` eme, et donc : i (1 i n), i ti En particulier, n+1 tn+1 . 2 Lordonnancement sappelle ordonnancement au plus t ot car i est la date de d ebut au plus t ot compatible avec les contraintes pour la t ache Ai . D enition 9.3 Un chemin de valeur maximale entre x0 (d ebut) et xn+1 (n) sappelle chemin critique, et les sommets qui y appartiennent t aches critiques. En eet, si une t ache situ ee sur ce chemin est retard ee alors la date nale du projet est retard ee. Soit maintenant une date nale F x ee ` a priori. On cherche les dates au plus tard, i , dun ordonnancement compatible permettant lach` evement des travaux ` a la date x ee. Th eor` eme 9.4 Si F < n+1 , il nexiste pas dordonnancement compatible se terminant ` a la date F . Si F n+1 , alors lordonnancement = (0 , . . . ,n+1 ) d eni par 0 = 0 i = F i (i = 1, . . . ,n + 1). o` u i = valeur maximale des chemins de xi ` a xn+1 , r epond ` a la question. D emonstration Si F < n+1 , le r esultat est evident puisque n+1 est la date au plus t ot dach` evement des travaux. Supposons donc F n+1 . Les probl` emes de cheminement dans G aboutissant au sommet xn+1 se ram` enent aux probl` emes de cheminement issus du sommet xn+1 dans le graphe transpos e t G . Par cons equent, dapr` es le th eor` eme 8.7, les attributs i (i = 0, . . . ,n + 1) constituent la solution minimale du syst` eme d equations: xi = 0 si i = n + 1 maxxj (xi ) (xj + v (i,j ))si i = 2, . . . ,n

Il en r esulte, dune part : i j ai,j sur tout arc (xi ,xj ), cest-` a-dire, dapr` es la d enition des i : j i ai,j sur tout arc (xi ,xj ), donc lordonnancement est compatible. Dautre part, pour tout ordonnancement compatible T = (t0 . . . tn+1 ), avec tn+1 = F , les valeurs i = F ti sont aussi solution de ce syst` eme, et donc : i (1 i n), i i do` u: i (1 i n), i ti 2
c IFSIC 2004

140

Probl` emes dordonnancement

D enition 9.5 Soit lordonnancement au plus t ot et lordonnancement au plus tard relatif ` a une date nale F n+1 . On appelle marge totale de la t ache Ai (relativement ` a F ) la di erence mi = i i . Cest le retard maximum que peut prendre lach` evement de Ai sans compromettre la date de r ealisation du projet pr evue n+1 = F . Remarque. Si la date dach` evement de Ai est retard ee dune dur ee mi , ce retard peut modier lordonnancement des t aches ult erieures sur tout chemin de xi ` a xn+1 . Les marges totales des t aches ne sont donc pas ind ependantes. Il vaut donc mieux parler de marge par chemin traduisant le retard global tel que la somme des retards des t aches situ ees sur ce chemin reste inf erieure ` a ce retard global sous peine de retarder la date n+1 . Pour un chemin u, m(u) = maxxi u (mi ) D enition 9.6 Soit T = (t0 , . . . ,tn+1 ) un ordonnancement compatible donn e. La marge libre de Ai , relativement ` a T , est d enie par : i =
xj (xi )

min (tj ti ai,j )

Cest le retard maximum que peut prendre lach` evement de Ai sans compromettre la date de d ebut pr evue pour les autres t aches.

9.4

Exemple

Nous traitons compl` etement lexemple donn e au 9.2 (gure 9.1) t ache i | F = 65 mi | F = 65 i () A1 0 51 14 14 5 A2 12 44 21 9 0 A3 24 32 33 9 0 A4 45 20 45 0 0 A5 30 35 30 0 0 x0 x0 x0 x0 x1 x1 x6 x6 A6 20 45 20 0 0 x2 x2 x5 x5 x3 x5 x2 x4 A7 65 0 65 / / x4 x7 x4 x7 x3 x4 x7 x7 = = = = 14 14 9 0 (chemin critique)

Marges totales par chemin :

9.5

Choix des algorithmes de r esolution

La recherche des ordonnancements au plus t ot ou au plus tard relatif ` a une date F n ecessite le calcul des valeurs maximales des chemins issus du sommet x0 ou aboutissant au sommet xn+1 . Au chapitre pr ec edent, nous avons d ecrit quelques algorithmes r esolvant ces
c IFSIC 2004

9.5.

Choix des algorithmes de r esolution

141

probl` emes. Nous allons donner quelques indications sur le choix ` a eectuer, compte-tenu de la nature des contraintes. 1er cas. Il ny a que des contraintes au plus t ot. Dans ce cas, le graphe obtenu ne doit pas comporter de circuit, sans quoi il y aurait des contraintes incompatibles : il ny aurait alors pas dordonnancement compatible, puisque tout circuit est un circuit absorbant (les arcs etant tous de valeur positive ou nulle). Comme par ailleurs le sommet x0 est racine, et le sommet xn+1 anti-racine (racine du graphe transpos e), lalgorithme Ordinal-racine est le mieux adapt e: pour lordonnancement au plus t ot : avec x0 comme sommet de d epart, il sut de remplacer min par max dans le calcul dune marque. epart, il sut de pour lordonnancement au plus tard : avec xn+1 comme sommet de d remplacer min par max dans le calcul dune marque et de permuter les op erations lst pred et lst succ (puisque lon cherche les chemins de valeur maximale issus de xn+1 dans le graphe transpos e). Remarque : Si x. est la valeur maximale des chemins de x ` a xn+1 , ces valeurs sont caract eris ees, dapr` es le th eor` eme 9.4, par : x X : x. = max (y. + v (x,y ))
y (x)

La date au plus tard de x, relative ` a la date nale T , est donn ee par x. = T x. (th eor` eme 9.4). Par cons equent, ces dates sont caract eris ees par les relations : x X \ {xn+1 } : x. = min y. v (x,y ) , xn+1 . = T
y [x]

On peut donc obtenir directement ces dates en adaptant lalgorithme Ordinal-racine comme suit : sommet de d epart : xn+1 ; initialiser xn+1 . ` a T; permuter les op erations lst pred et lst succ ; marquer un nouveau sommet x par : x. min(y. v (x,y ),G.lst succ(x)) eme cas. Les contraintes sont quelconques. Le graphe poss` 2` ede alors des circuits, et les arcs ont des valeurs de signe quelconque. Sil ny a pas dincompatibilit e dans les contraintes, il ne doit pas y avoir de circuit absorbant (valeur > 0). On peut donc envisager lalgorithme dexploration en profondeur de Ford (algorithme 8.3.2) ou bien celui de Bellmann-Kalaba (8.4.3). Les adaptations ` a apporter sont les m emes que dans le cas pr ec edent : remplacer min par max. Il existe cependant une technique sp ecique, qui en g en eral sav` ere plus ecace (heuristique). Ceci est bas e sur la remarque suivante: si on enl` eve du graphe tous les arcs de valeur 0, le graphe partiel obtenu doit etre sans circuit (autrement, il y aurait des contraintes incompatibles: voir cas pr ec edent). On peut toutefois conserver les arcs issus du sommet x0 ainsi que ceux aboutissant au sommet xn+1 , car ces arcs ne peuvent pas appartenir ` a des circuits (x0 est point dentr ee, et xn+1 est point de sortie). Cette remarque incite ` a proc eder en deux phases. Premi` ere phase Ignorer tous les arcs non issus de x0 ou aboutissant ` a xn+1 , qui sont de valeur 0.
c IFSIC 2004

142

Probl` emes dordonnancement

Calculer les valeurs i provisoires, en utilisant lalgorithme Ordinal-racine (si cet algorithme met en evidence des circuits, alors il y a des contraintes incompatibles). Deuxi` eme phase : ajustements R eintroduire un par un chacun des arcs que lon a ignor es lors de la premi` ere phase. Soit (xi ,xj ,aij ) un tel arc. On teste alors la validit e de la contrainte correspondant ` a cet arc: si j < i + aij alors j i + aij . Pour tout sommet xj dont lattribut a ainsi et e augment e, il faut recommencer le test sur tous les arcs issus de xj . Ce proc ed e correspond en fait ` a une exploration en profondeur de la descendance de xj , mais avec arr et de la descente ` a partir de sommets non modi es. Lint er et de cette technique vient de ce que, en g en eral, la seconde phase ne provoque que peu de modications, car les mises ` a jour de la descendance des sommets modi es s eteignent assez vite. Des illustrations de cette m ethode seront vues en TD. Pour le calcul dun ordonnancement au plus tard, tout ce qui pr ec` ede reste valable, en travaillant dans le graphe transpos e (cest-` a-dire en consid erant xn+1 comme sommet de d epart, et en permutant les acc` es successeurs et pr ed ecesseurs).

9.6

Elimination de contraintes redondantes

D enition 9.7 Une contrainte est dite redondante si elle est impliqu ee par un ensemble de contraintes dont elle ne fait pas partie. Cette situation se produit dans le cas suivant : la contrainte tj ti ai,j est redondante si et seulement si il existe, dans G, un chemin (di erent de larc (i,j )) de xi ` a xj , et de valeur v ai,j .
i i a i,j 1

...

k j

En eet, le long dun tel chemin [i,i1 , . . . ,ik ,j ] on aura : ti1 ti ai,i1 . . = tj ti ai,i1 + . . . + aik ,i ai,j . tj tik aik ,i Nous allons ci-dessous examiner dans quels cas certaines contraintes peuvent etre per cues comme redondantes au seul vu des donn ees du probl` eme, cest-` a-dire sans le secours dun algorithme de cheminement (qui pourrait sav erer plus co uteux que le gain obtenu par la suppression eventuelle de contraintes). Il sagit essentiellement des contraintes implicites, cest ` a dire :
c IFSIC 2004

9.6.

Elimination de contraintes redondantes i i ti 0 tn+1 ti di (li ees au d ebut du projet) (li ees ` a la n du projet)

143

contraintes de d ebut : Sil existe un arc (xj ,xi ) de valeur aj,i 0 et j = 0, alors ti 0 est redondante. En eet, on a : ti tj + aj,i . contraintes de n : Sil existe un arc (xi ,xj ) de valeur ai,j di dj et j = n +1 alors tn+1 ti di est redondante. En eet, on a : tj ti + ai,j et tn+1 tj + dj ce qui implique : tn+1 ti + ai,j + dj ti + di

c IFSIC 2004

144

Probl` emes dordonnancement

c IFSIC 2004

Chapitre 10

Arbres ; arbre partiel de poids optimum


10.1 D enition et propri et es caract eristiques

Soit G = (X,U ) un graphe non orient e, cest ` a dire pour lequel U est un ensemble de couples non ordonn es, appel es ar etes. Dans un graphe non orient e, la terminologie suivante est utilis ee : un chemin devient une cha ne un circuit devient un cycle. Les successeurs et pr ed ecesseurs dun sommet deviennent les voisins, et le nombre dar etes adjacentes ` a un sommet sappelle le degr e du sommet. Enn, la relation binaire sur X : xRy il existe une cha ne de x ` a y ou x = y est une relation d equivalence, dont les classes sappellent composantes connexes de G. Un graphe connexe est un graphe ne poss edant quune seule composante connexe. Cette terminologie etablie, nous posons les d enitions suivantes : D enition 10.1 Un arbre est un graphe non orient e, connexe et sans cycle. Nous allons etablir un certain nombre de d enitions equivalentes, gr ace aux deux lemmes suivants : Lemme 10.2 Un graphe connexe de n sommets poss` ede au moins n 1 ar etes. D emonstration. Soit G = (X,U ), ayant n sommets, m ar etes et p composantes connexes, et posons (G) = m n + p (nombre cyclomatique de G). D enissons G en enrichissant G par une nouvelle ar ete w = (x,y ). Si x et y appartiennent ` a la m eme composante connexe, on a
c IFSIC 2004

146 alors :

Arbres ; arbre partiel de poids optimum

n = n, m = m + 1, p = p do` u (G ) = (G) + 1 Dans le cas contraire, les composantes connexes (distinctes) de x et y fusionnent en une seule, do` u n = n, m = m + 1, p = p 1 et (G ) = (G) Ladjonction de toute nouvelle ar ete ` a un graphe ne peut donc pas diminuer la valeur de (G). Or, pour un graphe ` a n sommets et 0 ar ete, on a p = n do` u (G) = 0. On en d eduit que pour tout graphe, (G) 0. Si G est connexe, on a p = 1 do` u m n 1. 2 Lemme 10.3 Un graphe sans cycle de n sommets poss` ede au plus n 1 ar etes. D emonstration. Soient u1 ,u2 , . . . ,um les ar etes de G, num erot ees de mani` ere quelconque. Consid erons la suite de graphes G0 < G1 < . . . < Gm1 < Gm avec G0 = (X,); Gj = (X,Uj ) et Uj = Uj 1 {uj } et donc Gm = G Ces graphes sont sans cycle, donc on passe de Gj ` a Gj +1 en ajoutant ` a Gj lar ete uj +1 entre deux sommets non reli es par une cha ne dans Gj . Comme dans la d emonstration du lemme pr ec edent, on en d eduit : (Gj ) = (Gj +1 ), do` u 0 = (G0 ) = (Gm ). Par cons equent, m = n p et comme p 1, on a m n 1. 2 Th eor` eme 10.4 Les propri et es suivantes, caract erisant un arbre, sont equivalentes : i) G = (X,U ) est connexe et sans cycle. ii) Tout couple de sommets est reli e par une cha ne unique de G. iii) G est sans cycle et ladjonction de toute nouvelle ar ete cr ee un cycle unique. iv) G est sans cycle et poss` ede n 1 ar etes. v) G est connexe et la suppression de toute ar ete de G cr ee deux composantes connexes, telles que toute autre ar ete de G est incluse dans lune ou lautre de ces composantes. vi) G est connexe et poss` ede n 1 ar etes. D emonstration i) = ii) Tout couple de sommets est reli e par une cha ne (connexit e), et si deux cha nes distinctes les reliaient, leur r eunion cr eerait un cycle.
c IFSIC 2004

10.2. Arbres partiels dans un graphe non orient e valu e

147

ii) = iii) Si G avait un cycle, deux sommets de ce cycle seraient reli es par deux cha nes distinctes ; ladjonction dune nouvelle ar ete entre deux sommets x et y cr ee un cycle avec lunique cha ne les reliant. iii) = iv) Puisque ladjonction de toute nouvelle ar ete cr ee un cycle, G est connexe donc poss` ede au moins n 1 ar etes (lemme 10.2). Comme il est sans cycle, il a au plus n-1 ar etes (lemme 10.3). iv) = v) Si G n etait pas connexe, on pourrait lui ajouter une nouvelle ar ete sans cr eer de cycle, ce qui donnerait un graphe sans cycle ` a n ar etes, do` u une contradiction (lemme 10.3). La suppression dune ar ete u laisse un graphe partiel ` a n 2 ar etes, donc non connexe ; de plus, ce graphe partiel poss` ede deux composantes connexes C et X \ C sans quoi G ne serait pas connexe. Enn, si v U reliant C et X \ C , G poss` ede un cycle passant par les extr emit es de u et celles de v . v) = vi) G poss` ede au moins n 1 ar etes (lemme 10.2) ; G poss` ede au plus n 1 ar etes sinon il aurait un cycle (lemme 10.3) et la suppression dune ar ete de ce cycle ne romprait pas la connexit e. vi) = i) Si G avait un cycle, la suppression dune ar ete de ce cycle laisserait un graphe connexe, donc ayant au moins n 1 ar etes, ce qui contredit lhypoth` ese sur le nombre dar etes de G. 2 Proposition 10.5 Tout arbre poss` ede au moins deux sommets de degr e 1 (appel es sommets pendants). D emonstration Un arbre poss` ede au moins 1 sommet pendant, sans quoi il aurait un cycle. Dautre part, si un arbre ayant n sommets et n 1 ar etes ( n 4) poss edait un seul sommet pendant, le sous-graphe engendr e par la suppression de ce sommet poss` ederait au plus 1 sommet pendant, n 1 sommets et n 2 ar etes. En r ep etant le proc ed e, on aboutirait n ecessairement ` a un sous-graphe ayant 3 sommets, 2 ar etes donc 2 sommets pendants, ce qui est une contradiction. 2

10.2

Arbres partiels dans un graphe non orient e valu e

Consid erons le probl` eme pratique suivant, qui se rencontre dans de nombreux domaines : soit un ensemble de sites {X1 ,X2 , . . . ,Xn }. On souhaite les relier entre eux, de telle sorte que le r eseau ainsi constitu e soit : 1. connexe (tout site est reli e, eventuellement via dautres sites, ` a tout autre site) 2. sans liaison redondante : une seule cha ne sut, de tout site ` a tout site ; ceci conduit ` a chercher un r eseau sans cycle 3. de co ut minimum, sachant qu` a chaque liaison directe bilat erale (Xi ,Xj ) est associ ee un co ut wi,j . Dapr` es les r esultats du th eor` eme 10.4, il sagit donc de construire un arbre sur les n sommets donn es, celui-ci etant de poids minimum parmi tous les arbres possibles (il y en a a priori
n1 n(n1) 2

. Le poids dun arbre est alors egal, par d enition, ` a la somme des valeurs des

c IFSIC 2004

148

Arbres ; arbre partiel de poids optimum

n 1 ar etes qui en font partie. Dautre part, on peut toujours introduire comme contrainte suppl ementaire linterdiction a priori de certaines ar etes : il sut de les aecter dune valeur +. On obtient nalement le probl` eme de d etermination dun arbre partiel de poids optimum : Probl` eme 10.1 Etant donn e un graphe G = (X,U,w) valu e non orient e et connexe, d eterminer un arbre partiel de G, de poids optimum. Remarque. Si G nest pas connexe, il sut de r esoudre le probl` eme s epar ement dans chaque composante connexe. Dans ce qui suit, nous supposerons pour xer les id ees que optimum signie minimum. Nous etablissons maintenant un th eor` eme caract eristique et sa version duale dun arbre partiel de poids minimum. Th eor` eme 10.6 Une condition n ecessaire et susante pour que A = (X,H ) soit un arbre de poids minimum de G = (X,U,w) est la suivante : u U \ H : le long du cycle (unique) form e par u avec des ar etes de H , on a v : w(v ) w(u). D emonstration. La condition est n ecessaire : sinon, en substituant u ` a v dans H , o` u w(v ) > w(u), on obtiendrait un nouvel arbre de poids strictement inf erieur. R eciproquement, consid erons un arbre A = (X,H ), de poids minimal. Si A = A, consid erons une ar ete u = (x,y ) telle que u H et u H (gure 10.1).

C* x

X/C *

u*

x H:

H *:

Fig. 10.1 arbres H et H Dune part, x et y sont reli es dans H par une cha ne , ne contenant pas u .
c IFSIC 2004

10.3. Algorithme de KRUSKAL

149

Dautre part, la suppression de u dans H d enit un graphe partiel ayant deux composantes connexes C et X \ C , et u est la seule ar ete de H reliant C ` a X \ C . Il en r esulte que relie x C ` a y X \ C sans passer par u , donc contient au moins une ar ete u = (x ,y ), avec x C ,y X \ C ,u H,u H . On en d eduit que : (1) w(u) w(u ) dapr` es lhypoth` ese sur A (2) la cha ne qui relie x et y dans H passe n ecessairement par u (puisque u est la seule ar ete de H reliant C ` a X \ C ) et donc, A etant minimal : w(u ) w(u) (condition n ecessaire). (1) et (2) montrent que : ` a chaque ar ete u H ,u H on peut faire correspondre une ar ete u H,u H , telle que w(u ) = w(u); par cons equent, H et H sont de m eme poids. 2 Nous etablissons maintenant une version duale du th eor` eme de caract erisation 10.6 : Th eor` eme 10.7 Une condition n ecessaire et susante pour que A = (X,H ) soit un arbre de poids minimum de G = (X,U,w) est la suivante : u H : pour toute ar ete v = u reliant Cu et X \ Cu (les deux composantes connexes cr e ees dans A par la suppression de u), on a : w(u) < w(v ). D emonstration. La condition est n ecessaire : en substituant v ( H ) ` a u dans H , o` u w(u) > w(v ), on obtiendrait un nouvel arbre, de poids strictement inf erieur. R eciproquement, soit A = (X,H ) un arbre satisfaisant les conditions du th eor` eme. Pour tout u H , consid erons le cycle u que u forme avec H . On a alors : v u , u relie Cu et X \ Cu et donc : w(v ) < w(u); par suite A satisfait les conditions du th eor` eme 10.6. 2

10.3
10.3.1

Algorithme de KRUSKAL
Principe

Du th eor` eme pr ec edent 10.6 d ecoule imm ediatement lalgorithme de Kruskal. Le principe est le suivant : on organise un parcours des ar etes dans lordre des valeurs croissantes. Initialement, le graphe partiel A est vide. On ajoute lar ete courante ` a A si et seulement si elle ne cr ee pas de cycle dans A, et on sarr ete en n de parcours, ou d` es quon a obtenu n 1 ar etes dans A. A lissue de lalgorithme, on a bien un arbre partiel de poids minimum : en eet, on a construit un graphe partiel sans cycle, ayant au moins n 1 ar etes (par hypoth` ese, le graphe G est connexe), et dautre part, toute ar ete u non retenue forme un cycle avec des ar etes situ ees avant elle dans la liste ordonn ee des ar etes, donc v erie la condition susante du th eor` eme 10.6. Pour faciliter le test : u ne cr ee pas de cycle, il sut de g erer les composantes connexes de A au fur et ` a mesure de sa construction. Une ar ete pourra etre ajout ee si et seulement si ses deux extr emit es nappartiennent pas ` a la m eme composante. Les composantes des deux extr emit es
c IFSIC 2004

150

Arbres ; arbre partiel de poids optimum

sont alors fusionn ees en une seule. Enn, le parcours des ar etes ordonn ees par valeurs croissantes sera g er e par les acc` es :
pp arete : --

pr e : non hors arete d elivre la premi` ere ar ete du parcours ordonn e (ar ete de valeur minimum) pp arete suiv : -- pr e : non hors arete d elivre la prochaine ar ete du parcours ordonn e hors arete : vrai si toutes les ar etes ont et e visit ees

A noter que G.vide G.hors arete.

10.3.2

Texte de lalgorithme

Il est donn e page 150 ALGORITHME DE KRUSKAL


ENS[SOMMET] SOMMET::C ; --

x.C = composante connexe de x

ARBRE kruskal(GRAPHESYM G): cest local AR^ eTE arcour; ENT k; -- compteur du nombre dar etes SOMMET x, y;

d ebut depuis pourtout x de G.lst som faire x.C {x} fpourtout ; Result creer ; k 0 ; arcour G.pp arete ; x arcour.ori ; y arcour.ext ; jusqua k n-1 ou x = nil faire si y x.C alors
Result.ajoutarete(x,y) ; x.C x.C y.C ; y.C x.C ; k k + 1 fsi ; arcour G.pp arete suiv ; x arcour.ori ; y arcour.ext fait ; si k < n-1 alors -- erreur : le graphe donne G nest pas connexe

c IFSIC 2004

10.3. Algorithme de KRUSKAL

151

10.3.3

Exemple

Consid erons le graphe non orient e, valu e, de la gure 10.2

2
8 4 16

5 12 9 7

3
14

5
11

Fig. 10.2 Exemple La liste ordonn ee des ar etes est donn ee dans le tableau de gauche : comp. connexes : {1} {2} {3} {4} {5} 2,5 4 * ar ete (2,5) c.c. {1} {2,5} {3} {4} 1,3 5 * ar ete (1,3) c.c. {1,3} {2,5} {4} 3,5 7 * ar ete (3,5) c.c. {1,2,3,5} {4} 2,3 8 1,2 8 1,5 9 4,5 11 * ar ete (4,5) c.c. {1,2,3,4,5} 1,4 12 3,4 14 2,4 16 poids : 4 + 5 + 7 + 11 = 27

10.3.4

Complexit e

Lorsque le parcours est organis e, on eectue au plus n 1 pas dit erations. Lalgorithme est donc en O(n) + complexit e maximale du tri des ar etes. Ce dernier terme d epend de la technique utilis ee : tri pr ealable (les meilleurs algorithmes connus sont en O(m log m)) recherche s equentielle dans la liste des ar etes, ` a chaque pas dit eration (complexit e totale n1 de k=1 O(m k ) puisqu` a l etape k il reste m k ar etes) organisation en tas de la liste des ar etes et r eorganisation ` a chaque etape : O(m log m) pour lorganisation initiale
c IFSIC 2004

152

Arbres ; arbre partiel de poids optimum O(log(m k )) pour la r eorganisation ` a l etape k (nombre dar etes restant = m k )
1 do` u, globalement : 0(m log m) + n etant pr epond erant k=1 0(log m), le terme 0(m log m) puisque m n 1 (graphe connexe).

10.4
10.4.1

Algorithme de PRIM
Principe de lalgorithme

Cest aussi un algorithme dextension, mais au lieu dengendrer des graphes partiels successifs, sans cycle, croissant jusqu` a la connexit e, on engendre des sous-arbres partiels croissants jusqu` a ce quon obtienne un arbre partiel. La propri et e maintenue invariante tout au long de lalgorithme est la suivante : 1 k n; Xk = {x1 , . . . ,xk }; Hk = {u1 , . . . ,uk1 }; Ak = (Xk ,Hk ) est un arbre couvrant Xk ; a Xk est Il existe un arbre A = (X,H ), couvrant X , de poids minimum, dont la restriction ` Ak (la restriction de A ` a Xk est le sous-graphe de A engendr e par les sommets de Xk ). La condition darr et est donc k = n. Si linvariant est v eri e` a larr et, An est bien un arbre couvrant de poids minimum ( evident). Initialement k = 1,X1 = {x1 } (sommet quelconque), H1 = . Les valeurs initiales satisfont linvariant ( evident). Il reste ` a etablir la progression, de mani` ere ` a maintenir linvariant. Le principe est tr` es simple : soit uk = (xi ,xk+1 ) (avec xi Xk et xk+1 Xk ) une ar ete sortante de Xk , de poids minimum parmi les ar etes sortantes. On pose: Hk+1 Hk {uk } Xk+1 Xk {xk+1 } Proposition 10.8 La progression maintient linvariant D emonstration Soit A = (X,H ) un arbre couvrant X , de poids minimal, dont la restriction ` a Xk est Ak (un tel arbre existe par hypoth` ese). premier cas : uk H . Dans ce cas, la restriction de A ` a Xk+1 est Ak+1 , et la propri et e est d emontr ee. deuxi` eme cas (voir gure 10.3) : uk H . Dans ce cas, il existe une cha ne de H , reliant xi ` a xk+1 et, puisque A est de poids minimum, on a : v : c(v ) c(uk ) . La cha ne contient une ar ete vk = (xa ,xb ) telle que xa Xk ,xb Xk ; puisque vk , on a c(vk ) c(uk ); et, dapr` es le crit` ere de s election de uk (ar ete sortante de Xk de poids minimum), on a aussi c(uk ) c(vk ); do` u c(vk ) = c(uk ). Examinons le graphe A = (X,H \ {vk } {uk }): il a n sommets et n 1 ar etes,
c IFSIC 2004

10.4. Algorithme de PRIM

153

Xk

xi

uk

xk+1

chane xa vk xb
Fig. 10.3 passage de Ak ` a Ak+1 es dans A par une cha ne il est connexe; en eet, soit s et t deux sommets de X ; ils sont reli . Si cette cha ne ne contient pas vk , alors cest une cha ne de A , par construction; si au contraire contient vk , on remplace cette derni` ere ar ete par la cha ne [xa , . . . ,xi ] uk [xk+1 , . . . ,xb ] qui est une cha ne de A par construction (gure 10.3). A est donc un arbre couvrant X , de poids c(A ) = c(A) c(vk ) + c(uk ) = c(A), et donc de poids minimal; il contient uk et donc, sa restriction ` a Xk+1 est bien Ak+1 . 2 Corollaire 10.9 A chaque etape, larbre partiel Ak = (Xk ,Hk ) est un arbre couvrant Xk , de poids minimum. Evident puisque cest un arbre couvrant Xk , par construction, et cest la restriction dun arbre de poids minimum dapr` es la proposition pr ec edente. 2

chane

10.4.2

Mise en uvre de lalgorithme

La s election dune nouvelle ar ete peut etre eectu ee selon une m ethode tout ` a fait analogue ` celle de lalgorithme de Dijkstra (chapitre 8.5). En eet, soit M lensemble des sommets d a ej` a couverts par le sous-arbre partiel. On d esigne par A lensemble des sommets limitrophes de M , cest ` a dire : z A z M et x M : (x,z ) U Pour tout z A, on pose : z = min w(x,z )
(x,z )U
xM

atteint pour un sommet d enot e pz , puis on s electionne y A tel que y = min z


z A

Lar ete (py ,y ) est alors ajout ee au sous-arbre partiel. A chaque pas dit eration, lensemble A est donc modi e de la mani` ere suivante : y est ot e de A, et les voisins de y , nappartenant pas
c IFSIC 2004

154

Arbres ; arbre partiel de poids optimum

` a M , sont soit introduits dans A pour de tels sommets z , on a alors z = w(y,z ) soit, sils appartenaient d ej` a` a A, leur marque est r e evalu ee par : z = min(z ,w(y,z )). De plus, comme pour lalgorithme de Dijkstra, lensemble des valeurs (z )z A peut etre g er e en tas.

10.4.3

Texte de lalgorithme

Le texte de lalgorithme, donn e ci-apr` es page 155, montre quen fait on retrouve lalgorithme de Dijkstra avec les di erences suivantes : les marques des sommets passent ` a 0 lorsque ceux-ci rentrent dans M ; les acc` es lst succ et valarc sont remplac es respectivement par lst voisins et valar ete, adapt es aux graphes non orient es; on m emorise, en plus, le sous-arbre partiel de poids minimum, A.

10.4.4

Exemple
ar ete s electionn ee (1,3) poids 5 (3,5) poids 7 (5,2) poids 4 (5,4) poids 11 nbar 1 2 3 4

on reprend le graphe de la gure 10.2 M {(x.p,x,x. ) | x A} 1 (1,3,5) (1,2,8) (1,5,9) (1,4,12) 1,3 (3,5,7) (1,2,8) (1,4,12) 1,3,5 (5,2,4) (5,4,11) 1,3,5,2 (5,4,11)

c IFSIC 2004

10.4. Algorithme de PRIM

155

ALGORITHME DE PRIM
REEL SOMMET:: : ; SOMMET SOMMET::p ; ENUM[dehors,atteint,recouvert] SOMMET:: etat ; ARBRE prim(GRAPHESYM G) cest local ENT nbar ; -- nombre dar etes TAS[(SOMMET,REEL)] A; ENS[SOMMET] X, MOD; SOMMET nouv ; REEL w;

d ebut depuis
nbar O ; Result creer ; X G.lst som ; pourtout x de X faire x. etat dehors fpourtout ; A creer ; x0 X.element ; -- sommet initial quelconque x0 . etat recouvert ; MOD G.lst voisins(x0 ) ; pourtout z de MOD z. etat atteint ; z. G.valar^ ete(x0 ,z) ; z.p x0 ; A.mettre en tas((z,z. )) ;

fpourtout jusqua nbar n-1 faire (nouv,w) A.mintas ; A.^ oter de tas ; nouv. etat recouvert ; MOD G.lst voisins(nouv) ; -- mise ` a jour des marques des sommets modiables pourtout z de MOD faire cas z. etat = dehors z. etat atteint ; z. G.valar^ ete(nouv, z) ; z.p nouv ; A.mettre en tas((z,z. )) z. etat = atteint si G.valar^ ete(nouv, z) < z. alors A.reorg((z,z. ),(z, G.valar^ ete(nouv, z))); z. G.valar^ ete(nouv, z) ; z.p nouv z. etat = recouvert rien fcas fpourtout ; Result.ajoutar^ ete(nouv,nouv.p) ; nbar nbar+1 fait n

c IFSIC 2004

156

Arbres ; arbre partiel de poids optimum

c IFSIC 2004

Chapitre 11

Flots dans un r eseau de transport


11.1 Exemple introductif

Probl` eme de lapprovisionnement et de la demande. Une ressource est disponible sur 3 sites A1 ,A2 ,A3 en quantit es respectives a1 ,a2 ,a3 . Cette ressource est demand ee en 4 sites B1 ,B2 ,B3 ,B4 en quantit es respectives b1 , b2 , b3 , b4 . Les possibilit es dacheminement des ressources des Ai vers les Bj sont mod elis ees par le graphe valu e de la gure 11.1; dans ce graphe, les sites C1 ,C2 sont des sites interm ediaires de transfert, et la valeur dun arc est une capacit e, egale ` a la quantit e maximale de ressource qui peut transiter sur cet arc. Le probl` eme pos e est alors le suivant : est-il possible de satisfaire les demandes des Bj ` a partir des disponibilit es des Ai et des possibilit es de transport? Pour prendre en compte lensemble des donn ees sur le graphe, on agrandit ce dernier en introduisant un site ctif dentr ee e , un site ctif de sortie s , et les arcs (repr esent es en gras sur la gure): e ai (e,Ai ), de capacit (Bj ,s) de capacit e bj Un tel graphe sappelle r eseau de transport . Le fait dattribuer ` a un arc dentr ee (e,Ai ) une capacit e sinterpr` ete bien: cela signie que ai est la quantit e maximum que lon peut acheminer depuis Ai ; par contre, la capacit e dun arc de sortie Bj signie que lon sinterdit de consommer en Bj plus que la ressource demand ee. Pour r esoudre le probl` eme, on consid` ere une fonction , d enie sur les arcs et ` a valeur dans N, telle que: arc dentr ee: (e,Ai ) = quantit e de ressource enlev ee au site Ai , arc de sortie: (Bj ,s) = quantit e de ressource amen ee au site Bj , arc de transport: (x,y ) = quantit e de ressource achemin ee sur larc (x,y ). La valeur de sur un arc repr esente donc un ux , et doit satisfaire les conditions de conservation (ou lois de Kircho) en tout nud du r eseau (autre que e et s ): (z,x) = (x,y ) (1) x, x = e, x = s :
z 1 (x) y (x)

De plus, sur tout arc, la condition de capacit e doit etre respect ee, cest-` a-dire (2) u : (u) c(u), o` u c(u) est la capacit e de larc u
c IFSIC 2004

158

Flots dans un r eseau de transport

A 1 a e a 3 A 3 1 C 1 a 2 A 2 C 2

B 1

B b2 2 s b B 3 B 4 3

Fig. 11.1 R eseau de transport

Une telle fonction sappelle un ot (contraintes 1) compatible (contraintes 2) Le probl` eme pos e admet une solution sil existe un ot compatible tel que, pour tout site demandeur Bj , on ait (Bj ,s) = bj (saturation des arcs de sortie ). En pratique, nous verrons, gr ace aux r esultats du 11.2, que la r esolution de ce probl` eme revient ` a chercher, parmi les ots compatibles, un ot de valeur maximum , cest-` a-dire acheminant la plus grande quantit e globale de ressource. Nous allons dans ce qui suit d enir pr ecis ement les notions de r eseau de transport , ot compatible , valeur dun ot , et les r esultats g en eraux li es ` a ces notions. Puis nous donnerons un algorithme de calcul de ot de valeur maximum, d u` a Ford et Fulkerson.

11.2

D enitions et propri et es g en erales

R eseau de transport. D enition 11.1 Un r eseau de transport est un graphe valu e par des entiers G = (X,e,s; ; c) o` u X {e} {s} est lensemble des sommets, c : N est la fonction capacit e. le sommet e sappelle lentr ee (ou source), le sommet s la sortie (ou puits) et ils sont respectivement racine et anti-racine du graphe. les arcs (e,) et (,s) sappellent respectivement arcs dentr ee et arcs de sortie du r eseau
c IFSIC 2004

11.2. D enitions et propri et es g en erales Flot compatible. D enition 11.2 Un ot sur un r eseau de transport (X,e,s; ; c) est une fonction : N v eriant les lois de Kircho (d enies au 11.1) Un ot compatible v erie en outre u : 0 (u) c(u)

159

Quelques notations. Soit A X . On note: S (A) = {(x,y ) | x A y A} arcs sortants de A E (A) = {(x,y ) | x A y A} arcs entrants dans A puis S (A) = ((u)) = ux sortant de A et
uS (A)

E (A) =

((u)) = ux entrant dans A


uE (A)

(de mani` ere analogue, on aura cS (A), cE (A)). Avec ces notations, par exemple, les conditions de conservation au nud x(= e, = s) sexpriment simplement : E (x) = S (x) o` u x est mis pour lensemble {x} Sur le plan algorithmique, un r eseau de transport est un graphe valu e, muni des acc` es suivants :
ENT ARC::c -ENT ARC:: --

capacit e ot

avec les notations habituelles : si (x,y) est un arc, alors c(x,y) et (x,y) d esignent respectivement la capacit e et le ux de larc (x,y). Valeur dun ot compatible. D enition 11.3 La valeur dun ot compatible est la quantit e v () = S (e) (ux sortant de la source e). La proposition suivante et son corollaire vont montrer, entre autres, que cette valeur repr esente bien la quantit e globale de ux qui traverse le r eseau de la source vers le puits. Proposition 11.4 Soit A X {e} et un ot. si e A alors S (A) E (A) = 0 si e A alors S (A) E (A) = v ()

c IFSIC 2004

160

Flots dans un r eseau de transport

D emonstration. i) Supposons que e A. Pour tout x de A, les conditions de conservation permettent d ecrire: (x,y ) +
y (x)

(x,y ) =
y (x)

(z,x) +
z 1 (x)

(z,x)
z 1 (x)

y A

y A

z A

z A

Sommons ces egalit es sur A. Il vient: S (A) + (x,y ) = E (A) +


xA y (x)

(z,y ), soit
xA z 1 (x)

y A

z A

S (A) E (A) =
xA y (x)

(x,y ) +
y A
xA z 1 (x)

(z,x)
z A

Si dans la deuxi` eme somme double on fait le changement de variable: (x,z ) (y,x), on obtient: S (A) E (A) =
xA y (x)

(x,y ) +
y A
y A x1 (y )

(x,y ) = 0
xA

ce qui d emontre la proposition dans ce cas. ii) Supposons que e A, et posons A = A \ {e}. On a alors: S (A ) = S (A)
y (e)

(e,y )
y A

E (A ) = S (A) +
y (e)

(e,y )
y A

A/A

A = A / {e}

et, dapr` es le point i): S (A ) E (A ) = 0, ce qui donne: S (A) E (A) = 2


y (e)

(e,y ) = S (e) = v ()

Corollaire 11.5 Soit un ot. On a: v () = S (e) = E (s) D emonstration. En eet, si on applique la proposition pr ec edente avec A = {e} X , on obtient: S (A) = E (s), E (A) = 0 do` u v () = E (s)
c IFSIC 2004

11.3. Recherche dun ot compatible de valeur maximum

161

D enition 11.6 On appelle coupe du r eseau tout ensemble darcs S (A) o` u A X {e} avec e A. La quantit e cS (A) sappelle la S capacit e de la coupe (A).

Remarque. Ce nom de coupe vient de ce que tout chemin de e ` a s emprunte au moins un arc de la coupe; autrement dit, si on supprime les arcs de la coupe, on d econnecte le r eseau entre e et s, cest-` a-dire on emp eche tout passage de e ` a s. Nous enon cons un lemme, d u ` a Ford et Fulkerson, fondamental pour lobtention de lalgorithme de calcul dun ot maximal. Lemme 11.7 Soit A X {e} avec e A, et un ot compatible. On a lin egalit e: v () cS (A) D emonstration. Dapr` es la proposition 11.4 on a: S E v () = (A) (A) mais, le ot etant compatible: S (A) cS (A), E (A) 0 do` u le r esultat 2 Ce lemme s enonce encore sous la forme suivante : La valeur de tout ot compatible est inf erieure ou egale ` a la capacit e de toute coupe Corollaire 11.8 max v () min cS (A)
AX {e}

compatible

eA

Evident dapr` es le lemme pr ec edent. Dans le paragraphe suivant, nous nous int eressons au calcul dun ot compatible de valeur maximum. En fait, nous allons montrer un r esultat de dualit e : dans le corollaire pr ec edent, lin egalit e est une egalit e : ce r esultat est connu sous le nom de th eor` eme de Ford-Fulkerson, et sa preuve repose sur la construction explicite, par un algorithme, dun ot et dune coupe S (A) tels que v () = cS (A)

11.3
11.3.1

Recherche dun ot compatible de valeur maximum


Sch ema g en eral

Dans ce paragraphe, nous d ecrivons un algorithme d u` a Ford et Fulkerson; le principe en est le suivant: partant dun ot compatible initial, on teste si ce ot est de valeur maximum, et sil ne lest pas, on le modie pour obtenir un nouveau ot compatible de valeur strictement sup erieure ` a la valeur du ot pr ec edent, puis on recommence. Le test et laugmentation du ot
c IFSIC 2004

162

Flots dans un r eseau de transport

sont eectu es gr ace ` a une proc edure de marquage que nous d etaillons ci-apr` es. Le sch ema de lalgorithme est donc it eratif: depuis G. flot compatible; jusqua marquage(G) faire
am elioration(G)

fait

11.3.2

Marquage

Le r ole de la fonction marquage consiste ` a d eterminer un sous-ensemble A de X {e} {s}, ce sous-ensemble devant etre le plus grand possible, tel que chaque sommet de A puisse etre marqu e en appliquant les r` egles ci-apr` es: 1. e est marqu e (+) 2. si x est marqu e: (a) marquage en avant : marquer (+x) tout successeur y de x tel que y A et (x,y ) < c(x,y ) (arc non satur e) (b) marquage en arri` ere : marquer (x) tout pr ed ecesseur z de x tel que z A et (z,x) > 0 (arc charg e) 3. arr et lorsque s est marqu e ou lorsquaucun nouveau sommet ne peut plus etre marqu e. La fonction rend le r esultat vrai si, et seulement si, s na pas pu etre marqu e. Le marquage est r ealis e comme eet de bord de la fonction. Intuitivement, ce proc ed e de marquage repose sur lid ee suivante: on essaye daugmenter la valeur de ; pour cela, il faut dabord trouver un arc dentr ee (e,x) non satur e; cest le sens du marquage de e, puis du marquage (+e) de tout successeur x de e tel que (e,x) ne soit pas satur e. Si un tel arc existe, on envoie une unit e de ux suppl ementaire, qui parvient donc ` a x; le ux entrant en x ayant augment e de 1, le maintien des conditions de conservation n ecessite donc, soit daugmenter le ux sortant de 1, soit de diminuer le ux sur un autre arc entrant de 1; lensemble des arcs issus de x sur lesquels on peut envoyer lunit e de ux suppl ementaire est donc rep er e gr ace au marquage en avant , et lensemble des arcs aboutissant ` a x sur lesquels on peut diminuer dune unit e le ux entrant est rep er e gr ace au marquage en arri` ere . Selon les possibilit es, on parvient ainsi ` a compenser lenvoi de lunit e de ux suppl ementaire le long dune suite de sommets; si lon parvient ` a un sommet x pr ed ecesseur de s tel que larc (x,s) nest pas satur e, on peut maintenir les conditions de conservation en x en envoyant lunit e de ux suppl ementaire sur cet arc; la valeur du ot a ainsi augment e dune unit e, puisquune unit e suppl ementaire issue de e a pu etre achemin ee jusqu` a s tout en maintenant les conditions de conservation et les contraintes de compatibilit e. Du point de vue algorithmique, ce proc ed e de marquage nest rien dautre quune recherche de descendants du sommet e, dans un graphe auxiliaire engendr e par les arcs non satur es du r eseau et par les arcs charg es du r eseau transpos e; cette recherche pourra etre mise en uvre par une des m ethodes vues dans les chapitres pr ec edents, notamment une m ethode dexploration. Donnons maintenant un premier r esultat li e` a lapplication des r` egles de marquage.
c IFSIC 2004

11.3. Recherche dun ot compatible de valeur maximum

163

Proposition 11.9 Si le sommet s na pu etre marqu e par la fonction marquage(G) alors G. est de valeur maximum. D emonstration. Soit A lensemble des sommets marqu es ` a lissue de la proc edure. Par S construction e A et, par hypoth` ese, s A. Par cons equent, (A) est une coupe. Dapr` es la proposition 11.4, on a: (1) v () = S (A) E (A). Mais, si x A et y A, larc (x,y ) est satur e, do` u (x,y ) = c(x,y ); donc: (2) S (A) = cS (A). De m eme, si z A et x A, larc (z,x) nest pas charg e, cest-` a-dire (z,x) = 0; donc: (3) E (A) = 0. Les egalit es (1), (2), (3) impliquent: v () = c(A) et par cons equent, dapr` es le lemme de 11.7 Ford-Fulkerson, est de valeur maximum. Corollaire 11.10 Si le sommet s na pu etre marqu e par la fonction marquage(G), alors la coupe S (A) d enie par lensemble des sommets marqu es est de capacit e minimum. Th eor` eme 11.11 (Ford-Fulkerson) La valeur maximum des ots compatibles est egale ` a la capacit e minimum des coupes. Ce th eor` eme est un enonc e equivalent aux deux propositions pr ec edentes. Il r epond ` a la question pos ee ` a la n du 11.2.

11.3.3

Am elioration

Nous etablissons maintenant la r eciproque de ce qui pr ec` ede, ` a savoir le fait que si s a pu etre marqu e par la fonction marquage(G), alors le ot G. nest pas de valeur maximum; de plus, le marquage r ealis e permet de d enir un nouveau ot compatible de valeur strictement sup erieure a celle de . ` Soit e(= x0 ),x1 ,x2 , . . . ,xn ,s(= xn+1 ) une s equence de sommets telle que x1 soit marqu e (+e), x2 marqu e (x1 ), ... , xi marqu e (xi1 ), ... ,s marqu e (+xn ). Un couple (xi1 ,xi ) tel que xi est marqu e (+xi1 ) correspond ` a un arc non satur e (xi1 ,xi ); posons i = c(xi1 ,xi ) (xi1 ,xi ) (capacit e r esiduelle de larc , > 0). Cette quantit e est le nombre maximum dunit es de ux suppl ementaires pouvant circuler sur cet arc. On dira que larc (xi ,xi1 ) peut etre i -augment e. Un couple (xi1 ,xi ) tel que xi est marqu e (xi1 ) correspond ` a un arc charg e (xi ,xi1 ); posons i = (xi1 ,xi ) (ux de larc , > 0). Cette quantit e est le nombre maximum dunit es de ux pouvant etre ot ees de cet arc. On dira que larc (xi ,xi1 ) peut etre i -diminu e. D enissons la fonction de la mani` ere suivante : Soit = min1in+1 i sur tout arc (xi1 ,xi ) de la cha ne pouvant etre augment e (cest-` a-dire xi marqu e (+xi1 )): (xi1 ,xi ) = (xi1 ,xi ) +
c IFSIC 2004

164

Flots dans un r eseau de transport

sur tout arc (xi ,xi1 ) de la cha ne pouvant etre diminu e (cest-` a-dire xi marqu e (xi1 ): (xi ,xi1 ) = (xi ,xi1 ) sur tout autre arc (y,z ): (y,z ) = (y,z ) On a le r esultat suivant: Proposition 11.12 est un ot compatible, et v ( ) = v () + > v () D emonstration. 1) v erions que est un ot. Il sut de v erier que les conditions de conservation sont maintenues en tout sommet de la cha ne (= e, = s). Quatre cas sont possibles pour un sommet xi (1 i n) 1. marque(xi ) = (+xi1 ) et marque(xi+1 ) = (+xi ).
x i-1 x i x i+1

On a alors E (xi ) = E (xi ) + et S (xi ) = S (xi ) + do` u E S (xi ) = (xi ) 2. marque(xi ) = (+xi1 ) et marque(xi+1 ) = (xi )
x i-1 x i x i+1

On a alors (xi1 ,xi ) = (xi1 ,xi ) + et (xi+1 ,xi ) = (xi+1 ,xi ) soit E (xi ) = E (xi ) et S (xi ) = S (xi ) do` u E (xi ) = S (xi ) 3. marque(xi ) = (xi1 ) et marque(xi+1 ) = (+xi ).
x i-1 x i x i+1

On a alors (xi ,xi1 ) = (xi ,xi1 ) et (xi ,xi+1 ) = (xi ,xi+1 ) + soit E (xi ) = E (xi ) et S (xi ) = S (xi ) do` u E (xi ) = S (xi ) 4. marque(xi ) = (xi1 ) et marque(xi+1 ) = (xi ).
x i-1 x i x i+1

On a alors S (xi ) = S (xi ) et E (xi ) = E (xi ) do` u E S (xi ) = (xi ) ce qui montre que est un ot. Montrons que est compatible; cest imm ediat par construction, puisque 1. sur un arc augmentant (xi1 ,xi ), a et e augment e de i = c(xi1 ,xi ) (xi1 ,xi ), donc (xi1 ,xi ) c(xi1 ,xi ) 2. sur un arc diminuant (xi ,xi1 ), a et e diminu e de (xi ,xi1 ) et donc (xi ,xi1 ) 0 Enn, a et e augment e sur un arc dentr ee (e,x1 ), de la quantit e , donc v ( ) = v () + et comme > 0, on a bien v ( ) > v () 2
c IFSIC 2004

11.4. Algorithme de Ford-Fulkerson

165

11.4

Algorithme de Ford-Fulkerson

La mise en uvre algorithmique des fonctions de marquage et dam elioration se fait par une m ethode dexploration issue de e. Cette exploration peut etre men ee avec nimporte quelle strat egie: largeur, profondeur, etc. Quelle que soit la strat egie retenue, lexploration est adapt ee de mani` ere ` a: 1. op erer sur le graphe valu e G () (appel e graphe d ecart ) constitu e de lunion du graphe partiel de G constitu e des arcs non satur es et du graphe partiel de Gt (transpos e de G) constitu e des arcs charg es, soit, formellement: G () = (X {e} {s}, ,c()) avec

() = {(x,y ) | (x,y ) (x,y ) < c(x,y )} {(x,y ) | (y,x) (y,x) > 0} et c(x,y ) (x,y ) si (x,y ) (x,y ) < c(x,y ) (y,x) si (y,x) (y,x) > 0 Pour xer les id ees, la gure 11.2 donne un exemple de graphe d ecart associ e` a un ot. 2. associer ` a chaque sommet y visit e un attribut tel que (y ) est la valeur du chemin de G ( egale au minimum des valeurs des arcs) ` a lissue duquel y a et e visit e pour la premi` ere fois, 3. rajouter la condition darr et s visit e. c()(x,y ) =

11.4.1

Fonction marquage

On en donne une version r ecursive, analogue au calcul r ecursif de lensemble des descendants dun sommet donn e (algorithme 6.4.2). Ici, lexploration est celle des descendants du sommet e, dans le graphe d ecart. Sur lexploration proprement dite, la fonction gree un calcul, en aectant a chaque sommet marqu ` e sa marque (cha ne de caract` eres) et son ecart dam elioration (lentier ). Ces deux informations seront exploit ees par la proc edure dam elioration. Enn, la condition darr et est modi ee: le marquage sarr ete lorsque lexploration ne permet plus de marquer de nouveaux sommets (comme dans le calcul des descendants) ou lorsque le sommet s est marqu e.

11.4.2

Proc edure am elioration

Pr econdition: s est marqu e (s M ). Invariant: debchaine =t ete de la cha ne le long de laquelle est modi e ot modi e entre debchaine et s Condition darr et: debchaine = e
c IFSIC 2004

166

Flots dans un r eseau de transport

1 1 1 e 2 2 1 1 1 2 2

1 1 1 1 s 2 5 2 1 2 4 3 1

1 (1) (1) (1) (1)

(1) 4 (2) (1)

2 (2) (1) 5

(1) (2)

(1)

(1)

(1)

il y a un chemin : e, 2, 5, 1, 4, s dans ce graphe dcart, avec epsil=min(1, 2, 1, 1, 1)=1

Fig. 11.2 Flot et graphe d ecart associ e

11.4.3

Algorithme

Invariant: G est muni dun ot compatible G.. Condition darr et marquage(G) Progression: am elioration (G);

Valeurs initiales: Ici, il sagit de calculer un ot compatible initial. Une premi` ere solution, triviale, consiste ` a prendre G. 0, qui r epond evidemment ` a la question. Une seconde solution, qui sera int eressante lorsquon r esoud le probl` eme ` a la main, notamment sur une repr esentation graphique, consiste ` a chercher dabord un ot complet :
c IFSIC 2004

11.4. Algorithme de Ford-Fulkerson

167

D enition 11.13 Un ot compatible est dit complet si tout chemin de e` a s poss` ede au moins un arc satur e. Autrement dit, un ot compatible nest pas complet si, et seulement si, la fonction marquage permet de marquer s en nutilisant que des marquages avant. La construction dun ot complet seectue en explorant les chemins de e ` a s et en aectant uniform ement sur chaque chemin un ux egal ` a la plus petite capacit e r esiduelle des arcs du chemin. Les ux ainsi obtenus sont superpos es (cest-` a-dire leurs valeurs additionn ees sur chaque arc) et lorsquaucun chemin ne peut plus recevoir de ux suppl ementaire, on a un ot compatible complet. Il est clair quun ot de valeur maximum est complet, mais que la r eciproque est fausse, comme lexemple trait e dans le 11.5 suivant va le montrer. Le texte complet de lalgorithme est donn e pages 173.

11.4.4

Exemple

Consid erons le r eseau de transport de la gure 11.3 Initialisation Recherche dun ot complet chemin (e,1,4,s); ux = 1 ; arc (1,4) satur e chemin (e,1,5,s); ux = 1 ; arcs (e,1),(1,5) satur es chemin (e,2,4,s); ux = 1 ; arcs (2,4),(4,s) satur es chemin (e,2,5,s); ux = 1 ; arcs (e,2),(2,5),(5,s) satur es chemin (e,3,6,s); ux = 1 ; arc (3,6) satur e Flot repr esent e sur la gure 11.4 (les arcs satur es sont en gras) marquage: Arborescence en largeur
1 4

epsil = 1

marquage report e sur la gure 11.4 premier pas dit eration am elioration (6,s)2; (2,6)2; (2,5)0; (3,5)2; (e,3)2 marquage: e(+) stop; ce ot est donc maximum
c IFSIC 2004

168

Flots dans un r eseau de transport

11.4.5

Complexit e

La complexit e de lalgorithme de Ford-Fulkerson nest pas polynomiale. En eet, le nombre d etapes de lalgorithme est major e par la capacit e minimale c+ (A) des coupes du r eseau, puisqu` a chaque etape la valeur de augmente au moins de 1, et que dapr` es le lemme 11.7 on a e ne peut etre major ee ` a partir de la taille du graphe (exprim ee v () c+ (A). Or cette capacit en fonction de n et m, nombre de sommets et darcs). A une m eme conguration topologique de r eseau peuvent en eet etre attribu ees des capacit es qui sont des nombres entiers quelconques, donc a priori non born es. Signalons que des algorithmes de complexit e polynomiale en fonction du nombre n de sommets ont et e propos es: algorithmes de Edmonds-Karp, de Dinic, de Karzanov (ce dernier ayant une complexit e globale en O(n3 )) [Din70, EK72, Kar74, MKM78].

11.5

Cas des r eseaux bi-partis : mise en uvre par tableaux

Dans ce paragraphe, nous consid erons le cas particulier de r eseaux de la forme G = (X,Y,e,s ; e ,,s ; c) o` u X Y = , e X Y, ,s X Y e {(e,x),x X }, X Y, s {(y,s),y Y } Supposons que X = {x1 ,x2 , . . . ,xn } et Y = {y1 ,y2 , . . . ,yp }. Un tel r eseau peut alors etre repr esent e par un tableau C de format (n + 1) (p + 1), avec ci,j ci,p+1 cn+1,j cn+1,p+1 Exemple x1 x2 x3 x4 x5 = c(xi ,yj ), 1 i n,1 j p = c(e,xi ), 1 i n = c(yj ,s), 1 j p non d eni

y1 20 30 0 0 30 40

y2 10 20 20 10 0 20

y3 30 0 20 10 20 40

y4 0 30 20 10 0 40

y5 20 30 0 0 0 30

y6 0 0 20 40 20 70

30 70 80 60 60

Mise en uvre de Ford-Fulkerson. Cette mise en uvre peut etre faite directement ` a laide dun tel tableau: la fonction est repr esent ee dans un tableau de m eme format. Pour que
c IFSIC 2004

11.5. Cas des r eseaux bi-partis : mise en uvre par tableaux soit un ot compatible, il faut et il sut dassurer: p 1) i 1 i n j =1 i,j = i,p+1 (conservation au nud xi ) n j 1 j p i=1 i,j = n+1,j (conservation au nud yj ) 2) 1 i n + 1,1 j p + 1 0 i,j ci,j (compatibilit e) De plus, la valeur de est donn ee par
n p

169

v () =
i=1

i,p+1 =
j =1

n+1,p

Les di erentes etapes sont alors : Obtention dun ot complet initial. Saturer le tableau ligne par ligne (m ethode dite du coin Nord-ouest), cest-` a-dire: pour toute ligne i depuis 1 jqa n i,p+1 0 ; pour toute colonne j, tant que i,p+1 < ci,p+1 i,j max(ci,j , ci,p+1 i,p+1 , cn+1,j n+1,j ) ; i,p+1 i,p+1 + i,j ; n+1,j n+1,j + i,j fpour colonnes fpour lignes Si i,p+1 = ci,p+1 on dira que la ligne i est satur ee (cela correspond ` a la saturation de larc dentr ee (e,xi )). De m eme si n+1,j = cn+1,j pour la colonne j (saturation de larc de sortie (yj ,s)). Marquage Le marquage consiste ici ` a alterner des phases de marquage avant et marquages arri` ere, o` u une phase de marquage avant consiste ` a marquer de nouvelles colonnes ` a partir des lignes d ej` a marqu ees, ere consiste ` a marquer de nouvelles lignes ` a partir des colonnes une phase de marquage arri` d ej` a marqu ees. Initialement, toute ligne i non satur ee est marqu ee (+e) Ensuite, les phases avant et arri` ere se d eroulent comme suit: phase de marquage avant : pour toute ligne i marqu ee ` a la phase pr ec edente pour toute colonne j depuis 1 jqa p si j non marqu ee et i,j < ci,j alors marquer (+i) la colonne j fsi
c IFSIC 2004

170 fpour colonne fpour ligne phase de marquage arri` ere :

Flots dans un r eseau de transport

pour toute colonne j marqu ee ` a la phase pr ec edente pour toute ligne i depuis 1 jqa n si i non marqu ee et i,j > 0 alors marquer (-j) la ligne i fsi fpour ligne fpour colonne Arr et: les deux situations darr et se produisent lorsque: 1: s est marqu e : lors dune phase avant une colonne j non satur ee est marqu ee. Cela correspond au sommet yj marqu e et larc (yj ,s) non satur e. 2: blocage : lors dune phase (avant ou arri` ere) aucune nouvelle rang ee (ligne ou colonne selon les cas) na pu etre marqu ee et toutes les colonnes marqu ees sont satur ees. Dans le premier cas, marquage(G) rend faux (G. non maximum), dans le deuxi` eme cas, marquage(G) rend vrai (G. maximum) Am elioration(G) (dans le cas o` u s est marqu e). Partant de la colonne marqu ee non satur ee jk qui a provoqu e larr et du marquage, on remonte la cha ne de marquage jusqu` a trouver une ligne i1 marqu ee (+e): cest une cha ne de marques altern ees: (+ik ),(jk1 ),(+ik 1), . . . ,(+i2 ),(j1 ),(+e) Simultan ement, on calcule = min(+ , ), o` u + = min (ci
=1,...,k ,j

,j

= min i
=2,...,k

,j

(voir gure ci-dessous)

puis on ajuste en ajoutant/retranchant alternativement : i puis n+1,jk n+1,jk + , i1 ,p+1 i1 ,p+1 + Exemple Nous traitons maintenant lexemple donn e au d ebut de ce paragraphe. Un seul tableau contient les ux et les capacit es. Chaque case se pr esente comme suit: ci,j i,j
c IFSIC 2004

,j

,j

+ , i

,j

,j

11.5. Cas des r eseaux bi-partis : mise en uvre par tableaux Flot complet initial et marquage correspondant (+x5 ) (+x3 ) (+x5 ) (+x3 ) (+x1 ) y1 y2 y3 y4 y5 (y1 ) x1 20 10 30 0 20 20 10 0 0 0 (y1 ) x2 30 20 0 30 30 20 10 0 30 10 (+e) x3 0 20 20 20 0 0 0 20 10 0 (+e) x4 0 10 10 10 0 0 0 10 0 0 (+e) x5 30 0 20 0 0 0 0 10 0 0 40 20 40 40 30 40 20 40 40 10 Am elioration du ot: La cha ne de marquage est: (y5 ,s) de capacit e r esiduelle 20 (x1 ,y5 ) 20 (x1 ,y1 ) -20 (x5 ,y1 ) 30 (e,x5 ) 40 soit un ux ` a transf erer de 20.

171

(+x5 ) y6 0 0 0 0 20 20 40 40 20 10 70 70

30 30 70 70 80 50 60 50 60 20 v=220

c IFSIC 2004

172 Texte de la fonction

Flots dans un r eseau de transport

ENT epsil ; ENT SOMMET:: ; STRING SOMMET::marq ; local ENS[SOMMET] M BOOL marquage(GRAPHE G) cest

d ebut M ; epsil 0 ; marquer(e, +, +) ; si s M alors epsil s. fsi ; Result s M n

marquer(SOMMET x; STRING m; ENT ecart) cest precondition x M local ENT e

d ebut
x.marq m ; x. ecart ; M M { x }; si x = s alors -- marquages avant pour tout y de G.lst succ(x) faire si y M et (x,y) < c(x,y) alors e min(x.,c(x,y)-(x,y)) ; marquer(y, +x , e) fsi fpourtout ; -- marquages arriere pour tout z de G.lst pred(x) faire si z M et (z,x) > 0 alors e min(x.,(z,x)) ; marquer(z, -x , e) fsi fpourtout fsi

n
-- ` a la sortie de cette proc edure, soit s est marqu e (en avant ` a partir de x) soit tous les sommets marquables ` a partir de x sont marqu es.

c IFSIC 2004

11.5. Cas des r eseaux bi-partis : mise en uvre par tableaux Texte de la proc edure
amelioration(GRAPHE G) ; local SOMMET debchaine ;

173

d ebut depuis debchaine s ; jusqua debchaine = e faire si debchaine.marq = +x alors G.(x,debchaine) G.(x,debchaine) + G.epsil sinon G. G.(debchaine,x) - G.epsil fsi ; debchaine x fait ; n

Algorithme de FORD-FULKERSON
ford-fulkerson(GRAPHE G) cest

d ebut depuis G. initial -jusqua marquage(G) faire


amelioration(G)

d elivre un ot initial compatible; le ot 0 convient

fait n

1 1 2 e 2 3 6 2 2 2 5 4 2 2 s

Fig. 11.3 Exemple dapplication de Ford-Fulkerson

c IFSIC 2004

174

Flots dans un r eseau de transport

1 (-5) 1 2 e (+) 2 2 1 3 (+e) 2 2 (-5) 2 1 1 1 1 4 2 2 5 (+3) 1 1 6 (+2) 2 2 2 s (+6)

Fig. 11.4 ot complet et marquage

1 1 2 e (+) 2 2 2 1 3 coupe minimale


Fig. 11.5 deuxi` eme ot et marquage

1 1 1

2 2 2

2 2 2 2 2

5 1

c IFSIC 2004

11.5. Cas des r eseaux bi-partis : mise en uvre par tableaux

175

x1

20 20 30 10 30 20

y1

40

30 70

x2

30 30 20 20 20 20 10 10 10 40 20 20

y2

20

80 60 60

x3

y3

40

s
40

x4
30

y4
30

y5 y 6
Fig. 11.6 R eseau bi-parti

70

x5

c IFSIC 2004

176 Deuxi` eme ot et marquage correspondant (+x5 ) (+x3 ) (+x5 ) (+x3 ) y1 y2 y3 y4 (y2 ) x1 20 10 30 0 0 10 0 0 (y1 ) x2 30 20 0 30 20 10 0 30 (+e) x3 0 20 20 20 0 0 20 10 (+e) x4 0 10 10 10 0 0 10 0 (+e) x5 30 0 20 0 20 0 10 0 40 20 40 40 40 20 40 40 Ce ot est maximal car il sature les sorties.

Flots dans un r eseau de transport

(+x2 ) y5 20 20 30 10 0 0 0 0 0 0 30 30

(+x5 ) y6 0 0 0 0 20 20 40 40 20 10 70 70

30 30 70 70 80 50 60 50 60 40 v=240

11.6

Application: probl` emes de couplage des graphes bi-partis

Les probl` emes de couplage de cardinalit e maximale constituent une des applications les plus classiques des mod` eles de ots. Ils interviennent aussi comme etape dans la r esolution de probl` emes daectation ` a co ut optimal, largement utilis es en optimisation combinatoire. Historiquement, la th eorie du couplage maximum dun graphe bi-parti a pr ec ed e la th eorie des ots; elle appara t maintenant comme une application de cette derni` ere aux aux graphes bi-partis. En fait, le r esultat fondamental, du ` a K onig et Hall, r esulte de lapplication aux r eseaux bi-partis mod elisant le probl` eme du lemme de Ford-Fulkerson, de m eme lalgorithme r esolvant le probl` eme (algorithme de Evegary et K uhn) est ladaptation de lalgorithme de Ford-Fulkerson.

11.6.1

Le probl` eme

Soit Y et Z deux ensembles nis et une relation sur Y Z , ou encore, ce qui est equivalent, une application de Y dans 2Z (ensemble des parties de Z ). Le triplet (Y,Z,) est en fait un graphe bi-parti G, avec Y Z comme ensemble de sommets, et comme ensemble darcs. D enition 11.14 On appelle couplage du graphe bi-parti G une partie A Y et une bijection : A (A) telle que (A) Z et x A : (x) (x). D enition 11.15 Si (A,) est un couplage de G alors |A| = |(A)| sappelle le cardinal (ou valeur) du couplage.

c IFSIC 2004

11.6. Application: probl` emes de couplage des graphes bi-partis

177

Remarque Un couplage peut aussi etre vu comme un sous-ensemble W de lensemble des arcs du graphe bi-parti G = (Y,Z,) tel que deux arcs distincts de W naient ni origine ni extr emit e commune (gure 11.7).

e a f b A={a, b, c } g c h d i
Fig. 11.7 Couplage du graphe G

Y={a, b, c, d, } Z={e, f, g, h, i }

(A)={e, f, h } couplage de cardinal 3 (arcs en gras)

Probl` eme 11.1 Etant donn e un graphe bi-parti G d eterminer un couplage de G, de cardinalit e maximum

(Y,Z,),

Remarque Sil existe un couplage de valeur |Y |, on dit quon peut coupler Y dans Z .

11.6.2

Mod elisation en r eseau bi-parti

Au graphe bi-parti G = (Y,Z,) on associe le r eseau de transport G = (Y,Z,e,s; ; c ) avec

= {(e,y ),y Y } {(z,s),z Z }

y Y,z Z

c(e,y ) = c(z,s) = 1 c(y,z ) = +


c IFSIC 2004

178

Flots dans un r eseau de transport

1 Y Z

On v erie facilement que tout ot compatible sur G est un couplage de G et r eciproquement, dont les valeurs sont egales. Il sut pour cela de consid erer la correspondance z = (y ) (y,z ) = 1 Nous donnons le r esultat fondamental de la th eorie du couplage maximum, du ` a K onig et Hall: Th eor` eme 11.16 Soit G = (Y,Z,) un graphe bi-parti. Il existe un couplage de valeur Y si, et seulement si, A Y : |A| |(A)|

D emonstration. i) Supposons quil existe un couplage de valeur |Y |, et consid erons le r eseau de transport associ e. Soit A Y . Alors A = {e} A (A) d enit une coupe S (A ). Calculons sa capacit e:
A (A)

les arcs sortants de A sont: (e,y ) avec y Y \ A (z,s) avec z (A)

Y-A Z- (A)

et comme (y,z ) y A z (A), aucun arc de ne sort de A . Do` u: cS (A ) = |Y \ A| + |(A)| = |Y | |A| + |(A)| Dapr` es le lemme de Ford-Fulkerson, v () = |Y | cS (A ) = |Y | |A| + |(A)| cest-` a-dire |A| |(A)|
c IFSIC 2004

11.6. Application: probl` emes de couplage des graphes bi-partis

179

ii) R eciproquement, soit un ot de valeur maximale sur le r eseau de transport associ e` a G, et soit A = {e,A Y,B Z } lensemble des sommets marqu es par le marquage associ e` a G.. Dapr` es le th eor` eme de Ford-Fulkerson, v () = cS (A ) < (car v () |Y | < ) donc la coupe + (A ) ne comporte aucun arc (y,z ) . Par cons equent (A) B soit encore |(A)| |B | et aussi : cS (A ) = |Y | |A| + |B | |Y | |A| + |(A)| Comme, par hypoth` ese, |A| |(A)|, il vient v () = cS (A ) |Y | do` u, par double in egalit e, v () = |Y | 2 La condition n ecessaire et susante etablie par ce th eor` eme est evidemment impraticable pratiquement, puisquil faudrait la v erier sur les 2|Y | parties de Y . Pratiquement, il sut de calculer un couplage de valeur maximum en appliquant lalgorithme de Ford-Fulkerson adapt e au r eseau bi-parti mod elisant le probl` eme (11.5) (ou un autre algorithme de calcul de ot maximal), puis de comparer la valeur de ce couplage ` a |Y |. Du point de vue algorithmique, la mise en uvre de lalgorithme de Ford-Fulkerson bi-parti est ici plus simple que pour un r eseau bi-parti quelconque: la colonne et la ligne suppl ementaires portant les capacit es dentr ee et de sortie deviennent inutiles (puisque ces capacit es sont implicitement egales ` a 1); de m eme, les capacit es des arcs de nont pas besoin d etre indiqu ees: toute case du tableau est soit interdite si elle ne correspond pas ` a un arc de (capacit e 0), soit autoris ee, cest-` a-dire de capacit e . Enn, les ux ne peuvent prendre que les valeurs 0 ou 1: il sura donc de marquer les cases autoris ees avec un signe indiquant si elles sont s electionn ees (ux 1) ou non (ux 0). En fait, le probl` eme revient ` a s electionner, parmi les cases autoris ees, un ensemble de cases tel quau plus une case par rang ee soit s electionn ee (couplage) et, parmi tous les ensembles r epondant ` a la question, en donner un de cardinal maximum (couplage maximum). Une rang ee sera dite satur ee si une case de cette rang ee est s electionn ee (cela correspond ` a la saturation dun arc dentr ee si la rang ee est une ligne, ou dun arc de sortie si la rang ee est une colonne). Enn, une case autoris ee ne peut jamais etre satur ee (car elle est de capacit e ). Pour illustrer lint er et des mod` eles de couplage et la mise en uvre pratique de lalgorithme de Ford-Fulkerson, nous traitons ci-apr` es un exemple concret de calcul de syst` eme de repr esentants distincts.

11.6.3

Exemple: syst` eme de repr esentants distincts

Soit X = {x1 , . . . ,xn } un ensemble ni, et Y1 , . . . ,Ym des parties de X : chaque Yj regroupe des el ements de X selon un certain crit` ere. On appelle syst` eme de repr esentants distincts (srd) un sous-ensemble E X dont chaque el ement repr esente une et une seule partie Yj . On a donc: E = {xi1 , . . . ,xim } avec k = xik = xi et xik Yk ,k = 1, . . . ,m. On se ram` ene au probl` eme de couplage dun graphe bi-parti de la mani` ere suivante: soit Y = {Y1 , . . . ,Ym }, Z X et (Yj ,xi ) xi Yj . Tout couplage sur (Y,Z,) d enit donc une bijection dune partie de Y sur une partie de Z , cest-` a-dire qu` a tout Yj correspond un el ement bien d eni de Z X (son repr esentant), et deux Yj distincts ont deux repr esentants distincts.
c IFSIC 2004

180

Flots dans un r eseau de transport

Consid erons lexemple suivant: X = {Jean, Anita, Louis, Mireille, Albert, Patricia, Florent} et Y1 = {Jean, Anita, Louis} (moins de 20 ans) Y2 = {Mireille, Albert } (ch omeurs) Y3 = {Anita, Louis, Patricia } (amateurs de th e atre) Y4 = {Mireille, Patricia } (m` eres de famille) Y5 = {Jean, Anita } ( etudiants) Y6 = {Jean, Louis } (membres de lassociation sportive) Y7 = {Mireille, Florent } (membres du comit e daction sociale) (+Y5 ) (+Y5 ) (+Y1 ) (+Y4 ) (+Y2 ) (+Y3 ) Jean Anita Louis Mireille Albert Patricia Florent (-Je) Y1 (-Mi) Y2 (-An) Y3 (-Pa) Y4 (+e) Y5 (-Lo) Y6 Y7 Couplage initial (m ethode du coin Nord-ouest): v = 6. Ce couplage initial ne permet de choisir que 6 repr esentants (les etudiants ne sont pas repr esent es). Le marquage, eectu e sur le tableau ci-dessus, permet de marquer Albert, colonne non satur ee. Ce couplage nest donc pas maximal. La phase dam elioration donne le couplage ci-dessous, qui, lui, est maximal (valeur |Y |=7) Jean Y1 Y2 Y3 Y4 Y5 Y6 Y7 (en Anita Louis Mireille Albert Patricia Florent

nous avons indiqu e les nouvelles cases s electionn ees dans cette solution). Jean repr esente les moins de 20 ans Anita ... les etudiants Louis ... lassociation sportive Mireille ... les m` eres de famille Albert ... les ch omeurs Patricia ... les amateurs de th e atre Florent ... le comit e daction sociale

c IFSIC 2004

Annexe A

Les op erations de la classe GRAPHE et leur s emantique


Dans ce qui suit, un graphe non valu e G est un doublet (X, ) et un graphe valu e G est un triplet (X, ), v)

Constructeur
creer

post vide G.creer cr ee un nouvel objet de type graphe, d esign e par G, vide

Op erations de consultation (lecture)


Fonctions ` a r esultat bool een
BOOL vide

post Result nm som=0 nb arc=0


BOOL validsom(SOMMET x) renvoie vrai ssi x est un sommet du graphe. BOOL validarc(SOMMET x, y) post validarc(x,y) validsom(x) validsom(y) renvoie vrai ssi (x,y) est un arc du graphe

Graphes valu es
E v(SOMMET x, y) : E pre valid arc(x,y) v(x,y) = valeur de larc (x,y).
c IFSIC 2004

182

Les op erations de la classe GRAPHE et leur s emantique

Fonctions ` a r esultat entier


ENT nb som

nombre de sommets
ENT nb arc

nombre darcs
ENT nb succ(SOMMET x) pre validsom(x)

renvoie le nombre de successeurs de x.


ENT nb pred(SOMMET x) pre validsom(x)

renvoie le nombre de pr ed ecesseurs de x.

Parcours de lensemble des sommets


BOOL som termine epuis e. som termine = vrai ssi le parcours de lensemble des sommets est premier som premier som positionne le sommet courant sur le premier sommet. prochain som

pre non som termine prochain som avance le sommet courant au prochain sommet.
SOMMET som cour

pre non som termine renvoie le sommet courant du parcours.

Parcours de lensemble des arcs


BOOL arc termine vrai ssi le parcours de lensemble des arcs est epuis e. premier arc

positionne larc courant sur le premier arc de lensemble des arcs.


prochain arc

pre non arc termine avance larc courant au prochain arc.


ARC arc cour
c IFSIC 2004

183 pre non arc termine renvoie larc courant du parcours.

Fonctions ` a r esultat ensemble de sommets


ENS[SOMMET] ens som G.ens som = ensemble des sommets de G. ENS[SOMMET] lst succ(SOMMET x) pre validsom(x) G.lst succ(x) = (x). ENS[SOMMET] lst pred(SOMMET x) pre validsom(x) G.lst pred(x) = 1 (x). ENS[SOMMET] points entr ee

post x points entr ee lst pred(x)= ee = {x X | 1 (x) = }. points entr


ENS[SOMMET] points sortie

post x points sortie lst succ(x)= G.points sortie = {x X | (x) = }.

Proc edures de modication ( ecriture)


Graphes non valu es
ajout sommet(SOMMET x) post validsom(x) G.ajout sommet(x) ajoute le sommet x au graphe G. Sans eet si x est d ej` a un sommet. ajout arc(SOMMET x,y) post validarc(x,y) G.ajout arc(x,y) ajoute les sommets x, y et larc (x,y) au graphe G. Sans eet si (x,y) est d ej` a un arc. oter sommet(SOMMET x) pre non vide post non validsom(x) G.oter sommet(x) ote le sommet x et tous les arcs adjacents ` a x oter arc(SOMMET x,y)
c IFSIC 2004

184

Les op erations de la classe GRAPHE et leur s emantique pre non vide post non validarc(x,y) G.oter arc(x,y) ote larc (x,y).

sous graphe(ENS[SOMMET] E) pre non vide post x E non validsom(x). G.sous graphe(E) ote de G tous les sommets appartenant ` a E.

Graphes valu es
ajout val(SOMMET x, y; E ) post valid arc(x,y) ; v(x,y) = ajout val(x, y , ) ajoute larc (x,y) de valeur

Si larc existe d ej` a, remplace sa valeur


modif val(SOMMET x, y; E ) pre valid arc(x,y) post v(x,y) = modif val(x, y, ) modie la valeur de larc.

Invariants
vide arcvide arcvide hors arc

c IFSIC 2004

Bibliographie
[Ber70] C. Berge. Graphes et Hypergraphes. Dunod, 1970. [BLW76] N. L. Biggs, E. K. Llyod and R. J. Wilson. Graph Theory 1736-1936. Oxford University Press, 1976. [CP84] A. Couvert, R. Pedrono. Techniques de Programmation. Cours C 45, IFSIC, Universit e de Rennes, 1984. [Cri75] N. Christodes. Graph Theory ; an algorithmic approach. Academic Press, 1975. [Din70] Dinic, G. A. Algorithm for solution of a problem of maximum ow in a network with lower estimation. Soviet. Math. Dokl., 11:1277-1280, 1970. [EK72] Edmonds, J. and Karp, R. M. Theoretical improvements in algorithmic eciency for network ow problems. J. ACM 19(2):248-264, 1972. [GM79] M. Gondran, M. Minoux. Graphes et Algorithmes. Eyrolles, 1979. [HP82] J. M. H elary, R. Pedrono. Recherche Op erationnelle : Exercices Corrig es. Hermann, 1982. [Kar74] Karzanov, A.V. Determining the maximal ow in a network by the method of preows. Soviet. Math. Dokl., 15:434-437, 1974. [MKM78] Malhorta, M.V., Kumar, M.P., Mahes Hwari S.N. An algorithm for nding maximum ow in network. Inf. Proc. Letters, 7(6):277-278, 1978. [Ros83] ROSEAUX. Exercices et Probl` emes r esolus de Recherche Op erationnelle, tome 1. Masson, 1983. [Roy70] B. Roy. Alg` ebre Moderne et Th eorie des Graphes, tomes 1 & 2. Dunod, 1970.

c IFSIC 2004

Index
, 29 , 27 composantes fortement connexes : Foulkes, 84 composantes fortement connexes : Tarjan, 92 ajout sommet, 25 composantes fortement connexes : Tarjan ajoutarc, 25 (exemple), 88 Algorithme composantes fortements connexes : ascendants -minimalit e, 80 descendants, 86 enum eration des chemins el ementaires (it eratif), composition +, 125 68 Descendants en largeur dabord, 63 enum eration des chemins el ementaires (r ecursif), descendants en profondeur dabord (r ecursif), 69 65 Bellmann-Kalaba, 141 existence de circuits : Marimont, 73 Dijkstra, 154 exploration de la descendance dun sommet Ford-Fulkerson, 173 (g en eral), 57 Ford-Fulkerson, am elioration, 173 Exploration en largeur dabord, 59 Ford-Fulkerson, marquage, 172 Exploration en profondeur dabord, 61 Kruskal, 150 fermeture transitive : puissances, 40, 41 Prim, 155 fermeture transitive : Roy-Warshall, 41, Roy-Warshall avec routage, 46 44 Roy-Warshall simpli e, 95 glouton, 66, 112 ford, 141 heuristique, 141 chemins de valeur minimale : ordinal-racine, heuristique dam elioration, 106 121 num erotation conforme avec parcours en chemins de valeur minimale : ordinal-racine profondeur, 75 2, 123 Op erateur , 31 chemins de valeur minimale : puissances, ordinal-racine, 141 124 saisie, 24 chemins de valeur minimale : Bellmannsous graphe, 34 Kalaba, 109 transformation, 124, 128 chemins de valeur minimale : Bellmann- Anti-r eexivit e, 18 Kalaba acc el er e, 112 Anti-sym etrie, 18 chemins de valeur minimale : Dijkstra, 116 Anti-transitivit e, 77 chemins de valeur minimale : Ford, 105 Ar ete, 145 chemins de valeur minimale : Warshall- Arborescence, 51 Floyd, 126 branche, 51
c IFSIC 2004

INDEX feuille, 51 racine, 51 Arbre, 145 partiel de poids minimum, 148 Arc, 15, 16 etat visit e, 53 capacit e, 157 charg e, 162 extr emit e, 16, 21 ux, 157 origine, 16, 21 satur e, 162 visit e, 53 Attribut, 26 C++, 26 Cha ne, 145 Chemin, 19 el ementaire, 19, 38 concat enation, 19 existence, 37 longueur, 19, 106 longueur maximum, 75 valeur, 98 valeur additive 1-minimale, 99 valeur additive minimale, 99 valeur minimale : routage, 126 valeur optimale, 98 PE -optimal-, 99 PE el ementaire, 49 PE extr emit e, 19 PE longueur, 33 PE origine, 19 PE sommet interm ediaire, 19 PE x-optimal, 98 PE x-optimal-y, 98 Circuit, 19, 71 el ementaire, 19 absorbant, 103, 126 hamiltonien, 93 PE absorbant, 100 Classe, 26 cr eer, 25 Cycle, 145 Diagramme sagittal, 19 Dictionnaire des pr ed ecesseurs, 20 Dictionnaire des successeurs, 20 Dio de, 128 multiplication latine, 132 +, 132 max , 130 max +, 130 min , 131 min +, 130 min max, 131 min min, 131 ET OU, 130 Dualit e, 161 Eiel, 26 Exploration descendance dun sommet, 53 largeur dabord, 58 meilleur dabord, 113 profondeur dabord, 59 Fermeture transitive, 38 Flot, 158 compatible, 158 complet, 167, 169 valeur, 159, 160 PE complet, 167 Fonction injective, 75 Fonction ordinale, 74, 119 Ford-Fulkerson algorithme, 162 am elioration, 167 lemme, 161 marquage, 162, 167, 169 marquage arri` ere, 162, 169 marquage avant, 162, 169 proc edure dam elioration, 163, 170 th eor` eme, 163 G (X ), 29 Graphe -minimal, 49, 77, 93
c IFSIC 2004

187

188 arborescence 1-minimale, 102 bi-parti, couplage, 176 composante connexe, 145 connexe, 145 d ecart, exploration, 165 d eveloppement arborescent, 51 diagonal, 30 fermeture transitive, 37 fortement anti-transitif, 78 nombre cyclomatique, 145 non orient e, 145 parcours, 53 parcours en profondeur, 102 partiel, 29 potentiel-t ache, 136, 138 puissance, 33 puissance, interpr etation, 33 r eduit selon les c.f.c, 82 sous-graphe, 34 transitif, 37 transpos e, 34 valu e, 97 composante fortement connexe terminale, 82 composantes fortement connexes, 81 fortement connexe, 81 sous-graphe, 71

INDEX associatif, 30 commutatif, 30 composition, 30 union, 29 PE compatible avec une relation, 30 PE distributif, 30 Op eration , 41 Ordonnancement, 136 au plus tard relativement ` a une date nale, 139 marge libre dans un ordonnancement, 140 marge par chemin, 140 PE au plus t ot, 138 PE compatible, 136 PE marge totale relativement ` a une date nale, 140 Probl` eme approvisionnement et demande, 157 couplage bi-parti, 176 syst` eme de repr esentants distincts, 179 Programmation dynamique, 110 Projet, 135 contrainte, 135, 136 contrainte au plus t ot, 135, 136, 141 contrainte au plus tard, 135, 137 contrainte implicite, 137 contrainte redondante, 137, 142 contraintes, 137 contraintes d eterministes, 135 contraintes implicites, 138 contraintes non d eterministes, 135 mod elisation potentiel-t ache, 136 t ache, 135, 137 R eexivit e, 18 R eseau de transport, 157 bi-parti, 168 PE coupe, 161 Relation ordre, 29 ordre partiel, 29 Relation binaire, 16 equivalence, 16
c IFSIC 2004

PE PE PE PE

Java, 26 Kirchoff loi, 157 Langage objet, 26 Loi de composition el ement absorbant, 97 el ement neutre, 97 associative, 97 M ethode, 26 Marimont, 72 Multi-graphe, 15 Op erateur

INDEX ordre, 16 ordre partiel, 16 ordre total, 16 pr e-ordre, 16 PE equivalence, 49, 81 Repr esentation liste des sommets, 23 liste des successeurs, 23 tableau bool een, 22 Roy-Warshall, 71 Roy-Warshall, 41 routage, 44 Simula, 26 SmallTalk, 26 Sommet, 15 tat dehors, 53 e tat en attente, 53 e tat termine , 53 e ascendant, 19, 85 attributs minimaux, 100 , 18 degre exte rieur, 18 degre degre interieur, 18 descendant, 19, 53, 85 flux entrant, 159 flux sortant, 159 ro, 21 nume rotation conforme, 75 nume rotation conforme inverse, 77 nume e, 48 point dentre point de sortie, 48 de cesseur, 16 pre successeur, 16 , 53 visite voisin, 145 PE anti-racine, 158 e, 71 PE point dentre PE point de sortie, 71 PE puits, 158 PE racine, 158 PE source, 158 trie, 18 Syme quivalence, 49 -e
c IFSIC 2004

189 en, 20 Tableau boole Transitivite, 37 Turbo-Pascal, 26 Type arc, 21 file, 58 graphe, 24, 25 thodes, 24 graphe, me pile, 59 sommet, 21, 23 table, 44 tas, 113 Type abstrait, 25

Vous aimerez peut-être aussi