• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
C66
 

C66

on

  • 3,930 views

 

Statistics

Views

Total Views
3,930
Views on SlideShare
3,930
Embed Views
0

Actions

Likes
0
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    C66 C66 Document Transcript

    • ALGORITHMIQUE DES GRAPHES Jean-Michel H´lary e 1 IFSIC Cours C66 Juin 20041. c IFSIC 2004
    • 2 c IFSIC 2004
    • Table des mati`res e1 Introduction, exemples 9 1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Relations graphes et informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1 Le probl`me du chou, de la ch`vre et du loup . e e . . . . . . . . . . . . . . . 10 1.3.2 Blocage mutuel dans un partage de ressources . . . . . . . . . . . . . . . . 11 1.3.3 Fiabilit´ dans les r´seaux . . . . . . . . . . . . e e . . . . . . . . . . . . . . . 122 Graphes : un mod`le math´matique e e 15 2.1 D´finitions math´matiques et notations . e e . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 L’objet math´matique . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1.1 Vision ensembliste . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1.2 Vision fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1.3 Vision relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.2 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.3 Propri´t´s de graphes . . . . . . . ee . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Notion de chemin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 Repr´sentations de l’objet math´matique e e . . . . . . . . . . . . . . . . . . . . . . 193 Aspect algorithmique : un type de donn´es abstrait e 21 3.1 Les sommets et les arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.1 Le type Sommet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Le type Arc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Trois exemples de repr´sentation concr`te . . . . . . . e e . . . . . . . . . . . . . . . 22 3.2.1 Repr´sentation par tableaux . . . . . . . . . . . e . . . . . . . . . . . . . . . 22 3.2.2 Repr´sentation par tableaux et listes . . . . . . e . . . . . . . . . . . . . . . 23 3.2.3 Repr´sentation d´centralis´e par listes . . . . . e e e . . . . . . . . . . . . . . . 23 3.3 Le type abstrait Graphe : les m´thodes . . . . . . . . . e . . . . . . . . . . . . . . . 24 3.4 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Relations et op´rateurs entre e graphes 29 4.1 Relation d’ordre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2 Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.3 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 c IFSIC 2004
    • 4 ` TABLE DES MATIERES 4.3.1 D´finition . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 30 4.3.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.2.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 32 4.3.3 Complexit´ . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 32 4.4 Puissances d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.5 Graphe transpos´ . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 34 4.6 Sous-graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Fermeture transitive 37 5.1 Retour sur la transitivit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 37 5.2 Caract´risation du graphe G+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 38 5.3 Algorithme des puissances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.3.1 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.3.2 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 41 5.4 Algorithme de Roy-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.4.1 Principe de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.4.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.4.3 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 43 5.4.4 Routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.4.4.1 D´finition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 44 5.4.4.2 Construction des routages par l’algorithme de Roy-Warshall . 46 5.4.4.3 Exemple d’ex´cution . . . . . . . . . . . . . . . . . . . . . . . . e . 47 5.4.4.4 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.5 τ -minimalit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 496 M´thodes d’exploration e 51 6.1 D´veloppement arborescent issu d’un sommet donn´ . . . . e e . . . . . . . . . . . . 51 6.2 Exploration de la descendance de x . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.2.1 Sp´cification du r´sultat . . . . . . . . . . . . . . . . e e . . . . . . . . . . . . 53 6.2.2 Principe des m´thodes d’exploration . . . . . . . . . e . . . . . . . . . . . . 53 6.2.3 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.2.4 Texte de l’algorithme g´n´ral d’exploration . . . . . e e . . . . . . . . . . . . 56 6.2.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 56 6.3 Strat´gies d’exploration particuli`res : largeur et profondeur e e . . . . . . . . . . . . 56 6.3.1 Exploration en largeur d’abord . . . . . . . . . . . . . . . . . . . . . . . . 58 6.3.1.1 Une structure de donn´es : la file . . . . . . e . . . . . . . . . . . . 58 6.3.1.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 58 6.3.1.3 Exemple d’ex´cution . . . . . . . . . . . . . e . . . . . . . . . . . . 58 6.3.2 Recherche en profondeur d’abord . . . . . . . . . . . . . . . . . . . . . . . 59 6.3.2.1 Une structure de donn´es : la pile . . . . . e . . . . . . . . . . . . 59 6.3.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.2.3 Exemple d’ex´cution . . . . . . . . . . . . . e . . . . . . . . . . . . 60 6.4 Exemple d’application : calcul de l’ensemble des descendants . . . . . . . . . . . . 62 c IFSIC 2004
    • `TABLE DES MATIERES 5 6.4.1 Cas de la recherche en largeur . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4.2 Cas de la recherche en profondeur : expression r´cursive e . . . . . . . . . . 63 6.5 ´ Enum´ration des chemins ´l´mentaires issus de x . . e ee . . . . . . . . . . . . . . . . 64 6.5.1 Algorithmes gloutons et non gloutons . . . . . . . . . . . . . . . . . . . . 667 Circuits. Composantes fortement connexes 71 7.1 D´termination de l’existence de circuits . . . . . . . . . . . e . . . . . . . . . . . . 71 7.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.1.2 Algorithme de Marimont . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.2.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.2.3 Complexit´ . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 73 7.2 Application des graphes sans circuit : fonction ordinale . . . . . . . . . . . . . . . 74 7.3 Application : fermeture anti-transitive et τ -minimalit´ . . . e . . . . . . . . . . . . 77 7.4 Composantes fortement connexes . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.4.1 D´finition . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 81 7.4.2 Algorithme de FOULKES . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.4.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.4.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 84 7.4.2.3 Complexit´ . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 84 7.4.3 Algorithme descendants-ascendants . . . . . . . . . . . . . . . . . . . . . 85 7.4.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.4.3.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 85 7.4.3.3 Complexit´ . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 85 7.4.4 Algorithme de TARJAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 7.4.4.1 Principe de l’algorithme de TARJAN . . . . . . . . . . . . . . . 87 7.4.4.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 7.4.4.3 Mise en œuvre et texte de l’algorithme . . . . . . . . . . . . . . 90 7.4.4.4 Complexit´ . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 93 7.4.5 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.4.5.1 Recherche d’un graphe minimal dans τ (G) . . . . . . . . . . . . 93 7.4.5.2 Calcul rapide de la fermeture transitive . . . . . . . . . . . . . . 948 Chemins de valeur optimale 97 8.1 D´finitions et probl`mes pos´s . . . . . . . . . . . . . . . . . . e e e . . . . . . . . . . 97 8.2 Chemins de valeur additive minimale issus d’un sommet donn´ e . . . . . . . . . . 99 8.2.1 Existence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 8.2.2 Caract´risation . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . 100 8.3 Algorithme de FORD : exploration . . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.3.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 8.3.3 Une heuristique d’am´lioration . . . . . . . . . . . . . . e . . . . . . . . . . 106 8.4 Algorithme de BELLMANN-KALABA . . . . . . . . . . . . . . . . . . . . . . . 106 8.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 c IFSIC 2004
    • 6 ` TABLE DES MATIERES 8.4.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.3 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.4 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 e 8.4.6 Acc´l´ration de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . 110 ee 8.5 Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA . . . . . . . 112 8.5.1 Principe de l’algorithme de DIJKSTRA . . . . . . . . . . . . . . . . . . . 113 8.5.2 Analyse de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 8.5.3 Exemple d’ex´cution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 e 8.5.4 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.5 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.6 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 e 8.6 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 l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.6.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 e 8.6.6 Adaptations et am´liorations . . . . . . . . . . . . . . . . . . . . . . . . . 122 e 8.6.6.1 Calcul progressif des attributs . . . . . . . . . . . . . . . . . . . 122 8.6.6.2 Mise ` jour de l’ensemble des points d’entr´e . . . . . . . . . . . 122 a e 8.6.6.3 Nouvelle version de l’algorithme . . . . . . . . . . . . . . . . . . 123 8.6.6.4 G´n´ralisation au cas o` 1 n’est pas n´cessairement point d’entr´e124 e e u e e 8.7 Valeurs optimales de tout sommet ` tout sommet . . . . . . . . . . . . . . . . . 124 a 8.7.1 De la fermeture transitive aux valeurs optimales . . . . . . . . . . . . . . 124 8.7.2 Transformation de l’algorithme des puissances . . . . . . . . . . . . . . . . 124 8.7.3 Transformation de l’algorithme de Roy-Warshall . . . . . . . . . . . . 126 8.8 Alg`bres de chemins : transformations d’algorithmes . . . . . . . . . . . . . . . . 128 e9 Probl`mes d’ordonnancement e 135 9.1 Nature des probl`mes . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 135 9.2 Mod´lisation ` l’aide de graphe . . . . . . . . . . . . . . e a . . . . . . . . . . . . . 136 9.2.1 graphe potentiel-tˆche . . . . . . . . . . . . . . . a . . . . . . . . . . . . . 136 9.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 9.3 Ordonnancements particuliers; chemin critique; marges. . . . . . . . . . . . . . 138 9.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 9.5 Choix des algorithmes de r´solution . . . . . . . . . . . . e . . . . . . . . . . . . . 140 9.6 ´ Elimination de contraintes redondantes . . . . . . . . . . . . . . . . . . . . . . . 14210 Arbres ; arbre partiel de poids optimum 145 10.1 D´finition et propri´t´s caract´ristiques . . . . . e ee e . . . . . . . . . . . . . . . . . . 145 10.2 Arbres partiels dans un graphe non orient´ valu´ e e . . . . . . . . . . . . . . . . . . 147 10.3 Algorithme de KRUSKAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 c IFSIC 2004
    • `TABLE DES MATIERES 7 10.3.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 10.3.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10.3.4 Complexit´ . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 151 10.4 Algorithme de PRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.4.1 Principe de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.4.2 Mise en œuvre de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 153 10.4.3 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.4.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15411 Flots dans un r´seau de transport e 157 11.1 Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 11.2 D´finitions et propri´t´s g´n´rales . . . . . . . . . . . . . . e ee e e . . . . . . . . . . . . . 158 11.3 Recherche d’un flot compatible de valeur maximum . . . . . . . . . . . . . . . . . 161 11.3.1 Sch´ma g´n´ral . . . . . . . . . . . . . . . . . . . . e e e . . . . . . . . . . . . . 161 11.3.2 Marquage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 11.3.3 Am´lioration . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 163 11.4 Algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 11.4.1 Fonction marquage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 11.4.2 Proc´dure am´lioration . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . 165 11.4.3 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 11.4.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 11.4.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 168 11.5 Cas des r´seaux bi-partis : mise en œuvre par tableaux . . e . . . . . . . . . . . . . 168 11.6 Application: probl`mes de couplage des graphes bi-partis . e . . . . . . . . . . . . . 176 11.6.1 Le probl`me . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 176 11.6.2 Mod´lisation en r´seau bi-parti . . . . . . . . . . . e e . . . . . . . . . . . . . 177 11.6.3 Exemple: syst`me de repr´sentants distincts . . . . e e . . . . . . . . . . . . . 179A Les op´rations de la classe GRAPHE et leur s´mantique e e 181 c IFSIC 2004
    • 8 ` TABLE DES MATIERES c IFSIC 2004
    • Chapitre 1Introduction, exemples1.1 Historique La th´orie des graphes a pris naissance en 1736 : le math´maticien allemand L. Euler e eapporta une r´ponse au probl`me que se posaient les habitants de la ville de Koenigsberg ; ` e e asavoir :comment traverser les sept ponts de cette ville sans jamais passer deux fois par le mˆme. e Jusqu’en 1946, la th´orie des graphes reste du domaine des math´matiques; les math´maticiens e e eayant associ´ leurs noms aux travaux les plus marquants sont, entre autres : e – au 19`me si`cle : Kirchoff, Hamilton, Sylvester, Kempe, Lucas, Petersen, Tarry e e e e e ¨ – au 20`me si`cle (1`re moiti´) : Poincare, Sainte-Lague, Kuratowski, Hall, Polya, e ¨ Konig, Whitney, Tutte.Des recherches militaires li´es au conflit mondial de 1939-45 naˆ la Recherche Op´rationnelle e ıt eprovoquant un d´veloppement de la th´orie des graphes comme mod`les de probl`mes concrets ; e e e ecet aspect est encore renforc´, dans les ann´es qui suivent, par le d´veloppement des Sciences e e e´Economiques et de Gestion. Les grands sp´cialistes de cette nouvelle orientation des graphes e ¨seront des auteurs tels que Kuhn, Dantzig, Ford, Fulkerson, Ghouila-Houry, Harary,Saaty, Bellmann, Roy, Berge, Faure, Kaufmann, etc... Une troisi`me ´poque a ´t´ ou- e e eeverte dans les ann´es 1960, avec le d´veloppement des sciences de l’information et de la commu- e enication. Des informaticiens tels que Dijkstra, Knuth, Wirth, Sakharovitch, Gondranet beaucoup d’autres, participent au d´veloppement de l’algorithmique des graphes autant qu’` e ala mod´lisation de probl`mes n´s de ces nouvelles sciences en terme de graphes. Une approche e e ehistorique se trouve dans l’introduction de [GM79], qui renvoie d’ailleurs ` un ouvrage historique acomplet sur la premi`re ´poque de la th´orie des graphes (1746-1936) [BLW76]. e e e1.2 Relations graphes et informatique Les relations entre graphes et informatique sont ` double sens : a 1. l’informatique, outil de r´solution de probl`mes de graphes e e 2. les graphes, outil de mod´lisation de probl`mes informatiques. e e On aboutit donc, dans certaines situations, ` l’informatique comme outil de r´solution de ses a epropres probl`mes (via la mod´lisation en termes de graphes). Ce cours s’int´resse essentiellement e e e c IFSIC 2004
    • 10 Introduction, exemples` la partie 1. Outre la n´cessit´ qu’il y a, pour un informaticien, de connaˆa e e ıtre les algorithmesadapt´s aux principaux types de probl`mes de graphe et la mani`re de les programmer, il faut e e emettre l’accent sur un aspect essentiel : l’´tude des techniques de programmation d’algorithmes ede graphe. Cette ´tude est enrichissante par elle- mˆme car elle donne l’occasion d’aborder sur e edes exemples non triviaux des notions d’algorithmique aussi fondamentales que les structures dedonn´es et l’ad´quation de la repr´sentation au probl`me trait´, les niveaux de programmation e e e e e(types abstraits et mise en oeuvre), la complexit´, etc.. e Cependant la mod´lisation de probl`mes en terme de graphes ne doit pas ˆtre n´glig´e. Nous e e e e edonnons dans la section suivante trois exemples de situations– d’origine informatique ou non –qui se prˆtent ` une telle mod´lisation. e a e1.3 Exemples1.3.1 Le probl`me du chou, de la ch`vre et du loup e eL’´nonc´ e e Un passeur, disposant d’une barque, doit faire traverser une rivi`re ` un chou, une ch`vre e a eet un loup. Outre le passeur, la barque peut contenir au plus une des trois unit´s qui doivent etraverser. D’autre part, pour des raisons de s´curit´, le passeur ne doit jamais laisser seuls la e ech`vre et le chou, ou le loup et la ch`vre. (Par contre, le loup ne mangera pas le chou... et e er´ciproquement). Comment le passeur doit-il s’y prendre? eMod´lisation e Il s’agit d’une situation tr`s classique d’un syst`me ` ´tats poss´dant un ´tat initial, un ´tat e e ae e e efinal, et des transitions autoris´es. Chaque ´tat se traduit par un sommet, ou point. Chaque e etransition autoris´e d’un ´tat ` un autre se traduit par un arc, allant du premier ´tat vers le e e a esecond. Dans cet exemple, un ´tat est une configuration possible sur la rive de d´part. D´signons e e epar P le passeur, L le loup, X la ch`vre, C le chou. Une configuration sera alors d´sign´e par e e el’ensemble des pr´sents sur la rive de d´part. L’´tat initial est PLXC et l’´tat final ∅. Chaque e e e earc, repr´sentant une transition possible, sera libell´ –pour la clart´ de la mod´lisation– par la e e e edescription de l’action entreprise (A signifie : aller , R signifie retour. On obtient alors le graphesuivant :Probl`mee Chaque solution correspond ` un chemin dans le graphe, de PLXC ` ∅ et alternant les ´tiquettes a a eA et R. Un chemin correspond ` une s´quence d’actions enchaˆ a e ınables les unes aux autres (l’´tat einitial d’une action est ´gal ` l’´tat final de la pr´c´dente). e a e e eR´solution ePour l’instant, ”` la main” (ou ”au pif”, comme on veut !), on trouve deux solutions : asoit 7 travers´es simples, quelle que soit la solution. Laissons au lecteur le soin de fournir au epasseur, en langage naturel, les explications n´cessaires ` l’accomplissement de sa mission. e a c IFSIC 2004
    • 1.3. Exemples 11 PLX A(PX) L R(PX) A(PX) R(PL) R(PC) PX A(PC) R(P) A(PL) PXLC A(PX) PLC X ∅ R(PL) A(PL) A(PC) LC R(P) R(PC) A(PX) PXC C R(PX) Fig. 1.1 – graphe des transitions L PLX PLXC LC PLC X PX ∅ C PXC Fig. 1.2 – Solution du probl`me des travers´es e e1.3.2 Blocage mutuel dans un partage de ressources 3 philosophes chinois A, B, C poss`dent, ` eux trois, trois baguettes R, S, T. Pour manger, e achacun a besoin de 2 baguettes. Lorsqu’un des philosophes d´sire manger, il requiert deux ebaguettes et ne les lib`re que lorsqu’il a fini son repas 1 . Par contre, tant qu’il n’a pas obtenu eles deux baguettes, il ne peut rien faire qu’attendre : mˆme s’il a eu la chance d’obtenir une ebaguette, il ne la rend pas tant qu’il n’a pas pu aller au bout de son repas. Consid´rons alors la situation suivante : les 3 philosophes ont envie de manger exactement eau mˆme moment, et chacun se pr´cipite sur les baguettes... mais chacun n’en obtient qu’une. e ePour fixer les id´es : e A poss`de R et requiert S e 1. apr`s les avoir soigneusement lav´es! e e c IFSIC 2004
    • 12 Introduction, exemples B poss`de S et requiert T e C poss`de T et requiert R e Bigre ! Il va bien falloir faire preuve de patience... et de philosophie. Ils ne peuvent pas sortirde ce blocage mutuel, et vont donc mourir de faim, sauf si quelqu’un (c’est-`-dire l’un d’eux, aou un personnage ext´rieur) se rend compte de la situation et intervient autoritairement, par eexemple en lib´rant de force une des baguettes pour l’attribuer ` un des deux autres. e a Cette situation est un exemple de ce qui peut se passer dans les syst`mes informatiques ecomplexes, o` plusieurs entit´s (processeurs, p´riph´riques,etc.) se partagent des ressources. u e e eLes entit´s en question ´tant a priori moins intelligentes que les philosophes chinois, il faut e epallier cette lacune en ´tant capable de d´tecter automatiquement les situations d’interblocage. e eQuel que soit le nombre d’entit´s et de ressources, les configurations de possession/requˆte des e eressources par les entit´s peuvent ˆtre mod´lis´es par un graphe de la mani`re suivante : e e e e e. chaque entit´ est repr´sent´ par un sommet e e e. un arc existe, depuis le sommet X vers le sommet Y si X requiert une ressource que poss`de Y.eAinsi, dans l’exemple des philosophes et des baguettes, on obtient le graphe dessin´ figure 1.3 : e B (S) Le libell´ sur l’arc d´signe e e A (T) la ressource demand´e (par e l’origine) et poss´d´e (par e e l’extr´mit´) e e (R) C Fig. 1.3 – graphe des attentes Un tel graphe est dynamique dans la mesure o` les ressources sont lib´r´es et r´-allou´es au u ee e ecours du temps. Mais ` chaque instant, il y a un graphe et un seul et de plus, si une situation ad’interblocage apparaˆ le graphe n’´volue plus. Maintenant, il est clair que l’interblocage entre ıt, eplusieurs entit´s se produit si et seulement si les sommets correspondants sont situ´s sur un e ecircuit, c’est ` dire un chemin dont l’extr´mit´ co¨ a e e ıncide avec l’origine. C’est donc un algorithmede d´tection de circuit qui permettra, ici, de r´soudre le probl`me de d´tection de l’interblocage. e e e e Le probl`me pr´sent´ (interblocage) est un exemple d’un type de situation tr`s courant e e e emettant en jeu des objets (les entit´s) et des relations entre ces objets (la requˆte d’une ressource e eposs´d´e par un autre). e e1.3.3 Fiabilit´ dans les r´seaux e e Un r´seau est un syst`me de communication dans lequel des sites communiquent entre eux e esoit directement, soit par l’interm´diaire d’autres sites, en envoyant des messages qui circulent ele long de lignes de communication. La repr´sentation de tels r´seaux par des graphes est ici e e´vidente, les sites et les lignes correspondant trivialement aux sommets et aux arcs. Mais selone c IFSIC 2004
    • 1.3. Exemples 13le genre d’´tudes que l’on souhaite effectuer, le graphe mod´lisant le r´seau devra ˆtre pr´cis´; e e e e e epar exemple : – les communications sont-elles uni- ou bidirectionnelles? – Un message ´mis parvient-il sˆrement ou de mani`re al´atoire ` destination? e u e e a – Les lignes de communication peuvent-elles acheminer une quantit´ illimit´e ou non d’in- e e formations par unit´ de temps? (d´bit d’une ligne) e e etc... Autant de probl`mes, autant de solutions que l’on cherche ` exprimer en termes d’algorithmes e ade graphe. A titre d’exemple, nous montrons deux probl`mes li´s ` des ´tudes de fiabilit´. e e a e e C A B D Fig. 1.4 – r´seau 1 e C F A D B E G Fig. 1.5 – r´seau 2 eExemple 1. R´sistance aux pannes Dans un r´seau, il peut se produire qu’une ligne de e ecommunication soit coup´e, ne transmettant plus aucun message. Il en est de mˆme pour un site e edont la panne peut ˆtre assimil´e ` la coupure de toutes les lignes qui y aboutissent ou qui en e e apartent. Supposons que, dans un r´seau, on achemine des informations d’un sommet A vers un esommet B, ´ventuellement via des sites interm´diaires servant de relais. De telles informations e edoivent emprunter des chemins allant de A ` B. Ainsi, une information issue de A parviendra ` B si a aet seulement si au moins un chemin est valide (c’est ` dire la s´quence d’arcs qui le constitue ne a ecomporte que des arcs non d´t´rior´s). Le probl`me pos´ est alors le suivant : quel est le nombre ee e e emaximum de pannes auquel cet acheminement peut r´sister? Autrement dit, quel est le nombre emaximum de chemins ind´pendants existant entre A et B? (deux chemins sont ind´pendants si e eet seulement si ils sont disjoints au sens des arcs et des sommets interm´diaires). e c IFSIC 2004
    • 14 Introduction, exemples Dans le r´seau 1, ce nombre est ´gal ` 2 car, s’il n’y a qu’une panne, quelle que soit sa loca- e e alisation (site ou ligne) il reste toujours un chemin valide. Par contre il existe des configurationsa` 2 pannes (lignes AC et DB par exemple) auxquelles l’acheminement ne r´siste pas. e Dans le r´seau 2, ce nombre est ´gal ` 3 (sites D, F, G). e e aExemple 2. Routage de fiabilit´ maximale Dans ce mod`le, chaque ligne (arc) est munie e ed’une valeur, ´gale ` la probabilit´ qu’un message ´mis ` l’origine parvienne sans alt´ration ` e a e e a e al’extr´mit´. Un ´metteur A ´met vers un r´cepteur B, plusieurs parcours d’acheminement ´tant e e e e e epossibles. Si on suppose que les alt´rations des messages sont des ´v`nements ind´pendants, la e e e eprobabilit´ de non alt´ration le long d’un chemin est donc ´gale au produit des probabilit´s de e e e echaque arc le constituant. On cherche donc ` d´terminer un routage de fiabilit´ maximale de A ` a e e aB (c’est ` dire un chemin de A ` B de probabilit´ maximale), repr´sent´ de la mani`re suivante : a a e e e ea` chaque sommet de ce chemin, on associe le sommet suivant. c IFSIC 2004
    • Chapitre 2Graphes : un mod`le math´matique e e2.1 D´finitions math´matiques et notations e e2.1.1 L’objet math´matique e2.1.1.1 Vision ensembliste D´finition 2.1 Un graphe est un doublet G = (X,Γ), o` e u X = ensemble –en g´n´ral fini– appel´ ensemble des sommets e e e Γ=ensemble de couples (x,y) ∈ X 2 , appel´ ensemble des arcs. eAinsi, Γ ⊆ X 2 . Par d´finition d’un ensemble, entre deux sommets donn´s il existe au plus un e earc; on peut toutefois, dans certains cas, consid´rer des multi-graphes dans lesquels plusieurs earcs distincts existent entre deux sommets, mais il faut alors adopter une d´finition diff´rente e epour Γ.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´finition 2.2 Un graphe est un doublet G = (X,Γ), o` e u X = ensemble des sommets Γ= fonction de X dans l’ensemble 2X des parties de X.Ainsi, ` tout sommet x est associ´ l’ensemble Γ(x) ⊆ X. La notation 2X pour d´signer l’ensemble a e edes parties de X vient du fait que, si X est de cardinal fini |X|, le nombre de sous-ensembles c IFSIC 2004
    • 16 Graphes : un mod`le math´matique e e(parties) de X est ´gal ` 2|X| . En effet, si X = {x1 ,x2 , . . . ,xn } la construction d’un sous-ensemble e ade X revient ` d´cider, pour chaque xi , si cet ´l´ment fait partie ou non du sous-ensemble. Il y a a e eedonc n d´cisions binaires ind´pendantes, soit 2 × 2 × . . . × 2 = 2n = 2|X| constructions possibles. e eExemple : graphe G1 X = {1,2,3,4,5,6,7,8,9} Γ(1) = {2,3} ; Γ(2) = {5} ; Γ(3) = {3,4,6} ; Γ(4) = {2,5} ; Γ(5) = {6,7,8} ; Γ(6) = {3} ; Γ(7) = ∅ ; Γ(8) = {7} ; Γ(9) = ∅2.1.1.3 Vision relationnelle A tout graphe G = (X,Γ) est associ´e une relation binaire R sur X, et r´ciproquement, par e el’´quivalence suivante : e xRy ⇐⇒ (x,y) ∈ Γ Nous verrons ult´rieurement qu’` chaque propri´t´ des relations binaires correspond une e a eepropri´t´ du graphe. ee´Equivalences et ordres Parmi les relations binaires, celles qui v´rifient les propri´t´s de e eer´flexivit´ et transitivit´ sont particuli`rement importantes. On les appelle des pr´-ordres, car e e e e eelles elles expriment en particulier les relations de classement avec ex-aequo.Exemple de pr´-ordre Soit E un ensemble d’´l´ments. Chaque ´l´ment x est muni d’une e ee eeestampille enti`re n(x). Il est facile de voir que la relation x ∼ y ⇔ n(x) ≤ n(y) est un pr´- e eordre. Deux ´l´ments distincts x et y sont ex-aequo si n(x) = n(y). La figure 2.1.a montre le eegraphe d’une telle relation. Un pr´-ordre est sp´cialis´ en ´quivalence ou en ordre selon qu’il est sym´trique ou anti- e e e e esym´trique. Ainsi, la relation d’ex-aequo est une ´quivalence car elle est sym´trique (la figure e e e2.1.b en montre le graphe) tandis que la relation x y ⇔ x = y ∨ n(x) < n(y) est un ordrecar elle est antisym´trique (figure 2.1.c). Rappellons qun ordre est dit total si pour tout couple ed’´l´ments x et y, on a toujours xRy ou yRx. Un ordre non complet est dit partiel. C’est le cas eenotamment de l’exemple de la figure 2.1.c), car certains ´l´ments ne sont pas comparables. ee2.1.2 Vocabulaire Pour un arc (x,y) ∈ Γ, x est l’origine et y est l’extr´mit´ de l’arc e e On dit aussi que y est successeur de x, ou que x est pr´d´cesseur de y. e e On note : Γ(x) = {y ∈ X | (x,y) ∈ Γ} l’ensemble des successeurs de x Γ−1 (x) = {z ∈ X | (z,x) ∈ Γ} l’ensemble des pr´d´cesseurs de x e e c IFSIC 2004
    • 2.1. D´finitions math´matiques et notations e e 17 ´e El´ment a b c d e f g h i j k Estampille 10 5 4 5 7 7 3 4 5 2 10j g c b e a a) preordre (sans les consequences transitives ni les boucles de reflexivite) h d f k ij g c b e a b) equivalence (sans les boucles de reflexivite) h d f k ij g c b e a c) ordre (sans les consequences transitives ni les boucles de reflexivite) h d f k i Fig. 2.1 – Pr´-ordre, ´quivalence et ordre e e c IFSIC 2004
    • 18 Graphes : un mod`le math´matique e e Si A ⊂ X : Γ(A) = Γ(x) x∈A Γ−1 (A) = Γ−1 (x) x∈A 1 d+ (x) = card(Γ(x)) est le degr´ ext´rieur de x e e 2 1 d− (x) = card(Γ−1 (x)) est le degr´ int´rieur de x e e 2 d(x) = d+ (x) + d− (x) est le degr´ de x e2.1.3 Propri´t´s de graphes e e On montre, pour quelques propri´t´ des relations binaires, une propri´t´ caract´ristique du ee ee egraphe correspondant. La caract´risation de la transitivit´ ne sera abord´e qu’au chapitre 5 e e e(fermeture transitive). Dans ce qui suit, on pose ∆ = {(x,x)|x ∈ X} (ensemble des “boucles”).R´flexivit´ e e ∀x ∈ X : (x,x) ∈ Γ. Boucle sur chaque sommet . ∆⊂ΓAnti-r´flexivit´ e e ∀x ∈ X : (x,x) ∈ Γ. Graphe sans boucle . ∆∩Γ=∅Sym´trie e ∀x ∈ X,∀y ∈ X : (x,y) ∈ Γ =⇒ (y,x) ∈ Γ. L’existence d’un arc implique l’existence de l’arc oppos´. e Γ=Γ −1Anti-sym´trie e ∀x ∈ X,∀y ∈ X : (x,y) ∈ Γ ∧ (y,x) ∈ Γ =⇒ x = y . L’existence d’un arc interdit l’existence de l’arc oppos´, sauf e dans le cas d’une boucle. Γ ∩ Γ−1 ⊂ ∆ c IFSIC 2004
    • 2.2. Notion de chemin 192.2 Notion de chemin D´finition 2.3 Un chemin de G est une suite de sommets e [xi1 ,xi2 , . . . ,xik ] telle que : (xi1 ,xi2 ) ∈ Γ, (xi2 ,xi3 ) ∈ Γ, . . . , (xik−1 ,xik ) ∈ Γ xi1 en est l’origine, xik l’extr´mit´ et les xij (2 ≤ j ≤ k − 1), s’ils e e existent, les sommets interm´diaires. eUn chemin allant de x ` y, dont on ne pr´cise pas les sommets interm´diaires, sera not´ : a e e e u = [x ∗ y]Si l’on souhaite d´signer des sommets interm´diaires, on utilisera la notation telle que : e e 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 d’arcs qui le composent.u · v d´signe la concat´nation de deux chemins tels que e e extr´mit´ de u = origine de v ; on a alors |u · v| = |u| + |v|. e eUn circuit est un chemin dont l’extr´mit´ co¨ e e ıncide avec l’origine.Un chemin (resp. circuit) ´l´mentaire est d´fini par une suite de sommets sans r´p´tition (sauf ee e e el’origine et l’extr´mit´ pour un circuit) e e2.3 Repr´sentations de l’objet math´matique e e On s’int´resse aux repr´sentations visuelles, destin´es au traitement ”` la main”. On peut e e e autiliser :a)- le graphique (diagramme sagittal) Exemple : graphe G1 2 4 9 1 3 5 7 8 6 Fig. 2.2 – Diagramme Sagittal c IFSIC 2004
    • 20 Graphes : un mod`le math´matique e e Cette repr´sentation pose des probl`mes de topologie (croisements d’arcs) et de lisibilit´ e e elorsqu’il y a beaucoup de sommets et/ou d’arcs. Leurs attributs sont port´s sur le graphique, ece qui peut aussi ˆtre source d’ambigu¨ e. Elle n’est adapt´e en g´n´ral que pour les ”petits” e ıt´ e e egraphes (card(X) ≤ 10).b)- un tableau d’attribution des arcs. S’il s’agit de repr´senter l’existence des arcs, ce ta- ebleau sera une matrice bool´enne. e extr´mit´s → e e 1 2 3 4 5 6 7 8 9 origines ↓ 1 1 1 2 1 3 1 1 1 4 1 1 5 1 1 1 6 1 7 8 1 9 c)- dictionnaire des successeurs resp. des pr´d´cesseurs e e 1 2, 3 1 / 2 5 2 1, 4 3 3, 4, 6 3 1, 3, 6 4 2, 5 4 3 5 6, 7, 8 5 2, 4 6 3 6 3, 5 7 / 7 5, 8 8 7 8 5 9 / 9 /Un seul de ces deux tableaux suffit ` sp´cifier compl`tement le graphe. a e e c IFSIC 2004
    • Chapitre 3Aspect algorithmique : un type dedonn´es abstrait e Dans ce chapitre on donne d’abord trois exemples de repr´sentation algorithmique. Puis eon fait abstraction des repr´sentations particuli`res en d´finissant le type de donn´es abstrait e e e eGRAPHE. Le probl`me est de repr´senter, ` l’aide de structures de donn´es algorithmiques, le e e a edoublet math´matique (X,Γ) avec Γ ⊆ X 2 . e3.1 Les sommets et les arcs La d´finition des types Sommet et Arc est utilis´e dans toutes les repr´sentations de graphes. e e eElle est pr´sent´e ci-dessous. e e3.1.1 Le type Sommet Tout sommet est identifi´ par un num´ro (entier), qui sera d´sign´ par num. En g´n´ral, on e e e e e esuppose que num≥ 1. La notation algorithmique est la suivante : ENT SOMMET::num ;signifiant que les objets de type SOMMET ont un attribut de nom num et de type entier. L’expressionx.num d´signe alors le num´ro du sommet x. e e3.1.2 Le type Arc Tout arc poss`de deux sommets (son origine et son extr´mit´). e e e SOMMET ARC::ori ; SOMMET ARC::ext ; Si γ est un objet de type arc, l’expression γ .ori (resp. γ .ext) d´signe le sommet origine e(resp. extr´mit´) de l’arc γ, et γ .ori.num (resp. γ .ext.num) le num´ro du sommet origine (resp. e e eextr´mit´) de γ. e e c IFSIC 2004
    • 22 Aspect algorithmique : un type de donn´es abstrait e i j Dans une repr´sentation graphique on utilisera souvent le sch´ma ci-dessous pour indiquer e eque l’arc dessin´ relie le sommet de num´ro i au sommet de num´ro j. e e e Par commodit´ de notation, on d´signera souvent par (x,y) l’arc γ tel que γ .ori=x et γ .ext=y, e eou par (i,j) l’arc γ tel que γ .ori.num=i et γ .ext.num=j.3.2 Trois exemples de repr´sentation concr`te e e Ces exemples utilisent les structures de donn´es suppos´es connues TABLEAU[G], TABLEAU2[G], e eLISTE[G]. La premi`re d´crit les tableaux ` une dimension, la deuxi`me les tableaux ` deux e e a e adimensions et la troisi`me les listes chaˆ ees. L’identificateur G d´signe le type des ´l´ments e ın´ e eecontenus dans ces structures (type g´n´rique formel). e e3.2.1 Repr´sentation par tableaux e ENT GRAPHE::nmax ; -- num´ro maximum de sommet. On repr´sente les graphes dont les sommets peuvent ˆtre num´ e e e TABLEAU[BOOL] GRAPHE::vs ; -- G.vs[i] indique l’existence du sommet de num´ro i, 1 ≤ i ≤ G.nmax e TABLEAU2[BOOL] GRAPHE::m ; -- G.m[i,j] indique l’existence de l’arc (i,j), 1 ≤ i, j ≤ G.nmaxOn a toujours l’implication ∀i ∀j : G.m[i,j] ⇒ G.vs[i] ∧ G.vs[j] (un arc ne peut relier que dessommets existants). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont repr´sent´s de la mani`re e e e esuivante : x ∈ X ⇔ G.vs[x.num] (x,y) ∈ Γ ⇔ G.m[x.num,y.num]Exemple : Graphe G1 nmax = 10 ; 1 2 3 4 5 6 7 8 9 10vs v v v v v v v v v f c IFSIC 2004
    • 3.2. Trois exemples de repr´sentation concr`te e e 23 1 2 3 4 5 6 7 8 9 10 1 v v 2 v 3 v v v 4 v vm 5 v v v les cases vides ont 6 v des valeurs faux 7 8 v 9 103.2.2 Repr´sentation par tableaux et listes e Les attributs nmax et vs sont d´finis comme pr´c´demment. e e e TABLEAU[LISTE[SOMMET]] GRAPHE::ts ; -- G.ts[i] d´signe la liste des successeurs du sommet e de num´ro i, 1 ≤ i ≤ G.nmax. eOn a toujours : si G.vs[i] est faux, alors G.ts[i] est n´cessairement vide (en fait, cette liste en’est mˆme pas d´finie). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont e e erepr´sent´s de la mani`re suivante : e e e x ∈ X ⇔ G.vs[x.num] (x,y) ∈ Γ ⇔ G.ts[x.num].contient(y)Exemple : Graphe G1 nmax = 10 ; 1 2 3 4 5 6 7 8 9 10vs v v v v v v v v v f3.2.3 Repr´sentation d´centralis´e par listes e e e Le type SOMMET est enrichi : chaque sommet a maintenant comme attribut la liste de sessuccesseurs. Le graphe se r´duit alors ` la liste de ses sommets. e a ENT SOMMET::num ; -- comme pr´c´demment e e 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´sentation du graphe G = (X,Γ), les ensembles X et Γ sont repr´sent´s de la e e emani`re suivante : e x ∈ X ⇔ G.lsom.contient(x) c IFSIC 2004
    • 24 Aspect algorithmique : un type de donn´es abstrait ets 1 [ 2; 3 ] 2 [5] 3 [ 3; 4; 6 ] 4 [ 2; 5 ] 5 [ 6; 7; 8 ] 6 [3] 7 [] 8 [7 ] 9 [9] 10 (x,y) ∈ Γ ⇔ G.lsom.contient(x) et G.lsom.contient(y) et x.ls.contient(y) lsom 1 2 3 4 5 6 7 8 9 G1 x.ls [ 2; 3 ] [5] [ 3; 4; 6 ] [ 2; 5 ] [ 6; 7; 8 ] 3 ] [ [] [7 ] [9]Exemple : Graphe G13.3 Le type abstrait Graphe : les m´thodes e La plupart des algorithmes de r´solution de probl`mes mod´lis´s par des graphes peuvent ˆtre e e e e ed´crits ` l’aide de traitements plus ou moins ´l´mentaires sur le graphe mod´lisant le probl`me. e a ee e eCette description –enchaˆ ınement contrˆl´ des actions– est ´videmment, ` un certain niveau, oe e aintrins`que, c’est ` dire ind´pendante de la repr´sentation choisie pour le graphe. e a e e Par exemple, l’algorithme de saisie ci-apr`s construit un graphe ` partir de donn´es lues dans e a eun fichier. Le format de pr´sentation des donn´es est le suivant : e e – S´quence des arcs, chaque arc ´tant donn´ comme un couple d’entiers (num´ro d’origine, e e e e num´ro d’extr´mit´), termin´e par (0,0); e e e e – s´quence des num´ros des sommets isol´s, termin´e par 0. e e e eExprim´ en faisant abstraction d’une repr´sentation concr`te particuli`re, on obtient le texte: e e e eGRAPHE construction c’est local ENT i, j ; c IFSIC 2004
    • 3.3. Le type abstrait Graphe : les m´thodes e 25 GRAPHE G ; d´but e -- 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´s e depuis i ← lire jusqua i=0 faire G. ajout sommet(i) ; i ← lire fait ; Result ← G -- Result est une variable exprimant le r´sultat d’une fonction e fin L’algorithme, pr´sent´ sous cette forme, peut s’appliquer ` n’importe quelle repr´sentation e e a einterne du graphe : il suffit, dans chaque cas, de ”traduire” convenablement les op´rations in- ediqu´s en italique. e Dans ce texte, le type GRAPHE n’est pas d´fini concr`tement : on l’appelle type abstrait. e eCela signifie, qu’` ce niveau d’expression, on n’a pas besoin d’en savoir plus sur les structures ade donn´es qui seront effectivement utilis´es pour repr´senter concr`tement l’objet G. e e e e Les traitements ´l´mentaires en italique ont ´t´ d´nomm´s. On les appelle des m´thodes du ee ee e e etype abstrait GRAPHE, et tout ce que l’on a besoin de connaˆıtre est leur s´mantique. Ainsi, on eaura d´fini une fois pour toutes que : e creer : proc´dure qui initialise le graphe courant au graphe vide (∅,∅). e ajoutarc(ENT i; ENT j) : ajout au graphe courant de l’arc (i, j) (et au besoin des sommets de num´ro i et j) e ajout sommet(ENT i) : ajout au graphe courant du sommet de num´ro i e La liste compl`te des acc`s, avec leur s´mantique, est donn´e en Annexe. e e e e On peut poursuivre cette d´marche. En effet, les structures de donn´es utilis´s dans les e e erepr´sentations ”concr`tes” des graphes peuvent ˆtre elles aussi consid´r´es comme des types de e e e eedonn´es abstraits (c’est le cas par exemple du type g´n´rique LISTE[T]). Ces types de donn´es e e e eabstraits peuvent ` leur tour ˆtre manipul´s ` travers leurs m´thodes, et mis en oeuvre selon a e e a ediverses repr´sentations concr`tes, etc. Dans le cas du type LISTE[T], par exemple, la m´thode e e e c IFSIC 2004
    • 26 Aspect algorithmique : un type de donn´es abstrait eBOOL contient(T x) est telle que .contient(x) renvoie vrai si et seulement si la liste contientun ´l´ment de type T, de valeur x. ee Nous ne d´taillerons pas ici ces repr´sentations, qui sont ´tudi´es dans les cours de tech- e e e eniques de programmation ou structures de donn´es. Il faut n´anmoins mettre l’accent sur le e efait essentiel que la d´marche est absolument identique dans le cas des graphes, des listes, etc... : es´parer la partie intrins`que d’un algorithme des d´tails de mise en oeuvre, ou d’impl´mentation. e e e eOn peut toujours d´finir de nouveaux niveaux d’abstraction, ` condition de bien pr´ciser les e a etypes abstraits manipul´s et leurs m´thodes. Remarquons enfin que les types pr´d´finis, mˆme e e e e e´l´mentaires (r´el, entier, caract`re, bool´en) utilis´s dans les langages de haut niveau sontee e e e eeux aussi des types abstraits par rapport ` la machine, leur impl´mentation concr`te en m´moire a e e ed´pendant du mat´riel utilis´ ; les m´thodes sont alors, dans un langage donn´, les op´rations e e e e e epr´d´finies du langage telles que : lecture/´criture, op´rations arithm´tiques ou logiques, com- e e e e eparaisons, etc... Cette d´marche de programmation par abstractions successives est r´alis´e, notamment, e e edans les langages dits de “programmation par objets”, appel´s encore, improprement, “langages eorient´s objets”. Citons, parmi les plus connus, Eiffel, Java, C++, dans une moindre mesure eTurbo-Pascal (` partir de la version 6) ou encore, plus anciens, Simula et Smalltalk. Dans aces langages, les types sont d´crits dans des classes, contenant tout ` la fois les valeurs des objets e adu type (appel´s attributs) et les m´thodes permettant de manipuler ces valeurs (en lecture ou e een ´criture). Nous renvoyons, pour plus de d´tail, aux cours de programmation s’appuyant sur e ela d´marche par objets. Dans la suite de ce polycopi´, les notations utilis´es dans la description e e edes algorithmes seront proches de celles utilis´es dans de tels langages, sans pour autant ˆtre li´e e e ea` l’un d’entre eux en particulier. Le . est l’op´rateur d’application de m´thode ou d’attribut ` e e al’objet d´sign´. Par exemple, G.ajout arc(i,j) est une instruction, signifiant que l’on applique e el’op´ration ajout arc, avec les deux param`tres effectifs i et j ` l’objet de type GRAPHE d´sign´ par e e a e eG. De mˆme, G.valid arc(i,j) est une expression dont l’´valuation renvoie une valeur bool´enne, e e evalant vrai si et seulement si l’objet de type GRAPHE d´sign´ par G poss`de l’arc (i, j). e e e3.4 Notations L’approche objet interdit en g´n´ral d’acc´der directement aux attributs d’un objet distant, e e eque ce soit en ´criture (c’est-`-dire pour affecter directement sa valeur) ou mˆme en lecture e a e(pour obtenir sa valeur). Dans ce cas, des ´critures telles que e x.att := valeur (affectation ”` distance”, c’est-`-dire via x, de l’attribut att), ou mˆme a a e v:=x.att (lecture ”` distance”, c’est-`-dire via x de l’attribut att) a a sont souvent interdites; de telles op´rations ne peuvent en effet ˆtre r´alis´es que par des e e e em´thodes (proc´dures ou fonctions) ´quipant le type de l’objet d´sign´ par x. e e e e e Par exemple, avec la d´claration eREEL SOMMET::lambda ;la mise ` jour de l’attribut lambda d’un objet de type SOMMET d´sign´ par x ne pourra se faire a e eque si le type SOMMET poss`de une m´thode e e c IFSIC 2004
    • 3.4. Notations 27affecter lambda(REEL v) post lambda=vqui effectue, de mani`re interne, l’affectation lambda:=v. L’instruction externe r´alisant une telle e emise ` jour s’´crira alors : a e x.affecter lambda(4.18) Toutefois, afin d’all´ger l’´criture des algorithmes et d’en faciliter la lecture, nous utiliserons e ele symbole ← ayant la signification suivante: x.lambda ←4.18 suppose que le type SOMMET est ´quip´ d’une m´thode r´alisant cette affecta- e e e etion. L’´criture e ci-dessus est alors ´quivalente e ` a l’instruction d’appelx.affecter lambda(4.18). Dans un mˆme souci de simplification, une expression telle x.lambda ed´livre la valeur de l’attribut lambda de l’objet d´sign´ par x, en supposant que le type de x est e e e´quip´ d’une m´thode permettant cette lecture (certains langages, comme Eiffel, permettent dee e etelles lectures directes, ` condition que l’attribut soit ”exportable”). a Enfin, toujours pour all´ger le formalisme, si a et b d´signent deux objets de mˆme type, e e el’´criture a ←b d´note l’instruction de copie de l’objet d´sign´ par b dans l’objet d´sign´ par a e e e e e e(affectation de valeurs). Finalement, dans les parties “math´matiques” (propri´t´s, d´monstrations, etc.) nous utilise- e ee erons des notations fonctionnelles plus classiques telles que λ(x) ou pred(x) (au lieu des notations“algorithmiques” x.lambda ou x.pred). D’une mani`re g´n´rale, x d´signant un objet d’un type e e e eC, et att un attribut de ce type, les deux notations att(x) et x.att seront consid´r´es comme eeayant la mˆme signification. e c IFSIC 2004
    • 28 Aspect algorithmique : un type de donn´es abstrait e c IFSIC 2004
    • Chapitre 4Relations et op´rateurs entre egraphes Dans ce qui suit, nous d´signerons par G(X) l’ensemble des graphes ayant X comme ensemble ede sommets. Sur G(X), nous pouvons consid´rer un certain nombre de relations ou op´rations; dans ce e echapitre, nous en ´tudions quelques unes. On note : e G1 = (X,Γ1 ),G2 = (X,Γ2 ) deux ´l´ments de G(X). ee4.1 Relation d’ordre La relation G1 G2 ⇐⇒ Γ1 ⊂ Γ2 qui se lit : “G1 est un graphe partiel de G2 ” est une relation d’ordre partiel sur G(X). Pour cette relation, G(X) a un minimum : (X,∅) maximum : (X,X 2 ) Toute partie de G(X) poss`de d’ailleurs au moins un minorant et un majorant, comme c’est ele cas de toute partie finie d’un ensemble ordonn´. e4.2 Union G1 ∪ G2 = (X,Γ1 ∪ Γ2 ) Cet op´rateur poss`de toutes les propri´t´s de l’union ensembliste. e e ee c IFSIC 2004
    • 30 Relations et op´rateurs entre graphes e4.3 Composition4.3.1 D´finition e G3 = G1 ◦ G2 = (X,Γ3 )est d´fini par : e Γ3 = {(x,y) | ∃z ∈ X : (x,z) ∈ Γ1 ∧ (z,y) ∈ Γ2 } L’op´rateur ◦ n’est pas commutatif. Toutefois, il est associatif et poss`de un ´l´ment neutre, e e eea` savoir le graphe ”diagonal” : D = (X,∆) o` ∆ = {(x,x) | x ∈ X} u En effet, ∀G ∈ G(X) : G ◦ D = D ◦ G = G. Par abus de notation, on ´crira parfois e Γ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´monstration laiss´e au lecteur). e e Par contre, ∪ n’est pas distributif par rapport ` ◦ : a (G1 ◦ G2 ) ∪ G3 = (G1 ∪ G3 ) ◦ (G2 ∪ G3 )contre-exempleG1 = G2 2 2G3 = D 1 1G1 ◦ G2 = (X,∅)(G1 ◦ G2 ) ∪ G3 = D 3 3D’autre part : G1=G2 D(G1 ∪ D) ◦ (G2 ∪ D) = G1 ∪ D Proposition 4.2 L’op´rateur ◦ est compatible ` gauche et ` droite avec e a a la relation d’ordre d´finie en 3.1 e c IFSIC 2004
    • 4.3. Composition 31D´monstration : Cet ´nonc´ signifie que e e e ∀G1 ,G2 ,G3 ∈ G(X) : G1 G2 ⇒ (G1 ◦ G3 G2 ◦ G3 ) ∧ (G3 ◦ G1 G3 ◦ G2 )Si Gi = (X,Γi ) (i = 1,2,3), on a : (x,y) ∈ Γ1 ◦ Γ3 ⇒ ∃z ∈ X : (x,z) ∈ Γ1 ∧ (z,y) ∈ Γ3 ⇒ ∃z ∈ X : (x,z) ∈ Γ2 ∧ (z,y) ∈ Γ3 ⇒ (x,y) ∈ Γ2 ◦ Γ3ce qui montre que G1 ◦ G3 G2 ◦ G3 . La deuxi`me in´galit´ se montre de mani`re analogue.P e e e e4.3.2 Algorithme Nous donnons ci-dessous un algorithme de construction de G3 = G1 ◦ G2 , en supposant poursimplifier que X = [1..n]4.3.2.1 Analyse Pour tout couple (x,y) ∈ X 2 , il faut d´terminer si (x,y) est ou non un arc de G3 . Par ed´finition, e (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 s’agit d’´valuer le pr´dicat : e e ∃t 1 ≤ t ≤ n : P (t). Cette ´valuation est mise en œuvre par un calcul it´ratif. La figure e eci-dessous en d´termine l’invariant : e zone deja examinee zone non encore examinee 1 z z+ 1 nc’est-`-dire, plus formellement : a I ≡ (0 ≤ z ≤ n) ∧ (b = ∃t 1 ≤ t ≤ z : P (t)) Le calcul sera termin´ lorsque : e (z = n) ∨ bet, lorsque ceci se produit : – si b alors (∃t 1 ≤ t ≤ z : P (t)) ∧ (z ≤ n), c’est-`-dire (∃t 1 ≤ t ≤ n : P (t)) (*succes*) a – si ¬b alors (z = n) ∧ ¬(∃t 1 ≤ t ≤ n : P (t)) (* ´chec *) eLe r´sultat est donc ´gal ` b e e a Si le calcul n’est pas termin´, on progresse en mettant ` jour les variables z et b de la mani`re e a esuivante : z←z + 1 ; b←P (z) c IFSIC 2004
    • 32 Relations et op´rateurs entre graphes e Les valeurs initiales doivent satisfaire l’invariant ; par exemple, on peut prendre : z←0 ; b←f alse De cette analyse d´coule le texte de l’algorithme. e4.3.2.2 Texte de l’algorithme Il est donn´ page 32. e ALGORITHME DE CONSTRUCTION DE G1◦G2GRAPHE composer(GRAPHE G1, G2) c’est-- pr´ : G1 et G2 ont le mˆme ensemble de sommets : e e-- G1.ens som=G2.ens som={1,...,n} local SOMMET x,y,z; BOOL b; d´but e Result.creer;-- Result est une variable implicite de type GRAPHE, exprimantle r´sultat de la fonction e 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 fin4.3.3 Complexit´ e La boucle interne depuis ... jqa comporte au plus n pas , et elle est ex´cut´e exactement n2 e efois. La complexit´ maximum est donc : e2n3 acc`s validarc en3 op´rations et en2 acc`s ajoutarc e c IFSIC 2004
    • 4.4. Puissances d’un graphe 33 On dit que c’est un algorithme en O(n3 ), en termes d’acc`s validarc. eRemarques 1) La complexit´ de mise en œuvre de chacun des acc`s d´pend ´videmment de la repr´sentation e e e e echoisie pour chacun des 3 graphes G1, G2, Result. 2) Si les graphes sont tous les trois repr´sent´s par leur matrice bool´enne, alors il est facile e e ede voir que M3 = M1 · M2 o` le · d´signe le produit matriciel bool´en de deux matrices : u e e n ∀1 ≤ i,j ≤ n : m3ij = (m1ik ∧ m2kj ) k=14.4 Puissances d’un graphe On d´finit par r´currence sur p ∈ N le graphe G[p] = (X,Γ[p] ) de la mani`re suivante : e e e D´finition 4.3 e G[0] = D ∀p ≥ 1 : G[p] = G[p−1] ◦ G = G ◦ G[p−1]propri´t´s : G[k] ◦ G[l] = G[k+l] e e(G[k] )[l] = G[kl](identiques aux puissances des nombres r´els) e Nous allons interpr´ter les puissances d’un graphe. e Proposition 4.4 Soit G[p] = (X,Γ[p] ) la puissance peme d’un graphe ` G = (X,Γ). Alors, (x,y) ∈ Γ[p] si et seulement si il existe, dans G, un chemin de longueur p, allant de x ` y (ce chemin est un circuit si x = a y).D´monstration Par r´currence sur p : e e – Pour p= 1, le r´sultat est ´vident : G[1] = (X,Γ) et les arcs sont les chemins de longueur 1. e e – Supposons d´montr´ jusqu’` p-1. e e a (x,y) ∈ Γ[p] = Γ[p−1] ◦ Γ ⇐⇒ ∃z ∈ X : (x,z) ∈ Γ[p−1] ∧ (z,y) ∈ Γ c IFSIC 2004
    • 34 Relations et op´rateurs entre graphes e ⇐⇒ ∃z ∈ X : ∃u = [x ∗ z], | u |= p − 1 ∧ ∃v = [zy], | v |= 1 ⇐⇒ ∃w = u.v = [x ∗ y], | w |=| u | + | v |= p ce qui d´montre le r´sultat pour p P e e4.5 Graphe transpos´ e D´finition 4.5 Le graphe transpos´ de G = (X,Γ) est : e e Gt = (X,Γt ) avec (x,y) ∈ Γt ⇐⇒ (y,x) ∈ Γ C’est donc le graphe d´duit de G par inversion du sens de tous les arcs. On utilise parfois ela notation Γ −1 , lorsqu’on veut exprimer le fait que l’application multivoque associ´e ` Gt e aest l’inverse de l’application multivoque Γ li´e ` G. Remarquons toutefois que les relations e aΓ ◦ Γ−1 = ∆ ou Γ−1 ◦ Γ = ∆ ne sont en g´n´ral pas v´rifi´es. Ainsi, Γ−1 ne doit pas ˆtre e e e e econsid´r´ comme la ”puissance moins un” du graphe, mais bien comme une notation d´signant ee el’ensemble des arcs du graphe transpos´.e4.6 Sous-graphe Dans ce paragraphe, les graphes consid´r´s ne sont pas tous construits sur le mˆme ensemble ee ede sommets. En effet, si nous avons un graphe G = (X,Γ), certaines op´rations sur G peuvent eamener ` supprimer des sommets. Or, si un sommet est ˆt´ du graphe, il va de soi que les a oe´ventuels arcs adjacents ` X doivent aussi ˆtre supprim´s : la suppression d’un objet entraˆ lae a e e ınesuppression de toutes les relations relatives ` cet objet ! Cette remarque pr´liminaire conduit ` a e ala d´finition suivante : e D´finition 4.6 Soit G = (X,Γ) ∈ G(X) et A ⊂ X. e Le sous-graphe engendr´ par A est d´fini par : e e 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´ par A : esous graphe(ENS[SOMMET] A) c’est local SOMMET z c IFSIC 2004
    • 4.6. Sous-graphe 35 d´but e pourtout z de ens som faire si z ∈ A alors oter sommet(z) fsi fpourtout fin c IFSIC 2004
    • 36 Relations et op´rateurs entre graphes e c IFSIC 2004
    • Chapitre 5Fermeture transitive Le probl`me ´tudi´ dans ce chapitre est celui de l’existence des chemins entre tous les couples e e ede sommets. Plus pr´cis´ment : e e ´ Etant donn´ un graphe G = (X,Γ), construire le graphe G+ = (X,Γ+ ) tel que (x,y) ∈ Γ+ ⇔ eil existe un chemin de G allant de x ` y. G+ s’appelle la fermeture transitive de G. a Nous allons voir successivement les bases th´oriques, puis deux algorithmes permettant de er´soudre le probl`me, et enfin des exemples d’application. e e5.1 Retour sur la transitivit´ e Un graphe est transitif si la relation binaire qui lui est associ´e est transitive. En d’autres etermes : ∀x,y,z ∈ X : (x,y) ∈ Γ ∧ (y,z) ∈ Γ =⇒ (x,z) ∈ Γ. Voici une propri´t´ caract´ristique des graphes transitifs: ee e Proposition 5.1 Un graphe G est transitif si et seulement si tout che- min de longueur deux est sous-tendu par un arc, c’est-`-dire : Γ[2] ⊂ Γ aD´monstration e1. Supposons G transitif. G transitif ⇒ ∀x∀y∀z ((x,y) ∈ Γ ∧ (y,z) ∈ Γ ⇒ (x,z) ∈ Γ) ⇒ ∀x∀z (∃y ((x,y) ∈ Γ ∧ (y,z) ∈ Γ) ⇒ (x,z) ∈ Γ) ⇒ ∀x∀z (x,z) ∈ Γ[2] ⇒ (x,z) ∈ Γ ⇒ Γ[2] ⊆ Γ2. R´ciproquement, supposons Γ[2] ⊆ Γ. e (x,z) ∈ Γ ∧ (z,y) ∈ Γ ⇒ (x,y) ∈ Γ[2] ⇒ (x,y) ∈ Γ P ⇒ G est transitif Cette propri´t´ admet un corollaire ´vident: ee e 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, c’est-`-dire : ∀k ≥ 2 : Γ[k] ⊂ Γ aD´monstration Par r´currence sur k : e e – vrai pour k = 2, d’apr`s la proposition pr´c´dente. e e e – Hypoth`se de r´currence : Γ e e [k−1] ⊆ Γ. Cela signifie: G[k−1] G. On a alors : [k] [k−1] G = G ◦G G ◦ G(hypoth`se de r´currence et proposition 4.2) e e G[2] G (proposition 5.1) P L’interpr´tation “concr`te” de ce corollaire est la suivante : dans un graphe transitif, la notion e ede chemin se confond avec la notion d’arc.Nous allons maintenant aborder les caract´risations et les algorithmes de calcul de la fermeture etransitive. Le terme de fermeture transitive provient du fait que, d’une part, G+ est transitif(par construction!), et d’autre part, G+ est le plus petit graphe transitif sup´rieur ou ´gal ` G e e a(au sens de la relation ). Plus pr´cis´ment : e e – G + est transitif, – G G+ – Si H est transitif et G H, alors G+ HIntuitivement, on obtient G+ ` partir de G en rajoutant “juste ce qu’il faut” d’arcs pour rendre ale graphe transitif. La d´monstration de ces propri´t´s ne pr´sente aucune difficult´. Elle est e ee e elaiss´e en exercice au lecteur. e5.2 Caract´risation du graphe G+ e Proposition 5.3 G+ = G ∪ G[2] ∪ . . . ∪ G[k] ∪ . . .D´monstration Posons G+ = (X,Γ+ ) et, ∀k ≥ 1, G[k] = (X,Γ[k] ). Par d´finition, e e (x,y) ∈ Γ+ ⇔ ∃u = [x y] dans G ⇔ (x,y) ∈ Γ[k] ,o` k = |u| u ⇔ (x,y) ∈ Γ ∪ Γ[2] ∪ . . . ∪ Γ[k] ∪ . . . P La proposition suivante montre que le probl`me se r´duit ` l’existence des chemins ´l´mentaires. e e a ee c IFSIC 2004
    • 5.2. Caract´risation du graphe G+ e 39 Proposition 5.4 Les deux propositions suivantes sont ´quivalentes : e i) Dans le graphe G, il existe un chemin de x ` y, a ii) Dans le graphe G, il existe un chemin ´l´mentaire de x ` y ee a e ´D´monstration ii) ⇒ i). Evident puisque tout chemin ´l´mentaire est un chemin. eei) ⇒ ii). Supposons qu’il existe un chemin u = [x ∗ y]. S’il est ´l´mentaire, la d´monstration est ee etermin´e; sinon, la suite de sommets le d´finissant comporte au moins une r´p´tition : e e e e u = [x ∗ z ∗ z ∗ y] (´ventuellement, z = x ou z = y) eOn a donc : u = u1 · u2 · u3avec u1 = [x ∗ z],u2 = [z ∗ z],u3 = [z ∗ y] et u’ = u1 · u3 est un chemin de x ` y, obtenu ` a apartir de u en ”court-circuitant” le circuit [z ∗ z]. En it´rant ce raisonnement tant qu’il y a des er´p´titions (circuits contenus dans le chemin), on obtient n´cessairement un chemin ´l´mentaire e e e eereliant x ` y. a P Des deux propositions pr´c´dentes r´sulte la caract´risation suivante : e e e e Corollaire 5.5 Soit G = (X,Γ) et n =| X |. On a : G+ = G ∪ G[2] ∪ . . . ∪ G[n]D´monstration Le r´sultat d´coule des deux propositions pr´c´dentes et du fait que tout e e e e echemin ´l´mentaire est de longueur ≤ n (et mˆme ≤ n − 1 si ce n’est pas un circuit). ee e P On peut encore ˆtre plus pr´cis : e e Proposition 5.6 Soit k la longueur maximum des chemins ´l´mentaires de G. Alors : ee i) k ≤ n, k k+1 ii) G[j] = G[j] j=1 j=1 iii) G+ =G ∪ G[2] ∪ . . . ∪ G[k]D´monstration i) : par d´finition des chemins ´l´mentaires (longueur ≤ n) e e ee k+1ii) Si (x,y) ∈ G[j] alors il existe dans G un chemin u de longueur ≤ k + 1, allant de x ` y. a j=1D’apr`s la proposition 5.4, il existe dans G un chemin ´l´mentaire allant de x ` y; autrement dit, e ee a c IFSIC 2004
    • 40 Fermeture transitive k k k+1 [j] [j]il existe un entier ≤ k tel que (x,y) ∈ G[ ] . Comme G[ ] ⊆ G on a bien G = G[j] . j=1 j=1 j=1iii) Imm´diat D’apr`s le point pr´c´dent et le corollaire 5.5 e e e e P5.3 Algorithme des puissances L’algorithme des puissances calcule G+ en se basant sur la proposition 5.6. Il est construiten maintenant invariante la proposition ci-dessous : (G+ = G ∪ ... ∪ G[k] ) ∧ (H = G ∪ ... ∪ G[k−1] ) ∧ (1 ≤ k ≤ n) Le calcul sera donc termin´ lorsque H = G+ e Si le calcul n’est pas termin´, la progression consiste ` mettre ` jour les variables H,G+ : e a a H ← G+ ; G+ ← G ∪ (G+ ◦ G)En effet : k si G+ = G[j] alors j=1 k+1 G+ ◦ G = G[j] (distributivit´ de ◦ par rapport ` ∪) d’o` e a u j=2 k+1 G ∪ (G+ ◦ G) = G[j] j=1 Les valeurs initiales doivent v´rifier l’invariant et ˆtre faciles ` ´valuer en fonction des e e a edonn´es : e G+ ← G, H arbitraire (mais = G+ , par exemple : H ← (∅,∅)). Le texte de l’algorithme en d´coule. e5.3.1 Texte de l’algorithme Il est donn´ page 41 e c IFSIC 2004
    • 5.4. Algorithme de Roy-Warshall 41 FERMETURE TRANSITIVE : PUISSANCESGRAPHE fermeture-transitive-puissance(GRAPHE G) c’est local GRAPHE H d´but e depuis Result ← G ; H.creer jusqua H=Result faire H ← Result ; Result ← G ∪(G ◦ Result) fait fin5.3.2 Complexit´ e Au maximum, n pas d’it´ration sont effectu´s. A chaque pas, sont effectu´s : e e e• 2 affectations de graphe, en O(n2 ) acc`s ´l´mentaires, e ee• 1 comparaison de 2 graphes, en O(n2 ) acc`s ´l´mentaires, e ee• 1 op´ration ◦, e en O(n3 ) acc`s ´l´mentaires (chapitre 4, section4.3.3) e ee• 1 op´ration ∪, e en O(n2 ) acc`s ´l´mentaires. e eeC’est donc un algorithme en O(n4 ) acc`s ´l´mentaires. e eeDe plus, l’espace utilis´ est de 3 graphes. e5.4 Algorithme de Roy-Warshall Par rapport ` l’ algorithme pr´c´dent, bas´ sur les calculs de puissances, celui-ci pr´sente les a e e e eavantages suivants : – sa complexit´ est en O(n3 ) acc`s, e e – l’espace utilis´ n’est que de 1 graphe, e – il offre la possibilit´ de calculer des routages, c’est ` dire d’obtenir le trac´ de chemins e a e ´l´mentaires. ee5.4.1 Principe de l’algorithme L’algorithme est bas´ sur l’op´ration ´l´mentaire Θ suivante : e e ee c IFSIC 2004
    • 42 Fermeture transitive D´finition 5.7 Soit x ∈ X. Si G = (X,Γ) ∈ G(X), alors Θx (G) ∈ e G(X) a pour ensemble d’arcs : Θx (Γ) = Γ ∪ {(y,z) | (y,x) ∈ Γ ∧ (x,z) ∈ Γ}Autrement dit, Θx enrichit le graphe en lui ajoutant les arcs reliant les pr´d´cesseurs de x aux e esuccesseurs de x.L’algorithme est bas´ sur une nouvelle caract´risation de la fermeture transitive : e e G+ = Θx (G) x∈X o` u d´signe le produit (composition) des op´rations Θx , c’est ` dire, si X = {1,2, . . . ,n} e e aest une num´rotation des sommets : e G+ = Θn (Θn−1 (. . . (Θ1 (G)) . . .)) Lemme 5.8 Soit Vi l’ensemble des couples (y,z) ∈ X 2 tels qu’il existe dans G un chemin ´l´mentaire de longueur 1 ou dont tous les sommets ee interm´diaires sont de num´ro inf´rieur ou ´gal ` i. On a alors : e e e e a ∀1 ≤ i ≤ n : Θi · Θi−1 · . . . · Θ1 (Γ) = ViD´monstration Par r´currence sur i : e e • Pour i= 1, Θ1 (Γ) = Γ ∪ {(y,z) | (y,1) ∈ Γ ∧ (1,z) ∈ Γ}Γ est l’ensemble des couples reli´s par un chemin de longueur 1, {(y,z) | (y,1) ∈ Γ∧(1,z) ∈ Γ} est el’ensemble des couples reli´s par un chemin ´l´mentaire de longueur 2 de sommet interm´diaire e ee enum´ro 1. La propri´t´ est donc v´rifi´e. e ee e e • Supposons la vraie pour i-1 et montrons qu’elle est vraie pour i.Hypoth`se : Θi−1 · . . . · Θ1 (Γ) = Vi−1 eIl faut montrer : Θi · Θi−1 · . . . · Θ1 (Γ) = Vi .D’apr`s l’hypoth`se de r´currence, cela revient ` montrer que :Θi (Vi−1 ) = Vi . e e e a Mais, par d´finition de Θi : e Θi (Vi−1 ) = Vi−1 ∪ {(y,z) | (y,i) ∈ Vi−1 ∧ (i,z) ∈ Vi−1 } Soit (y,z) ∈ Θi (Vi−1 ). Il y a deux possibilit´s: e 1. Si (y,z) ∈ Vi−1 alors (y,z) ∈ Vi (car Vi−1 ⊆ Vi ) c IFSIC 2004
    • 5.4. Algorithme de Roy-Warshall 43 2. Si (y,i) ∈ Vi−1 ∧ (i,z) ∈ Vi−1 alors il existe un chemin de y ` z dont tous les sommets a interm´diaires sont de num´ro inf´rieur ou ´gal ` i, donc (proposition 5.4) il existe un e e e e a chemin ´l´mentaire de y ` z dont tous les sommets interm´diaires sont de num´ro inf´rieur ee a e e e ou ´gal ` i, c’est-`-dire (y,z) ∈ Vi . e a aOn a donc montr´ Θi (Vi−1 ) ⊆ Vi . eR´ciproquement, soit (y,z) ∈ Vi . Il existe donc un chemin ´l´mentaire u de y ` z, dont tous les e ee asommets interm´diaires sont de num´ro inf´rieur ou ´gal ` i. Il y a deux cas : e e e e a 1. u ne passe pas par le sommet i. Dans ce cas, tous les sommets interm´diaires sont de e num´ro inf´rieur ou ´gal ` i − 1 donc (y,z) ∈ Vi−1 ⊆ Θi (Vi−1 ) e e e a 2. u passe par le sommet i. Comme il est ´l´mentaire, il se d´compose en deux chemins u1 ee e et u2 , avec u1 ∈ Vi−1 et u2 ∈ Vi−1 . Par cons´quent, (y,i) ∈ Vi−1 et (i,z) ∈ Vi−1 d’o` e u (y,z) ∈ Θi (Vi−1 ).On a donc montr´ Vi ⊆ Θi (Vi−1 ). e P Proposition 5.9 G+ = Θn · Θn−1 · . . . · Θ1 (G)D´monstration Tout chemin de G est de longueur 1, ou poss`de des sommets interm´diaires e e e∈ {x1 , . . . ,xn } = X. Le th´or`me d´coule donc du lemme pr´c´dent, avec i = n. e e e e e P5.4.2 Texte de l’algorithme Il est donn´ page 44 e5.4.3 Complexit´ e Pour chaque op´ration Θ, il y a au plus : e – n + n2 acc`s validarc e – n2 acc`s ajoutarc e soit, globalement : – au plus n2 + n3 acc`s validarc e – au plus n3 acc`s ajoutarc ed’o` un algorithme en O(n3 ) en termes d’acc`s ´l´mentaires. u e eeDe plus, l’espace m´moire n’est que de 1 graphe (le graphe courant Result). En effet, le graphe edonn´ G n’est utilis´ que pour “initialiser” Result, il est donc inutile de le garder en m´moire. e e e c IFSIC 2004
    • 44 Fermeture transitive ALGORITHME DE ROY-WARSHALLGRAPHE roy-warshall(GRAPHE G) c’est local SOMMET x,y,z ; ENS[SOMMET] X; d´but e 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 fin5.4.4 Routage5.4.4.1 D´finition e L’id´e du routage est la suivante: si l’on calcule la fermeture transitive G+ d’un graphe G, eon est capable de r´pondre ` la question : quels que soient les sommets x et y, existe-t-il dans G e aun chemin de x ` y? Une information de routage doit permettre de compl´ter cette r´ponse, en a e efournissant le trac´ d’un tel chemin (lorsque celui-ci existe). Il y a plusieurs mani`res d’obtenir e eun routage. Nous en d´crivons une, bas´e sur la notion de table. Rappelons qu’une table est une e estructure de donn´es mettant en oeuvre une correspondance entre un ensemble de clefs et un eensemble de valeurs. Le type abstrait TABLE[K,E] d´crit les tables dont l’ensemble des clefs est K eet l’ensemble des valeurs E (math´matiquement, ce sont les applications de K dans E). Une table eest d´clar´e TABLE[K,E] T; elle est alors acc´d´e par les op´rations suivantes : e e e e e – T[x] : d´livre la valeur v de type E correspondant ` la clef x (de type K). e a – T[x] ←v affecte la valeur v de type E ` l’´l´ment correspondant ` la clef x (de type K). a ee aLes objets de type SOMMET sont alors munis d’une table, selon la d´claration ci-dessous : eTABLE[SOMMET,SOMMET] SOMMET::Ravec la signification suivante: c IFSIC 2004
    • 5.4. Algorithme de Roy-Warshall 45 Pour tout sommet y, pour tout sommet z,   nil si z ∈ Γ+ (y) o` nil signif ie pas de successeur  u  y.R[z] =  successeur de y sur un chemin de y ` z dans G si  a  z ∈ Γ+ (y) La connaissance des sommets y.R[z] permet-elle de d´terminer le trac´ d’un chemin de y ` e e az, ` partir de n’importe quel y? La r´ponse n’est pas toujours positive ! En effet, l’algorithme de a etrac´ a l’allure suivante (si y.R[z] = nil) : ed´but e local SOMMET somcour; depuis ecrire ← y ; somcour ← y.R[z]; jusqua somcour = z faire ecrire ← somcour ; somcour ← somcour.R[z]; fait; ecrire ← zfin Mais rien ne prouve que cet algorithme se termine ; par exemple : 1 2 4 y y.R[4] 1 2 avec, pour R[4] : 2 3 3 2 3 4 nil A partir des sommets 1, 2 ou 3, l’algorithme boucle, et pourtant les valeurs R[4] sont bienconformes ` la d´finition. a e Nous allons donc renforcer la d´finition, afin d’´viter cette difficult´, en imposant ` y.R[z], e e e asi z ∈ Γ + (y), d’ˆtre le successeur de y sur un chemin ´l´mentaire de y ` z. Il est alors facile e ee ade v´rifier que l’algorithme de trac´ se termine, puisque les valeurs successives de la variable e esomcour sont distinctes. (Sauf ´ventuellement y = z pour un circuit ´l´mentaire). e ee Pour tout sommet y, pour tout sommet z,   nil si z ∈ Γ+ (y)   y.R[z] =  successeur de y sur un chemin ´l´mentaire de y ` z  ee a  dans G si z ∈ Γ+ (y) Dans l’exemple pr´c´dent, les valeurs y.R[4] deviennent : e e c IFSIC 2004
    • 46 Fermeture transitive y y.R[4] 1 2 2 4 3 2 4 nilet l’algorithme de trac´ vers le sommet 4, ex´cut´ ` partir de y=1, affiche 1 2 4. e e ea5.4.4.2 Construction des routages par l’algorithme de Roy-Warshall ∀y ∈ X, on consid`re les valeurs initiales de la table y.R : e nil si (y,z) ∈ Γ ∀z ∈ X : y.R[z] = z si (y,z) ∈ Γ C’est donc l’attribut de routage vers z lorsqu’on se restreint aux chemins de longueur 1. Onmodifie alors les op´rations Θx , afin qu’elles mettent ` jour les valeurs des tables R : dans le cas e ao` Θx rajoute un arc entre y et z, alors y.R[z] ←y.R[x]. En effet, le chemin ´l´mentaire de y u eea` z qui vient d’ˆtre rep´r´ passe par x : pour aller de y ` z, on doit d’abord se diriger vers x. e ee a D’o` le texte de l’algorithme, modifi´ routage : u e ALGORITHME DE ROY-WARSHALL avec ROUTAGEGRAPHE roy-warshall(GRAPHE G) c’est local SOMMET x,y,z ; ENS[SOMMET] X; d´but e 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´rations Θ avec gestion des tables de routage e 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 47 fsi fpourtout fsi fpourtout fpourtout fin5.4.4.3 Exemple d’ex´cution e A la main, la repr´sentation la mieux adapt´e est matricielle. Pour g´rer le routage, au lieu e e ed’utiliser la matrice bool´enne, nous utilisons la matrice de routage R, telle que e y.R[z] si (y,z) ∈ Γ ∀y ∀z : R[y,z] = 0 si (y,z) ∈ ΓNous traitons l’exemple suivant (les cases de valeur 0 sont laiss´es vides): e 1 2 3 4 5 6 7 8 9 1 6 2 3 2 7 8 4 1 5 5 7 6 4 7 8 8 3 9 1 2Op´ration θ1 : il s’agit de parcourir la colonne num´ro 1, et de s’arrˆter sur toute ligne de valeur e e e= 0 (correspondant ` Result.validarc(y,1)). Pour une telle ligne, on effectue la “recopie” des a´l´ments non nuls de la ligne 1 sur la ligne y, en mettant la valeur R[y,1] en toute case nulleeeR[y,z] telle que R[1,z] = 0 (ce qui correspond `: asi Result.validarc(1,z) alors si non Result.valid arc(y,1) alors Result.ajoutarc(y,z); y.R[z] ← y.R[1] fsifsiL’application de θ1 ne modifie que les lignes 4 et 9, et donne le tableau suivant : c IFSIC 2004
    • 48 Fermeture transitive 1 2 3 4 5 6 7 8 9 1 6 2 3 2 7 8 4 1 5 1 5 7 6 4 7 8 8 3 9 1 2 1Le d´tail des diff´rentes ´tapes serait trop long; notons cependant que θ2 ne rajoute aucun arc e e e(le sommet 2 est un point de sortie, c’est-`-dire un sommet sans successeur); de mˆme θ9 , car le a esommet 9 est un point d’entr´e (c’est-`-dire un sommet sans pr´d´cesseur). On donne ci-dessous e a e ele r´sultat final : e 1 2 3 4 5 6 7 8 9 1 6 6 6 6 6 6 6 6 2 3 2 8 7 8 4 1 5 5 1 5 1 5 5 5 7 7 7 7 6 4 4 4 4 4 4 4 4 7 8 8 8 8 8 3 3 3 3 9 1 2 1 1 1 1 1 1A titre d’exemple, on va chercher le trac´ d’un chemin du sommet 1 au sommet 2; on obtient esuccessivement: 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 d’o` le chemin : [1,6,4,5,7,8,3,2] u5.4.4.4 Preuve Pour d´montrer la validit´ de cet algorithme, nous ´tablissons les lemmes suivants : e e e Lemme 5.10 Si pour un couple (y, z) on a, ` l’issue de l’algorithme, a y.R[z] = nil, alors y.R[z] est successeur de y sur le premier chemin allant de y ` z rencontr´ au cours de l’algorithme. a eD´monstration Pour tout y et tout z, la valeur y.R[z] est mise ` jour au plus une fois. En effet, e asi (y,z) ∈ Γ, cette affectation a lieu ` l’initialisation, et de plus: aResult.validarc(y,z) est v´rifi´. Si (y,z) ∈ Γ, la pr´condition de cette affectation implique : e e e ¬ Result.validarc(y,z), et sa postcondition implique Result.validarc(y,z) P c IFSIC 2004
    • 5.5. τ -minimalit´ e 49 Lemme 5.11 Si z ∈ Γ+ (y) alors le premier chemin allant de y ` z a rencontr´ au cours de l’algorithme est un chemin ´l´mentaire. e eeD´monstration Si (y,z) ∈ Γ, ce chemin est un arc et donc il est ´l´mentaire. Supposons e eeque tous les chemins rep´r´s jusqu’` l’op´ration Θi−1 incluse soient ´l´mentaires. Soit alors ee a e eeu = [y ∗ xi ] · [xi ∗ z] un chemin rep´r´ par l’op´ration Θi , c’est-`-dire tel que l’affectation y.R[z] ee e a←y.R[xi ] ait lieu ; si u n’est pas ´l´mentaire, il existe j < i tel que ee u = [y ∗ xj ∗ xi ] · [xi ∗ xj ∗ z]et tous les autres sommets interm´diaires sont dans {x1 , . . . ,xi−1 } et diff´rents de xj , d’apr`s e e el’hypoth`se de r´currence. Mais cela signifie qu’il existe un chemin e e u’ = [y ∗ xj ] · [xj ∗ z] avec ∗ ∈ {x1 , . . . ,xi−1 }et donc ∃ ≤ i − 1 : (y,z) ∈ VAu cours du pas d’it´ration no l’affectation y.R[z] ←y.R[x ] a donc lieu, et cela contredit el’affectation de y.R[z] lors du pas no i > . P De ces deux lemmes on d´duit le r´sultat : e e Th´or`me 5.12 A l’issue de l’algorithme, e e ∀z ∈ X : les valeurs R[z] d´finissent un routage vers z e5.5 τ -minimalit´ e La τ -minimalit´ constitue une notion int´ressante du point de vue des possibilit´s de che- e e eminement. Il s’agit de mettre en ´vidence un graphe partiel de G, ayant la mˆme fermeture e etransitive que G – donc les mˆmes possibilit´s de cheminement – mais minimal au sens o` e e ula suppression d’un arc quelconque de ce graphe partiel supprime au moins une possibilit´ de echeminement. Il n’y a en g´n´ral pas unicit´ de la solution. e e e D´finition 5.13 La relation binaire sur G(X) : e Gτ G ⇔ G+ = G + est une relation d’´quivalence, appel´e τ -´quivalence. e e e La classe de G sera not´e : τ (G) e c IFSIC 2004
    • 50 Fermeture transitive D´finition 5.14 On appelle graphe τ -minimal de G un ´l´ment mini- e ee mal du sous-ensemble τ (G), vis-`-vis de l’ordre (chapitre 4). aNous verrons au chapitre 7 des techniques pour d´terminer un graphe τ -minimal de G, soit de emani`re algorithmique si G est sans circuit, soit de mani`re mi-heuristique, mi-algorithmique, en e eutilisant la d´composition de G en composantes fortement connexes, si G poss`de des circuits. e e c IFSIC 2004
    • Chapitre 6M´thodes d’exploration e6.1 D´veloppement arborescent issu d’un sommet donn´ e e D´finition 6.1 On appelle arborescence un graphe e A = (S,Θ) tel que : i) ∃ un sommet s0 ∈ S et un seul tel que Θ−1 (s0 ) = ∅. ii) ∀s = s0 : Θ−1 (s) poss`de un seul ´l´ment. e ee iii) A est sans circuit.s0 s’appelle racine de A, et tout sommet s sans successeur s’appelle une feuille de l’arborescence.Un chemin de la racine ` une feuille s’appelle branche de l’arborescence. a Soit maintenant G = (X,Γ) un graphe, et x ∈ X. On construit une arborescence Ax de lamani`re suivante : e – x est la racine , – It´rativement sur k ≥ 1 : ∀y ∈ Γ[k] (x) : Θ(y) = Γ(y) e Ax s’appelle d´veloppement arborescent issu d’un sommet donn´ ; chaque branche de l’arbo- e erescence correspond ` un chemin issu de x (certaines branches peuvent ˆtre infinies). a e c IFSIC 2004
    • 52 M´thodes d’exploration e Exemple 5.1 2 6 7 1 4 3 G 5 1 A 1 2 4 3 6 2 4 6 7 3 6 2 7 2 4 6 7 7 2 2 2 Fig. 6.1 – Un graphe et son d´veloppement arborescent issu du sommet 1 e c IFSIC 2004
    • 6.2. Exploration de la descendance de x 53 Les probl`mes de cheminement issus de x que nous allons voir correspondent tous ` des e aparcours d’une partie de l’arborescence Ax , selon diff´rentes strat´gies. De tels parcours sont e eencore connus sous le nom d’exploration de la descendance de x6.2 Exploration de la descendance de x6.2.1 Sp´cification du r´sultat e e Explorer la descendance d’un sommet x, c’est effectuer un parcours du graphe Gx = (Γ∗ (x),Γx )o` u Γ∗ (x) est l’ensemble 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) etexactement une fois chaque arc (y,z) ∈ Γx . A chaque sommet (resp. arc) on attribue un bool´en sommet visit´ (resp. arc visit´) : y.sommet visit´ e e e e(resp. (y,z).arc visit´) est vrai si et seulement si le sommet y (resp. l’arc (y,z)) a ´t´ visit´. La e ee ecoh´rence des ´tats visit´s est exprim´e par les axiomes suivants : e e e e(1) x.sommet visit´ e(2) ∀z = x : z.sommet visit´ ⇒ ∃y (y,z).arc visit´ ∧ z ∈ Γ∗ (x) e e(3) ∀y ∀z : (y,z).arc visit´ ⇒ y.sommet visit´ ∧ z.sommet visit´ ∧ (y,z) ∈ Γx e e e Dans l’´tat initial, on a e x.sommet visit´ e ∀z = x ¬z.sommet visit´ e ∀y ∀z : ¬(y,z).arc visit´e et dans l’´tat final, on doit avoir : e ∀z : z.sommet visit´ ⇔ z ∈ Γ∗ (x) e ∀y ∀z : (y,z)z.arc visit´ ⇔ (y,z) ∈ Γx e6.2.2 Principe des m´thodes d’exploration eInvariant. Au cours d’une exploration issue de x, – tout sommet y ∈ X est dans l’un des trois ´tats suivants : e dehors : ¬y.visit´ e en attente : y.visit´ ∧ ∃z (y,z) ∈ Γ ∧ ¬(y,z).visit´ e e termin´ y.visit´ ∧ ∀z (y,z) ∈ Γ ⇒ (y,z).arc visit´. e e e – tout arc est dans l’´tat visit´ ou non visit´ e e eSi l’on d´signe par D (resp. A, T ) l’ensemble des sommets d’´tat dehors (resp en attente, e etermin´) et V l’ensemble des arcs d’´tat visit´, les axiomes se traduisent par : e e eA1 x ∈ A ∪ T c IFSIC 2004
    • 54 M´thodes d’exploration eA2 ∀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) ∈ ΓxCondition d’arrˆt e Proposition 6.2 A = ∅ ⇔ (T = Γ∗ (x) ∧ V = Γx )D´monstration ei) Supposons A = ∅. Montrons que T = Γ∗ (x) et V = Γx . – Comme A ∪ T ⊆ Γ∗ (x), on a T ⊆ Γ∗ (x). – Soit y ∈ Γ∗ (x). Il existe un chemin u = [x,z1 , . . . ,zk ,y](k ≥ 0). Mais x ∈ T ⇒ arc visit´(x,z1 ) ⇒ e sommet visit´(z1 ) ⇒ z1 ∈ A ∪ T = T . En r´p´tant ce raisonnement, on obtient zk ∈ T ⇒ e e e arc visit´(zk ,y) ⇒ sommet visit´(y) ⇒ y ∈ A ∪ T = T . Donc Γ∗ (x) ⊆ T . e e – V ⊆ Γx , par construction. – Soit (y,z) ∈ Γx . On a donc y ∈ Γ∗ (x), c’est-`-dire y ∈ T d’o` arc visit´(y,z) soit (y,z) ∈ V . a u e Donc, Γx ⊆ V .ii) R´ciproquement, supposons T = Γ∗ (x) ∧ V = Γx ). Si A = ∅, il existe y ∈ A. On a donc ey ∈ Γ∗ (x) (car A ⊆ Γ∗ (x)) et ∃z (y,z) ∈ Γ, (y,z) ∈ V . Mais y ∈ Γ∗ (x) ⇒ (y,z) ∈ Γx = V .Contradiction. Donc A = ∅. PProgression (* 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’´tat de (y,z) devient visit´ e e si z est dans l’´tat dehors e alors (premi`re visite de z) e si Γ(z) = ∅ alors z passe dans l’´tat termin´ e e sinon z passe dans l’´tat en attente e fsi sinon z a d´j` ´t´ visit´ ` partir d’un autre de eaee ea ses pr´decesseurs e fsi si ∀z ∈ Γ(y) l’´tat de (y,z) est visit´ alors l’´tat de y devient termin´ fsi e e e eValeurs initiales D = X {x} A = si Γ(x) = ∅ alors ∅ sinon {x} T = si Γ(x) = ∅ alors {x} sinon ∅ V = ∅ c IFSIC 2004
    • 6.2. Exploration de la descendance de x 556.2.3 Preuve Proposition 6.3 Les valeurs initiales satisfont l’invariantD´monstration eA1 x ∈ A ∪ TA2 Si z = x on a z ∈ D donc z ∈ A ∪ T .A3 V = ∅P Proposition 6.4 La progression maintient l’invariantD´monstration Soit D, A , T , V les valeurs au d´but d’une ´tape de l’it´ration, y le sommet e e e eet S l’ensemble des successeurs de y s´lectionn´s au d´but de cette ´tape; par hypoth`se, ces e e e e evaleurs satisfont (A1) ` (A3). Soit D , A , T , V les valeurs ` la fin du pas. Prouvons qu’elles a av´rifient les trois axiomes. eA1 A ∪ T ⊆ A ∪ T donc x ∈ A ∪ TA2 Soit z = x. Si z ∈ A ∪ T . Il y a deux cas : 1) z ∈ A∪T . Comme (A2) est satisfait au d´but de l’´tape, on a (∃y(y,z) ∈ V )∧z ∈ Γ∗ (x). e e Comme V ⊆ V , on a bien (∃y(y,z) ∈ V ) ∧ z ∈ Γ∗ (x). 2) z ∈ D. Alors z a ´t´ visit´ ` partir de y ∈ A ∪ T , donc (y,z) a ´t´ visit´ lors de cette ee ea ee e ´tape : V = V ∪ {(y,z). De plus, d’apr`s (A2) au d´but de l’´tape, y ∈ Γ∗ (x) ce qui e e e e 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´but de l’´tape, on a y ∈ A ∪ T ∧ z ∈ e e 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 ´t´ visit´ lors de cette ´tape, donc y ∈ A ⊆ A ∪ T et, ` l’issue ee e e a de la visite, z ∈ A ∪ T . De plus, (A2) ´tant vrai au d´but de l’´tape, y ∈ A ⇒ y ∈ Γ∗ (x) e e e et donc (y,z) ∈ Γx . On a donc bien y ∈ A ∪ T ∧ z ∈ A ∪ T ∧ (y,z) ∈ Γx . P Proposition 6.5 L’invariant et la condition d’arrˆt impliquent le e r´sultat eD´monstration D’apr`s la proposition 6.2 e e P Proposition 6.6 L’algorithme s’arrˆte apr`s un nombre fini d’´tapes e e e c IFSIC 2004
    • 56 M´thodes d’exploration eD´monstration La r`gle de progression fait d´croˆ strictement la quantit´ enti`re card(Γ)- e e e ıtre e ecard(V ) et cette quantit´ est minor´e par 0. e e P6.2.4 Texte de l’algorithme g´n´ral d’exploration e e L’´tat des sommets est mis en œuvre ` l’aide des trois ensembles D, A, T et celui des arcs ` e a al’aide de l’ensemble V ; en outre, ` chaque sommet de y ∈ A est associ´ un ensemble de sommets a ea visiter contenant les successeurs z de y tels que (y,z) ∈ V (si y ∈ D, a visiter n’est pas d´fini eet, si y ∈ T , on a a visiter = ∅). La fonction sous ensemble, appliqu´e ` un ensemble non vide, d´livre un sous-ensemble de cet e a eensemble. La fonction ´l´ment, appliqu´e ` un ensemble non vide, d´livre un ´l´ment quelconque ee e a e eede cet ensemble (sans le retirer). Le texte de l’algorithme est donn´ page 57 e6.2.5 Complexit´ e Chaque sommet de Γ∗ (x) passe une fois et une seule dans l’´tat en attente. Lorsqu’un sommet ez passe de l’´tat dehors ` l’´tat en attente, l’ensemble a visiter(z) est ´tabli, par l’appel de l’acc`s e a e e elst succ. Il y a donc card(Γ∗ (x)) appels de l’acc`s lst succ eet, chaque acc`s ´tant, selon sa mise en œuvre, au pire en O(n), on a un algorithme en O(n2 ) e e(en termes d’op´rations du type validarc) e6.3 Strat´gies d’exploration particuli`res : largeur et profondeur e e Les strat´gies d’exploration que nous allons maintenant d´velopper d´pendent de la gestion e e ede l’ensemble A, du crit`re de choix d’un ´l´ment y dans cet ensemble (celui ` partir duquel on e ee atente de prolonger l’exploration lors d’un pas d’it´ration) et du choix de l’ensemble S. Nous en ed´veloppons deux, appel´es respectivement : e e 1. recherche en largeur d’abord (breadth-first ou width first search) 2. recherche en profondeur d’abord (depth-first search) D’autre part, le canevas d’exploration de la descendance d’un sommet x peut ˆtre utilis´ e epour effectuer un calcul particulier sur le graphe, par exemple : – Ensemble des descendants de x ´ – Enum´ration des chemins et circuits ´l´mentaires issus de x e ee – d´veloppement arborescent de hauteur minimum issu de x e – Arborescence de chemins de valeur optimum issus de x dans un graphe valu´ (ce probl`me e e sera trait´ au chapitre 8) e – etc. Dans la suite de ce chapitre, les deux premiers exemples seront examin´s; la strat´gie d’explo- e eration en largeur et une expression r´cursive de la strat´gie d’exploration en profondeur seront e eexplicit´es sur le premier d’entre eux, et l’exploration en profondeur sur le second. e c IFSIC 2004
    • 6.3. Strat´gies d’exploration particuli`res : largeur et profondeur e e 57 ALGORITHME GENERAL D’EXPLORATIONENS[SOMMET] D, T; ENS[ARC] V ;exploration-generale(GRAPHE G; SOMMET x) c’est local ENS[SOMMET] A, S; ENS[SOMMET] SOMMET::a visiter ; SOMMET y, z ;d´but e 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 ` jour du statut de y a 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 ` jour du statut de z a 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´e : Γ∗ (x) = T , Γx = V efin c IFSIC 2004
    • 58 M´thodes d’exploration e6.3.1 Exploration en largeur d’abord6.3.1.1 Une structure de donn´es : la file e Cette strat´gie consiste ` s´lectionner dans A le sommet y le plus anciennement ajout´ et ` e a e e achoisir S = Γ(y). Au niveau de l’arborescence, cela revient ` effectuer un parcours en largeur ( aniveau par niveau) : x est visit´, puis tous les arcs issus de x; ensuite, tous les successeurs de x eet les arcs qui en sont issus, puis tous les sommets de Γ[2] (x) – qui n’ont pas ´t´ visit´s – , et ee eainsi de suite. L’algorithme qui r´sulte de cette strat´gie visite donc les ´l´ments de Γ∗ (x) dans e e eel’ordre suivant : k−1 x; Γ(x) {x}; Γ[2] (x) Γ(x) {x}; . . . ; Γ[k] (x) Γ[j] (x); . . . j=0Pour cette raison, il est parfois qualifi´ de ”concentrique”. e Nous allons mettre en oeuvre cette technique avec une structure de donn´es qui s’appelle eune file. Une file est une liste sur laquelle les seules modifications possibles sont : 1. ajout d’un ´l´ment en queue (mettreenfile) ee 2. retrait de l’´l´ment de tˆte (oterdefile) ee e On dit encore que cette liste est g´r´e selon la discipline P.A.P.S. (Premier Arriv´ Premier ee eSorti) ou F.I.F.O. (First In First Out). Nous consid´rons une file comme un type abstrait et la d´claration e eFILE[E] f d´clare un objet f de type file d’objets de type E. e Les primitives d’acc`s sont : ecreer cr´e une nouvelle file, vide eBOOL filevide pr´dicat ` valeur vrai si et seulement si la file courante est vide e amettreenfile(E v) ajoute l’objet d´sign´ par v en queue de file e eE oterdefile d´livre le premier ´l´ment et l’enl`ve de la file. e ee eLe principe de mise en œuvre est alors le suivant : pour le sommet y en tˆte de file, on examine es´quentiellement tous les successeurs et chacun d’eux est imm´diatement ajout´ en queue de file e e es’il n’a pas encore ´t´ visit´; puis y est ˆt´ de la file puisqu’il ne peut plus apporter d’information ee e oenouvelle. Il est donc inutile, avec cette strat´gie, de g´rer les ensembles de successeurs a visiter, e epuisque tous les arcs issus du sommet s´lectionn´ (tˆte de file) sont visit´s lors du mˆme pas e e e e ed’it´ration. e6.3.1.2 Texte de l’algorithme Le texte de l’algorithme est donn´ ci-apr`s, page 59. e e6.3.1.3 Exemple d’ex´cution e La figure 6.2 montre le r´sultat de l’exploration en largeur d’abord issue du sommet 1 dans ele graphe de la figure 6.1 c IFSIC 2004
    • 6.3. Strat´gies d’exploration particuli`res : largeur et profondeur e e 59 EXPLORATION LARGEUR D’ABORDENS[SOMMET] D, T;ENS[ARC] V;exploration-largeur(GRAPHE G; SOMMET x) c’est local ENS[SOMMET] S; -- ensemble des successeurs de la tˆte de file e FILE[SOMMET] A; SOMMET y, z; d´but e 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 fin6.3.2 Recherche en profondeur d’abord6.3.2.1 Une structure de donn´es : la pile e Cette recherche consiste ` s´lectionner dans A le sommet y le plus r´cemment ajout´, et pour a e e eS un arc non visit´ issu de y. Au niveau de l’arborescence, cela revient ` effectuer un parcours e aen descendant le plus loin possible sur chaque branche. Lorsqu’un sommet est rencontr´ : e – s’il est dans l’´tat dehors, il devient en attente e – s’il n’est pas dans l’´tat dehors, il marque l’arrˆt de la descente, et la recherche reprend ` e e a partir de son pr´d´cesseur dans l’arborescence. e ePour mettre en oeuvre cette technique, on utilise une structure de donn´es qui s’appelle une epile; il s’agit d’une liste sur laquelle les seules modifications possibles sont : 1. ajout d’un ´l´ment en queue de liste (empiler) ee 2. retrait du dernier ´l´ment de la liste (d´piler). ee e c IFSIC 2004
    • 60 M´thodes d’exploration efile D R arborescence1 2, 3, 4, 5, 6, 7 ∅ 12, 4 3, 5, 6, 7 1 2 44, 3, 6 5, 7 1, 2 3 63, 6 5, 7 1, 2, 4 26 5, 7 1, 2, 4, 3 4 67 5 1, 2, 4, 3, 6 7 5 1, 2, 4, 3, 6, 7 2R = Γ (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 largeurL’´l´ment de queue de cette liste est aussi d´sign´ sous le nom de sommet de pile. ee e e On dit encore que cette liste est g´r´e selon la discipline DAPS (Dernier Arriv´ Premier ee eSorti) ou encore LIFO (Last In First Out). Nous consid´rons donc une pile comme un type abstrait, et la d´claration e e PILE[E] d´clare une liste d’objets de type E g´r´s en pile. e ee Les op´rations sur les piles sont alors : ecreer cr´e une nouvelle pile vide eBOOL pilevide pr´dicat ` valeur vrai si et seulement si la pile est vide e aempiler(E z) ajout de z en queued´piler e retrait de l’´l´ment de queue (erreur si la pile est vide) eeE sommetpile d´livre la valeur du sommet de pile (consultation sans d´piler) e e6.3.2.2 Texte de l’algorithme Il est donn´ ci-apr`s, page 61 e e6.3.2.3 Exemple d’ex´cution e La figure 6.3 montre le r´sultat de l’exploration en profondeur d’abord issue du sommet 1 edans le graphe de la figure 6.1 c IFSIC 2004
    • 6.3. Strat´gies d’exploration particuli`res : largeur et profondeur e e 61 EXPLORATION PROFONDEUR D’ABORDENS[SOMMET] D, T;ENS[ARC] V;recherche-profondeur(GRAPHE G; SOMMET x) c’est local PILE[SOMMET] A; ENS[SOMMET] SOMMET::a visiter ; SOMMET y; -- sommet de pile SOMMET z; -- sommet courant d´but e 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´e e fin c IFSIC 2004
    • 62 M´thodes d’exploration e pile D R arborescence 1 2, 3, 4, 5, 6, 7 ∅ 1 1, 2 3, 4, 5, 6, 7 ∅ 2 1, 2, 3 4, 5, 6, 7 ∅ 3 1, 2, 3, 4 5, 6, 7 ∅ 4 1, 2, 3, 4 5, 6, 7 ∅ 2 1, 2, 3 5, 5, 7 4 1, 2, 3, 6 5, 7 4 6 1, 2, 3, 6, 7 5 4 7 1, 2, 3, 6, 7 5 4 2 1, 2, 3, 6 5 4, 7 1, 2, 3 5 4, 7, 6 1, 2 5 4, 7, 6, 3 6 1, 2 5 4, 7, 6, 3 1 5 4, 7, 6, 3, 2 4 1 5 4, 7, 6, 3, 2 5 4, 7, 6, 3, 2, 1 Fig. 6.3 – exploration en profondeur6.4 Exemple d’application : calcul de l’ensemble des descendants L’algorithme g´n´ral de recherche permet d’obtenir l’ensemble des descendants du sommet e ede d´part : en effet, cet ensemble est ´gal, ` l’issue de l’algorithme, ` T . Toutefois, l’exploration e e a apeut ˆtre simplifi´e, dans la mesure o` l’on ne cherche pas ` calculer l’ensemble V des arcs e e u adu graphe Gx , mais seulement l’ensemble Γ∗ (x) de ses sommets. Quelle que soit la strat´gie ed’exploration retenue, la simplification est la suivante : – Suppression de la variable V – Le statut des sommets peut ˆtre m´moris´ ` l’aide de 2 ensembles seulement :A et DESC, e e ea c IFSIC 2004
    • 6.4. Exemple d’application : calcul de l’ensemble des descendants 63 ce dernier contenant ` tout instant du calcul l’ensemble des sommets reconnus comme a descendants de x, c’est-`-dire A ∪ T . En effet, a – y ∈ D ⇔ y ∈ DESC – y ∈ T ⇔ y ∈ A ∧ y ∈ DESC6.4.1 Cas de la recherche en largeur Nous donnons le texte de l’algorithme simplifi´ dans le cas de l’exploration en largeur (page e63). CALCUL DES DESCENDANTS : LARGEUR D’ABORDENS[SOMMET] DESC;descendants-largeur(GRAPHE G;SOMMET x) c’est local ENS[SOMMET] S; FILE[SOMMET] A; SOMMET y, z ; d´but e 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 fin La figure 6.4 montre, ` titre de comparaison avec l’exploration compl`te (figure 6.2), le a er´sultat de la recherche des descendants du sommet 1 dans le graphe de la figure 6.1 e6.4.2 Cas de la recherche en profondeur : expression r´cursive e Le texte de cet algorithme est donn´ page 65 e c IFSIC 2004
    • 64 M´thodes d’exploration e file DESC arborescence 1 1 1 2, 4 1, 2, 4 2 4 4, 3, 6 1, 2, 4, 3, 6 3 6 3, 6 1, 2, 4, 3, 6 6 1, 2, 4, 3, 6 7 1, 2, 4, 3, 6, 7 7 1, 2, 4, 3, 6, 7 DESC = Γ (1) = {1,2,3,4,6,7} = X {5} Fig. 6.4 – calcul des descendants (largeur) On peut alors v´rifier que le mode de recherche correspond ` une recherche profondeur e ad’abord. Dans une expression it´rative de cet algorithme r´cursif, la manipulation de la pile e eserait alors explicite, via la variable A (cette manipulation correspond ` la m´morisation des a econtextes de retour des diff´rents appels de la proc´dure desc local). e e6.5 ´ Enum´ration des chemins ´l´mentaires issus de x e ee Le probl`me pos´ ici est plus complexe, puisqu’il s’agit d’obtenir les trac´s de tous les chemins e e e´l´mentaires issus du sommet x. Il faut donc parcourir une sous-arborescence plus importante,eepuisqu’un mˆme sommet peut apparaˆ plusieurs fois (comme extr´mit´ de plusieurs chemins e ıtre e edistincts de G). En fait, les chemins ´l´mentaires issus de x sont les branches de l’arborescence, eeparcourues jusqu’` trouver une r´p´tition dans la suite des sommets situ´s sur une branche. a e e eDans l’exemple de la figure 6.1, il s’agit de l’arborescence repr´sent´e graphiquement. e e Le choix d’une exploration en profondeur s’explique par la propri´t´ suivante : ee Proposition 6.7 Lors d’une exploration en profondeur, l’´tat de la pile e est un chemin ´l´mentaire d’origine x et d’extr´mit´ le sommet de pile. ee e eD´monstration Elle se fait par induction sur l’´tat de la pile. e e – Le premier ´tat non vide de la pile est x, donc v´rifie la propri´t´. e e ee – Supposons la propri´t´ v´rifi´e au d´but d’un pas d’it´ration, ee e e e e et soit c IFSIC 2004
    • ´6.5. Enum´ration des chemins ´l´mentaires issus de x e ee 65 CALCUL DES DESCENDANTS : FORMULATION RECURSIVEENS[SOMMET] DESC;desc local (SOMMET y) c’est local ENS[SOMMET] S; SOMMET z; d´but e DESC ← DESC ∪ {y} ; S ← G.lst succ(y) ; pour tout z de S faire si z ∈ DESC alors desc local(z) fsi fpourtout findescendants-recursif(GRAPHE G; SOMMET x) c’est d´but e DESC ← ∅ ; desc local(x) fin x . . . t y l’´tat de la pile. Montrons qu’elle reste v´rifi´e ` la fin du pas. e e e a cas 1 Le pas courant ne modifie pas l’´tat de la pile. Ce cas est trivial; e cas 2 Le pas courant effectue une op´ration d´piler; le r´sultat est ´vident puisqu’un e e e e chemin ´l´mentaire priv´ de son dernier sommet reste un chemin ´l´mentaire; ici, le ee e ee chemin obtenu va de x ` t, ce dernier sommet ´tant le sommet de pile; a e cas 3 Le pas courant effectue une op´ration empiler. Soit z le sommet empil´. Par construc- e e tion, z est un successeur de y, donc le nouvel ´tat de la pile x . . . t y z est bien un e chemin de x au sommet de pile z. De plus le sommet z ´tant empil´ ` cette ´tape, il e ea e appartenait ` D, donc ne figurait pas dans la pile au d´but du pas; par cons´quent, a e e l’´tat de la pile ` la fin du pas est un chemin ´l´mentaire. e a ee PPar rapport ` l’algorithme d’exploration vu au §6.3.2, il faut consid´rer toutes les occurrences a epossibles d’un sommet dans l’arborescence d’exploration : chacune d’elles, provenant d’un pr´d´cesseur e ediff´rent, engendre un nouvel ensemble de chemins via sa descendance. Ainsi, la progression doit eˆtre modifi´e de la mani`re suivante :e e eProgression Soit y le sommet de la pile; s´lectionner un successeur de y, non encore visit´. S’il e e n’y en a pas, alors d´piler y, qui passe dans l’´tat termin´; s’il y en a un soit z ; si z ∈ A e e e c IFSIC 2004
    • 66 M´thodes d’exploration e alors il ne d´finit pas de nouveau chemin (sauf si z = x : circuit ´l´mentaire); si z ∈ D, on e ee l’empile (c’est la premi`re fois qu’il est visit´), et donc tous ses arcs sortants deviennent e e ` visiter (a visiter(z) ←lst succ(G,z)); si z ∈ T (il est d´j` pass´ dans la pile puis en est a ea e ressorti), il faut proc´der de mˆme puisque l’´tat de la pile est un chemin ´l´mentaire de e e e ee x ` z, et tous les chemins ´l´mentaires ayant cet ´tat de pile comme pr´fixe vont alors ˆtre a ee e e e reconnus.Un exemple d’ex´cution est donn´ page 67. Le texte de l’algorithme est donn´ page 68, et e e eune version r´cursive page 69. N.B. : l’acc`s ecrirechemin permet d’afficher l’´tat d’une pile, e e equi correspond alors ` un chemin ´l´mentaire issu de x. Un circuit ´l´mentaire passant par un a ee eesommet z pr´sent dans la pile est obtenu par l’acc`s ecrirecircuit(z) qui affiche l’´tat de la e e epile depuis le sommet z, suivi du sommet z. Ces acc`s permettent d’ailleurs d’incorporer des erestrictions sur la nature des chemins que l’on souhaite ´num´rer : conditions sur la longueur, e esur les sommets travers´s, etc. e6.5.1 Algorithmes gloutons et non gloutons Les algorithmes d’exploration pr´sent´s dans ce chapitre se classent en gloutons et non glou- e etons. L’exploration de la descendance rentre dans la cat´gorie des gloutons, ce qui signifie que ecertains r´sultats sont d´finitivement acquis avant la fin de l’ex´cution de l’algorithme : c’est le e e ecas, ici, lorsqu’un sommet passe de l’´tat en attente ` l’´tat termin´ : on enregistre ainsi le fait e a e eque toute l’information que l’on peut obtenir ` partir de ce sommet a ´t´ obtenue. a ee Au contraire, l’´num´ration des chemins ´l´mentaires est un algorithme non glouton, car e e eeaucun r´sultat ne peut ˆtre consid´r´ comme d´finitif avant d’avoir rencontr´ la condition d’arrˆt; e e ee e e ece qui se traduit, ici, par le fait que le statut termin´ d’un sommet peut ˆtre remis en cause - e elorsque ce sommet est ` nouveau visit´ ` partir d’un nouveau pr´d´cesseur, toute l’exploration a ea e eissue de ce sommet doit ˆtre refaite, et donc le sommet “r´gresse” dans l’´tat o` il ´tait lors de e e e u eson passage dehors → en attente. Nous retrouverons au chapitre 8 cette distinction entre algorithmes gloutons et non gloutons,a` l’occasion des calculs de chemins de valeur optimale. c IFSIC 2004
    • ´6.5. Enum´ration des chemins ´l´mentaires issus de x e ee 67 e ´Exemple d’ex´cution Enum´ration des chemins et circuits ´l´mentaires issus du sommet 1 e eedans le graphe de la figure 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´thodes d’exploration e ENUMERATION DES CHEMINS ELEMENTAIRESENS[SOMMET] D, TENS[ARC] V;enumeration-chemins(GRAPHE G; SOMMET x) c’est local PILE[SOMMET] A; ENS[SOMMET] SOMMET.a visiter ; SOMMET y; -- sommet de pile SOMMET z; -- sommet courantd´but e 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 faitfin c IFSIC 2004
    • ´6.5. Enum´ration des chemins ´l´mentaires issus de x e ee 69 ENUMERATION DES CHEMINS ELEMENTAIRES : VERSION RECURSIVEENUM[dehors, en attente, termin´] SOMMET::etat ;-- e type ´num´r´ e e ePILE[SOMMET] chemin courant ;enumerer(SOMMET y) c’est-- pre : y.etat=en attente local SOMMET z d´but e pour tout z de G.lst succ(y) -- y est le p`re de z dans l’arborescence d’exploration e 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´pil´ e e y.etat ← termin´e fin -- enumererenumeration-recursive(GRAPHE G; SOMMET x) c’est d´but e chemin courant.creer ; pour tout y de G.lst som y.etat ← dehors fpourtout ; x.etat ← en attente ; chemin courant.empiler(x); enumerer(x) fin c IFSIC 2004
    • 70 M´thodes d’exploration e c IFSIC 2004
    • Chapitre 7Circuits. Composantes fortementconnexes7.1 D´termination de l’existence de circuits e7.1.1 Principe Dans de nombreuses applications, on souhaite savoir si un graphe donn´ poss`de ou non des e ecircuits (cf. exemple de l’interblocage). Certains des algorithmes que nous avons vus pr´c´demment e e(Roy-Warshall, descendants) pourraient ˆtre utilis´s : e e£ avec Roy-Warshall on obtient l’ensemble des sommets situ´s sur un circuit, puisque de tels e sommets v´rifient (x,x) ∈ G e + .£ si on se restreint ` l’existence de circuits situ´s dans le sous-graphe engendr´ par Γ∗ (x), x a e e ´tant un sommet donn´, on peut utiliser l’ algorithme de recherche des descendants de x e e en profondeur, sachant qu’un circuit existe d`s lors qu’on trouve un sommet successeur du e sommet de pile, et appartenant d´j` ` desc. eaa Mais, avec Roy-Warshall, la complexit´ est ´lev´e (cet algorithme r´sout le probl`me plus e e e e eg´n´ral de la fermeture transitive), et avec la recherche des descendants de x, on ne d´tecte que e e eles circuits passant par les sommets de Γ∗ (x). Nous allons voir un algorithme sp´cifique, appel´ e ealgorithme de Marimont, permettant de r´soudre le probl`me avec une complexit´ moindre e e eque celle de Roy-Warshall. Cet algorithme est fond´ sur la propri´t´ suivante : e ee Proposition 7.1 Les propositions suivantes sont ´quivalentes : e i) G est sans circuit, ii) G et tous ses sous-graphes poss`dent au moins un point d’entr´e e e (sommet sans pr´d´cesseur) et un point de sortie (sommet sans succes- e e seur).D´monstration. i) ⇒ ii) Supposons G = (X,Γ) sans circuit, et que G n’a pas de point de e c IFSIC 2004
    • 72 Circuits. Composantes fortement connexessortie. Alors : ∀x ∈ X,∃y ∈ X : y ∈ Γ(x) Autrement dit, partant d’un sommet xi quelconque, on peut construire un cheminxi ,xi1 ,xi2 , . . . ,xik , . . . de longueur aussi grande que l’on veut ; et d`s que la longueur est > n, on eobtient un circuit. D’o` contradiction avec l’hypoth`se. On montre de mani`re identique que G u e ea au moins un point d’entr´e. Enfin, si G est sans circuit, tout sous-graphe engendr´ par une e epartie de X est aussi sans circuit, ce qui montre la premi`re partie de la proposition. eii) ⇒ i) Supposons que G ait un circuit γ et soit Gγ le sous-graphe engendr´ par les sommetsede ce circuit. Par construction, Gγ n’a ni point d’entr´e ni point de sortie, ce qui contredit el’hypoth`se. P e Le principe de l’algorithme est alors tr`s simple : si G ne poss`de pas de points d’entr´e ou e e ede points de sortie, on peut conclure que G a des circuits. Sinon, on ˆte les points d’entr´e et les o epoints de sortie, et on recommence sur le sous-graphe engendr´. Si on aboutit au graphe vide e(tous les sommets de G ont ´t´ ˆt´s), on conclut que G est sans circuit. Remarquons que cet eeoealgorithme peut ˆtre mis en oeuvre uniquement ` partir des points d’entr´e, ou des points de e a esortie, ou ` partir des deux. Nous ne donnons, ci-dessous, que cette derni`re variante. a e7.1.2 Algorithme de Marimont7.1.2.1 AnalyseInvariant : H sous-graphe de G ; E = ensemble des points d’entr´e de H ; e S = ensemble des points de sortie de H.Arrˆt : e H vide ou E = ∅ ou S = ∅ Traitement de sortie : il y a des circuits si et seulement si H est non vide.Progression : ( H non vide et E = ∅ et S = ∅ ) H ←ˆter de H les points d’entr´e et les points de sortie. o eValeurs initiales : H ←GPour am´liorer l’efficacit´ au niveau de la programmation, nous m´morisons dans une variable e e ebool´enne h vide le r´sultat du test vide(H) e e7.1.2.2 Texte de l’algorithme Il est donn´ page 73 e c IFSIC 2004
    • 7.1. D´termination de l’existence de circuits e 73 EXISTENCE DE CIRCUITS : MARIMONTBOOL marimont(GRAPHE G) c’est local GRAPHE H ; -- graphe de travail ENS[SOMMET] E, S; -- points d’entr´e, de sortie e BOOL h vide ; d´but e 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 fin7.1.2.3 Complexit´ e Dans le cas le pire (tous les sommets de G sont ˆt´s, et seulement 2 sommets ` chaque pas oe ad’it´ration), il y a n/2 pas d’ it´ration. Le pas n e e o k n´cessite e1 acc`s points entr´e e e1 acc`s points sortie esur un sous-graphe ` n − 2(k − 1) sommets, soit : a n − 2k + 2 acc`s lst pred e n − 2k + 2 acc`s lst succ e Au total, il y a donc au pire : n/2 (n − 2k + 2) acc`s lst pred et autant d’acc`s lst succ. e e k=1 c IFSIC 2004
    • 74 Circuits. Composantes fortement connexesMais : n/2 n(n+2) 4 si n est pair, (n − 2k + 2) = (n+1)2 k=1 4 si n est impair soit O(n2 ) acc`s lst pred, lst succ. e7.2 Application des graphes sans circuit : fonction ordinale D´finition 7.2 On appelle fonction ordinale d’un graphe G = (X,Γ) e une fonction f : X → N telle que (x,y) ∈ Γ ⇒ f (x) < f (y)On peut aussi d´finir une fonction ordinale inverse f t , qui n’est autre qu’une fonction ordinale edu graphe transpos´ : e (x,y) ∈ Γ ⇒ f t (x) > f t (y) Th´or`me 7.3 Un graphe poss`de une fonction ordinale si et seulement e e e si il est sans circuit.D´monstration. Supposons que G poss`de une fonction ordinale, et qu’il ait un circuit : e e γ = [xi1 ,xi2 , . . . ,xik ,xi1 ]On a : f (xi1 ) < f (xi2 ) < . . . < f (xik ) < f (xi1 )d’o`, par transitivit´ : u e f (xi1 ) < f (xi1 )ce qui est absurde. R´ciproquement supposons G sans circuit et consid´rons l’algorithme de Marimont ne e eprenant en compte que les points d’entr´e. Au pas d’it´ration no k, le sous-graphe courant a des e epoints d’entr´e E. On pose alors, par d´finition : e e ∀x ∈ E : f (x) = k (k = 1,2, . . . ,p)o` p est le nombre de pas, major´ par n. u e f d´finit bien une fonction ordinale : si (y,z) ∈ Γ alors le sommet y est ˆt´ avant le sommet e oez, car z ne peut pas ˆtre point d’entr´e d’un sous-graphe poss´dant le sommet y ; donc : (y,z) ∈ e e eΓ ⇒ f (y) < f (z). De plus, tous les sommets ´tant ˆt´s, f est bien d´finie sur X. P e oe e c IFSIC 2004
    • 7.2. Application des graphes sans circuit : fonction ordinale 75 La d´monstration du th´or`me montre que l’on peut obtenir une fonction ordinale en ap- e e epliquant l’algorithme de Marimont ` partir des points d’entr´e, ` condition d’introduire un a e acompteur de marquage des sommets. Nous laissons au lecteur le soin de r´-´crire l’algorithme. ee Remarquons qu’une fonction ordinale inverse peut aussi ˆtre obtenue en op´rant ` partir des e e apoints de sortie. Enfin, ces deux fonctions ordinales s’interpr`tent concr`tement comme suit : e e • ` partir des points d’entr´e : a e ∀x ∈ X : f (x) = 1 + longueur maximum des chemins issus d’un point d’entr´e et aboutissant ` x e a La relation suivante est v´rifi´e : e e 1 si Γ−1 (x) = ∅ ∀x ∈ X : f (x) = maxy∈Γ−1 (x) (f (y)) + 1 si Γ−1 (x) = ∅ • ` partir des points de sortie : a ∀x ∈ X : f t (x) = 1 + longueur maximum des chemins issus de x et aboutissant ` un point de sortie a La relation suivante est v´rifi´e : e e t 1 si Γ(x) = ∅ ∀x ∈ X : f (x) = maxy∈Γ(x) (f (y)) + 1 si Γ(x) = ∅Une fonction ordinale n’est pas n´cessairement injective : deux sommets distincts x = y peuvent eavoir une mˆme image f (x) = f (y). Une fonction non injective ne convient donc pas pour enum´roter les sommets. C’est pourquoi l’on introduit la notion de num´rotation conforme, qui e en’est autre qu’une fonction ordinale injective. D´finition 7.4 Soit G = (X,Γ) avec card(X) = n. On appelle e num´rotation conforme de X une injection e num : X ⇒ N telle que (x,y) ∈ Γ ⇒ num(x) < num(y) Th´or`me 7.5 Un graphe G poss`de une num´rotation conforme si et e e e e seulement si il est sans circuit.D´monstration. On peut d´montrer ce th´or`me comme corollaire du th´or`me pr´c´dent 7.3. e e e e e e e eToutefois, nous pr´f´rons en donner une d´monstration directe: celle-ci montre comment obtenir ee eune telle num´rotation ` partir d’une exploration en profondeur. e ai) Si G poss`de une num´rotation conforme, il est clairement sans circuit. e eii) Pour montrer la r´ciproque, on suppose le graphe sans circuit, et on utilise l’algorithme esuivant, bas´ sur l’ exploration en profondeur: partant d’un sommet quelconque, on explore la edescendance de ce sommet, en num´rotant les sommets visit´s de mani`re d´croissante lors de e e e eleur sortie de la pile. Tant qu’il reste des sommets non num´rot´s, on r´it`re le proc´d´, en e e e e e ese limitant au sous-graphe engendr´ par les sommets non encore num´rot´s. L’analyse de cet e e ealgorithme est donn´e ci-dessous: eInvariant : c IFSIC 2004
    • 76 Circuits. Composantes fortement connexes T =ensemble des sommets d´j` num´rot´s, D = X T ea e e Le sous-graphe engendr´ par T poss`de une num´rotation conforme, e e e der num=plus petit num´ro de sommet dans T (dernier num´ro attribu´). e e eArrˆt : D = ∅. eProgression : Soit x ∈ D. Explorer en num´rotant la descendance de x (voir d´tail de ce e etraitement ci-apr`s). eValeurs initiales : D = X, T = ∅, der num=une valeur quelconque telle que der num >n(= card(X)).Explorer en num´rotant: effectuer l’exploration en profondeur de la descendance de x dans ele sous-graphe engendr´ par les sommets de D (non encore num´rot´s). La num´rotation des nou- e e e eveaux sommets visit´s se fait lors de leur sortie de pile, en faisant d´croˆ le compteur der num. e e ıtreCe traitement se termine lorsque l’exploration est finie. A ce moment, tous les descendants dex dans le graphe sont num´rot´s, et cette num´rotation est conforme. e e e Avant de d´montrer que cet algorithme permet bien d’obtenir une num´rotation conforme, e enous en donnons un exemple afin de faciliter la compr´hension. e 1. sommet de d´part: h (choix arbitraire) e 3. sommet de d´part: c e 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 fin de la troisi`me ´tape; der num = 3 e e hk num(n)=12 h num(k)=11 4. sommet de d´part: a e ε num(h)=10 pile fin de la premi`re ´tape; der num = 10 e e a ε num(a)=2 2. sommet de d´part: d e fin de la quatri`me ´tape; der num = 2 e e pile d 5. sommet de d´part: b e dg pile dgj b dg num(j)=9 ε num(b)=1 d num(g)=8 fin de la num´rotation e ε num(d)=7 fin de la deuxi`me ´tape; der num = 7 e e c IFSIC 2004
    • 7.3. Application : fermeture anti-transitive et τ -minimalit´ e 77 a f l d g j b m o e h k c i n Fig. 7.1 – Construction d’une num´rotation conforme ePreuve. Il faut montrer que (x,y) ∈ Γ ⇒ num(x) < num(y). pour cela, il suffit de montrerque (x,y) ∈ Γ ⇒ y sort de la pile avant x. Soit donc (x,y) ∈ Γ. Lorsque y passe de l’´tat dehors ` l’´tat en attente, c’est-`-dire lorsque e a e ay est empil´, trois cas sont ` consid´rer selon le statut de x: e a e 1. x est dehors. Cela veut dire que x n’a pas encore ´t´ empil´. Mais, par hypoth`se, le graphe ee e e est sans circuit, et comme (x,y) ∈ Γ, on a n´cessairement (y,x) ∈ Γ+ . Donc, x ne sera pas e empil´ tant que y est dans la pile (les sommets empil´s pendant que y est dans la pile sont e e n´cessairement des descendants de y). Il en r´sulte que y sort de la pile avant que x soit e e empil´, donc a fortiori avant que x soit d´pil´. e e e Dans l’exemple, 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´. D’apr`s les e e propri´t´s structurelles de la pile, y sera n´cessairement d´pil´ avant x. ee e e e Dans l’exemple, ce cas se produit notamment pour x=k, y=l ou m ou n. 3. x est termin´ (c’est-`-dire d´j` num´rot´). Ce cas ne peut se produire, car il impliquerait e a ea e e que x ait ´t´ empil´, puis d´pil´, sans que son successeur y n’ait ´t´ visit´. ee e e e ee ePRemarques.1. Si, dans l’algorithme pr´c´dent, on avait num´rot´ les sommets dans l’ordre de leur sortie de e e e epile (et non pas en d´croissant) on aurait obtenu une num´rotation conforme inverse c’est-`-dire e e aune fonction ordinale inverse injective, v´rifiant e (x,y) ∈ Γ ⇒ num(x) > num(y)2. Une num´rotation conforme peut aussi ˆtre obtenue pratiquement ` partir de la fonction e e aordinale des points d’entr´e, en num´rotant arbitrairement les sommets de niveau 1, puis ceux e ede niveau 2, etc., avec une num´rotation strictement croissante. e7.3 Application : fermeture anti-transitive et τ -minimalit´ e A la section 5.5 nous avons mis en ´vidence la notion de τ -minimalit´, tout en faisant e eremarquer qu’un graphe donn´ pouvait poss´der plusieurs ´quivalents τ -minimaux. e e e Par contre, comme va le montrer le th`or`me suivant, un graphe sans circuit G poss`de un e e e ∨ ∨seul ´quivalent τ -mimimal, not´ G. L’int´rˆt de G provient du fait que c’est le seul graphe offrant e e eeles mˆmes possibilit´s de cheminement que G, sans qu’aucun arc ne soit redondant. e e c IFSIC 2004
    • 78 Circuits. Composantes fortement connexes On pr´cise d’abord la notion de graphe fortement anti-transitif : e D´finition 7.6 Un graphe est fortement anti-transitif si (∃u = [x ∗ y] ∧ e |u| ≥ 2) ⇒ (x,y) ∈ Γ. Autrement dit, aucun chemin de longueur sup´rieure ou ´gale ` 2 ne peut ˆtre sous-tendu e e a epar un arc. On a le r´sultat suivant : e Proposition 7.7 Soit G = (X,Γ) un graphe sans circuit. Il existe un seul graphe partiel de G τ -minimal τ -´quivalent ` G (D´f. 5.13 et 5.14). e a e ∨ Ce graphe G est un ´l´ment maximal de l’ensemble des graphes partiels ee de G fortement anti-transitifs.D´monstration. Soit τ (G) la classe d’´quivalence de G. Si H ∈ τ (G), alors H est sans circuit. e eEn effet, si H poss´dait un circuit passant par x, alors (x,x) serait une boucle de H + (= G+ ) et eG aurait un circuit passant par x. Supposons alors que τ (G) ait deux ´l´ments minimaux G1 = (X,Γ1 ) et G2 = (X,Γ2 ) et soit ee(x,y) ∈ Γ1 et (x,y) ∈ Γ2 On a donc (x,y) ∈ Γ+ = Γ+ d’o` : 1 2 u ∃z ∈ X,z = x,z = y : (x,z) ∈ Γ+ ∧ (z,y) ∈ Γ+ 2 2 soit encore : (x,z) ∈ Γ+ ∧ (z,y) ∈ Γ+ 1 1 Mais aucun chemin allant de x ` z dans G1 ne peut passer par y, sans quoi on aurait : a (y,z) ∈ Γ+ ∧ (z,y) ∈ Γ+ ⇒ (y,y) ∈ Γ+ donc G1 aurait un circuit. 1 1 1 De mˆme, aucun chemin allant de z ` y dans G1 ne peut passer par x. e a Il existe donc, dans G1 , un chemin allant de x ` y, distinct de l’arc (x,y), ce qui contredit la a ∨τ -minimalit´ de G1 . L’hypoth`se (x,y) ∈ Γ1 et (x,y) ∈ Γ2 est donc absurde, d’o` G1 = G2 =G. e e u D’autre part on sait que dans une partie finie, l’unicit´ de l’´l´ment minimal en fait un e ee ∨minimum, c’est ` dire un ´l´ment comparable ` tous les ´l´ments de cette partie. G est donc un a ee a eegraphe partiel de G. ∨ Enfin, montrons que G est un ´l´ment maximal de l’ensemble des graphes partiels de G, ee ∨fortement anti-transitifs. On remarque d’abord que G est le seul graphe fortement anti-transitifde τ (G). En effet, 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´quent, H ∈ τ (G) d’o` on conclut que H est minimal dans τ (G), et donc H = G. e u c IFSIC 2004
    • 7.3. Application : fermeture anti-transitive et τ -minimalit´ e 79 Enfin, si G’ est un graphe partiel de G, fortement anti-transitif, on a : G G et donc : (1) G + G+ ∨ ∨+ ∨+Si par ailleurs G G alors G G + mais comme G = G+ on en d´duit : e (2) G+ G + . De (1) et (2) d´coule : e ∨ G ∈ τ (G) c’est ` dire G =G aP Nous proposons ci-dessous (texte page 80) un algorithme, adapt´ de l’algorithme de Roy- e ∨Warshall, permettant d’obtenir G. Il consiste ` construire la fermeture transitive de G et ` a arep´rer les arcs nouveaux introduits par les op´rations Θ. On travaille sur deux copies de G, et e e` l’issue de l’algorithme on v´rifie, sur G+ , que G ´tait bien sans circuit. (On se place dans lea e ecas o` X = 1..n). u a b d c f g e Fig. 7.2 – Un graphe sans circuitExemple Soit le graphe repr´sent´ figure 7.2. Les op´rations Θ successives produisent les e e er´sultats suivants: e Op´ration ajout dans G2 e 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 D’o` la fermeture τ -minimale repr´sent´e figure 7.3 u e e c IFSIC 2004
    • 80 Circuits. Composantes fortement connexes a b d c f g e Fig. 7.3 – Fermeture τ -mininale GRAPHE SANS CIRCUIT : τ -MINIMALITEGRAPHE tau-minimalite(GRAPHE G) c’est local GRAPHE G1, G2 ; SOMMET x, y, z; ENS[SOMMET] X;d´but e 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 fsifin c IFSIC 2004
    • 7.4. Composantes fortement connexes 817.4 Composantes fortement connexes7.4.1 D´finition e D´finition 7.8 Soit G = (X,Γ) un graphe. On consid`re la relation e e binaire sur X : xRy ≡ (x ∈ Γ∗ (y)) ∧ (y ∈ Γ∗ (x)) C’est une relation d’´quivalence dont les classes s’appellent composantes e fortement connexes de G (en abr´g´ : c.f.c.). e e Proposition 7.9 Deux sommets appartiennent ` la mˆme c.f.c. si et a e seulement si ils sont situ´s sur un mˆme circuit. e e e ´D´monstration. Evident, puisque (x ∈ Γ∗ (y))∧(y ∈ Γ∗ (x)) ⇔ x et y sont sur un mˆme circuit. eP Proposition 7.10 Si deux sommets x et y appartiennent ` une mˆme a e c.f.c. C, alors tout chemin de x ` y est enti`rement inclus dans C. a eD´monstration. Soit u un chemin de x ` y (par hypoth`se, de tels chemins existent), et z un e a esommet de ce chemin. On a donc : u = u1 · u2 , avec u1 chemin de x ` z, et u2 chemin de z ` a ay.Par hypoth`se, on a aussi : il existe un chemin u de y ` x. Consid´rant u2 · u · u1 , on obtient e a eun circuit de z ` z, passant par x et y. Donc z appartient ` la mˆme c.f.c. que x et y. a a e D´finition 7.11 Un graphe est fortement connexe s’il poss`de une seule e e composante fortement connexe.On remarque donc que, si |X| = n, un graphe G ∈ G(X) poss`de e - au plus n c.f.c.; ce cas extrˆme est obtenu si et seulement si G est sans circuit (chacune ec.f.c. est alors r´duite ` un seul sommet), e a - au moins une c.f.c. : ce cas extrˆme est obtenu lorsque le graphe est fortement connexe e(tous les sommets sont sur un mˆme circuit, ou encore, chaque couple de sommets est reli´ par e eau moins un chemin). c IFSIC 2004
    • 82 Circuits. Composantes fortement connexes D´finition 7.12 Soit R une relation d’´quivalence sur X. Le graphe e e r´duit selon les classes de R est d´fini par : e e 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´s dans une mˆme classe sont confondus en un seul sommet e e(on ne les distingue plus les uns des autres), et un arc relie une classe ` une autre chaque fois que, adans le graphe initial, un repr´sentant de la premi`re classe ´tait pr´d´cesseur d’un repr´sentant e e e e e ede la seconde classe. Si on prend pour R la relation ayant servi ` d´finir les composantes fortement a econnexes, on obtient le graphe r´duit selon les c.f.c.. e Proposition 7.13 Le graphe r´duit selon les composantes fortement e connexes est sans circuit.D´monstration. Si il existait un circuit e 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 P La propri´t´ pr´c´dente signifie en particulier que, en suivant un chemin de G, si on sort ee e ed’une c.f.c. on ne peut plus y revenir. D´finition 7.14 On appelle composante fortement connexe terminale e de G un point de sortie du graphe r´duit. eAutrement dit, si en parcourant un chemin de G on atteint une c.f.c. terminale, on ne peut plusen sortir. Proposition 7.15 Soit C un sous-ensemble de sommets tel que, ∀x ∈ C, ∀y ∈ C, (x ∈ Γ∗ (y)) ∧ (y ∈ Γ∗ (x)). Si C n’a pas d’arc sortant, alors C est une c.f.c. terminale.D´monstration. Clairement, tous les sommets de C sont dans une mˆme c.f.c. C . On a donc e eC ⊆ C . Supposons que C = C . Cela signifie qu’il 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 ` z. Comme x ∈ C et z ∈ C, ce achemin comporte un arc sortant de C, ce qui contredit l’hypoth`se. Donc, C = C , c’est-`-dire e aC est une c.f.c. Comme elle n’a pas d’arc sortant, elle est terminale. P Dans les sections suivantes, on donne trois algorithmes permettant de d´terminer les c.f.c. ed’un graphe. Puis nous verrons quelles applications on peut tirer de cette d´composition. e c IFSIC 2004
    • 7.4. Composantes fortement connexes 837.4.2 Algorithme de FOULKES Cet algorithme s’applique ` la fermeture transitive G+ de G. (Il suppose donc celle-ci d´j` a ead´termin´e). Il est bas´ directement sur la d´finition, qui peut s’´crire encore : e e e e e xRy ⇔ (x = y) ∨ (x,y) ∈ Γ+ ∧ (y,x) ∈ Γ+7.4.2.1 Principe Il est tr`s simple, et s’appuie sur trois constatations : e – un sommet appartient ` sa propre classe a – un sommet ne peut appartenir qu’` une seule classe a – si un sommet n’est pas son propre descendant, il est seul dans sa classe (il n’est pas situ´ e sur un circuit).Les sommets sont examin´s s´quentiellement; soit x le sommet courant. Trois cas sont ` distin- e e aguer quant ` la situation de x : a 1. x a d´j` ´t´ rang´ comme ´l´ment de la classe d’un sommet y examin´ avant lui (c’est-`-dire eae e e ee e a y ≤ x). Dans ce cas, cl(x) = cl(y) (d´j` calcul´e) ea e 2. x n’est pas encore class´ et n’est pas son propre descendant, c’est-`-dire (x,x) ∈ Γ+ . Dans e a ce cas, cl(x) = {x}. 3. x n’est pas encore class´, et (x,x) ∈ Γ+ . Dans ce cas, les ´l´ments de cl(x), outre x lui- e ee mˆme, sont ` rechercher parmi les y tels que y > x; en effet, s’il existait y ≤ x avec e a y ∈ cl(x), x aurait ´t´ class´ lors de l’examen de y, ant´rieur ` celui de x. ee e e aL’analyse de l’algorithme en d´coule imm´diatement : e eInvariant (1 ≤ x ≤ n) ∧ P RIS = {y | cl(y) est calcul´ } ∧ e {1 .. x − 1} ⊆ P RISCondition d’arrˆt x = n eProgression 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 Circuits. Composantes fortement connexes x←x + 1Valeurs initiales x←1 ; P RIS←∅7.4.2.2 Texte de l’algorithme Il est donn´ page 84 e ALGORITHME DE FOULKESENS[SOMMET] SOMMET::cl : ;foulkes(GRAPHE G+ ) c’est local ENS[SOMMET] PRIS; SOMMET x, y; d´but e 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 fin7.4.2.3 Complexit´ e – construction de la fermeture transitive : au moins O(n3 ) – le nombre d’acc`s validarc est ≤ n2 e c IFSIC 2004
    • 7.4. Composantes fortement connexes 857.4.3 Algorithme descendants-ascendants7.4.3.1 Principe Il op`re directement sur le graphe donn´ G, et utilise les algorithmes de recherche des ascen- e edants et des descendants d’un sommet donn´. e Si on d´signe par asc(x) (resp. desc(x)) la fonction d´livrant l’ensemble des ascendants (resp. e edescendants) de x, on peut ´crire : e cl(x) = asc(x) ∩ desc(x)En fait, lorsqu’on calcule la c.f.c. d’un sommet x, il n’est pas n´cessaire de calculer l’ensemble de etous les ascendants (resp. descendants) de x. En effet, comme le montre la proposition suivante,lors de l’exploration de la descendance de x (calcul de desc(x)), si on rencontre un sommet y d´j` eaclass´, alors aucun descendant de y ne peut ˆtre dans la classe de x. (Mˆme chose en rempla¸ant e e e cdescendant par ascendant). Par cons´quent, dans la proc´dure de recherche des descendants de x (resp. ascendants) on e epeut se limiter au sous-graphe engendr´ par les sommets de G non encore class´s. e e 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´monstration. Soit y ∈ Γ∗ (x) ∧ y ∈ cl(x); supposons que z ∈ Γ∗ (y) ∩ cl(x). On a alors : e z ∈ Γ∗ (y) ∧ x ∈ Γ∗ (z) ⇒ x ∈ Γ∗ (y)et comme y ∈ Γ∗ (x) ceci contredit y ∈ cl(x). On d´montre de mˆme la deuxi`me partie de la proposition (ascendants) P e e e Ici, on donne une version r´cursive du calcul des ascendants, mais les autres versions (largeur eou profondeur it´ratives) conviendraient. e7.4.3.2 Texte de l’algorithme Le texte est donn´ page 86 e7.4.3.3 Complexit´ e Chaque recherche de descendants-non-pris et ascendants-non-pris n´cessite exactement ecard(Γ∗ (x) ∩ (X P RIS)) ≤ n − #(sommets class´s) acc`s lst succ e ecard (Γ−1 )∗ (x) ∩ (X P RIS) ≤ n − #(sommets class´s) acc`s lst pred e e Or ` l’examen de x, il y a au moins x − 1 sommets class´s, et donc la complexit´ est, au a e eplus : n(n + 1) acc`s lst succ, autant d’acc`s lst pred, soit e e 2 n2 O( ) acc`s lst succ, lst pred e 2 c IFSIC 2004
    • 86 Circuits. Composantes fortement connexes COMPOSANTES FORTEMENT CONNEXES : ASCENDANTS-DESCENDANTSENS[SOMMET] SOMMET::cl : ;ascendants-descendants(GRAPHE G) c’est local ENS[SOMMET] D, A, PRIS;d´but e -- 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 fpourtoutfinENS[SOMMET] S;ENS[SOMMET] asc non pris (SOMMET x) c’est d´but e S ← ∅ ; anp(x) ; Result ← S fin; anp(SOMMET y) c’est local ENS[SOMMET] E; SOMMET z; d´but e 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 fin;;ENS[SOMMET] desc non pris (SOMMET x) c’est ; -- identique ` asc non pris en rempla¸ant lst pred par lst succ a c c IFSIC 2004
    • 7.4. Composantes fortement connexes 877.4.4 Algorithme de TARJAN Cet algorithme fournit non seulement la d´composition du graphe en composantes fortement econnexes, mais de plus il d´livre les composantes avec une num´rotation conforme (par rapport e eau graphe r´duit selon ses composantes fortement connexes). e7.4.4.1 Principe de l’algorithme de TARJAN Cet algorithme g´n´ralise aux graphes quelconques l’algorithme de num´rotation conforme e e edes graphes sans circuit, bas´ sur l’exploration en profondeur, vu en 6.3.2. Il est bas´ sur l’ob- e eservation suivante : si le graphe ´tait sans circuit, les c.f.c. se confondraient avec les sommets, et el’algorithme de num´rotation conforme des sommets r´pond ` la question. Si le graphe poss`de e e a edes circuits, on se ram`ne ` un graphe sans circuit en consid´rant le graphe r´duit selon les c.f.c., e a e ece qui revient ` traiter des sous-ensembles de sommets situ´s sur un mˆme circuit comme un a e eseul “macro-sommet”. Or, lors d’une exploration en profondeur, on est capable de d´terminer edes “segments” de pile dont tous les ´l´ments appartiennent ` un mˆme circuit : chaque fois ee a eque l’on visite un arc allant du sommet de pile y ` un sommet z appartenant ` la pile, tous les a asommets situ´s dans la pile depuis z jusqu’` y sont sur un mˆme circuit (donc appartiennent ` e a e aune mˆme c.f.c.). De plus, d’apr`s la proposition 7.15, on saura qu’un tel ensemble de sommets e econstitue une c.f.c. (terminale dans le sous-graphe engendr´ par les sommets non encore class´s) e ed`s que tous les arcs sortants de ce sous-ensemble sont visit´s. e e Pour mettre en oeuvre cette id´e, il suffit de remplacer les sommets par des sous-ensembles ede sommets dans l’algorithme de num´rotation conforme. On va donc travailler sur un graphe equi, ` chaque ´tape, sera une r´duction du graphe initial selon des sous-ensembles de sommets a e ereconnus comme faisant partie d’une mˆme c.f.c. eInvariant – X est partitionn´ en C1 , . . . ,Ck : e X = C1 ∪ . . . Ck , et ∀i = j : Ci ∩ Cj = ∅ – Chaque sous-ensemble C est dans l’un des trois ´tats suivants: e – dehors, et dans ce cas, |C| = 1, et le sommet constituant C n’a pas ´t´ visit´; ee e – en attente (dans la pile): ∀y ∈ C, y est visit´ et au moins un arc sortant de C n’est e pas visit´; e – termin´: ∀y ∈ C, y est visit´ et tous les arcs sortants de C ont ´t´ visit´s. Dans ce e e ee e cas, C est une c.f.c.Arrˆt Pile vide (pas de sous-ensemble en attente). Ceux qui sont termin´s constituent les c.f.c. e ed´j` d´termin´es. S’il reste des sous-ensembles dehors, on recommence une exploration ` partir ea e e ade l’un des ces sous-ensembles. Sinon, toutes les c.f.c. ont ´t´ obtenues. eeInitialement Soit {x} le sous-ensemble (` un sommet) dont est issu l’exploration a – X = {1} ∪ {2} ∪ . . . {n} (en supposant que les sommets sont num´rot´s de 1 ` n. e e a c IFSIC 2004
    • 88 Circuits. Composantes fortement connexes – num=num´ro initial de c.f.c e – {x} est empil´ si Γ(x) = ∅, termin´ sinon (dans ce cas, c’est la c.f.c. num´ro num). e e e – Tous les autres sous-ensembles sont dehors. – Aucun arc n’a ´t´ visit´. ee eCette situation initiale v´rifie bien l’invariant. En particulier, si Γ(x) = ∅, {x} = cf c(x) puisque ex est alors point de sortie.Progression Soit C le sommet de pile. – Si C n’a pas d’arc sortant non visit´, alors e – A.depiler ; mettre C dans T , ensemble des sommets termin´s ; e – num ←num − 1 (C constitue une c.f.c, on lui attribue le num´ro num) e – Sinon, soit (y,z) un arc sortant de C, non visit´, et Cz le sous-ensemble contenant z (par e construction, il y en a un et un seul, cf. invariant). – l’arc (y,z) devient visit´; e – 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’` C (tous les sommets de ces sous-ensembles sont sur un mˆme circuit) a e – Si Cz ∈ T , pas d’action Nous ne d´montrerons pas formellement que la progression maintient l’invariant, mais le electeur peut ais´ment s’en convaincre. e7.4.4.2 Exemple Nous allons d’abord montrer sur l’exemple de la figure 7.4 le fonctionnement de l’algorithme. n k a d c g h o m l b f e i j Fig. 7.4 – Exemple pour l’ algorithme de TARJAN c IFSIC 2004
    • 7.4. Composantes fortement connexes 89 PILE {a} {a} {b} {a} {b} {d} {a} {b} {d} (b) Circuit d´tect´ vers b e e {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) Circuit d´tect´ vers h e e {a} {b, d} {c} {g} {h, o} {a} {b, d} {c} {g} {h, o} (g) Circuit d´tect´ vers g e e {a} {b, d} {c} {g, h, o} Tous les arcs issus de o sont visit´s: on ”remonte” ` h e a {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) Circuit d´tect´ vers h e e Tous les arcs issus de j sont visit´s: on ”remonte” ` i puis e a {a} {b, d} {c} {g, h, o, i, j} ` h puis ` g a a Tous les arcs sortant de {g,h,o,i,j} sont visit´s: on d´pile e e ce sous-ensemble, qui est la c.f.c. C15 = {g,h,o,i,j} {a} {b, d} {c} {a} {b, d} {c} {f } {a} {b, d} {c} {f } {e} g est d´j` class´; tous les arcs sortant de {e} sont visit´s: ea e e {a} {b, d} {c} {f } {e} (g) on d´pile cette c.f.c C14 = {e} e {a} {b, d} {c} {f } (d) Circuit d´tect´ vers d e e Tous les arcs issus de f sont visit´s: on ”remonte” ` c puis e a {a} {b, d, c, f } ` d puis ` b a a {a} {b, d, c, f } (f ) f appartient d´j` au sommet d e pile: pas de nouveau circuit. ea {a} {b, d, c, f } Tous les arcs sortants de {b,d,c,f } sont visit´s : e on d´pile cette c.f.c C13 = {b,d,c,f } e {a} {a} (d) d est d´j` class´; tous les arcs sortant de {a} sont visit´s: ea e e on d´pile cette c.f.c C12 = {a} e ε Pile vide : toute la descendance de f a a ´t´ class´e. ee e ¯ c IFSIC 2004
    • 90 Circuits. Composantes fortement connexes Repartir d’un sommet non class´. e {k} {k} (a) a est d´j` class´. ea e {k} {m} {k} {m} {n} {k} {m} {n} (m) Circuit d´tect´ vers m e e {k} {m, n} Tous les arcs issus de n sont visit´s: on ”remonte” ` m e a Tous les arcs sortant de {m,n} sont visit´s: e on d´pile cette c.f.c C11 = {m,n} e {k} Tous les arcs sortant de {k} sont visit´s: e on d´pile cette c.f.c C10 = {k} e ε { } { } (b) b est d´j` class´. ea e { } (m) m est d´j` class´. ea e Tous les arcs sortant de {l} sont visit´s: e on d´pile cette c.f.c C9 = { } e ε ´ ´ Pile vide et tous les sommets sont class´s : EXECUTION TERMINEE. e On a obtenu 7 c.f.c, num´rot´es de 9 ` 15. On effectue une translation de num´ros, en e e a eretranchant 8, pour avoir une num´rotation contigu¨ de 1 ` 7. On obtient alors le graphe r´duit e e a e(figure 7.5) qui montre qu’on a bien une num´rotation conforme e (Ci ,Cj ) ∈ ΓR ⇒ i < j C5 C1 {b,c,d,f } C7 {k} {g,h,o,i,j} C3 C4 {m,n} {a} C6 C2 {e} { } Fig. 7.5 – Graphe r´duit de la figure 7.4 e7.4.4.3 Mise en œuvre et texte de l’algorithme Pour r´aliser l’algorithme ci-dessus, en plus de la pile, on attache ` chaque sommet y ∈ X e ales attributs suivants : c IFSIC 2004
    • 7.4. Composantes fortement connexes 91 ENT SOMMET::pospile d´finit la position de y dans la pile (non d´fini si y n’a e e pas encore ´t´ atteint). ee ENT SOMMET::marque - 0 si y n’a pas encore ´t´ atteint, ee - y.pospile lorsque y est empil´, e - puis, ´ventuellement diminu´e lorsque y est rep´r´ e e ee comme appartenant ` la c.f.c. d’un sommet empil´ a e avant lui. SOMMET SOMMET::pred p`re du sommet y dans l’arborescence d’exploration. e ENS[SOMMET] SOMMET::S ensemble des successeurs de y, dans le sous- graphe partiel des sommets non class´s, qui ne sont pas encore e empil´s (comme dans l’algorithme d’´num´ration des e e e chemins ´l´mentaires). ee ENT SOMMET::ncl num´ro de la c.f.c. ` laquelle appartient y (ind´fini tant e a e que y n’est pas class´). e Le texte de l’algorithme est donn´ page 92 et suivantes. e c IFSIC 2004
    • 92 Circuits. Composantes fortement connexes ALGORITHME DE TARJANtarjan(GRAPHE G) c’est local PILE[SOMMET] L; ENS[SOMMET] NC; -- sommets non class´s e SOMMET finchemin, z ; ENT compt ; -- compteur du num´ro de la cfc courante ed´but e depuis NC ← G.lst som ; L.creer ; compt ← 0 ; pourtout y de NC y.marque ← 0 fpourtout ; jusqua NC = ∅ faire finchemin ← ´l´ment(NC) ; L.empiler(finchemin) ; ee 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 ← ´l´ment(finchemin.S) ; ee 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 d’une nouvelle cfc depuis compt ← compt + 1 ; jusqua L.taille < finchemin.pospile c IFSIC 2004
    • 7.4. Composantes fortement connexes 93 faire z ← L.sommetpile ; z.ncl ← compt ; NC ← NC {z} ; L.d´piler e fait ; finchemin ← finchemin.pred fsi fsi fait fait fin7.4.4.4 Complexit´ e Elle est du mˆme ordre que l’algorithme de recherche profondeur d’abord, puisque chaque esommet de X est empil´ exactement une fois, et l’acc`s lst succ est appel´ une fois pour chaque e e esommet. C’est donc un algorithme en 0(n) acc`s lst succ. e7.4.5 Applications7.4.5.1 Recherche d’un graphe minimal dans τ (G) Nous avons pr´c´demment montr´ (§7.3) que, si G est sans circuit, il poss`de une fermeture e e e e ∨fortement anti-transitive G (´l´ment minimum de τ (G) ). Il n’en est pas n´cessairement de mˆme ee e elorsque G poss`de des circuits. On peut cependant mettre en ´vidence un graphe minimal dans e eτ (G) , c’est ` dire un graphe G tel que : a – G + = G+ (mˆmes possibilit´s de cheminement) e e – la suppression d’un arc quelconque de G supprime une possibilit´ de cheminement. e Pour cela, on peut proc´der comme suit : e 1. D´terminer les c.f.c. de G, et construire le graphe r´duit GR . e e ∨ 2. D´terminer la fermeture anti-transitive GR . Tout arc (Ci ,Cj ) ainsi supprim´ dans GR e e entraˆ la suppression de tous les arcs (x,y) de G tels que x ∈ Ci et y ∈ Cj . ıne ∨ 3. Pour les couples (Ci ,Cj ) ∈GR , ne conserver qu’un seul arc (x,y) dans G, tel que x ∈ Ci et y ∈ Cj . 4. A l’int´rieur de chaque c.f.c., on ordonne arbitrairement les sommets, ce qui d´finit un e e ensemble d’arcs formant un circuit hamiltonien (passant une fois et une seule par chaque sommet).Le lecteur v´rifiera qu’un graphe G ainsi obtenu v´rifie bien les propri´t´s voulues. Remarquer e e eeque G n’est pas n´cessairement un graphe partiel de G (` cause du point 4). Si l’on souhaite e aen outre que G ≤ G, le traitement ` effectuer ` l’int´rieur de chaque c.f.c. est heuristique, et il a a eest difficile d’assurer la τ -minimalit´. (Il faut obtenir un circuit passant par tous les sommets, een n’empruntant que des arcs de G).Exemple voir figures 7.6 et 7.7 c IFSIC 2004
    • 94 Circuits. Composantes fortement connexes 3 4 1 12 14 5 2 13 6 7 8 9 10 11 Fig. 7.6 – Graphe donn´ e 3 4 1 12 14 5 2 13 6 7 8 9 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 l’algorithme de Roy-Warshall calcule la fermeture transitive d’ungraphe quelconque en O(n3 ). Dans le cas o` G est sans circuit, l’utilisation d’une num´rotation u econforme (ou conforme inverse) r´duit la complexit´ ; l’algorithme simplifi´ est donn´ page 95. e e e e c IFSIC 2004
    • 7.4. Composantes fortement connexes 95 GRAPHE SANS CIRCUIT : ROY-WARSHALL SIMPLIFIE GRAPHE roy warshall conforme(GRAPHE G) c’est local SOMMET x, y, z d´but e 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 fin Le nombre maximum d’op´rations est alors : e n−1 n(n − 1)(n − 2) n3 (x − 1)(n − x) = 6 6 x=2en termes d’acc`s validarc, ajoutarc e Consid´rons alors le proc´d´ suivant : e e e 1. Appliquer l’algorithme de Tarjan pour obtenir le graphe r´duit GR , avec une num´rotation e e conforme inverse . 2. Appliquer l’algorithme de Roy-Warshall am´lior´ au graphe GR e e + 3. Pour tout couple (Ci ,Cj ) ∈ GR tel que card(Ci ) > 1 ou card(Cj ) > 1 rajouter ` G tous a les arcs (x,y) avec x ∈ Ci ,y ∈ Cj 4. A l’int´rieur de chaque c.f.c., cr´er tous les arcs (x,y). e e S’il y a p composantes C1 ,C2 , . . . ,Cp , de cardinal respectif k1 ,k2 , . . . ,kp , et si on d´signe par em le nombre d’arcs de G, la complexit´ est en : e – O(n) acc`s lst succ pour le 1) e 3 – p6 pour le 2) – au plus 2 p−1 n n2 (p − 1) (p − i) = p 2p i=1 pour le 3) [maximum obtenu lorsque k1 = k2 = . . . = kp = n ] p c IFSIC 2004
    • 96 Circuits. Composantes fortement connexes – k1 + k2 + . . . + kp ≤ n2 pour le 4) 2 2 2 On peut observer que, lorsque p → 1 (graphe fortement connexe), la complexit´ est en O(n2 ) e(op´ration 4) pr´pond´rante), et lorsque p → n (graphe sans circuit) c’est l’op´ration 2) qui e e e e 3domine, et la complexit´ est alors en O( n ). e 6 c IFSIC 2004
    • Chapitre 8 Chemins de valeur optimale8.1 D´finitions et probl`mes pos´s e e e Nous avons vu au chapitre 2 que les arcs d’un graphe peuvent ˆtre munis d’attributs de ediff´rents types: pour un graphe non valu´, ces attributs sont de type bool´en (l’arc existe ou e e en’existe pas), pour un graphe mod´lisant des distances, ce seront des attributs de type num´rique, e eetc. Les attributs peuvent ˆtre statiques (donn´s avec le graphe) ou dynamiques (calcul´s lors de e e el’ex´cution d’un algorithme: cf. par exemple le chapitre 10 sur les flots). Dans ce chapitre et les esuivants, nous allons manipuler des graphes valu´s sur les arcs, c’est-`-dire des graphes dont un e aattribut d’arc est pr´cis´ dans la d´finition du graphe, avec sa valeur (attribut statique). e e e D´finition 8.1 On appelle graphe valu´ un doublet G = (X,v), o` v est e e u une fonction d´finie sur X × X et ` valeurs dans un ensemble E. e aNous supposerons que l’ensemble E poss`de une loi de composition ⊗, associative et munie d’un e´l´ment neutre e et d’un ´l´ment absorbant α :ee ee ∀w ∈ E : w ⊗ e = e⊗w = w ∀w ∈ E : w ⊗ α = α⊗w = α w1 ⊗ w2 = α ⇒ w1 = α ∨ w2 = α L’´l´ment absorbant α permet de caract´riser l’ensemble Γ des arcs de la mani`re suivante: ee e e (x,y) ∈ Γ ⇔ v(x,y) = α Exemples : E ⊗ e α 1) B={vrai, faux} ∧ vrai faux (valeurs d’existence) 2) R + 0 ∞ (valeurs additives) 3) [0 , 1] × 1 0 (probabilit´s) e 4) N ∪ {∞} min ∞ 0 (capacit´s) e L’associativit´ de la loi ⊗ permet de prolonger v ` l’ensemble des suites de sommets de e alongueur ≥ 2: v[x1 , . . . ,xp ] = v(xj ,xj+1 ) j=1...p−1 c IFSIC 2004
    • 98 Chemins de valeur optimaleDe plus, l’´l´ment α caract´rise les chemins de la mani`re suivante: ee e e Proposition 8.2 Soit [x1 , . . . ,xp ] (p ≥ 2) une suite de sommets de X. Cette suite d´finit un chemin de G si,et seulement si: e v[x1 , . . . ,xp ] = αD´monstration e v[x1 , . . . ,xp ] = j=1...p−1 v(xj ,xj+1 ) =α⇔ ∀j, 1 = j = p − 1 ⇒ (xj ,xj+1 ) ∈ Γ ⇔ [x1 , . . . ,xp ] est un chemin de G P Le but de ce chapitre ´tant l’´tude de chemins de valeur optimale, il nous faut d´finir un e e ecrit`re de comparaison sur les valeurs des chemins. Autrement dit, ´tant donn´ deux sommets x e e eet y et deux chemins reliant x ` y, lequel des deux est pr´f´rable? Pour cela, l’ensemble E doit a eeaussi ˆtre muni d’une relation d’ordre totale, not´e , telle que: e ei) est compatible avec ⊗, c’est-`-dire: a w1 w2 ⇒ w1 ⊗ w3 w2 ⊗ w3 ∧ w3 ⊗ w1 w3 ⊗ w2ii) α est maximum pour : ∀w ∈ E : w α Soit alors deux suites u1 = [x,y1 , . . . ,yk ,y], u2 = [x,z1 , . . . ,zp ,y]. On dira que u1 est meilleurque u2 si, et seulement si: v(u1 ) v(u2 ). En particulier, une suite d´finissant un chemin sera toujours pr´f´r´e ` une suite ne d´finissant e eee a epas de chemin, grˆce ` la propri´t´ ii) ci-dessus. a a eeExemples de relations d’ordre: E ⊗ α B={vrai, faux} ∧ faux vrai<faux existence R + ∞ ≤ valeurs additives minimales [0,1] × 0 ≥ probabilit´s maximales e N ∪ {∞} min 0 ≥ capacit´s maximales e Ces d´finitions ´tant donn´es, nous posons e e e les probl`mes : e Probl`me 8.1 (x-optimal-y) Soit x,y deux sommets donn´s de G = e e (X,Γ,v). D´terminer un chemin u = (x ∗ y) de G, de valeur optimale e parmi tous les chemins de x ` y dans G. a Probl`me 8.2 (x-optimal ou optimal-y) Il s’agit du probl`me x- e e optimal-y pour tout y ∈ X (resp. x-optimal-y pour tout x ∈ X) : chemins de valeur optimale issus de x (resp. aboutissant ` y) a c IFSIC 2004
    • 8.2. Chemins de valeur additive minimale issus d’un sommet donn´ e 99 Probl`me 8.3 (∗-optimal-∗) Il s’agit du probl`me x-optimal pour tout e e x ∈ X (chemins de valeur optimale entre tous les couples de sommets).L’optimalit´ est ` prendre, bien sˆr, au sens de la relation d’ordre sur E. e a u Dans ce qui suit, et jusqu’au paragraphe 8.8, nous prendrons : E ≡ R; ⊗ ≡ +; ≡≤c’est-`-dire le cas des valeurs additives minimales. Ceci n’est pas une restriction car nous verrons aau §8.8 comment adapter les r´sultats et algorithmes aux autres cas, sous r´serve d’une structure e ead´quate de (E, ⊗ , ) e Nous ´tudions successivement les probl`mes de type 8.2 (et 8.1 comme cas particulier) avec e eplusieurs algorithmes, puis les probl`mes de type 8.3 dans le cadre de la transformation d’algo- erithmes.8.2 Chemins de valeur additive minimale issus d’un sommet donn´ e Nous supposons, dans cette section, que les sommets sont num´rot´s de 1 ` n, et que le e e asommet de d´part est le sommet de num´ro 1 (quitte ` renum´roter). e e a e8.2.1 Existence Proposition 8.3 Le probl`me 1-minimal admet des solutions si et e seulement si le sous-graphe G1 = (Γ∗ (1),Γ1 ) ne contient pas de circuit de valeur < 0.D´monstration. Soit c = [x ∗ x] un circuit de valeur ρ < 0 dans G1 . Comme x ∈ Γ∗ (1), e∃γ = [1 ∗ x] de valeur ω; par suite, γ.c a pour valeur ω + ρ, γ.c.c a pour valeur ω + 2ρ, ...,∀k ∈ N : γ.ck a pour valeur ω + kρ d’o` : u lim (ω + kρ)] = −∞ k→∞ Donc la valeur des chemins de 1 ` x n’est pas minor´e, et il en est de mˆme pour tous les a e edescendants de x. R´ciproquement, si G1 n’a pas de circuit de valeur < 0, alors : si u est un chemin de 1 ` e ax et ue un chemin ´l´mentaire, inclus dans u, de 1 ` x, on a : v(u) ≥ v(ue ) ≥ min v(ue ) (o` ee a umin v(ue ) d´note le minimum des valeurs des chemins ´l´mentaires). Comme l’ensemble des e eechemins ´l´mentaires est fini, min v(ue ) est d´fini et de plus min v(u) ≥ min v(ue ) ((o` min v(u) ee e ud´note le minimum des valeurs des chemins). D’autre part, un chemin ´l´mentaire est un chemin, e ee c IFSIC 2004
    • 100 Chemins de valeur optimaleet donc min v(u) = min v(ue ) D´finition 8.4 Un circuit de valeur < 0 s’appelle circuit absorbant e (sous entendu pour les valeurs additives minimales).8.2.2 Caract´risation e Nous donnons maintenant un th´or`me de caract´risation des valeurs minimales, dans le cas e e eo` ces valeurs existent. On note C1i l’ensemble de tous les chemins de 1 ` i. On consid`re les u a eattributs de sommets suivants : ∀i ∈ X : λ(i) = minu∈C1i v(u), avec λ(i) = +∞ si C1i = ∅ (valeur minimale des chemins de 1 ` i). aSi λ(i) < +∞, pred(i) = pr´d´cesseur de i sur un chemin ´l´mentaire de va- e e ee leur optimale de 1 ` i. (pred(1) n’est pas d´fini). En abr´g´, a e e e pred(i) sera d´sign´ comme pr´d´cesseur optimal de i. e e e e Le couple (λ(i),pred(i)) constitue les attributs minimaux (relativement au probl`me pos´) e edu sommet i.On montre d’abord que les attributs λ(i) (i = 1, . . . ,n) sont solutions d’un syst`me d’in´quations e eet d’un syst`me d’´quations. e e Proposition 8.5 Les attributs λ(i) (i = 1, . . . ,n) sont solution du syst`me: ∀i ∀j : xi ≤ xj + v(j,i) eD´monstration Il y a trois cas ` consid´rer : e a e 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. P Proposition 8.6 Les attributs λ(i) (i = 1, . . . ,n) sont solution du syst`me: ∀i : xi = minj (xj + v(j,i)) eD´monstration D’apr`s la proposition 8.5, e e ∀i : λ(i) ≤ min(λ(j) + v(j,i)) (8.1) j Il y a deux cas ` consid´rer: a e – i ∈ C1i . Comme λ(i) = minu∈C1i v(u), il existe u ∈ C1i tel que v(u) = λ(i). Soit p l’avant- dernier sommet de u. On a donc u = u · (p,i) o` u ∈ C1p . On peut donc ´crire : u e c IFSIC 2004
    • 8.2. Chemins de valeur additive minimale issus d’un sommet donn´ e 101 λ(i) = v(u) = v(u ) + v(p,i) ≥ λ(p) + v(p,i) ≥ minj (λ(j) + v(j,i), d’o` u λ(i) ≥ min(λ(j) + v(j,i)) (8.2) j – i ∈ C1i . Dans ce cas, λ(i) = +∞ ≥ minj (λ(j) + v(j,i)), on obtient donc aussi l’´quation 8.2 eDes ´quations 8.1 et 8.2 on d´duit λ(i) = minj (λ(j) + v(j,i)) e e P Toutefois, les conditions ´nonc´es dans les deux propositions pr´c´dentes ne sont pas suffi- e e e esantes, comme le contre-exemple ci-apr`s (figure 8.1) va le montrer: e 2 1 2 4 5 2 1 4 1 1 4 0 -2 3 6 2 Fig. 8.1 – Contre-exemple Le syst`me d’´quations de la proposition 8.6 s’´crit : e e e   x1 = 0   x = min(x + 2) = x + 2  2   1 1  x3 = min(x1 + 4,x2 + 1,x4 + 2,x6 + 2)  x4 = min(x2 + 2,x5 + 1)    x5 = min(x3 − 2,x4 + 1)    x6 = min(x5 + 0) = x5 Les valeurs µ1 = 0,µ2 = 2,µ3 = 2,µ4 = 1,µ5 = 0,µ6 = 0 satisfont ce syst`me. Et pourtant, ce ene sont pas les valeurs minimales des chemins issus du sommet 1. Par exemple, la valeur minimaledes chemins de 1 ` 3 est ´gale ` 3, alors que µ3 = 2. Les valeurs propos´es ici constituent bien a e a edes minorants des valeurs de chemins, mais pas n´cessairement des minima : elles peuvent ˆtre e etrop petites. Le th´or`me de caract´risation suivant montre en effet que les valeurs minimales de chemins e e eissus de 1 constituent LA solution maximale du syst`me d’´quations. e eTh´or`me 8.7 Les attributs λ(i) (i = 1, . . . ,n) constituent la solution maximale du syst`me: e e e 0 si i = 1 xi = minxj ∈Γ−1 (xi ) (xj + v(j,i))si i = 2, . . . ,nD´monstration Soit µ(i) (i = 1, . . . ,n) la solution maximale du syst`me d’´quations. Il faut e e emontrer : ∀i (1 ≤ i ≤ n) : λ(i) = µ(i). – D’apr`s la proposition 8.6, les λ(i) constituent une solution du syst`me et donc : e e ∀i (1 ≤ i ≤ n) : λ(i) ≤ µ(i) (8.3) c IFSIC 2004
    • 102 Chemins de valeur optimale – Pour montrer les in´galit´s contraires, on consid`re les deux cas possibles : e e e 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`me, les in´galit´s suivantes sont v´rifi´es: e e e e e   µ(i1 ) ≤ µ(1) + v(1,i1 )   µ(i2 ) ≤ µ(i1 ) + v(i1 ,i2 )   ...  µ(i) ≤ µ(ik ) + v(ik ,i) En sommant membre ` membre, et comme µ(1) = 0, on obtient: a µ(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) (8.4) – Des ´quations 8.3 et 8.4 on d´duit : e e ∀i (1 ≤ i ≤ n) : λ(i) = µ(i) P Remarque. Consid´rons le graphe Gmin (1) dont l’ensemble des sommets est l’ensemble des edescendants du sommet 1, et l’ensemble des arcs est l’ensemble des couples (pred(i),i) pour touti descendant du sommet 1. Formellement : Gmin (1) = (Γ∗ (1),{(pred(i),i) | i ∈ Γ∗ (1)}) = ({i | λ(i) < +∞},{(i,j) | λ(j) = λ(i) + v(i,j)} Les caract´risations pr´c´dentes montrent que ce graphe est une arborescence de racine 1. e e eLes algorithmes de calcul des chemins minimaux issus de 1 que nous ´tudions ci-apr`s pourront e edonc ˆtre vus comme des algorithmes d’exploration de la descendance de 1, avec une strat´gie e ede s´lection sp´cifique ` chacun d’eux. e e a8.3 Algorithme de FORD : exploration8.3.1 Principe On note x0 le sommet initial. Le principe de cet algorithme consiste ` ajuster progressivement ales valeurs des attributs λ jusqu’` ce qu’ils v´rifient le syst`me caract´ristique. Pour assurer qu’on a e e eobtient bien la solution maximale, on part de valeurs initiales dont on sait a priori qu’ellesmajorent les valeurs λ. Pour cela, nous allons tester tous les arcs du graphe selon un ordre deparcours induit par une exploration en profondeur analogue ` celle r´alis´e pour l’´num´ration a e e e edes chemins ´l´mentaires issus de x0 (cf. §6.3). ee Un arc (y,z) est test´ lorsque y est sommet de pile et z est le successeur courant de y; en effet, ey est alors reconnu comme descendant de x0 , et l’´tat de la pile d´finit le chemin courant de x0 e e c IFSIC 2004
    • 8.3. Algorithme de FORD : exploration 103` y : (λ(y), pred(y)) ont ´t´ initialis´s ou mis ` jour lorsque y a ´t´ empil´ pour la premi`re fois.a ee e a ee e eQuant ` z, plusieurs cas peuvent se pr´senter selon son ´tat relatif ` l’exploration (cf terminologie a e e adu chapitre 5) :1er cas £z est dehors. Il devient alors en attente (et va ˆtre empil´), et (λ(z), pred(z)) sont e einitialis´s : e λ(z) ← λ(y) + v(y,z); pred(z) ← y2eme cas £ z est termin´; cela signifie que z a ´t´ pr´c´demment empil´ ` partir d’un pr´d´cesseur ` e ee e e ea e e= y puis d´pil´ – apr`s que toute sa descendance ait ´t´ explor´e; les attributs de z ont donc e e e ee ed´j` une valeur, mais celle-ci peut ˆtre remise en cause par l’arc (y,z) qui doit donc ˆtre test´: ea e e e si λ(y) + v(y,z) < λ(z) alors λ(z) ←− λ(y) + v(y,z) ; pred(z) ←− y; z est empil´ car la modification de λ(z) peut remettre en cause e les valeurs pr´c´demment attribu´es aux descendants de z, d’o` la e e e u n´cessit´ de refaire l’exploration ` partir de z. e e a sinoninutile d’empiler z ` nouveau : ses attributs ne sont pas modifi´s a e donc ceux de ses descendants non plus. fsi3eme cas £ z est en attente (il appartient donc ` la pile.) ` a x 0 Cela signifie qu’un circuit passant par y u 1 et z est rencontr´, puisque z est ` la fois e a ant´c´dent et successeur de y. Le test de e e z mise ` jour des attributs de z permet alors a de d´tecter si ce circuit est absorbant; exa- e u minons la figure ci-contre : 2 yProposition : le circuit u2 · (y,z) est de valeur <0 si et seulement si : λ(y) + v(y,z) < λ(z)D´monstration Il existe un chemin u1 = [1 ∗ z], de valeur λ(z). Comme u1 · u2 est le chemin ecourant de 1 ` y, on a : a (1) λ(y) ≤ v(u1 ) + v(u2 ) = λ(z) + v(u2 )i) £ Supposons v(u2 ) + v(y,z) < 0. D’apr`s (1), on a : eλ(y) + v(y,z) ≤ λ(z) + v(u2 ) + v(y,z) < λ(z) d’apr`s l’hypoth`se. e eii) £ R´ciproquement, supposons λ(y) + v(y,z) < λ(z). L’in´galit´ (1) ne peut pas ˆtre stricte : e e e een effet, si λ(y) < λ(z) + v(u2 ), cela signifie que y a ´t´ visit´ pr´c´demment comme extr´mit´ ee e e e e ed’un chemin ne passant pas par z; y a alors ´t´ empil´ et sa descendance explor´e. L’arc (y,z) ee e e c IFSIC 2004
    • 104 Chemins de valeur optimalea donc ´t´ test´ et on doit avoir λ(z) ≤ λ(y) + v(y,z), ce qui contredit (1). ee ePar cons´quent on a n´cessairement : e e λ(y) = λ(z) + v(u2 ), ce qui, avec l’hypoth`se, permet de d´duire : e e λ(y) > λ(y) + v(y,z) + v(u2 ) d’o` : 0 > v(y,z) + v(u2 ) u P La d´tection d’un circuit absorbant est un crit`re d’arrˆt de l’algorithme; il suffit de g´rer e e e eune variable bool´enne absorbant, initialement ` faux et qui passe ` vrai lorsqu’un tel circuit e a aest d´tect´. e e8.3.2 Texte de l’algorithme Celui-ci est une adaptation de l’algorithme d’´num´ration des chemins ´l´mentaires vu au e e ee6.5. Le texte est donn´ page 105 (voir la signification des acc`s ` l’annexe A). e e a c IFSIC 2004
    • 8.3. Algorithme de FORD : exploration 105 FORD : EXPLORATION EN PROFONDEURREEL SOMMET::λ ; SOMMET SOMMET::pred ;ford-profondeur(GRAPHE G, SOMMET x) c’est local ENS[SOMMET] SOMMET::a visiter: ; ENUM[dehors, en attente, termin´] SOMMET::etat ; e PILE[SOMMET] A; BOOL absorbant ; SOMMET y, z ; d´but e depuis pourtout y de G.lst som faire y.´tat ← dehors fpourtout ; e absorbant ← faux ; A.creer ; A.empiler(x) ; x.´tat ← en attente ; x.λ ← 0 ; x.a visiter ← G.lst succ(x) ; e jusqua A.vide ou absorbant faire y ← A.sommetpile ; si y.a visiter = ∅ alors y.´tat ← termin´ ; A.depiler e e sinon z ← y.a visiter.element ; y.a visiter ← y.a visiter {z} ; cas z.´tat = e dehors −→ z.´tat ← en attente ; z.λ ← y.λ+ G.v(y,z) ; z.pred ← y ; e 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.´tat ← en attente ; e 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 fin c IFSIC 2004
    • 106 Chemins de valeur optimale8.3.3 Une heuristique d’am´lioration e Dans la strat´gie d’exploration en profondeur utilis´e, le choix d’un successeur du sommet e ede pile est laiss´ arbitraire. Il est posible de d´finir un crit`re de choix d’un tel successeur, tenant e e ecompte de la nature du probl`me ` r´soudre, ` savoir la recherche de chemins de valeur minimale e a e asur un graphe dont les arcs sont valu´s. Un tel crit`re doit laisser esp´rer une am´lioration du e e e etemps d’ex´cution de l’algorithme, mais sans que le prix ` payer pour sa mise en œuvre ne e adevienne prohibitif: ce crit`re ne devra donc prendre en compte que des informations locales, ec’est-`-dire relatives ` l’´tat courant du sommet courant. Par contre, l’am´lioration cens´e r´sulter a a e e e ede l’application de ce crit`re ne pourra ˆtre ´tablie sˆrement; dans certains cas, il pourrait e e e umˆme en r´sulter une d´t´rioration du comportement, mais en moyenne une am´lioration doit e e ee eintervenir. Un crit`re possible et simple ` mettre en œuvre consiste ` choisir, parmi les successeurs e a apossibles du sommet de pile y, un sommet z tel que v(y,z) soit minimum. L’am´lioration attendue er´side dans une diminution du nombre de retours dans la pile, donc de reprise de parcours d´j` e eaeffectu´s. Le prix ` payer est un tri sur l’ensemble des valeurs des arcs issus de y. e a8.4 Algorithme de BELLMANN-KALABA8.4.1 Principe Il s’applique ` tout graphe valu´, et permet de d´tecter d’´ventuels circuits absorbants. Nous a e e eposerons, par convention : v(1,1) = 0 et, si | u |= 0,v(u) = 0. (k)Pour tout x ∈ X et tout entier k ≥ 1, on notera Cx l’ensemble des chemins de 1 ` x, de a (k)longueur ≤ k. Remarquer que Cx = ∅ si et seulement si tout chemin de 1 ` x, s’il en existe, aest de longueur > k. L’algorithme de Bellmann-Kalaba est fond´ sur le r´sultat suivant : e e (k) Proposition 8.8 On consid`re les valeurs λx d´finies par : e e   v(1,x) si (1,x) ∈ Γ (1) λx = 0 si x = 1  +∞ si (1,x) ∈ Γ ∀k ≥ 2 : λ(k) = x min [λ(k−1) + v(x,y)] y y∈Γ−1 (x) (k) (k) Alors λx = minu∈C (k) v(u) (+∞ si Cx = ∅). xD´monstration. Par r´currence sur k : e eBase : V´rifi´ pour k = 1, par d´finition. e e eInduction : Supposons la proposition v´rifi´e pour k − 1 ≥ 1 e e1er cas : C (k) = ∅. x c IFSIC 2004
    • 8.4. Algorithme de BELLMANN-KALABA 107 (k)Soit u ∈ Cx et y le pr´d´cesseur de x sur ce chemin. On a donc e e (k−1) u = u1 .(y,x) avec u1 ∈ Cy Avec la convention | u1 |= 0 =⇒ v(u1 ) = 0, on obtient, d’apr`s l’hypoth`se de r´currence et e e e (k)la d´finition de λx : e v(u) = v(u1 ) + v(x,y) ≥ λ(k−1) + v(x,y) ≥ λ(k) y x (k)Donc, λx ≤ minu∈C (k) v(u). x (k) D’autre part, par d´finition de λx , il existe y0 tel que e λ(k) = λ(k−1) + v(y0 ,x) x y0et d’apr`s l’hypoth`se de r´currence, il existe e e e (k−1) u1 ∈ Cy0 avec v(u1 ) = λ(k−1) y0 d’o` u = u1 · (y0 ,x) v´rifie u e u ∈ Cx et v(u) = λ(k) (k) x (k)Donc, dans ce cas, λx = minu∈C (k) v(u). x (k) (k−1) (k−1)2eme cas : Cx = ∅. Pour tout sommet y ∈ Γ−1 (x) on a Cy ` = ∅, et donc λy = +∞ (k)(hypoth`se de r´currence). D’o`, par d´finition, λx = +∞ . P e e u e Corollaire 8.9 Il existe k ≤ n tel que ∀x ∈ X : λ(k) = λ(k−1) x x si et seulement si le sous-graphe G0 ne comporte pas de circuit absorbantD´monstration. e (n) (n−1) (n) (n)£ Supposons que ∃x ∈ X : λx < λx Alors : ∃u ∈ Cx tel que λx = v(u) et, pour tout (n−1)chemin u ∈ Cx , on a : v(u) < v(u ). Par cons´quent, | u |= n et donc u n’est pas ´l´mentaire, d’o` l’on d´duit l’existence d’un e ee u ecircuit de valeur < 0 inclus dans u, donc dans le sous-graphe G0 .£ R´ciproquement, d’apr`s la proposition 8.8, le probl`me 1-minimal admet alors une solution, e e ece qui prouve l’inexistence de circuit absorbant dans le sous-graphe G0 . P Corollaire 8.10 ∀k ≥ 1,∀x ∈ Γ∗ (1), le pr´d´cesseur de x sur un che- e e (k) min de Cx de valeur minimale est un sommet y k pour lequel le mini- (k) mum est atteint lors du calcul de λxD´monstration. Elle r´sulte imm´diatement de la d´monstration de la proposition 8.8 P e e e e c IFSIC 2004
    • 108 Chemins de valeur optimale8.4.2 AnalyseInvariant 1 ≤ k ≤ n∧ A = ∪k Γ[j] (1)∧ j=1 (k−1) ∀x ∈ A λ anc(x) = valeur minimale des chemins de Cx ∧ (k) λ(x) = valeur minimale des chemins de Cx ∧ pred(x) = pr´d´cesseur optimal de x sur de tels che- e e mins ∧ stab ≡ λ = λ ancTermin´ e (k = n) ∨ stab resultat si stab alors (λ, pred) sinon il y a des circuits absorbants fsiProgression (* 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 ; A←A ∪ {x} fsi ; k←k + 1Valeurs initiales λ(1)←0; ∀x ∈ Γ(1) : λ(x)←v(1,x); pred(x)←1; A←{1} ∪ Γ(1); k←18.4.3 Texte de l’algorithme Il est donn´ page 109. e8.4.4 Preuve Nous ne la d´taillerons pas, la laissant en exercice au lecteur. Les quatre r´sultats suivants e edoivent ˆtre montr´s : e e Lemme 8.11 Les valeurs initiales satisfont l’invariant. e ´D´monstration. Evidente, grˆce ` la convention v(1,1) = 0 a a c IFSIC 2004
    • 8.4. Algorithme de BELLMANN-KALABA 109 ALGORITHME DE BELLMANN-KALABAREEL SOMMET::λ ;SOMMET SOMMET::pred ;REEL SOMMET::λ anc ;bellmann-kalaba(GRAPHE G, SOMMET x) c’est local ENS[SOMMET] A, E; BOOL stab; ENT k; SOMMET x, y ; d´but e 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´tect´ e e fin(w,y0) ← min (f (y),E) est une primitive, signifiant quew = min (f (y) | y ∈ E) = f (y0), o` f est une fonction E → R u c IFSIC 2004
    • 110 Chemins de valeur optimale Lemme 8.12 La progression maintient l’invariant.D´monstration. Utiliser : e – La proposition 8.8 pour les valeurs λ – Le corollaire 8.10 pour les valeurs pred – Le corollaire 8.9 pour le bool´en stab e Proposition 8.13 (Correction partielle). Lorsque l’algorithme s’arrˆte, e on a l’alternative : – 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 absorbantsD´monstration. Cons´quence de (stab∧ Invariant) ∨ (k = n ∧ ¬stab∧ Invariant) e e Proposition 8.14 (Terminaison). L’algorithme s’arrˆte en un nombre e fini d’´tapes eD´monstration. Consid´rer la fonction n − k e e8.4.5 Complexit´ e L’algorithme ex´cute au plus n − 1 pas d’it´ration, et pour chacun d’eux : e e n acc`s lst pred e n calculs de min, sur un ensemble E, impliquant chacun : card(E) acc`s valarc, e card(E) comparaisons et additions de r´els; e comme card(E) ≤ n, on obtient un algorithme en 0(n3 ).Remarque. L’algorithme de Bellmann-Kalaba met en œuvre, au niveau du probl`me 8.2, ele principe d’optimalit´ de Bellmann qui fonde les m´thodes de programmation dynamique : e eles ´tapes sont les longueurs des chemins examin´s, les ´tats ` l’´tape k sont les sommets qui e e e a epeuvent ˆtre atteints par un chemin de longueur k et les transitions possibles de l’´tape k-1 ` e e al’´tape k sont d´finies par les arcs issus des sommets ´tats ` l’´tape k-1. La relation e e e a e λ(k) = min (λ(k−1) + v(x,y)) x y y∈Γ−1 (x)n’est autre, dans ce contexte, que la traduction du principe d’optimalit´. e8.4.6 Acc´l´ration de l’algorithme ee (k) (k) Il est possible d’acc´l´rer l’algorithme en utilisant, dans le calcul de λx , les valeurs λy ee(avec y < x), d`s leur mise ` jour dans l’´tape courante. En effet, on a les r´sultats suivants : e a e e c IFSIC 2004
    • 8.4. Algorithme de BELLMANN-KALABA 111 Proposition 8.15 On d´finit, par r´currence : e e (1) λx comme dans la proposition 8.8 ∀k ≥ 2 : λ(k) = x min (µ(k) + v(y,x)) y y∈Γ−1 (x) avec : (k) λy si y < x, µ(k) = y (k−1) λy si y ≥ x On a alors : (k) si Cx = ∅ : (k) (k) i) λx minore la valeur minimale des chemins de Cx . (k) ii) il existe un chemin de 1 ` x, ayant pour valeur λx . aD´monstration Elle s’effectue par r´currence sur k, et pour chaque k, par r´currence sur x. e e e£ Pour k = 1, la proposition est v´rifi´e. e e (k)£ Supposons l` v´rifi´e pour k - 1, et soit x tel que Cx = ∅. a e e (k) Il existe u ∈ Cx et soit y le pr´d´cesseur de x sur u. Alors : e e (k−1) u = u .(y,x), u ∈ Cy , v(u) = v(u ) + v(y,x)c’est ` dire, d’apr`s l’hypoth`se de r´currence : a e e e v(u) ≥ λ(k−1) + v(y,x) y (k)Montrons, par r´currence sur x, que λx ≥ v(u) e (k−1) (k−1) Pour x=1, on a y ≥ 1 donc λy = µy et par cons´quent : e v(u) ≥ µ(k) + v(y,x) ≥ λ(k) y xSupposons que cette in´galit´ est v´rifi´e jusqu’` x-1. On a alors : e e e e a si y < x alors v(u ) ≥ min v(γ) ≥ min v(γ) ≥ λ(k) = µ(k) y y (k−1) (k) γ∈Cy γ∈Cy d’o` u v(u) ≥ µ(k) + v(x,y) ≥ λ(k) tandis que si y ≥ x : y y λ(k−1) = µ(k) et par cons´quent : y y e v(u) ≥ µ(k) + v(x,y) ≥ λ(k) y yCeci montre la partie i) de la proposition. c IFSIC 2004
    • 112 Chemins de valeur optimale Pour montrer la partie ii), consid´rons la suite de sommets e x = y0 > y1 > . . . > yν et yν ≥ yν+1 telle que :  (k) (k)  λx  = λy1 + v(y1 ,x)  (k)   λ (k) = λy2 + v(y1 ,y2 ) y1  . .   .  (k)  (k) λν = λν+1 + v(yν+1 ,yν )yν existe n´cessairement (´ventuellement ν =0), puisque la suite est d´croissante et minor´e par e e e e1. Si on somme cette suite d’´galit´s, il vient : e e λ(k) = λ(k−1) + v(yν+1 ,yν ) + ... + v(y1 ,x) x yν+1 (k−1)D’apr`s l’hypoth`se de r´currence, il existe un chemin u = [1 ∗ yν+1 ] avec v(u ) = λyν+1 . Le e e e (k)chemin u · (yν+1 ,yν , . . . ,y1 ,x) a donc pour valeur λx . P Corollaire 8.16 Il existe k ≤ n tel que ∀x ∈ X : λ(k) = λ(k−1) x x si et seulement si le sous-graphe G0 ne comporte pas de circuit absorbantLa d´monstration est identique ` celle du corollaire 8.9 e a Nous ne d´crivons pas l’algorithme acc´l´r´ en entier, mais seulement les modifications ` e ee e aapporter ` l’algorithme pr´c´dent : le tableau λ anc devient inutile ; on le remplace par une a e esimple variable r´elle δ. (L’affectation λ anc←λ est donc ` supprimer). e aRemarque. Comme pour l’algorithme de Ford, l’algorithme de Bellmann-Kalaba rentredans une classe d’algorithmes par ajustements successifs, et donc n’apporte pas de solutionsp´cifique au probl`me 8.1. Par contre, l’algorithme dans sa version non acc´l´r´e permet de e e ee erestreindre le calcul aux chemins ayant une longueur maximum donn´e. e Les deux algorithmes qui vont suivre rentrent dans la classe des algorithmes gloutons, c’esta` dire qu’ils calculent le r´sultat d´finitif de chaque sommet, examin´s dans un certain ordre, e e esans jamais revenir en arri`re - c’est ` dire sans jamais remettre en cause les r´sultats partiels e a ed´j` acquis. A ce titre, ils peuvent ˆtre adapt´s au probl`me 8.1. Toutefois, ils ne s’appliquent ea e e equ’` des graphes ayant des propri´t´s particuli`res : valeurs positives ou nulles pour le premier, a ee egraphes 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´, avec ∀γ ∈ Γ : v(γ) ≥ 0 si bien que G ne poss`de aucun e ecircuit absorbant. c IFSIC 2004
    • 8.5. Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA 1138.5.1 Principe de l’algorithme de DIJKSTRA L’ algorithme de Dijkstra est une strat´gie particuli`re de l’algorithme d’exploration pour e ele calcul de la descendance du sommet 1 vu au 6.2. Il est donc plus simple que l’algorithmed’exploration de Ford du §8.3, bas´ sur l’exploration de tous les chemins ´l´mentaires issus de e ee1 : ceci est du ` l’hypoth`se plus restrictive sur les valeurs des arcs. a e Par rapport au sch´ma g´n´ral du §6.2, les pr´cisions et modifications suivantes sont ap- e e e eport´es : e – Lorsqu’un sommet z devient en attente, ses attributs sont initialis´s : e λ(z)←λ(y) + v(y,z); pred(z)←y, o` y est son p`re dans l’arborescence d’exploration. u e – Lorsqu’un sommet z est termin´, ses attributs (λ(z), pred(z)) sont d´finitifs (leur valeur e e est correcte) – La s´lection d’un sommet d’´tat en attente se fait selon le crit`re suivant : on choisit le som- e e e met y d’´tat en attente dont l’attribut λ(y) est minimum. Le sommet s´lectionn´ devient e e e alors termin´ et, pour tout z ∈ Γ(y) : e – si z est dehors, il devient en attente et ses attributs sont initialis´s e – si z est en attente ses attributs sont r´´valu´s de la mani`re habituelle : ee e e si λ(y) + v(y,z) < λ(z) alors λ(z)←λ(y) + v(y,z); pred(z)←y fsi – si z est termin´, il est ignor´. e e Le fait que les attributs des sommets puissent atteindre leur valeur finale avant la fin del’algorithme, et que l’on sache ` quel moment de l’ex´cution ce fait se produit, indique que cet a ealgorithme rentre dans la classe des algorithmes gloutons.Remarque. Au §6.2 nous avions mis en ´vidence les strat´gies en largeur d’abord et en pro- e efondeur d’abord. La strat´gie utilis´ ici peut ˆtre qualifi´e, elle, de meilleur d’abord (best-first e e e esearch). Relativement au probl`me trait´, cette strat´gie est informante, c’est-`-dire qu’elle tient e e e acompte des informations d´j` obtenues sur les valeurs de chemins (informations s´mantiques), ea ealors que les deux premi`res sont aveugles, c’est-`-dire purement syntaxiques. e a La gestion de l’ensemble des sommets d’´tat en attente, not´ A, va ˆtre effectu´e selon e e e ela structure de donn´es appel´e tas, qui est une structure ordonn´e dans laquelle l’acc`s ` un e e e e a´l´ment de valeur minimum parmi tous les ´l´ments de l’ensemble se fait en temps constant, c’est-ee eea`-dire ind´pendant du nombre d’´l´ments contenus dans cette structure. De mani`re analogue e ee eaux files (§6.3.1) et aux piles (§6.3.2), on consid`re le type tas comme un type de donn´es e eabstrait. La d´claration e TAS[E ORD] t d´clare un tas d’objets de type E ORD, o` E ORD est un type dont les valeurs sont e uordonn´es. e Les op´rations sur les tas sont alors : ecreer cr´e un nouveau tas vide eBOOL tasvide pr´dicat ` valeur vrai si et seulement si le tas est vide e amettre en tas(E ORD v) ajout dans le tas de l’´l´ment de valeur v ee c IFSIC 2004
    • 114 Chemins de valeur optimale^ter de taso retrait d’un ´l´ment de valeur minimum (erreur si le tas est ee vide)E ORD mintas d´livre un ´l´ment du tas de valeur minimum, sans modifier e ee le tas (erreur si le tas est vide)reorg(E ORD v1, v2) 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 ´quivalent ` la s´quence : t.^ter de tas(v1); e a e o t.mettre en tas(v2) La mise en œuvre concr`te d’une telle structure abstraite et des acc`s est vue dans les cours e ede techniques ou m´thodes de programmation (elle se fait sous forme d’arbre binaire ordonn´, e ecomplet ` gauche, souvent repr´sent´ en tableau). Noter que le terme liste de priorit´ (priority a e e equeue) est aussi utilis´ pour d´signer un tas. e e8.5.2 Analyse de l’algorithme L’analyse correspondant au principe expos´ ci-dessus est donc d´riv´e de celle de l’algorithme e e eg´n´ral d’exploration de la descendance de 1. Les ´l´ments du tas sont ici des objets ` deux e e ee achamps (SOMMET, RE ´EL), o` ` chaque sommet x du graphe valu´ est associ´ son attribut λ(x) ua e e ee e e ´(lorsque celui-ci a ´t´ initialis´). Les valeurs du type de base sont ordonn´es par le champ REEL(attributs λ) Invariant : (I1) : A = sommets d’´tat en attente ⊆ Γ∗ (1) e (I2) : T = sommets d’´tat termin´ ⊆ Γ∗ (1) e e (I3) : ∀x ∈ T : Γ(x) ⊆ T ∪ A (I4) : ∀x ∈ T : (λ(x), pred(x)) = attributs minimaux de x (I5) : ∀x ∈ A : λ(x) = miny∈T ∩Γ−1 (x) (λ(y) + v(y,x)) pred(x) = sommet pour lequel ce minimum est at- teint 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 ` jour de (λ(x), pred(x)) a sinon initialisation de (λ(x), pred(x)) ; A.mettre en tas(x, λ(x)) fsi Valeurs initiales : T ←∅ ; A.creer λ(x0 ) ←0 ; A.mettre en tas((x0 ,0)) c IFSIC 2004
    • 8.5. Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA 1158.5.3 Exemple d’ex´cution e 1 1 1 5 8 3 2 2 2 4 4 1 0 2 6 5 2 4 5 1 3 4 7 2 2 Fig. 8.2 – Exemple pour l’algorithme de Dijkstra Etape nouv MOD tas Termin´s e init (0,0) 1 0 1,2,3 (1,3),(2,4),(3,5) 0 2 1 2,5 (2,4),(5,4),(3,5) 0,1 3 2 3,4 (5,4),(3,5),(4,8) 0,1,2 4 5 2,6 (3,5),(4,8),(6,6) 0,1,2,5 5 3 4 (6,6),(4,7) 0,1,2,5,3 6 6 2,7 (4,7),(7,11) 0,1,2,5,3,6 7 4 -,7 (7,9) 0,1,2,5,3,6,4 8 7 ∅ ∅ 0,1,2,5,3,6,4,7 fin de l’algorithme. Le sommet 8 est inaccessible8.5.4 Texte de l’algorithme8.5.5 Preuve Lemme 8.17 Les valeurs initiales v´rifient l’invariant eD´monstration. Evident. e Lemme 8.18 L’invariant est maintenu par la progression.D´monstration. Les parties I1, I2 et I3 de l’invariant sont maintenues par la progression : seul e c IFSIC 2004
    • 116 Chemins de valeur optimale ALGORITHME DE DIJKSTRAREEL SOMMET::λ ; SOMMET SOMMET::pred ;dijkstra(GRAPHE G, SOMMET x) c’est local ENUM[dehors,en attente,termin´] SOMMET::´tat ; e e TAS[DOUBLET[SOMMET, REEL]] A; ENS[SOMMET] MOD -- sommets modifiables SOMMET z, nouv ; REEL w; d´but e depuis pourtout x de G.lst som faire x.´tat ← dehors fpourtout ; e A.creer ; x.´tat ← en attente ; x.λ ← 0 ; e A.mettre en tas((x,0)) ; jusqua A.vide faire (nouv,w) ← A.mintas ; -- w=nouv.λ A.^ter de tas; o nouv.´tat ← termin´ ;MOD ← G.lst succ(nouv) ; e e -- mise ` jour des marques des sommets modifiables a pourtout z de MOD cas z.´tat = dehors −→ z.´tat ← en attente ; e e z.λ ← w + G.v(nouv, z) ; z.pred ← nouv ; A.mettre en tas((z, z.λ)) z.´tat = en attente −→ si w + G.v(nouv, z) < z.λ e alors A.reorg((z, z.λ),(z, w + G.v(nouv, z))); z.λ ← w + G.v(nouv, z) ; z.pred ← nouv fsi z.´tat = termin´ −→ rien e e fcas fpourtout fait-- les sommets d’´tat dehors sont inaccessibles e finle sommet nouv passe de l’´tat en attente ` l’´tat termin´; il est ˆt´ de A, ajout´ ` T et il e a e e oe e aest descendant de 1. D’autre part, les nouveaux ´l´ments de A sont successeurs de nouv, donc ee c IFSIC 2004
    • 8.5. Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA 117descendants de 1.Pour I4 et I5, il faut montrer : 1. le sommet nouv v´rifie I4 e 2. les sommets z ∈ A, dont les attributs sont initialis´s ou modifi´s, v´rifient I5 e e e£ Maintien de I4 : ici, T d´signe la valeur de l’ensemble des sommets d’´tat termin´ au d´but e e e edu pas d’it´ration (avant l’adjonction de nouv). e Soit u un chemin quelconque de 1 ` a nouv. Comme 1 ∈ T et nouv ∈ T , x 0 ce chemin ”sort” de T : soit z le der- nouv nier sommet de u, faisant partie de T , et z son successeur sur u, qui appartient donc ` A par construc- a z z M tion (´ventuellement, z = nouv). Le e chemin u se d´compose en : e 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`re de s´lection de nouv) e e λ(nouv) minore donc la valeur des chemins de 1 ` nouv. a D’autre 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 pourvaleur λ(nouv), ce qui montre le point 1 (maintien de I4).£ Maintien de I5 : Soit x ∈ Γ(nouv). – Si x est dans l’´tat dehors, alors Γ−1 (x) ∩ T = {nouv}, sans quoi x serait d´j` dans A au e ea d´but de l’´tape. Par construction, les attributs de x v´rifient bien I5 e e e – Si x est dans l’´tat en attente, alors nouv est ajout´ ` Γ−1 (x) ∩ T , et le test sur λ(x) e e a montre que les nouveaux attributs de x v´rifient toujours I5 eP Proposition 8.19 (Correction partielle). Si l’algorithme s’arrˆte, on a e ` l’arrˆt : a e ∀x ∈ Γ∗ (1)), les valeurs (λ(x), pred(x)) constituent les attributs mini- maux de xD´monstration. Il suffit de montrer que, lorsque l’algorithme est termin´, on a : T = Γ∗ (1); le e er´sultat d´coule alors de I4. e e D’apr`s I1, on a T ⊆ Γ∗ (1) e c IFSIC 2004
    • 118 Chemins de valeur optimale R´ciproquement, d’apr`s I3 et la condition d’arrˆt A = ∅, tout successeur d’un sommet de e e eT appartient ` T ; donc tout descendant d’un sommet de T appartient aussi ` T , ce qui montre a al’inclusion inverse Γ∗ (1) ⊆ T P Proposition 8.20 (Terminaison) L’algorithme s’arrˆte au bout d’un e nombre fini d’it´rations eD´monstration. La fonction card(T ) est strictement croissante, ` valeurs enti`res positives ou e a enulles et major´e par la valeur finie card(Γ∗ (1)); la condition d’arrˆt (A = ∅) ≡ (T = Γ∗ (1)) est e edonc obtenue en un nombre fini d’´tapes. P e8.5.6 Complexit´ e L’algorithme effectue au plus n pas d’it´rations, et ` l’´tape no k, on a : e a e card(T ) = k, card(A) ≤ n − k, card(M OD) ≤ d+ (nouvk ), o` d+ (x) = card(Γ(x)), et nouvk le k eme sommet termin´. u ` e La boucle sur M OD comporte donc au plus d + (nouv ) additions, comparaisons et acc`s e kmettre en tas ou reorg (exclusivement l’un de l’autre). De plus, 1 acc`s min, 1 acc`s ˆter de tas et un acc`s lst succ sont effectu´s ` chaque ´tape. e e o e e a e Au total, on a donc au plus (m d´signe le nombre d’arcs) : e n k=1 d+ (nouvk ) = m additions, comparaisons; m acc`s mettre en tas ou reorg e n acc`s min, ˆter de tas; e o n acc`s lst succ e Or, on d´montre (dans les cours sur les structures de donn´es ou sur les m´thodes de tri) e e eque la gestion d’un tas de p ´l´ments n´cessite O(log2 p) comparaisons pour la mise en œuvre ee edes acc`s mettre en tas, reorg, ˆter de tas et O(1) pour min. e o La complexit´ de l’algorithme est donc finalement : e O(m + n log2 n) comparaisons O(n) acc`s lst succ eRemarque. Supposons qu’il existe une constante d telle que ∀x ∈ X : d+ (x) ≤ d (ce quiimplique notamment m ≤ d.n). On a alors O(m) = O(n) et, de plus, la complexit´ de mise en eœuvre d’un acc`s lst succ est O(1). L’algorithme est alors en O(n log2 n) e (La mˆme remarque vaut si le graphe est peu dense, c’est-`-dire m est beaucoup plus petit e aque n2 )8.6 Cas des graphes sans circuit : algorithme ORDINAL8.6.1 Principe Comme l’algorithme de Dijkstra, cet algorithme rentre dans la cat´gorie des algorithmes egloutons; c’est l’hypoth`se restrictive d’absence de circuit qui rend cette simplification possible. e c IFSIC 2004
    • 8.6. Cas des graphes sans circuit : algorithme ORDINAL 119(Par contre, les valeurs des arcs peuvent ˆtre de signe quelconque). e Dans un premier temps, nous pr´sentons un algorithme valable dans le cas o` le sommet 1 e uest racine de G, c’est ` dire : a Γ−1 (1) = ∅ et Γ∗ (1) = XNous verrons ensuite comment lever cette hypoth`se. e Le parcours de la liste des arcs est ici organis´ selon la m´thode employ´e lors du calcul de e e ela fonction ordinale (§7.2) avec, en plus, la prise en compte des valeurs des arcs, d’o` le nom udonn´ ` cet algorithme. Ainsi, un arc (x,y) est examin´ lorsque x est point d’entr´e du graphe ea e ecourant, sachant que les attributs d´finitifs (λ(x), pred(x)) ont d´j` ´t´ calcul´s. e eaee e La mise en œuvre de cet algorithme se fait alors selon l’analyse qui suit.8.6.2 AnalyseInvariant : H sous-graphe de G ; E = ensemble des points d’entr´e de H ; e M = G.ens som H.ens som (sommets qui ne sont pas dans H). ∀x ∈ M : (λ(x), pred(x)) = attributs minimaux de xArrˆt : e H videProgression : (H non vide, donc E non vide puisque H n’a pas de circuit) x ←element(E) ; - - tous les pr´d´cesseurs de x sont dans M e e λ(x) ←miny∈Γ−1 (x) (λ(y) + v(y,x)) pred(x)=sommet pour lequel ce min est atteint M ←M ∪ {x}; H.oter sommet(x) ; E ←H.points entreeValeurs initiales : H ←G ; H.oter som(1) ; M ←{1} ; λ(1) = 0 ; pred(1) non d´fini; e E ←H.points entree8.6.3 Preuve Lemme 8.21 Les valeurs initiales satisfont l’invariant. e ´D´monstration Evident, par construction. P c IFSIC 2004
    • 120 Chemins de valeur optimale Lemme 8.22 La progression maintient l’invariant.D´monstration Notons H ,M ,E les valeurs au d´but de l’´tape. Par hypoth`se, l’invariant e e e eest v´rifi´ pour ces valeurs. Soit H, M, E les valeurs ` la fin de l’´tape, et x le sommet s´lectionn´ e e a e e edurant l’´tape. e – H = H priv´ de x, donc H est un sous-graphe de G. e – M = M ∪ {x} donc M est l’ensemble des sommets qui ne sont pas dans H. – E = ensemble des points d’entr´e de H, par construction. e – ∀y ∈ M : (λ(y), pred(y)) = attributs minimaux de y. Il reste donc ` montrer quea (λ(x), pred(x)) = attributs minimaux de x.On peut ´crire : e Cx = Cy,x y∈Γ−1 (x)o` Cy,x est l’ensemble de chemins de 1 ` x dont l’avant-dernier sommet est y. On a donc, par u aassociativit´ du minimum : e min v(u) = min ( min v(u)) u∈Cx y∈Γ−1 (x) u∈Cy,x = min ( min (v[1 y] + v(y,x))) y∈Γ−1 (x) u∈Cy,x = min ( min (v(u ) + v(y,x))) y∈Γ−1 (x) u ∈Cy = min (v(y,x) + min v(u )) et, comme y ∈ M : y∈Γ−1 (x) u ∈Cy = min (v(y,x) + λ(y)) y∈Γ−1 (x) = λ(x) De plus, λ(x) = v(y,x) + λ(y), avec y = pred(x). Donc pred(x) est bien le pr´d´cesseur de x e esur un chemin de 1 ` x, de valeur λ(x). Enfin, par hypoth`se sur G, tout chemin est ´l´mentaire. a e eeDonc, (λ(x), pred(x)) satisfont la d´finition des attributs minimaux de x. e P Proposition 8.23 (Correction partielle) A l’arrˆt de l’algorithme : e ∀x ∈ X les attributs (λ(x), pred(x)) sont minimaux.D´monstration A l’arrˆt, on a H.vide donc M = G.ens som. Le r´sultat d´coule de l’invariant. e e e e P Proposition 8.24 (Terminaison) L’algorithme s’arrˆte au bout d’un e nombre fini d’´tapes. e c IFSIC 2004
    • 8.6. Cas des graphes sans circuit : algorithme ORDINAL 121D´monstration A la fin de chaque ´tape, on a ¬H.vide ⇒ E = ∅ car le graphe est sans e ecircuit (cf. proposition 7.1). Donc, dans chaque ´tape, la s´lection d’un sommet x est possible. e eCe sommet ´tant ˆt´ de M lors de l’´tape, la fonction card(X M ), minor´e par 0, d´croˆ e oe e e e ıtstrictement d’une unit´ ` chaque pas d’it´ration. ea e P8.6.4 Texte de l’algorithme Il est donn´ page 121 e ALGORITHME ORDINAL RACINEREEL SOMMET::λ ; SOMMET SOMMET::pred ;ordinal racine(GRAPHE G; SOMMET x) c’est local ENS[SOMMET] M; -- sommets marqu´s e ENS[SOMMET] E; -- points d’entr´e courants e GRAPHE H ; -- graphe courant SOMMET x, y;d´but e depuis x.λ ← 0 ; H ← G; H.otersom(x) ; M ← {x0 } ; E ← H.points entree jusqua H.vide ou sinon E = ∅ faire -- selection d’un 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 inapplicablefin min a la mˆme signification que dans l’algorithme de eBellmann-Kalaba (cf. page 109). c IFSIC 2004
    • 122 Chemins de valeur optimale8.6.5 Complexit´ e Il y a exactement n ´tapes. A chaque ´tape, un sommet est d´finitivement ”marqu´” (mis e e e edans M). Si x d´signe ce sommet, le calcul de x.λ est un calcul de minimum sur l’ensemble edes pr´d´cesseurs de x, qui n´cessite | Γ−1 (x) | −1 comparaisons. L’algorithme effectue donc e e e −1 (| Γ (x) | −1) = m − n comparaisons (m est le nombre d’arcs de G, avec m ≤ n2 ). C’estx∈Xdonc un algorithme en O(n2 ).8.6.6 Adaptations et am´liorations e8.6.6.1 Calcul progressif des attributs Au lieu de calculer les attributs (λ(x), pred(x)) d’un seul coup (lorsque x est ˆt´ du graphe), oeon peut les calculer progressivement en maintenant l’invariant suivant: ∀x ∈ E : (λ(x), pred(x))=attributs minimaux de x. Pour cela, on modifie la progressionainsi(x d´signe le sommet s´lectionn´ ` l’´tape courante) : e e ea e 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 fpourIl est alors facile de v´rifier que tout sommet devenant point d’entr´e de H aura d´j` ses attributs e e eaminimaux.8.6.6.2 Mise ` jour de l’ensemble des points d’entr´e a e Dans la progression, l’ensemble des points d’entr´e E est recalcul´. Or, si H et E (resp. H e eet E) d´signent les valeurs au d´but (resp. ` la fin) d’une ´tape, on a : e e a e H est obtenu en enlevant de H un sommet x ∈ E , E est l’ensemble des points d’entr´e de H. eOn pourrait exploiter la connaissance de E pour recalculer E : E = E {x}∪{nouveaux points d’entr´e}. Or, les nouveaux points d’entr´e ne peuvent ˆtre e e eque parmi les successeurs de x. On associe ` chaque sommet y l’attribut entier nb tel que nb(y)= anombre de pr´d´cesseurs de y dans H. Ces attributs sont g´r´s de la mani`re suivante : e e ee e – D`s que y est ”visit´” (c’est-`-dire lorsqu’un de ses pr´d´cesseurs est s´lectionn´) : y.nb e e a e e e e ←H.nb pred(y) (initialisation). – Lorsqu’un sommet x est ˆt´ de H : oe ∀ 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 1238.6.6.3 Nouvelle version de l’algorithme On peut mettre en œuvre l’une ou l’autre de ces deux adaptations. On donne le texte del’algorithme prenant en compte les deux ` la fois. a ALGORITHME ORDINAL RACINE (deuxi`me version) eREEL SOMMET::λ ; SOMMET SOMMET::pred ;ordinal racine(GRAPHE G, SOMMET x) c’est local ENS[SOMMET] D; -- sommets dehors ENS[SOMMET] E; -- points d’entr´e courants e GRAPHE H ; -- graphe courant ENT SOMMET ::nb ; SOMMET x, y;d´but e depuis x.λ ← 0 ; H ← G; D ← G.ens som {x0 } ; E ← {x0 } jusqua H.vide ou sinon E = ∅ faire -- selection d’un 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 fin c IFSIC 2004
    • 124 Chemins de valeur optimale8.6.6.4 G´n´ralisation au cas o` 1 n’est pas n´cessairement point d’entr´e e e u e e Il faut alors tenir compte des sommets x ∈ Γ∗ (1), pour lesquels λ(x) ne doit pas ˆtre d´fini. e eL’algorithme doit alors mettre en ´vidence, parmi les sommets ”marqu´s”, ceux qui sont des- e ecendants de 1. Le calcul des attributs (λ(x), pred(x)) se fera en ne tenant compte que desdescendants de 1, g´r´ comme dans les algorithmes d’exploration. ee Nous laisserons au lecteur le soin d’´crire le texte de l’algortihme, d’´tablir la preuve et e ed’´tudier la complexit´, de mani`re analogue ` l’algorithme Ordinal-racine. e e e a8.7 Valeurs optimales de tout sommet ` tout sommet a8.7.1 De la fermeture transitive aux valeurs optimales Le but de ce probl`me est de calculer les nombres e λij = valeurs minimales des chemins de i ` j pour tous couples (i,j) (si j ∈ Γ+ (i), on peut aposer, arbitrairement, λij = +∞). Si on revient au probl`me de la fermeture transitive, il s’agissait alors de calculer les bool´ens : e e bij = (j ∈ Γ+ (i)) Il est clair que ces bool´ens v´rifient : e e (2) ∀i ∈ X, ∀j ∈ X : bij = [bik ∧ v(k,j)] k∈Γ−1 (j) o` v(k,j) est la valeur d’existence (bool´enne) de l’arc(k,j). u e La comparaison de (1) et (2) montre qu’il y a une analogie entre les deux probl`mes, aux etransformations suivantes pr`s : e valeur des arcs et des chemins : r´el ∪{+∞} e booleen op´rations sur les arcs : e + op´rations sur les chemins : e min valeurs remarquables : 0 (neutre de +) vrai (neutre de ) +∞ (neutre de min, faux (neutre de , absorbant de +) absorbant de Ceci sugg`re l’id´e suivante : de tout algorithme d’existence de chemin on peut d´duire un e e ealgorithme de chemin de valeur minimale. En particulier, les algorithmes de calcul de la fermeture transitive ont leur ´quivalent. e8.7.2 Transformation de l’algorithme des puissances Pour l’algorithme des puissances, il suffit de remplacer : – L’op´ration ◦ par +, dont nous donnons l’algorithme ci-dessous page 125 e – L’op´ration par l’op´ration min telle que : e e G3 = (X,Γ3,V 3) = min(G1,G2) est d´fini par : e c IFSIC 2004
    • 8.7. Valeurs optimales de tout sommet ` tout sommet a 125 V 3(i,j) = min[V 1(i,j),V 2(i,j)] (par convention, (i,j) ∈ Γ ⇔ v(i,j) < +∞) ALGORITHME G1 + G2GRAPHE composer-general(GRAPHE G1, G2) c’est -- pr´ : G1.lst som = G2.lst som; G1 et G2 ont mˆme type de valeurs d’arcs e e local SOMMET x, y, z ; ENS[SOMMET] X REEL w1, w2, w3 ; d´but e 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 fin La validit´ de l’algorithme des puissances (adapt´ du §5.3) d´coule des propri´t´s alg´briques e e e ee esuivantes, faciles ` v´rifier : a e min est associative, commutative + est associative, poss`de l’´l´ment neutre D = (X,∆) valu´ par 0, et est distributive par e ee erapport ` min. a Enfin, ∀k : la valeur v (k) de tout arc (x,y) ∈ Γ(k) est ´gale ` la valeur minimale des chemins e areliant x ` y dans G, de longueur k. a Toutefois, la possibilit´ d’existence de circuits absorbants oblige ` faire les v´rifications e a esuppl´mentaires suivantes pour l’algorithme des puissances (§5.3) : il faut rajouter la condi- etion d’arrˆt k = n qui, si elle est obtenue, est ´quivalente ` l’existence d’un circuit absorbant ; e e a c IFSIC 2004
    • 126 Chemins de valeur optimaleen effet, on a alors : min(G, . . . ,G(n) ) = min(G, . . . ,G(n−1) )ce qui prouve qu’il existe un chemin de longueur n (circuit hamiltonien ou chemin non ´l´mentaire), eede valeur v < aux valeurs de tous les chemins ´l´mentaires. ee8.7.3 Transformation de l’algorithme de Roy-Warshall En nous inspirant des mˆmes principes, nous pouvons adapter l’algorithme de Roy-Warshall (ap- epel´ Warshall-Floyd); nous donnons ci- dessous (page 127) la version avec routage proc´dur´, e e esuivie des proc´dures de routage. e Nous ne red´montrerons pas en d´tail cet algorithme, la d´monstration ´tant en tous points e e e eanalogue ` celle de l’algorithme de roy- Warshall avec routage ; on a les 3 lemmes suivants : a 1. A l’issue de l’algorithme, ∀z ∈ X,∀y ∈ X : y.R[z] = nil si et seulement si (y,z) ∈ Γ+ 2. Si G n’a pas de circuit absorbant alors, pour tout couple (y,z) ∈ Γ+ on a, ` l’issue de a l’algorithme : y.R[z] est successeur de y sur un chemin de valeur minimale de y ` z. a 3. Si G n’a pas de circuit absorbant alors, pour tout couple (y,z) ∈ Γ+ , tout chemin de valeur minimale de y ` z est ´l´mentaire a eeOn d´duit de ces trois lemmes que : si G n’a pas de circuit absorbant, les tables de routage R epermettent d’obtenir les trac´s de chemins de valeur minimale entre tout couple de sommets. eCas o` G a des circuits absorbants u Cette situation peut ˆtre d´tect´e ` l’examen du graphe Result ` l’issue de l’algorithme. En e e e a aeffet, l’existence d’un circuit absorbant passant par un sommet x se manifestera par la propri´t´ : eeResult.v(x,x) < 0 Si tel est le cas, les valeurs des arcs de Result ne peuvent ˆtre interpr´t´es comme des valeurs e eeminima, puisque les valeurs des chemins ne sont pas n´cessairement born´es inf´rieurement. e e eToutefois, les fonctions de routage permettent d’obtenir le trac´ de circuits absorbants, et donc ed’en ´liminer. En effet, soit x ∈ X tel que Result.v(x,x) < 0. La suite d´finie par e e x1 = x.R[x],x2 = x1 .R[x], . . . ,xj = xj−1 .R[x] comporte une r´p´tition, laquelle correspond ` un circuit absorbant. e e a Exemple : 0 1 -2 1 2 3 -2 Sur une mise en œuvre matricielle (y.R[z] = R[y,z]) on obtient, par applications successivede θ1 , θ2 , θ3 (` gauche : matrice des valeurs, ` droite matrice R) : a a c IFSIC 2004
    • 8.7. Valeurs optimales de tout sommet ` tout sommet a 127 Algorithme WARSHALL-FLOYDTABLE[SOMMET,SOMMET] SOMMET::R ;GRAPHE warshall floyd(GRAPHE G) c’est local SOMMET x, y, z ; ENS[SOMMET] X ; REEL vy, vz, w ; d´but e 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 finavec : nil si (y,z) ∈ Γ initroutage : ∀z ∈ X, ∀y ∈ X : y.R[z]← z si (y,z) ∈ Γ majroutage(y,z,x) : y.R[z]←y.R[x] c IFSIC 2004
    • 128 Chemins de valeur optimale 1 2 3 1 2 3 1 1 1 2 2 -2 2 3 3 0 -2 3 1 2 θ1 ↓ 1 2 3 1 2 3 1 1 1 2 2 -2 2 3 3 0 -2 3 1 2 θ2 ↓ 1 2 3 1 2 3 1 1 -1 1 2 2 2 -2 2 3 3 0 -2 -4 3 1 2 2 θ3 ↓ 1 2 3 1 2 3 1 -1 -3 -5 1 2 2 2 2 -2 -4 -6 2 3 3 3 3 -4 -6 -8 3 2 2 2d’o` les suites (` partir de 1, 2 et enfin 3) : u a 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,3Le circuit absorbant 2,3,2 (valeur -4) est d´tect´, mais pas le circuit 1,2,3,1 (valeur -1). e e8.8 Alg`bres de chemins : transformations d’algorithmes e Au paragraphe pr´c´dent, nous avons mis en ´vidence la possibilit´ de d´duction d’un algo- e e e e erithme de chemin de valeur minimale ` partir d’un algorithme d’existence de chemin, grˆce ` la a a atransformation : ({vrai,faux}, ∨ ,∧) −→ (R ∪ {+∞}, min ,+) On peut d´gager une structure abstraite, appel´e dio¨ ou encore semi-anneau, ` partir e e ıde ade laquelle d’autres transformations pourront ˆtre d´duites. e e c IFSIC 2004
    • 8.8. Alg`bres de chemins : transformations d’algorithmes e 129 D´finition 8.25 On appelle dio¨ un triplet (S, ⊕ ,⊗) o` S est en e ıde u ensemble, muni des deux lois de composition internes ⊕ et ⊗ , et satis- faisant aux axiomes suivants : A1 ⊕ est associative, commutative et poss`de un ´l´ment neutre α. e ee A2 ⊗ est associative et poss`de un ´l´ment neutre e. e ee A3 ⊗ est distributive ` droite et ` gauche par rapport ` ⊕. a a a A4 α est ´l´ment absorbant de ⊗. eeLa structure (E, ⊗ , ) introduite au paragraphe 8.1 rentre dans ce cadre. En effet, la relationd’ordre d´finit une loi ⊕, de la mani`re suivante: e e w1 ⊕ w2 = w1 si w1 w2 w2 si w2 w1 Les axiomes A1 ` A4 sont alors v´rifi´s sur (E, ⊕ ,⊗). a e epour A1: – La v´rification de l’associativit´ et de la commutativit´ de ⊕ sont imm´diates e e e e – α est maximum pour , donc w ⊕ α = wpour A2: les hypoth`ses sur ⊗ sont identiques e w1 ⊗ w2 si w2 w3 compatibilt´ avec ⊗ epour A3: w1 ⊗ (w2 ⊕ w3 ) = w1 ⊗ w3 si w3 < w2 D’autre part, w2 w3 ⇒ w1 ⊗ w2 w1 ⊗ w3 ⇒ (w1 ⊗ w2 ) ⊕ (w1 ⊗ w3 ) = w1 ⊗ w2 et de mˆme e 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´rifie de mˆme la distributivit´ ` droite. e e ea Par contre, la structure de dio¨ (E,⊕,⊗) ne rentre pas toujours dans le cadre de la structure ıded´finie au §8.1: on ne peut pas toujours d´duire une relation d’ordre total de la loi de composition e e⊕. Ceci est illustr´ notamment par les exemples 8 et 9 ci-apr`s. La structure de dio¨ est donc e e ıdeplus abstraite, mais aussi plus riche - puisqu’elle permet de rendre compte de situations plusnombreuses - que celle d’ensemble totalement ordonn´. e c IFSIC 2004
    • 130 Chemins de valeur optimale Dans la structure de dio¨ıde, la notion de circuit absorbant se g´n´ralise comme suit : un e ecircuit est dit absorbant si sa valeur v v´rifie : e v⊕e=e En fonction du choix du dio¨ (S, ⊕ ,⊗) on peut interpr´ter concr`tement la valeur (dans ıde e eS) v(x,y) et la valeur (dans S) des expressions : ∀x ∈ X,∀y ∈ X : λ(x,y) = v(u) = v(u) {u∈X ∗ |u=[x∗y]} {u∈X ∗ |u=[x∗y]∧v(u)=α}o`, si u = (x1 , . . . ,xp ), on a pos´ u e v(u) = v(xj ,xj+1 ) j=1,...,p−1Exemples1) Existence d’au 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 n’y a pas de circuit absorbant ; λ(x,y) = vrai si et seulement si il existe un chemin de x ` y dans G. a2) Chemin de valeur minimale S = R ∪ {+∞}; ⊕ = min; ⊗ = +; α = +∞; e = 0; v(x,y) = si(x,y) ∈ Γ alors valeur num´rique de l’arc e sinon + ∞ Un circuit de valeur v telle que min(v,0) = 0 (c’est ` dire v < 0) est absorbant. a λ(x,y) = valeur minimale des chemins de x ` y (s’il n’y a pas de circuit a absorbant)3) chemin de valeur maximale S = R ∪ {−∞}; ⊕ = max; ⊗ = +; α = −∞; e = 0; v(x,y) = si (x,y) ∈ Γ alors valeur num´rique de l’arc e sinon − ∞Un circuit de valeur v telle que max(v,0) = 0 (c’est ` dire v > 0) est absorbant. a λ(x,y) = valeur maximale des chemins de x ` y (s’il n’y a pas de a circuit absorbant).4) Chemin de fiabilit´ maximale e S = [0,1]; ⊕ = max; ⊗ = ×; α = 0; e = 1; c IFSIC 2004
    • 8.8. Alg`bres de chemins : transformations d’algorithmes e 131 v(x,y) = si (x,y) ∈ Γ alors fiabilit´ de l’arc e sinon 0 Toute valeur p ∈ S v´rifie max(p,1) = 1 donc il n’y a pas de circuit absorbant. e λ(x,y) = fiabilit´ maximale des chemins de x ` y. e a5) Chemin de capacit´ maximale e S = R+ ∪ {+∞}; ⊕ = max; ⊗ = min; α = 0; e = +∞; v(x,y) = si (x,y) ∈ Γ alors capacit´ de l’arc e sinon 0 Toute valeur c ∈ S v´rifie max(c, + ∞) = +∞ donc il n’y a pas de circuit absorbant. e λ(x,y) = capacit´ maximale des chemins de x ` y. e a6) Chemin de fiabilit´ minimale e S = [0,1] ∪ {α}(α ∈ [0,1]); ⊕ = min sur [0, 1], prolong´e par ∀x ∈ S : x ⊕ α = x; e ⊗ = × sur [0, 1], prolong´e par ∀x ∈ S : x ⊗ α = α; e = 1; e v(x,y) = si (x,y) ∈ Γ alors fiabilit´ de l’arc e sinon α Toute valeur p ∈ S,p = 1,p = α v´rifie p ⊕ e = min(p,1) = p donc tout circuit de fiabilit´ < e e1 est absorbant. λ(x,y) = fiabilit´ minimale des chemins de x ` y (s’il n’y a pas de e a circuit absorbant).7) Chemin de capacit´ minimale e S = R+ ∪ {+∞} ∪ {α}(α ∈ R+ ∪ {+∞}); ⊕ = min sur R+ ∪ {+∞}, prolong´e par ∀x ∈ S : x ⊕ α = x; e ⊗ = min sur R+ ∪ {+∞}, prolong´e par∀x ∈ S : x ⊗ α = α; e e = +∞; v(x,y) = si (x,y) ∈ Γ alors capacit´ de l’arc e sinon α Toute valeur p ∈ S,p = +∞,p = α, v´rifie p ⊕ e = min(p, + ∞) = p donc tout circuit de ecapacit´ < ∞ est absorbant. (toutefois, p e 2 ⊕ p ⊕ e = p ⊕ e, o` p2 = p ⊗ p, donc un circuit n’est uabsorbant ”qu’une fois”). λ(x,y) = capacit´ minimale des chemins de x ` y (s’il n’y a pas de e a circuit absorbant). c IFSIC 2004
    • 132 Chemins de valeur optimale8) D´nombrement des chemins e S = N; ⊕ = +; ⊗ = ×; α = 0; e = 1 v(x,y) = si (x,y) ∈ Γ alors 1 sinon 0 Toute valeur n ∈ N v´rifie n + 1 = 1 donc tout circuit est absorbant. e λ(x,y) = nombre de chemins distincts de x ` y (s’il n’y a pas de circuit). a ´9) Enum´ration des chemins ´l´mentaires (exemple difficile) : e ee + Soit X l’ensemble de toutes les suites sans r´p´tition d’´l´ments de X, ayant au moins un e e ee´l´ment. Notons n = |X|. S est alors l’ensemble constitu´ des n(n − 1) ´l´ments sx,y , x ∈ X, y ∈ee e ee +X, x = y, o` sx,y est un ensemble d’´l´ments de X de la forme [x ∗ y], des n ´l´ments sx = {[x]} u ee ee(x ∈ X) et de l’´l´ment e = x∈X sx (identifi´ ` X). On a donc |S| = n2 + 1. Notons qu’on peut ee eaavoir sx,y = ∅ pour certains couples (x,y), x = y. En outre, ⊕ = ∪; ⊗ = multiplication latine ; α = ∅ La multiplication latine est d´finie comme suit : e – ∀s ∈ S : s ⊗ α = α ⊗ s = α (α = ∅ est donc l’´l´ment absorbant de S). ee – ∀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,yExemple : 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´rifier que l’´l´ment neutre de ⊗ est e. e eeLa valuation du graphe est alors : v(x,y) = si(x,y) ∈ Γ alors {[xy]} sinon ∅ Par ailleurs, d’apr`s la d´finition de ⊗, la valeur de tout circuit est ´gale ` α, donc v´rifie e e e a eα ∪ e = e. Il n’y a donc pas de circuit absorbant. Enfin, λ(x,y) = ensemble des chemins ´l´mentaires de x ` y ee aLe lecteur int´ress´ trouvera, dans ([GM79], chapitre 3) d’autres exemples et d’int´ressants e e ed´veloppements sur les alg`bres de chemin. e e c IFSIC 2004
    • 8.8. Alg`bres de chemins : transformations d’algorithmes e 133 Pour conclure, on peut se poser la question de savoir quels sont les algorithmes de chemine-ment optimal qui peuvent ˆtre transform´s, sur la base de la structure de dio¨ appropri´e, pour e e ıde er´soudre les probl`mes correspondants. Sans entrer dans les d´tails, il s’av`re que les algorithmes e e e en’utilisant pas une proc´dure de s´lection d’un ´l´ment r´alisant un “optimum” peuvent ˆtre e e ee e edirectement adapt´s, en utilisant les op´rations ⊗ (` la place de +) et ⊕ (` la place de min), e e a aainsi que α (` la place de +∞) et e (` la place de 0). Ainsi, on peut adapter directement Ford, a aBellmann-Kalaba, Ford Ordinal, Puissances, Warshall. Mais ce n’est pas le cas de Dijkstra : eneffet, cet algorithme n´cessite que la loi ⊕ v´rifie : ∀a, ∀b : a ⊕ b ∈ {a,b} (s´lection du “meilleur” e e e´l´ment en attente). C’est bien le cas lorsque ⊕ ≡ ou, ou ⊕ ≡ min, ou ⊕ ≡ max (exemples 1 `ee a7) mais ce n’est plus le cas pour ⊕ ≡ + ou ⊕ ≡ ∪ (exemples 8 et 9). De plus, lorsque la loi ⊕ a cette propi´t´, la condition d’application de l’algorithme de eedijkstra s’exprime par : ∀(x,y) ∈ Γ : v(x,y) ⊕ e = e Elle est donc toujours v´rifi´e pour les exemples 1,4,5 ; e ev´rifi´e si v(x,y) ≥ 0 pour l’exemple 2 e e v(x,y) ≤ 0 pour l’exemple 3 v(x,y) = 1 pour l’exemple 6 v(x,y) = +∞ pour l’exemple 7 (donc irr´alistes pour ces e deux exemples) Pour illustrer la puissance de ces transformations d’algorithme, nous donnons un exempled’application de l’algorithme de Bellmann-Kalaba pour l’´num´ration des chemins ´l´mentaires e e eeissus du sommet 1 vers chacun des autres sommets (exemple 9). On doit donc calculer : ∀i, i =1 : λi =ensemble des chemins ´l´mentaires de 1 ` i. La relation de r´currence est ici : ee a e λ1 = {[1]} n ∀k, ∀i : λk = i λk−1 ⊗ v(j,i) j j=1 2 4 1 5 3 La matrice du graphe est : 1 2 3 4 5 1 {[1]} {[1,2]} {[1,3]} α α 2 α α {[2,3]} {[2,4]} α 3 α α α {[3,4]} {[3,5]} 4 α α {[4,3]} α {[4,5]} 5 α α α α α c IFSIC 2004
    • 134 Chemins de valeur optimale L’ex´cution de l’algorithme donne alors : e 1 2 3 4 5 {[1]} {[1,2]} {[1,3]} α α {[1]} {[1,2]} {[1,3]} {[1,2,4] {[1,3,5]} [1,2,3]} [1,3,4]} {[1]} {[1,2]} {[1,3]} {[1,2,4] {[1,3,5] [1,2,3] [1,3,4] [1,2,3,5] [1,2,4,3]} [1,2,3,4]} [1,2,4,5] [1,3,4,5]} {[1]} {[1,2]} {[1,3]} {[1,2,4] {[1,3,5] [1,2,3] [1,3,4] [1,2,3,5] [1,2,4,3]} [1,2,3,4]} [1,2,4,5] [1,3,4,5] [1,2,4,3,5] [1,2,3,4,5]} {[1]} {[1,2]} {[1,3]} {[1,2,4] {[1,3,5] [1,2,3] [1,3,4] [1,2,3,5] [1,2,4,3]} [1,2,3,4]} [1,2,4,5] [1,3,4,5] [1,2,4,3,5] [1,2,3,4,5]} stabilit´ atteinte. e c IFSIC 2004
    • Chapitre 9 Probl`mes d’ordonnancement e9.1 Nature des probl`mes e Un projet peut ˆtre d´compos´ en n tˆches A1 ,A2 , . . . ,An telles que : e e e a – Chaque tˆche est indivisible a – Chaque tˆche est munie d’une dur´e connue : di = dur´e de Ai a e e – Chaque tˆche est soumise ` un ensemble de contraintes temporelles qui peuvent toujours a a s’exprimer en fonction de contraintes sur la date de d´but d’ex´cution de la tˆche e e aCes contraintes sont de deux types :a) Contraintes ”d´terministes” (ou ”potentiel”) : e La date de d´but ti de la tˆche Ai intervient au plus tˆt (resp. au plus tard) ` une date e a o adonn´e a priori ou li´e ` la r´alisation d’autres tˆches du projet. e e a e aExemples. la tˆche Ai ne peut pas commencer avant la date T : a ti ≥ T. la tˆche Aj ne peut pas commencer avant l’ach`vement de la tˆche Ai : a e a tj ≥ ti + di soit encore : tj − ti ≥ diL’ensemble des contraintes ”potentiel” d´finit un ensemble conjonctif de contraintes, qui s’ex- eprime sous la forme d’un syst`me simultan´ d’in´quations du premier degr´ de la forme e e e e tj − ti ≥ ai,j (i,j ∈ {0, . . . ,n + 1})Par convention, t0 = 0 : date de d´but du projet e tn+1 : date de fin d’ex´cution du projet e (lorsque toutes les tˆches sont termin´es) a e = dur´e totale d’ex´cution du projet e eb) Contraintes ”non d´terministes” (ou ”disjonctives”) : e Elles expriment des incompatibilit´s entre sous-ensembles de l’ensemble des tˆches, mais e alaissent un degr´ de choix quant ` leur s´quencement : chaque contrainte est exprim´e par un e a e esyst`me d’in´quations, d’inconnues (ti )0≤i≤n+1 li´es par des ou (une des in´quations du syst`me e e e e edoit ˆtre v´rifi´e) e e e c IFSIC 2004
    • 136 Probl`mes d’ordonnancement eExemples. la tˆche Ai et la tˆche Aj doivent ˆtre totalement disjointes : a a e ti ≥ tj + dj ou tj ≥ ti + di. une des 4 tˆches Ai ,Aj ,Ak ,A ne peut ˆtre effectu´e qu’apr`s la date T : a e e e ti ≥ T ou tj ≥ T ou tk ≥ T ou t ≥ T D´finition 9.1 On appelle ordonnancement compatible (sous-entendu e ”avec les contraintes”) un vecteur de Nn+2 : T = (t0 ,t1 , . . . ,tn ,tn+1 ), o` : u ti = date de d´but d’ex´cution de la tˆche Ai (i = 1, . . . ,n) e e a t0 et tn+1 respectivement dates de d´but et de fin d’ex´cution du projet, e e respectant les contraintes de chacune des tˆches. a Probl`me 9.1 Parmi tous les ordonnancements compatibles avec un e ensemble de tˆches et de contraintes donn´es, en trouver un de dur´e a e e minimale, c’est ` dire tel que tn+1 soit minimum. a Probl`me 9.2 Parmi tous les ordonnancements compatibles avec un e ensemble de tˆches et de contraintes donn´es, en trouver un de dur´e a e e donn´e, c’est ` dire tel que tn+1 = T donn´e. e a eDans la suite de ce chapitre, on ne s’int´resse qu’aux contraintes ”d´terministes” ; les autres types e ede contraintes n´cessitent l’utilisation de techniques combinatoires, par exemple de recherche e e e ´arborescente telles que les Proc´dures de S´paration et Evaluation Progressives (P.S.E.P.).9.2 Mod´lisation ` l’aide de graphe e a9.2.1 graphe potentiel-tˆche a On associe au probl`me un graphe valu´, d´fini de la mani`re suivante : e e e e – X = {x0 ,x1 , . . . ,xn ,xn+1 } o` xi u ≡ Ai (1 ≤ i ≤ n) x0 ≡ d´but e xn+1 ≡ fin – Γ = ensemble des contraintes, au sens suivant : si tj − ti ≥ ai,j est une contrainte, alors (xi ,xj ) ∈ Γ avec la valeur ai,jExemples de contraintes et d’arc correspondant£ Contrainte ”au plus tˆt” sur Aj : o tj − ti ≥ ai,j (ai,j ≥ 0) ai,j xi −→ xj c IFSIC 2004
    • 9.2. Mod´lisation ` l’aide de graphe e a 137£ Contrainte ”au plus tard” sur Ai : ti − tj ≤ ai,j (ai,j ≥ 0), c’est-`-dire : tj − ti ≥ −ai,j a −ai,j xi −→ xj £ Contraintes implicites relatives au d´but : e∀i(1 ≤ i ≤ n + 1) : ti ≥ 0 ⇐⇒ (x0 ,xi ) ∈ Γ, de valeur 0£ Contraintes implicites relatives ` la fin : a∀i(1 ≤ i ≤ n) : tn+1 ≥ ti + di ⇐⇒ (xi ,xn+1 ) ∈ Γ, de valeur di Parmi toutes ces contraintes, certaines peuvent ˆtre redondantes, c’est-`-dire cons´quences e a ed’autres contraintes, de mani`re plus ou moins imm´diate; ceci sera plus particuli`rement vu au e e e§9.6 de ce chapitre9.2.2 Exemple Soit un projet compos´ de 6 tˆches : e a tˆche A1 A2 A3 A4 A5 A6 a dur´e 10 12 e 6 20 12 7avec les contraintes : A1 : peut commencer d`s le d´but des travaux. e e A2 : commence au plus tˆt 7 u.t. apr`s le d´but de A1 . o e e A3 : enchaˆ ınement sans d´lai avec A2 . e A4 : commence au plus tˆt 3 u.t. apr`s l’ach`vement de A5 ; la seconde o e e moiti´ de A4 commence au plus tˆt 13 u.t. apr`s l’ach`vement de e o e e A3 . A5 : commence au plus tˆt lorsque les 3/4 de A2 sont achev´s, au plus o e tard 6 u.t. apr`s l’ach`vement de A2 et au plus tˆt 3 u.t. apr`s e e o e l’ach`vement de A6 . e A6 : commence au plus tˆt 20 u.t. apr`s le d´but des travaux. o e e Liste des in´quations traduisant ces contraintes : e t1 ≥ 0; t2 − t1 ≥ 7; t3 ≥ t2 + 12 et t3 ≤ t2 + 12 ⇐⇒ t3 − t2 ≥ 12 et t2 − t3 ≥ −12; 1 t4 − t5 ≥ 15; t4 + × 20 ≥ t3 + 19 ⇐⇒ t4 − t3 ≥ 9; 2 3 t5 ≥ t2 + × 12 ⇐⇒ t5 − t2 ≥ 9; 4 t5 ≤ t2 + 18 ⇐⇒ t2 − t5 ≥ −18; t5 − t6 ≥ 10; c IFSIC 2004
    • 138 Probl`mes d’ordonnancement e t6 ≥ 20et les contraintes ”implicites” : ti ≥ 0 (i = 2,3,4,5); t7 − ti ≥ di (i = 1, . . . ,6) Dans cet exemple, les contraintes (x0 ,xi ),i = 2,3,4,5 ainsi que les contraintes (xi ,x7 ),i =2,3,5,6 sont ´videmment superflues (cf §9.6 ci-apr`s). e e 10 12 2 3 7 -12 0 0 1 9 -18 9 7 20 20 5 4 10 15 6 Fig. 9.1 – graphe potentiel-tˆche a9.3 Ordonnancements particuliers; chemin critique; marges. Th´or`me 9.2 Soit Λ = (λ0 ,λ1 , . . . ,λn ,λn+1 ) l’ordonnancement d´fini e e e par : λ0 = 0 λi = valeur maximale des chemins de x0 ` xi a (i = 1, . . . ,n + 1). C’est un ordonnancement compatible, v´rifiant : e λi ≤ ti (i = 0, . . . ,n + 1) quelque soit l’ordonnancement compatible T = (t0 = 0,t1 , . . . ,tn ,tn+1 ). En particulier, il est de dur´e minimale. eD´monstration D’apr`s le th´or`me 8.7, appliqu´ au probl`me des valeurs additives maxi- e e e e e emales, les attributs λi (i = 0, . . . ,n + 1) constituent la solution minimale du syst`me d’´quations: e e 0 si i = 0 xi = 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´sulte, d’une part : λj − λi ≥ ai,j sur tout arc (xi ,xj ), donc l’ordonnancement est ecompatible. D’autre part, tout ordonnancement compatible T = (t0 , . . . , tn+1 ) est aussi solution de cesyst`me, et donc : e ∀i (1 ≤ i ≤ n), λi ≤ ti En particulier, λn+1 ≤ tn+1 . P L’ordonnancement Λ s’appelle ordonnancement ”au plus tˆt” car λi est la date de d´but o eau plus tˆt compatible avec les contraintes pour la tˆche Ai . o a D´finition 9.3 Un chemin de valeur maximale entre x0 (d´but) et xn+1 e e (fin) s’appelle chemin critique, et les sommets qui y appartiennent tˆches critiques. aEn effet, si une tˆche situ´e sur ce chemin est retard´e alors la date finale du projet est retard´e. a e e e Soit maintenant une date finale F fix´e ` priori. On cherche les dates au plus tard, λi , d’un e aordonnancement compatible permettant l’ach`vement des travaux ` la date fix´e. e a e Th´or`me 9.4 Si F < λn+1 , il n’existe pas d’ordonnancement compa- e e tible se terminant ` la date F . a Si F ≥ λn+1 , alors l’ordonnancement Λ = (λ0 , . . . ,λn+1 ) d´fini par e λ0 = 0 λi = F − αi (i = 1, . . . ,n + 1). o` αi = valeur maximale des chemins de xi ` xn+1 , u a r´pond ` la question. e aD´monstration Si F < λn+1 , le r´sultat est ´vident puisque λn+1 est la date au plus tˆt e e e od’ach`vement des travaux. e Supposons donc F ≥ λn+1 . Les probl`mes de cheminement dans G aboutissant au sommet exn+1 se ram`nent aux probl`mes de cheminement issus du sommet xn+1 dans le graphe transpos´ e e eG t . Par cons´quent, d’apr`s le th´or`me 8.7, les attributs α (i = 0, . . . ,n + 1) constituent la e e e e isolution minimale du syst`me d’´quations: e e 0 si i = n + 1 xi = maxxj ∈Γ(xi ) (xj + v(i,j))si i = 2, . . . ,n Il en r´sulte, d’une part : αi − αj ≥ ai,j sur tout arc (xi ,xj ), c’est-`-dire, d’apr`s la d´finition e a e edes λi : λj − λi ≥ ai,j sur tout arc (xi ,xj ), donc l’ordonnancement est compatible. D’autre part, pour tout ordonnancement compatible T = (t0 . . . tn+1 ), avec tn+1 = F , lesvaleurs βi = F − ti sont aussi solution de ce syst`me, et donc : ∀i (1 ≤ i ≤ n), αi ≤ βi d’o` : e u ∀i (1 ≤ i ≤ n), λi ≥ ti P c IFSIC 2004
    • 140 Probl`mes d’ordonnancement e D´finition 9.5 Soit Λ l’ordonnancement au plus tˆt et Λ l’ordonnance- e o ment au plus tard relatif ` une date finale F ≥ λn+1 . On appelle marge a totale de la tˆche Ai (relativement ` F ) la diff´rence mi = λi −λi . C’est a a e le retard maximum que peut prendre l’ach`vement de Ai sans compro- e mettre la date de r´alisation du projet pr´vue λn+1 = F . e eRemarque. Si la date d’ach`vement de Ai est retard´e d’une dur´e ≤ mi , ce retard peut e e emodifier l’ordonnancement des tˆches ult´rieures sur tout chemin de xi ` xn+1 . Les marges a e atotales des tˆches ne sont donc pas ind´pendantes. Il vaut donc mieux parler de marge par a echemin traduisant le retard global tel que la somme des retards des tˆches situ´es sur ce a echemin reste inf´rieure ` ce retard global sous peine de retarder la date λn+1 . Pour un chemin e au, m(u) = maxxi ∈u (mi ) D´finition 9.6 Soit T = (t0 , . . . ,tn+1 ) un ordonnancement compatible e donn´. La marge libre de Ai , relativement ` T , est d´finie par : e a e µi = min (tj − ti − ai,j ) xj ∈Γ(xi )C’est le retard maximum que peut prendre l’ach`vement de Ai sans compromettre la date de ed´but pr´vue pour les autres tˆches. e e a9.4 Exemple Nous traitons compl`tement l’exemple donn´ au §9.2 (figure 9.1) e e tˆche a A1 A2 A3 A4 A5 A6 A7 Λ 0 12 24 45 30 20 65 αi 51 44 32 20 35 45 0 Λ | F = 65 14 21 33 45 30 20 65 mi | F = 65 14 9 9 0 0 0 / µi (Λ) 5 0 0 0 0 0 / x0 x1 x2 x3 x4 x7 = 14Marges totales par che- x0 x1 x2 x5 x4 x7 = 14min : x0 x6 x5 x2 x3 x4 x7 = 9 x0 x6 x5 x4 x7 = 0 (chemin critique)9.5 Choix des algorithmes de r´solution e La recherche des ordonnancements ”au plus tˆt” ou ”au plus tard” relatif ` une date F o an´cessite le calcul des valeurs maximales des chemins issus du sommet x0 ou aboutissant au esommet xn+1 . Au chapitre pr´c´dent, nous avons d´crit quelques algorithmes r´solvant ces e e e e c IFSIC 2004
    • 9.5. Choix des algorithmes de r´solution e 141probl`mes. Nous allons donner quelques indications sur le choix ` effectuer, compte-tenu de e ala nature des contraintes.1er cas. Il n’y a que des contraintes ”au plus tˆt”. Dans ce cas, le graphe obtenu ne doit pas ocomporter de circuit, sans quoi il y aurait des contraintes incompatibles : il n’y aurait alors pasd’ordonnancement compatible, puisque tout circuit est un circuit absorbant (les arcs ´tant tous ede valeur positive ou nulle). Comme par ailleurs le sommet x0 est racine, et le sommet xn+1 anti-racine (racine du graphetranspos´), l’algorithme Ordinal-racine est le mieux adapt´ : e e – pour l’ordonnancement au plus tˆt : avec x0 comme sommet de d´part, il suffit de remplacer o e min par max dans le calcul d’une marque. – pour l’ordonnancement au plus tard : avec xn+1 comme sommet de d´part, il suffit de e remplacer min par max dans le calcul d’une marque et de permuter les op´rations lst pred e et lst succ (puisque l’on cherche les chemins de valeur maximale issus de xn+1 dans le graphe transpos´).eRemarque : Si x.α est la valeur maximale des chemins de x ` xn+1 , ces valeurs sont ca- aract´ris´es, d’apr`s le th´or`me 9.4, par : e e e e e ∀x ∈ X : x.α = max (y.α + v(x,y)) y∈Γ(x) La date au plus tard de x, relative ` la date finale T , est donn´e par x.λ = T −x.α (th´or`me a e e e9.4). Par cons´quent, ces dates sont caract´ris´es par les relations : e e e ∀x ∈ X {xn+1 } : x.λ = min y.λ − v(x,y) , xn+1 .λ = T y∈Γ[x]On peut donc obtenir directement ces dates en adaptant l’algorithme Ordinal-racine commesuit : sommet de d´part : xn+1 ; initialiser xn+1 .λ ` T ; e a permuter les op´rations lst pred et lst succ ; e marquer un nouveau sommet x par : x.λ ←− min(y.λ − v(x,y),G.lst succ(x))2`me cas. Les contraintes sont quelconques. Le graphe poss`de alors des circuits, et les arcs ont e edes valeurs de signe quelconque. S’il n’y a pas d’incompatibilit´ dans les contraintes, il ne doit epas y avoir de circuit absorbant (valeur > 0). On peut donc envisager l’algorithme d’explorationen profondeur de Ford (algorithme 8.3.2) ou bien celui de Bellmann-Kalaba (8.4.3). Lesadaptations ` apporter sont les mˆmes que dans le cas pr´c´dent : remplacer min par max. a e e e Il existe cependant une technique sp´cifique, qui en g´n´ral s’av`re plus efficace (heuristique). e e e eCeci est bas´ sur la remarque suivante: si on enl`ve du graphe tous les arcs de valeur ≤ 0, le e egraphe partiel obtenu doit ˆtre sans circuit (autrement, il y aurait des contraintes incompatibles: evoir cas pr´c´dent). On peut toutefois conserver les arcs issus du sommet x0 ainsi que ceux e eaboutissant au sommet xn+1 , car ces arcs ne peuvent pas appartenir ` des circuits (x0 est point ad’entr´e, et xn+1 est point de sortie). Cette remarque incite ` proc´der en deux phases. e a ePremi`re phase e – Ignorer tous les arcs non issus de x0 ou aboutissant ` xn+1 , qui sont de a valeur ≤ 0. c IFSIC 2004
    • 142 Probl`mes d’ordonnancement e – Calculer les valeurs λi provisoires, en utilisant l’algorithme Ordinal-racine (si cet algorithme met en ´vidence des circuits, alors il y a des contraintes incompatibles). eDeuxi`me phase : ajustements R´introduire un par un chacun des arcs que l’on a ignor´s e e e lors de la premi`re phase. Soit (xi ,xj ,aij ) un tel arc. On teste alors la validit´ de la e e contrainte correspondant ` cet arc: a – si λj < λi + aij alors λj ←λi + aij . – Pour tout sommet xj dont l’attribut a ainsi ´t´ augment´, il faut recommencer le ee e test sur tous les arcs issus de xj . Ce proc´d´ correspond en fait ` une exploration e e a en profondeur de la descendance de xj , mais avec arrˆt de la “descente” ` partir de e a sommets non modifi´s. eL’int´rˆt de cette technique vient de ce que, en g´n´ral, la seconde phase ne provoque que peu ee e ede modifications, car les mises ` jour de la descendance des sommets modifi´s s’´teignent assez a e evite. Des illustrations de cette m´thode seront vues en TD. e Pour le calcul d’un ordonnancement au plus tard, tout ce qui pr´c`de reste valable, en e etravaillant dans le graphe transpos´ (c’est-`-dire en consid´rant xn+1 comme sommet de d´part, e a e eet en permutant les acc`s “successeurs” et pr´d´cesseurs”). e e e9.6 ´ Elimination de contraintes redondantes D´finition 9.7 Une contrainte est dite ”redondante” si elle est im- e pliqu´e par un ensemble de contraintes dont elle ne fait pas partie. eCette situation se produit dans le cas suivant : la contrainte tj − ti ≥ ai,j est redondante si etseulement si il existe, dans G, un chemin (diff´rent de l’arc (i,j)) de xi ` xj , et de valeur v ≥ ai,j . e a i ... i 1 k i j a i,j En effet, le long d’un 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 ˆtre per¸ues e ccomme redondantes au seul vu des donn´es du probl`me, c’est-`-dire sans le secours d’un algo- e e arithme de cheminement (qui pourrait s’av´rer plus coˆteux que le gain obtenu par la suppression e u´ventuelle de contraintes). Il s’agit essentiellement des contraintes implicites, c’est ` dire :e a c IFSIC 2004
    • 9.6. ´ Elimination de contraintes redondantes 143 ∀i ti ≥ 0 (li´es au d´but du projet) e e ∀i tn+1 − ti ≥ di (li´es ` la fin du projet) e a – contraintes de d´but : e S’il existe un arc (xj ,xi ) de valeur aj,i ≥ 0 et j = 0, alors ti ≥ 0 est redondante. En effet, on a : ti ≥ tj + aj,i . – contraintes de fin : S’il existe un arc (xi ,xj ) de valeur ai,j ≥ di −dj et j = n+1 alors tn+1 −ti ≥ di est redondante. En effet, 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`mes d’ordonnancement e c IFSIC 2004
    • Chapitre 10Arbres ; arbre partiel de poidsoptimum10.1 D´finition et propri´t´s caract´ristiques e e e e Soit G = (X,U ) un graphe non orient´, c’est ` dire pour lequel U est un ensemble de couples e anon ordonn´s, appel´s arˆtes. Dans un graphe non orient´, la terminologie suivante est utilis´e : e e e e eun chemin devient une chaˆ un circuit devient un cycle. ıne Les successeurs et pr´d´cesseurs d’un sommet deviennent les voisins, et le nombre d’arˆtes e e eadjacentes ` un sommet s’appelle le degr´ du sommet. a e Enfin, la relation binaire sur X : xRy ⇐⇒ il existe une chaˆ de x ` y ou x = y ıne aest une relation d’´quivalence, dont les classes s’appellent composantes connexes de G. Un egraphe connexe est un graphe ne poss´dant qu’une seule composante connexe. e Cette terminologie ´tablie, nous posons les d´finitions suivantes : e e D´finition 10.1 Un arbre est un graphe non orient´, connexe et sans e e cycle.Nous allons ´tablir un certain nombre de d´finitions ´quivalentes, grˆce aux deux lemmes sui- e e e avants : Lemme 10.2 Un graphe connexe de n sommets poss`de au moins n − 1 e arˆtes. eD´monstration. Soit G = (X,U ), ayant n sommets, m arˆtes et p composantes connexes, et e eposons ν(G) = m − n + p (nombre cyclomatique de G). D´finissons G en enrichissant G epar une nouvelle arˆte w = (x,y). Si x et y appartiennent ` la mˆme composante connexe, on a e a e c IFSIC 2004
    • 146 Arbres ; arbre partiel de poids optimumalors : n = n, m = m + 1, p = p d’o` ν(G ) = ν(G) + 1 u Dans le cas contraire, les composantes connexes (distinctes) de x et y fusionnent en uneseule, d’o` u n = n, m = m + 1, p = p − 1 et ν(G ) = ν(G) L’adjonction de toute nouvelle arˆte ` un graphe ne peut donc pas diminuer la valeur de e aν(G). Or, pour un graphe ` n sommets et 0 arˆte, on a p = n d’o` ν(G) = 0. On en d´duit que a e u epour tout graphe, ν(G) ≥ 0. Si G est connexe, on a p = 1 d’o` m ≥ n − 1. P u Lemme 10.3 Un graphe sans cycle de n sommets poss`de au plus n − 1 e arˆtes. eD´monstration. Soient u1 ,u2 , . . . ,um les arˆtes de G, num´rot´es de mani`re quelconque. e e e e eConsid´rons la suite de graphes e G0 < G1 < . . . < Gm−1 < Gm avec G0 = (X,∅); Gj = (X,Uj ) et Uj = Uj−1 ∪ {uj } et donc Gm = GCes graphes sont sans cycle, donc on passe de Gj ` Gj+1 en ajoutant ` Gj l’arˆte uj+1 entre a a edeux sommets non reli´s par une chaˆ dans Gj . Comme dans la d´monstration du lemme e ıne epr´c´dent, on en d´duit : e e e ν(Gj ) = ν(Gj+1 ), d’o` 0 = ν(G0 ) = ν(Gm ). u Par cons´quent, m = n − p et comme p ≥ 1, on a m ≤ n − 1. P e Th´or`me 10.4 Les propri´t´s suivantes, caract´risant un arbre, sont e e ee e ´quivalentes : e i) G = (X,U ) est connexe et sans cycle. ii) Tout couple de sommets est reli´ par une chaˆ unique de G. e ıne iii) G est sans cycle et l’adjonction de toute nouvelle arˆte cr´e un cycle e e unique. iv) G est sans cycle et poss`de n − 1 arˆtes. e e v) G est connexe et la suppression de toute arˆte de G cr´e deux compo- e e santes connexes, telles que toute autre arˆte de G est incluse dans e l’une ou l’autre de ces composantes. vi) G est connexe et poss`de n − 1 arˆtes. e eD´monstration ei) =⇒ ii) Tout couple de sommets est reli´ par une chaˆ (connexit´), et si deux chaˆ e ıne e ınes distinctes les reliaient, leur r´union cr´erait un cycle. e e c IFSIC 2004
    • 10.2. Arbres partiels dans un graphe non orient´ valu´ e e 147ii) =⇒ iii) Si G avait un cycle, deux sommets de ce cycle seraient reli´s par deux chaˆ e ınes distinctes ; l’adjonction d’une nouvelle arˆte entre deux sommets x et y cr´e un cycle avec e e l’unique chaˆ les reliant. ıneiii) =⇒ iv) Puisque l’adjonction de toute nouvelle arˆte cr´e un cycle, G est connexe donc e e poss`de au moins n − 1 arˆtes (lemme 10.2). Comme il est sans cycle, il a au plus n-1 e e arˆtes (lemme 10.3). eiv) =⇒ v) Si G n’´tait pas connexe, on pourrait lui ajouter une nouvelle arˆte sans cr´er de e e e cycle, ce qui donnerait un graphe sans cycle ` n arˆtes, d’o` une contradiction (lemme a e u 10.3). La suppression d’une arˆte u laisse un graphe partiel ` n − 2 arˆtes, donc non e a e connexe ; de plus, ce graphe partiel poss`de deux composantes connexes C et X C sans e quoi G ne serait pas connexe. Enfin, si ∃v ∈ U reliant C et X C, G poss`de un cycle e passant par les extr´mit´s de u et celles de v. e ev) =⇒ vi) G poss`de au moins n − 1 arˆtes (lemme 10.2) ; G poss`de au plus n − 1 arˆtes sinon e e e e il aurait un cycle (lemme 10.3) et la suppression d’une arˆte de ce cycle ne romprait pas e la connexit´.evi) =⇒ i) Si G avait un cycle, la suppression d’une arˆte de ce cycle laisserait un graphe connexe, e donc ayant au moins n − 1 arˆtes, ce qui contredit l’hypoth`se sur le nombre d’arˆtes de e e e G. P Proposition 10.5 Tout arbre poss`de au moins deux sommets de degr´ e e 1 (appel´s sommets pendants). eD´monstration Un arbre poss`de au moins 1 sommet pendant, sans quoi il aurait un cycle. e e D’autre part, si un arbre ayant n sommets et n − 1 arˆtes ( n ≥ 4) poss´dait un seul sommet e ependant, le sous-graphe engendr´ par la suppression de ce sommet poss`derait au plus 1 sommet e ependant, n−1 sommets et n−2 arˆtes. En r´p´tant le proc´d´, on aboutirait n´cessairement ` un e e e e e e asous-graphe ayant 3 sommets, 2 arˆtes donc 2 sommets pendants, ce qui est une contradiction. eP10.2 Arbres partiels dans un graphe non orient´ valu´ e e Consid´rons le probl`me pratique suivant, qui se rencontre dans de nombreux domaines : e esoit un ensemble de sites {X1 ,X2 , . . . ,Xn }. On souhaite les relier entre eux, de telle sorte que ler´seau ainsi constitu´ soit : e e 1. connexe (tout site est reli´, ´ventuellement via d’autres sites, ` tout autre site) e e a 2. sans liaison redondante : une seule chaˆ suffit, de tout site ` tout site ; ceci conduit ` ıne a a chercher un r´seau sans cycle e 3. de coˆt minimum, sachant qu’` chaque liaison directe bilat´rale (Xi ,Xj ) est associ´e un u a e e coˆt wi,j . u D’apr`s les r´sultats du th´or`me 10.4, il s’agit donc de construire un arbre sur les n som- e e e emets donn´s, celui-ci ´tant de poids minimum parmi tous les arbres possibles (il y en a a e e n−1 n(n−1)priori 2 . Le poids d’un arbre est alors ´gal, par d´finition, ` la somme des valeurs des e e a c IFSIC 2004
    • 148 Arbres ; arbre partiel de poids optimumn − 1 arˆtes qui en font partie. D’autre part, on peut toujours introduire comme contrainte esuppl´mentaire l’interdiction a priori de certaines arˆtes : il suffit de les affecter d’une valeur e e+∞. On obtient finalement le probl`me de d´termination d’un arbre partiel de poids optimum : e e ´ Probl`me 10.1 Etant donn´ un graphe G = (X,U,w) valu´ non orient´ e e e e et connexe, d´terminer un arbre partiel de G, de poids optimum. eRemarque. Si G n’est pas connexe, il suffit de r´soudre le probl`me s´par´ment dans chaque e e e ecomposante connexe. Dans ce qui suit, nous supposerons – pour fixer les id´es – que optimum signifie minimum. eNous ´tablissons maintenant un th´or`me caract´ristique – et sa version ”duale” – d’un arbre e e e epartiel de poids minimum. Th´or`me 10.6 Une condition n´cessaire et suffisante pour que A = e e e (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´ par u avec des arˆtes de e e H, on a ∀v ∈ µ : w(v) ≤ w(u).D´monstration. e £ La condition est n´cessaire : sinon, en substituant u ` v dans H, o` w(v) > w(u), on e a uobtiendrait un nouvel arbre de poids strictement inf´rieur. e £ R´ciproquement, consid´rons un arbre A∗ = (X,H ∗ ), de poids minimal. e e Si A∗ = A, consid´rons une arˆte u∗ = (x,y) telle que u∗ ∈ H ∗ et u∗ ∈ H (figure 10.1). e e X/C * C*                       x u* y ¢ £ ¥ ¤ ¦ § © ¨ x’ y’ H:   ¡   ¡   ¡ H *: Fig. 10.1 – arbres H et H∗ D’une part, x et y sont reli´s dans H par une chaˆ γ, ne contenant pas u∗ . e ıne c IFSIC 2004
    • 10.3. Algorithme de KRUSKAL 149 D’autre part, la suppression de u∗ dans H ∗ d´finit un graphe partiel ayant deux composantes econnexes C ∗ et X C ∗ , et u∗ est la seule arˆte de H ∗ reliant C ∗ ` X C ∗ . e a Il en r´sulte que γ relie x ∈ C ∗ ` y ∈ X C ∗ sans passer par u∗ , donc contient au moins une e aarˆte u = (x ,y ), avec x ∈ C ∗ ,y ∈ X C ∗ ,u ∈ H,u ∈ H ∗ . e On en d´duit que : e(1) w(u) ≤ w(u∗ ) d’apr`s l’hypoth`se sur A e e(2) la chaˆ γ ıne ∗ qui relie x et y dans H ∗ passe n´cessairement par u∗ (puisque u∗ est la seule earˆte de H ∗ reliant C ∗ ` X C ∗ ) et donc, A∗ ´tant minimal : w(u∗ ) ≤ w(u) (condition n´cessaire). e a e e (1) et (2) montrent que : ` chaque arˆte u a e ∗ ∈ H ∗ ,u∗ ∈ H on peut faire correspondre unearˆte u ∈ H,u ∈ H ∗ , telle que w(u∗ ) = w(u); par cons´quent, H et H ∗ sont de mˆme poids. P e e e Nous ´tablissons maintenant une version ”duale” du th´or`me de caract´risation 10.6 : e e e e Th´or`me 10.7 Une condition n´cessaire et suffisante pour que A = e e e (X,H) soit un arbre de poids minimum de G = (X,U,w) est la suivante : ∀u ∈ H : pour toute arˆte v = u reliant Cu et X Cu (les deux e composantes connexes cr´´es dans A par la suppression de u), on a : ee w(u) < w(v).D´monstration. e £ La condition est n´cessaire : en substituant v(∈ H) ` u dans H, o` w(u) > w(v), on e a uobtiendrait un nouvel arbre, de poids strictement inf´rieur. e £ R´ciproquement, soit A = (X,H) un arbre satisfaisant les conditions du th´or`me. Pour e e etout u ∈ H, consid´rons le cycle γu que u forme avec H. On a alors : e ∀v ∈ γu , u relie Cu et X Cu et donc : w(v) < w(u); par suite A satisfait les conditions duth´or`me 10.6. P e e10.3 Algorithme de KRUSKAL10.3.1 Principe Du th´or`me pr´c´dent 10.6 d´coule imm´diatement l’algorithme de Kruskal. Le principe e e e e e eest le suivant : on organise un parcours des arˆtes dans l’ordre des valeurs croissantes. Initiale- ement, le graphe partiel A est vide. On ajoute l’arˆte courante ` A si et seulement si elle ne cr´e e a epas de cycle dans A, et on s’arrˆte en fin de parcours, ou d`s qu’on a obtenu n − 1 arˆtes dans e e eA. A l’issue de l’algorithme, on a bien un arbre partiel de poids minimum : en effet, on aconstruit un graphe partiel sans cycle, ayant au moins n − 1 arˆtes (par hypoth`se, le graphe G e eest connexe), et d’autre part, toute arˆte u non retenue forme un cycle avec des arˆtes situ´es e e eavant elle dans la liste ordonn´e des arˆtes, donc v´rifie la condition suffisante du th´or`me 10.6. e e e e e Pour faciliter le test : u ne cr´e pas de cycle, il suffit de g´rer les composantes connexes de A e eau fur et ` mesure de sa construction. Une arˆte pourra ˆtre ajout´e si et seulement si ses deux a e e eextr´mit´s n’appartiennent pas ` la mˆme composante. Les composantes des deux extr´mit´s e e a e e e c IFSIC 2004
    • 150 Arbres ; arbre partiel de poids optimumsont alors fusionn´es en une seule. Enfin, le parcours des arˆtes ordonn´es par valeurs croissantes e e esera g´r´ par les acc`s : ee e pp arete : -- pr´ : non hors arete e d´livre la premi`re arˆte du parcours ordonn´ e e e e (arˆte de valeur minimum) e pp arete suiv : -- pr´ : non hors arete e d´livre la prochaine arˆte du parcours ordonn´ e e e hors arete : vrai si toutes les arˆtes ont ´t´ visit´es e ee eA noter que G.vide ⇒ G.hors arete.10.3.2 Texte de l’algorithme Il est donn´ page 150 e ALGORITHME DE KRUSKAL ENS[SOMMET] SOMMET::C ; -- x.C = composante connexe de xARBRE kruskal(GRAPHESYM G): c’est local AR^TE arcour; e ENT k; -- compteur du nombre d’arˆtes e SOMMET x, y; d´but e 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 n’est pas connexe fin c IFSIC 2004
    • 10.3. Algorithme de KRUSKAL 15110.3.3 Exemple Consid´rons le graphe non orient´, valu´, de la figure 10.2 e e e 2 8 8 4 16 5 1 3 7 12 14 9 5 4 11 Fig. 10.2 – Exemple La liste ordonn´e des arˆtes est donn´e dans le tableau de gauche : e e e comp. connexes : {1} {2} {3} {4} {5} 2,5 4 * arˆte (2,5) −→ c.c. {1} {2,5} {3} {4} e 1,3 5 * arˆte (1,3) −→ c.c. {1,3} {2,5} {4} e 3,5 7 * arˆte (3,5) −→ c.c. {1,2,3,5} {4} e 2,3 8 1,2 8 1,5 9 4,5 11 * arˆte (4,5) −→ c.c. {1,2,3,4,5} e 1,4 12 3,4 14 2,4 16poids : 4 + 5 + 7 + 11 = 2710.3.4 Complexit´ e Lorsque le parcours est organis´, on effectue au plus n − 1 pas d’it´rations. L’algorithme est e edonc en O(n) + complexit´ maximale du tri des arˆtes. Ce dernier terme d´pend de la technique e e eutilis´e : e – tri pr´alable (les meilleurs algorithmes connus sont en O(m log m)) e – recherche s´quentielle dans la liste des arˆtes, ` chaque pas d’it´ration (complexit´ totale e e a e e n−1 de k=1 O(m − k) – puisqu’` l’´tape k il reste m − k arˆtes) a e e – organisation ”en tas” de la liste des arˆtes et r´organisation ` chaque ´tape : e e a e – O(m log m) pour l’organisation initiale c IFSIC 2004
    • 152 Arbres ; arbre partiel de poids optimum – O(log(m − k)) pour la r´organisation ` l’´tape k (nombre d’arˆtes restant = m − k) e a e e d’o`, globalement : 0(m log m) + n−1 0(log m), le terme 0(m log m) ´tant pr´pond´rant u k=1 e e e puisque m ≥ n − 1 (graphe connexe).10.4 Algorithme de PRIM10.4.1 Principe de l’algorithme C’est aussi un algorithme d’extension, mais au lieu d’engendrer des graphes partiels succes-sifs, sans cycle, croissant jusqu’` la connexit´, on engendre des sous-arbres partiels croissants a ejusqu’` ce qu’on obtienne un arbre partiel. La propri´t´ maintenue invariante tout au long de a eel’algorithme est la suivante : – 1 ≤ k ≤ n; – Xk = {x1 , . . . ,xk }; – Hk = {u1 , . . . ,uk−1 }; – Ak = (Xk ,Hk ) est un arbre couvrant Xk ; – Il existe un arbre A = (X,H), couvrant X, de poids minimum, dont la restriction ` Xk est a Ak (la restriction de A ` Xk est le sous-graphe de A engendr´ par les sommets de Xk ). a eLa condition d’arrˆt est donc k = n. Si l’invariant est v´rifi´ ` l’arrˆt, An est bien un arbre e e ea ecouvrant de poids minimum (´vident). eInitialement k = 1,X1 = {x1 } (sommet quelconque), H1 = ∅. Les valeurs initiales satisfontl’invariant (´vident). eIl reste ` ´tablir la progression, de mani`re ` maintenir l’invariant. Le principe est tr`s simple : ae e a esoit uk = (xi ,xk+1 ) (avec xi ∈ Xk et xk+1 ∈ Xk ) une arˆte sortante de Xk , de poids minimum eparmi les arˆtes sortantes. On pose: e Hk+1 ←Hk {uk } Xk+1 ←Xk {xk+1 } Proposition 10.8 La progression maintient l’invariantD´monstration Soit A = (X,H) un arbre couvrant X, de poids minimal, dont la restriction ` e aXk est Ak (un tel arbre existe par hypoth`se). e premier cas : uk ∈ H. Dans ce cas, la restriction de A ` Xk+1 est Ak+1 , et la propri´t´ est a eed´montr´e. e e deuxi`me cas (voir figure 10.3) : uk ∈ H. Dans ce cas, il existe une chaˆ γ de H, reliant e ınexi ` xk+1 et, puisque A est de poids minimum, on a : a ∀v ∈ γ : c(v) ≤ c(uk ) . La chaˆ γ contient une arˆte vk = (xa ,xb ) telle que xa ∈ Xk ,xb ∈ Xk ; puisque vk ∈ γ, on a ıne ec(vk ) ≤ c(uk ); et, d’apr`s le crit`re de s´lection de uk (arˆte sortante de Xk de poids minimum), e e e eon a aussi c(uk ) ≤ c(vk ); d’o` c(vk ) = c(uk ). u Examinons le graphe A = (X,H {vk } {uk }): – il a n sommets et n − 1 arˆtes,e c IFSIC 2004
    • 10.4. Algorithme de PRIM 153 Xk xi uk xk+1 chaîne γ xa vk chaîne γ xb Fig. 10.3 – passage de Ak ` Ak+1 a – il est connexe; en effet, soit s et t deux sommets de X; ils sont reli´s dans A par une chaˆ e ıne κ. Si cette chaˆ ne contient pas vk , alors c’est une chaˆ de A , par construction; si ıne ıne au contraire κ contient vk , on remplace cette derni`re arˆte par la chaˆ [xa , . . . ,xi ] · uk · e e ıne [xk+1 , . . . ,xb ] qui est une chaˆ de A par construction (figure 10.3). ıneA est donc un arbre couvrant X, de poids c(A ) = c(A) − c(vk ) + c(uk ) = c(A), et donc de poidsminimal; il contient uk et donc, sa restriction ` Xk+1 est bien Ak+1 . P a Corollaire 10.9 A chaque ´tape, l’arbre partiel Ak = (Xk ,Hk ) est un e arbre couvrant Xk , de poids minimum.´Evident puisque c’est un arbre couvrant Xk , par construction, et c’est la restriction d’un arbrede poids minimum d’apr`s la proposition pr´c´dente. P e e e10.4.2 Mise en œuvre de l’algorithme La s´lection d’une nouvelle arˆte peut ˆtre effectu´e selon une m´thode tout ` fait analogue e e e e e aa` celle de l’algorithme de Dijkstra (chapitre 8.5). En effet, soit M l’ensemble des sommets d´j` ea”couverts” par le sous-arbre partiel. On d´signe par A l’ensemble des sommets ”limitrophes” de eM , c’est ` dire : a z ∈ A ⇔ z ∈ M et ∃x ∈ M : (x,z) ∈ U Pour tout z ∈ A, on pose : δz = min w(x,z) x∈M (x,z)∈U atteint pour un sommet d´not´ pz , puis on s´lectionne y ∈ A tel que e e e δy = min δz z∈A L’arˆte (py ,y) est alors ajout´e au sous-arbre partiel. A chaque pas d’it´ration, l’ensemble A e e eest donc modifi´ de la mani`re suivante : y est ˆt´ de A, et les voisins de y, n’appartenant pas e e oe c IFSIC 2004
    • 154 Arbres ; arbre partiel de poids optimum` M , sont soit introduits dans A – pour de tels sommets z, on a alors δz = w(y,z) – soit, s’ilsaappartenaient d´j` ` A, leur marque est r´´valu´e par : δz = min(δz ,w(y,z)). eaa ee e De plus, comme pour l’algorithme de Dijkstra, l’ensemble des valeurs (δz )z∈A peut ˆtre eg´r´ en ”tas”. ee10.4.3 Texte de l’algorithme Le texte de l’algorithme, donn´ ci-apr`s page 155, montre qu’en fait on retrouve l’algorithme e ede Dijkstra avec les diff´rences suivantes : e – les marques des sommets passent ` 0 lorsque ceux-ci rentrent dans M ; a – les acc`s lst succ et valarc sont remplac´s respectivement par lst voisins et valarˆte, adapt´s e e e e aux graphes non orient´s; e – on m´morise, en plus, le sous-arbre partiel de poids minimum, A. e10.4.4 Exemple on reprend le graphe de la figure 10.2 M {(x.p,x,x.δ) | x ∈ A} arˆte s´lectionn´e e e e nbar 1 (1,3,5) (1,2,8) (1,5,9) (1,4,12) (1,3) poids 5 1 1,3 (3,5,7) (1,2,8) (1,4,12) (3,5) poids 7 2 1,3,5 (5,2,4) (5,4,11) (5,2) poids 4 3 1,3,5,2 (5,4,11) (5,4) poids 11 4 c IFSIC 2004
    • 10.4. Algorithme de PRIM 155 ALGORITHME DE PRIMREEL SOMMET::δ : ; SOMMET SOMMET::p ;ENUM[dehors,atteint,recouvert] SOMMET::´tat ; eARBRE prim(GRAPHESYM G) c’est local ENT nbar ; -- nombre d’arˆtes e TAS[(SOMMET,REEL)] A; ENS[SOMMET] X, MOD; SOMMET nouv ; REEL w;d´but e depuis nbar ← O ; Result ← creer ; X ← G.lst som ; pourtout x de X faire x.´tat ← dehors fpourtout ; e A ← creer ; x0 ← X.element ; -- sommet initial quelconque x0 .´tat ← recouvert ; MOD ← G.lst voisins(x0 ) ; e pourtout z de MOD z.´tat ← atteint ; z.δ ← G.valar^te(x0 ,z) ; z.p ← x0 ; e e A.mettre en tas((z,z.δ )) ; fpourtout jusqua nbar ≥ n-1 faire (nouv,w) ← A.mintas ; A.^ter de tas ; o nouv.´tat ← recouvert ; MOD ← G.lst voisins(nouv) ; e -- mise ` jour des marques des sommets modifiables a pourtout z de MOD faire cas z.´tat = dehors −→ z.´tat ← atteint ; e e z.δ ← G.valar^te(nouv, z) ; z.p ← nouv ; e A.mettre en tas((z,z.δ )) z.´tat = atteint −→ si G.valar^te(nouv, z) < z.δ alors e e A.reorg((z,z.δ ),(z, G.valar^te(nouv, z))); e z.δ ← G.valar^te(nouv, z) ; z.p ← nouv e z.´tat = recouvert −→ rien e fcas fpourtout ; Result.ajoutar^te(nouv,nouv.p) ; nbar ← nbar+1 e faitfin c IFSIC 2004
    • 156 Arbres ; arbre partiel de poids optimum c IFSIC 2004
    • Chapitre 11Flots dans un r´seau de transport e11.1 Exemple introductifProbl`me de l’approvisionnement et de la demande. Une ressource est disponible sur e3 sites A1 ,A2 ,A3 en quantit´s respectives a1 ,a2 ,a3 . Cette ressource est demand´e en 4 sites e eB1 ,B2 ,B3 ,B4 en quantit´s respectives b1 , b2 , b3 , b4 . Les possibilit´s d’acheminement des res- e esources des Ai vers les Bj sont mod´lis´es par le graphe valu´ de la figure 11.1; dans ce graphe, e e eles sites C1 ,C2 sont des sites interm´diaires de transfert, et la valeur d’un arc est une capacit´, e e´gale ` la quantit´ maximale de ressource qui peut transiter sur cet arc.e a e Le probl`me pos´ est alors le suivant : est-il possible de satisfaire les demandes des Bj ` e e apartir des disponibilit´s des Ai et des possibilit´s de transport? e e Pour prendre en compte l’ensemble des donn´es sur le graphe, on ”agrandit” ce dernier en eintroduisant un site fictif d’entr´e e, un site fictif de sortie s, et les arcs (repr´sent´s en gras sur e e ela figure): – (e,Ai ), de capacit´ ai e – (Bj ,s) de capacit´ bj eUn tel graphe s’appelle r´seau de transport. e Le fait d’attribuer ` un arc d’entr´e (e,Ai ) une capacit´ s’interpr`te bien: cela signifie que ai a e e eest la quantit´ maximum que l’on peut acheminer depuis Ai ; par contre, la capacit´ d’un arc de e esortie Bj signifie que l’on s’interdit de consommer en Bj plus que la ressource demand´e. e Pour r´soudre le probl`me, on consid`re une fonction ϕ, d´finie sur les arcs et ` valeur dans e e e e aN, telle que: – arc d’entr´e: ϕ(e,Ai ) = quantit´ de ressource enlev´e au site Ai , e e e – arc de sortie: ϕ(Bj ,s) = quantit´ de ressource amen´e au site Bj , e e – arc de transport: ϕ(x,y) = quantit´ de ressource achemin´e sur l’arc (x,y). e eLa valeur de ϕ sur un arc repr´sente donc un flux , et doit satisfaire les conditions de conservation e(ou lois de Kirchoff) en tout nœud du r´seau (autre que e et s): e (1) ∀x, x = e, x = s : ϕ(z,x) = ϕ(x,y) z∈Γ−1 (x) y∈Γ(x)De plus, sur tout arc, la condition de capacit´ doit ˆtre respect´e, c’est-`-dire e e e a (2) ∀u ∈ Γ : ϕ(u) ≤ c(u), o` c(u) est la capacit´ de l’arc u u e c IFSIC 2004
    • 158 Flots dans un r´seau de transport e B 1 b A 1 1 C a 1 B b2 1 2 a e 2 A s 2 b a C 3 3 2 B 3 A 3 B b 4 4 Fig. 11.1 – R´seau de transport eUne telle fonction s’appelle un flot (contraintes 1) compatible (contraintes 2) Le probl`me pos´ admet une solution s’il existe un flot compatible tel que, pour tout site e edemandeur Bj , on ait ϕ(Bj ,s) = bj (saturation des arcs de sortie). En pratique, nous verrons,grˆce aux r´sultats du §11.2, que la r´solution de ce probl`me revient ` chercher, parmi les flots a e e e acompatibles, un flot de valeur maximum, c’est-`-dire acheminant la plus grande quantit´ globale a ede ressource. Nous allons dans ce qui suit d´finir pr´cis´ment les notions de r´seau de transport, e e e eflot compatible, valeur d’un flot, et les r´sultats g´n´raux li´s ` ces notions. Puis nous donnerons e e e e aun algorithme de calcul de flot de valeur maximum, dˆ ` Ford et Fulkerson. ua11.2 D´finitions et propri´t´s g´n´rales e e e e eR´seau de transport. e D´finition 11.1 Un r´seau de transport est un graphe valu´ par des e e e entiers G = (X,e,s; Γ; c) o`u – X ∪ {e} ∪ {s} est l’ensemble des sommets, – c : Γ −→ N est la fonction capacit´ .e – le sommet e s’appelle l’entr´e (ou source), le sommet s la sor- e tie (ou puits) et ils sont respectivement racine et anti-racine du graphe. – les arcs (e,∗) et (∗,s) s’appellent respectivement arcs d’entr´e et e arcs de sortie du r´seau e c IFSIC 2004
    • 11.2. D´finitions et propri´t´s g´n´rales e e e e e 159Flot compatible. D´finition 11.2 Un flot sur un r´seau de transport (X,e,s; Γ; c) est une e e fonction ϕ : Γ −→ N v´rifiant les lois de Kirchoff (d´finies au §11.1) e e Un flot compatible v´rifie en outre ∀u ∈ Γ : 0 ≤ ϕ(u) ≤ c(u) eQuelques 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 Apuis ϕS (A) = (ϕ(u)) = flux sortant de A et u∈ΓS (A) ϕE (A) = (ϕ(u)) = flux entrant dans A u∈ΓE (A)(de mani`re analogue, on aura cS (A), cE (A)). Avec ces notations, par exemple, les conditions ede conservation au nœud x(= e, = s) s’expriment simplement : ϕE (x) = ϕS (x) o` x est mis pour l’ensemble {x} u Sur le plan algorithmique, un r´seau de transport est un graphe valu´, muni des acc`s sui- e e evants :ENT ARC::c -- capacit´ eENT ARC::ϕ -- flotavec les notations habituelles : si (x,y) est un arc, alors c(x,y) et ϕ(x,y) d´signent respective- ement la capacit´ et le flux de l’arc (x,y). eValeur d’un flot compatible. D´finition 11.3 La valeur d’un flot compatible est la quantit´ v(ϕ) = e e ϕS (e) (flux sortant de la ”source” e).La proposition suivante et son corollaire vont montrer, entre autres, que cette valeur repr´sente ebien la quantit´ globale de flux qui traverse le r´seau de la source vers le puits. e e Proposition 11.4 Soit A ⊆ X ∪ {e} et ϕ un flot. – 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´seau de transport eD´monstration. ei) Supposons que e ∈ A. Pour tout x de A, les conditions de conservation permettent d’´crire: e ϕ(x,y) + ϕ(x,y) = ϕ(z,x) + ϕ(z,x) y∈Γ(x) y∈Γ(x) z∈Γ−1 (x) z∈Γ−1 (x) y∈A y∈A z∈A z∈ASommons ces ´galit´s sur A. Il vient: e e S ϕ (A) + ϕ(x,y) = ϕE (A) + ϕ(z,y), soit x∈A x∈A y∈Γ(x) z∈Γ−1 (x) y∈A z∈A ϕS (A) − ϕE (A) = − ϕ(x,y) + ϕ(z,x) x∈A x∈A y∈Γ(x) z∈Γ−1 (x) y∈A z∈ASi dans la deuxi`me somme double on fait le changement de variable: (x,z) → (y,x), on obtient: e ϕS (A) − ϕE (A) = − ϕ(x,y) + ϕ(x,y) = 0 x∈A y∈A y∈Γ(x) x∈Γ−1 (y) y∈A x∈Ace qui d´montre la proposition dans ce cas. eii) Supposons que e ∈ A, et posons A = A {e}. On a alors: ϕS (A ) = ϕS (A) − ϕ(e,y) y∈Γ(e) y∈A ϕE (A ) = ϕS (A) + ϕ(e,y) y∈Γ(e) y∈A                     ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡       ¦   ¡ ¦   ¡ ¦   ¡   ¡   ¡   ¡   ¡   ¡   ¡   ¡ A/A’ A’ ¢ ¢ ¢ £ £ £ ¤                     ¥ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¦ § ¦ § ¦ §       ¢ £ e¤ ¥ ¢ £ §   ¡ ¢ £ §   ¡ §   ¡   ¡   ¡   ¡   ¡   ¡   ¡   ¡       A’ = A / {e} ¢ ¢ ¢ £ £ £ ¨ ¨ ¨ ¤     ©   ©   ©             ¥ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¤     ©   ©   ©             ¥ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡et, d’apr`s le point i): ϕS (A ) − ϕE (A ) = 0, ce qui donne: e ϕS (A) − ϕE (A) = ϕ(e,y) = ϕS (e) = v(ϕ) y∈Γ(e)P Corollaire 11.5 Soit ϕ un flot. On a: v(ϕ) = ϕS (e) = ϕE (s)D´monstration. En effet, si on applique la proposition pr´c´dente avec e e eA = {e} ∪ X, on obtient: ϕS (A) = ϕE (s), ϕE (A) = 0 d’o` v(ϕ) = ϕE (s) u c IFSIC 2004
    • 11.3. Recherche d’un flot compatible de valeur maximum 161 D´finition 11.6 On appelle coupe du r´seau tout ensemble d’arcs e e ΓS (A) o` A ⊆ X ∪ {e} avec e ∈ A. La quantit´ cS (A) s’appelle la u e capacit´ de la coupe ΓS (A). eRemarque. Ce nom de coupe vient de ce que tout chemin de e ` s emprunte au moins un arc ade la coupe; autrement dit, si on supprime les arcs de la coupe, on ”d´connecte” le r´seau entre e ee et s, c’est-`-dire on empˆche tout passage de e ` s. a e a Nous ´non¸ons un lemme, dˆ ` Ford et Fulkerson, fondamental pour l’obtention de e c u al’algorithme de calcul d’un flot maximal. Lemme 11.7 Soit A ⊆ X ∪ {e} avec e ∈ A, et ϕ un flot compatible. On a l’in´galit´: e e v(ϕ) ≤ cS (A)D´monstration. D’apr`s la proposition 11.4 on a: e e S E v(ϕ) = ϕ (A) − ϕ (A)mais, le flot ´tant compatible: e ϕ (A) ≤ cS (A), ϕE (A) ≥ 0 Sd’o` le r´sultat P u e Ce lemme s’´nonce encore sous la forme suivante : ”La valeur de tout flot compatible est einf´rieure ou ´gale ` la capacit´ de toute coupe” e e a e Corollaire 11.8 max v(ϕ) ≤ min cS (A) ϕ compatible A⊆X∪{e} e∈A´Evident d’apr`s le lemme pr´c´dent. e e e Dans le paragraphe suivant, nous nous int´ressons au calcul d’un flot compatible de valeur emaximum. En fait, nous allons montrer un r´sultat de dualit´ : dans le corollaire pr´c´dent, e e e el’in´galit´ est une ´galit´ : ce r´sultat est connu sous le nom de th´or`me de Ford-Fulkerson, e e e e e e eet sa preuve repose sur la construction explicite, par un algorithme, d’un flot ϕ et d’une coupeΓS (A) tels que v(ϕ) = cS (A)11.3 Recherche d’un flot compatible de valeur maximum11.3.1 Sch´ma g´n´ral e e e Dans ce paragraphe, nous d´crivons un algorithme dˆ ` Ford et Fulkerson; le principe e uaen est le suivant: partant d’un flot compatible initial, on teste si ce flot est de valeur maximum,et s’il ne l’est pas, on le modifie pour obtenir un nouveau flot compatible de valeur strictementsup´rieure ` la valeur du flot pr´c´dent, puis on recommence. Le test et l’augmentation du flot e a e e c IFSIC 2004
    • 162 Flots dans un r´seau de transport esont effectu´s grˆce ` une proc´dure de marquage que nous d´taillons ci-apr`s. Le sch´ma de e a a e e e el’algorithme est donc it´ratif: e depuis G.ϕ ←− flot compatible; jusqua ¬ marquage(G) faire am´lioration(G) e fait11.3.2 Marquage Le rˆle de la fonction marquage consiste ` d´terminer un sous-ensemble A de X ∪ {e} ∪ {s}, o a ece sous-ensemble devant ˆtre le plus grand possible, tel que chaque sommet de A puisse ˆtre e emarqu´ en appliquant les r`gles ci-apr`s: e e e 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`re: marquer (−x) tout pr´d´cesseur z de x tel que z ∈ A et ϕ(z,x) > e e e 0 (arc charg´ ) e 3. arrˆt lorsque s est marqu´ ou lorsqu’aucun nouveau sommet ne peut plus ˆtre marqu´. La e e e e fonction rend le r´sultat vrai si, et seulement si, s n’a pas pu ˆtre marqu´. Le marquage e e e est r´alis´ comme ”effet de bord ” de la fonction. e eIntuitivement, ce proc´d´ de marquage repose sur l’id´e suivante: on essaye d’augmenter la e e evaleur de ϕ; pour cela, il faut d’abord trouver un arc d’entr´e (e,x) non satur´; c’est le sens e edu marquage de e, puis du marquage (+e) de tout successeur x de e tel que (e,x) ne soit passatur´. Si un tel arc existe, on envoie une unit´ de flux suppl´mentaire, qui parvient donc ` x; e e e ale flux entrant en x ayant augment´ de 1, le maintien des conditions de conservation n´cessite e edonc, soit d’augmenter le flux sortant de 1, soit de diminuer le flux sur un autre arc entrant de1; l’ensemble des arcs issus de x sur lesquels on peut envoyer l’unit´ de flux suppl´mentaire est e edonc rep´r´ grˆce au marquage ”en avant”, et l’ensemble des arcs aboutissant ` x sur lesquels ee a aon peut diminuer d’une unit´ le flux entrant est rep´r´ grˆce au marquage ”en arri`re”. Selon e ee a eles possibilit´s, on parvient ainsi ` compenser l’envoi de l’unit´ de flux suppl´mentaire le long e a e ed’une suite de sommets; si l’on parvient ` un sommet x pr´d´cesseur de s tel que l’arc (x,s) a e en’est pas satur´, on peut maintenir les conditions de conservation en x en envoyant l’unit´ de e eflux suppl´mentaire sur cet arc; la valeur du flot a ainsi augment´ d’une unit´, puisqu’une unit´ e e e esuppl´mentaire issue de e a pu ˆtre achemin´e jusqu’` s tout en maintenant les conditions de e e e aconservation et les contraintes de compatibilit´.e Du point de vue algorithmique, ce proc´d´ de marquage n’est rien d’autre qu’une recherche e ede descendants du sommet e, dans un graphe ”auxiliaire” engendr´ par les arcs non satur´s du e er´seau et par les arcs charg´s du r´seau transpos´; cette recherche pourra ˆtre mise en œuvre par e e e e eune des m´thodes vues dans les chapitres pr´c´dents, notamment une m´thode d’exploration. e e e e Donnons maintenant un premier r´sultat li´ ` l’application des r`gles de marquage. e ea e c IFSIC 2004
    • 11.3. Recherche d’un flot compatible de valeur maximum 163 Proposition 11.9 Si le sommet s n’a pu ˆtre marqu´ par la fonction e e marquage(G) alors G.ϕ est de valeur maximum.D´monstration. Soit A l’ensemble des sommets marqu´s ` l’issue de la proc´dure. Par e e a econstruction e ∈ A et, par hypoth`se, s ∈ A. Par cons´quent, Γ e e S (A) est une coupe. D’apr`s ela proposition 11.4, on a: (1) v(ϕ) = ϕS (A) − ϕE (A). Mais, si x ∈ A et y ∈ A, l’arc (x,y) est satur´, d’o` ϕ(x,y) = e uc(x,y); donc: (2) ϕS (A) = cS (A). De mˆme, si z ∈ A et x ∈ A, l’arc (z,x) n’est pas charg´, c’est-`-dire e e aϕ(z,x) = 0; donc: (3) ϕE (A) = 0. Les ´galit´s (1), (2), (3) impliquent: v(ϕ) = c(A) et par cons´quent, d’apr`s e e e ele lemme de 11.7 Ford-Fulkerson, ϕ est de valeur maximum. Corollaire 11.10 Si le sommet s n’a pu ˆtre marqu´ par la fonction e e marquage(G), alors la coupe ΓS (A) d´finie par l’ensemble des sommets e marqu´s est de capacit´ minimum. e e Th´or`me 11.11 (Ford-Fulkerson) La valeur maximum des flots com- e e patibles est ´gale ` la capacit´ minimum des coupes. e a eCe th´or`me est un ´nonc´ ´quivalent aux deux propositions pr´c´dentes. Il r´pond ` la question e e e ee e e e apos´e ` la fin du §11.2. e a11.3.3 Am´lioration e Nous ´tablissons maintenant la r´ciproque de ce qui pr´c`de, ` savoir le fait que si s a pu ˆtre e e e e a emarqu´ par la fonction marquage(G), alors le flot G.ϕ n’est pas de valeur maximum; de plus, le emarquage r´alis´ permet de d´finir un nouveau flot compatible de valeur strictement sup´rieure e e e ea` celle de ϕ. Soit e(= x0 ),x1 ,x2 , . . . ,xn ,s(= xn+1 ) une s´quence de sommets telle que x1 soit marqu´ (+e), e ex2 marqu´ (±x1 ), ... , xi marqu´ (±xi−1 ), ... ,s marqu´ (+xn ). e e e Un couple (xi−1 ,xi ) tel que xi est marqu´ (+xi−1 ) correspond ` un arc non satur´ (xi−1 ,xi ); e a eposons εi = c(xi−1 ,xi ) − ϕ(xi−1 ,xi ) (capacit´ r´siduelle de l’arc, > 0). Cette quantit´ est le e e enombre maximum d’unit´s de flux suppl´mentaires pouvant circuler sur cet arc. On dira que e el’arc (xi ,xi−1 ) peut ˆtre εi -augment´. e e Un couple (xi−1 ,xi ) tel que xi est marqu´ (−xi−1 ) correspond ` un arc charg´ (xi ,xi−1 ); e a eposons εi = ϕ(xi−1 ,xi ) (flux de l’arc, > 0). Cette quantit´ est le nombre maximum d’unit´s de e eflux pouvant ˆtre ˆt´es de cet arc. On dira que l’arc (xi ,xi−1 ) peut ˆtre εi -diminu´. e oe e e D´finissons la fonction ϕ de la mani`re suivante : Soit ε = min1≤i≤n+1 εi e ˆ e – sur tout arc (xi−1 ,xi ) de la chaˆ pouvant ˆtre augment´ (c’est-`-dire xi marqu´ (+xi−1 )): ıne e e a e ϕ(xi−1 ,xi ) = ϕ(xi−1 ,xi ) + ε ˆ c IFSIC 2004
    • 164 Flots dans un r´seau de transport e – sur tout arc (xi ,xi−1 ) de la chaˆ pouvant ˆtre diminu´ (c’est-`-dire xi marqu´ (−xi−1 ): ıne e e a e ϕ(xi ,xi−1 ) = ϕ(xi ,xi−1 ) − ε ˆ – sur tout autre arc (y,z): ϕ(y,z) = ϕ(y,z) ˆOn a le r´sultat suivant: e Proposition 11.12 ϕ est un flot compatible, et v(ϕ) = v(ϕ) + ε > v(ϕ) ˆ ˆD´monstration. 1) v´rifions que ϕ est un flot. Il suffit de v´rifier que les conditions de conser- e e ˆ evation sont maintenues en tout sommet de la chaˆ (= e, = s). Quatre cas sont possibles pour ıneun sommet xi (1 ≤ i ≤ n) 1. marque(xi ) = (+xi−1 ) et marque(xi+1 ) = (+xi ). x x x i-1 i i+1 On a alors ϕE (xi ) = ϕE (xi ) + ε et ϕS (xi ) = ϕS (xi ) + ε d’o` ˆ ˆ u ϕE (xi ) = ϕS (xi ) ˆ ˆ 2. marque(xi ) = (+xi−1 ) et marque(xi+1 ) = (−xi ) x x x i-1 i i+1 On a alors ϕ(xi−1 ,xi ) = ϕ(xi−1 ,xi ) + ε et ϕ(xi+1 ,xi ) = ϕ(xi+1 ,xi ) − ε soit ˆ ˆ ϕE (xi ) = ϕE (xi ) et ϕS (xi ) = ϕS (xi ) d’o` ˆ ˆ u ϕE (xi ) = ϕS (xi ) ˆ ˆ 3. marque(xi ) = (−xi−1 ) et marque(xi+1 ) = (+xi ). x x x i-1 i i+1 On a alors ϕ(xi ,xi−1 ) = ϕ(xi ,xi−1 ) − ε et ϕ(xi ,xi+1 ) = ϕ(xi ,xi+1 ) + ε soit ˆ ˆ ϕE (xi ) = ϕE (xi ) et ϕS (xi ) = ϕS (xi ) d’o` ˆ ˆ u ϕE (xi ) = ϕS (xi ) ˆ ˆ 4. marque(xi ) = (−xi−1 ) et marque(xi+1 ) = (−xi ). x x x i-1 i i+1 On a alors ϕS (xi ) = ϕS (xi ) − ε et ϕE (xi ) = ϕE (xi ) − ε d’o` ˆ ˆ u ϕE (xi ) = ϕS (xi ) ˆ ˆce qui montre que ϕ est un flot. ˆ Montrons que ϕ est compatible; c’est imm´diat par construction, puisque ˆ e 1. sur un arc augmentant (xi−1 ,xi ), ϕ a ´t´ augment´ de ε ≤ εi = c(xi−1 ,xi ) − ϕ(xi−1 ,xi ), ˆ ee e donc ϕ(xi−1 ,xi ) ≤ c(xi−1 ,xi ) ˆ 2. sur un arc diminuant (xi ,xi−1 ), ϕ a ´t´ diminu´ de ε ≤ ϕ(xi ,xi−1 ) et donc ϕ(xi ,xi−1 ) ≥ 0 ˆ ee e ˆ Enfin, ϕ a ´t´ augment´ sur un arc d’entr´e (e,x1 ), de la quantit´ ε, donc v(ϕ) = v(ϕ) + ε ˆ ee e e e ˆet comme ε > 0, on a bien v(ϕ) > v(ϕ) P ˆ c IFSIC 2004
    • 11.4. Algorithme de Ford-Fulkerson 16511.4 Algorithme de Ford-Fulkerson La mise en œuvre algorithmique des fonctions de marquage et d’am´lioration se fait par eune m´thode d’exploration issue de e. Cette exploration peut ˆtre men´e avec n’importe quelle e e estrat´gie: largeur, profondeur, etc. Quelle que soit la strat´gie retenue, l’exploration est adapt´e e e ede mani`re `: e a 1. op´rer sur le graphe valu´ Gε (ϕ) (appel´ graphe d’´cart) constitu´ de l’union du graphe e e e e e partiel de G constitu´ des arcs non satur´s et du graphe partiel de Gt (transpos´ de G) e e e constitu´ des arcs charg´s, soit, formellement: e e 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) c(ϕ)(x,y) = ϕ(y,x) si (y,x) ∈ Γ ∧ ϕ(y,x) > 0 Pour fixer les id´es, la figure 11.2 donne un exemple de graphe d’´cart associ´ ` un flot. e e ea 2. associer ` chaque sommet y visit´ un attribut ε tel que ε(y) est la valeur du chemin de Gε a e (´gale au minimum des valeurs des arcs) ` l’issue duquel y a ´t´ visit´ pour la premi`re e a ee e e fois, 3. rajouter la condition d’arrˆt s visit´. e e11.4.1 Fonction marquage On en donne une version r´cursive, analogue au calcul r´cursif de l’ensemble des descendants e ed’un sommet donn´ (algorithme 6.4.2). Ici, l’exploration est celle des descendants du sommet e, edans le graphe d’´cart. Sur l’exploration proprement dite, la fonction greffe un calcul, en affectant ea` chaque sommet marqu´ sa marque (chaˆ de caract`res) et son ´cart d’am´lioration (l’entier e ıne e e eε). Ces deux informations seront exploit´es par la proc´dure d’am´lioration. Enfin, la condition e e ed’arrˆt est modifi´e: le marquage s’arrˆte lorsque l’exploration ne permet plus de marquer de e e enouveaux sommets (comme dans le calcul des descendants) ou lorsque le sommet s est marqu´. e11.4.2 Proc´dure am´lioration e ePr´condition: s est marqu´ (s ∈ M ). e eInvariant:debchaine=tˆte de la chaˆ le long de laquelle ϕ est modifi´ ∧ e ıne eflot modifi´ entre debchaine et s eCondition d’arrˆt: e debchaine = e c IFSIC 2004
    • 166 Flots dans un r´seau de transport e 1 1 1 1 4 3 1 1 1 1 1 2 1 e 2 s 2 2 1 2 2 5 2 1 3 1 (1) 4 (2) (1) (1) (1) e 2 (1) s (1) (2) (2) (1) (1) 5 (1) (1) 3 (1) il y a un chemin : e, 2, 5, 1, 4, s dans ce graphe d’écart, avec epsil=min(1, 2, 1, 1, 1)=1 Fig. 11.2 – Flot et graphe d’´cart associ´ e e11.4.3 AlgorithmeInvariant:G est muni d’un flot compatible G.ϕ.Condition d’arrˆt marquage(G) eProgression:am´lioration(G); eValeurs initiales: Ici, il s’agit de calculer un flot compatible initial. Une premi`re solution, etriviale, consiste ` prendre G.ϕ ≡ 0, qui r´pond ´videmment ` la question. a e e a Une seconde solution, qui sera int´ressante lorsqu’on r´soud le probl`me ”` la main”, no- e e e atamment sur une repr´sentation graphique, consiste ` chercher d’abord un flot complet: e a c IFSIC 2004
    • 11.4. Algorithme de Ford-Fulkerson 167 D´finition 11.13 Un flot compatible est dit complet si tout chemin de e e ` s poss`de au moins un arc satur´. a e eAutrement dit, un flot compatible n’est pas complet si, et seulement si, la fonction marquagepermet de marquer s en n’utilisant que des marquages avant. La construction d’un flot complet s’effectue en explorant les chemins de e ` s et en affectant auniform´ment sur chaque chemin un flux ´gal ` la plus petite capacit´ r´siduelle des arcs du e e a e echemin. Les flux ainsi obtenus sont superpos´s (c’est-`-dire leurs valeurs additionn´es sur chaque e a earc) et lorsqu’aucun chemin ne peut plus recevoir de flux suppl´mentaire, on a un flot compatible ecomplet. Il est clair qu’un flot de valeur maximum est complet, mais que la r´ciproque est fausse, ecomme l’exemple trait´ dans le §11.5 suivant va le montrer. e Le texte complet de l’algorithme est donn´ pages 173. e11.4.4 Exemple Consid´rons le r´seau de transport de la figure 11.3 e eInitialisation Recherche d’un flot complet chemin (e,1,4,s); flux = 1 ; arc (1,4) satur´e chemin (e,1,5,s); flux = 1 ; arcs (e,1),(1,5) satur´s e chemin (e,2,4,s); flux = 1 ; arcs (2,4),(4,s) satur´s e chemin (e,2,5,s); flux = 1 ; arcs (e,2),(2,5),(5,s) satur´s e chemin (e,3,6,s); flux = 1 ; arc (3,6) satur´e Flot repr´sent´ sur la figure 11.4 (les arcs satur´s sont en gras) e e emarquage: Arborescence en largeur 1 4 epsil = 1 e 2 5 s 3 6marquage report´ sur la figure 11.4 epremier pas d’it´ration am´lioration e e ϕ(6,s)←2; ϕ(2,6)←2; ϕ(2,5)←0; ϕ(3,5)←2; ϕ(e,3)←2 ˆ ˆ ˆ ˆ ˆmarquage: e(+) stop; ce flot est donc maximum c IFSIC 2004
    • 168 Flots dans un r´seau de transport e11.4.5 Complexit´ e La complexit´ de l’algorithme de Ford-Fulkerson n’est pas polynomiale. En effet, le nombre ed’´tapes de l’algorithme est major´ par la capacit´ minimale c+ (A) des coupes du r´seau, puis- e e e equ’` chaque ´tape la valeur de ϕ augmente au moins de 1, et que d’apr`s le lemme 11.7 on a a e ev(ϕ) ≤ c+ (A). Or cette capacit´ ne peut ˆtre major´e ` partir de la taille du graphe (exprim´e e e e a een fonction de n et m, nombre de sommets et d’arcs). A une mˆme configuration topologique de er´seau peuvent en effet ˆtre attribu´es des capacit´s qui sont des nombres entiers quelconques, e e e edonc a priori non born´s. e Signalons que des algorithmes de complexit´ polynomiale en fonction du nombre n de som- emets ont ´t´ propos´s: algorithmes de Edmonds-Karp, de Dinic, de Karzanov (ce dernier ee eayant une complexit´ globale en O(n3 )) [Din70, EK72, Kar74, MKM78]. e11.5 Cas des r´seaux bi-partis : mise en œuvre par tableaux e Dans ce paragraphe, nous consid´rons le cas particulier de r´seaux de la forme e e 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´seau peut alors ˆtre e erepr´sent´ par un tableau C de format (n + 1) × (p + 1), avec e e ci,j = c(xi ,yj ), 1 ≤ i ≤ n,1 ≤ j ≤ p ci,p+1 = c(e,xi ), 1 ≤ i ≤ n cn+1,j = c(yj ,s), 1 ≤ j ≤ p cn+1,p+1 non d´fini eExemple y1 y2 y3 y4 y5 y6 x1 20 10 30 0 20 0 30 x2 30 20 0 30 30 0 70 x3 0 20 20 20 0 20 80 x4 0 10 10 10 0 40 60 x5 30 0 20 0 0 20 60 40 20 40 40 30 70Mise en œuvre de Ford-Fulkerson. Cette mise en œuvre peut ˆtre faite directement ` e al’aide d’un tel tableau: la fonction ϕ est repr´sent´e dans un tableau de mˆme format. Pour que e e e c IFSIC 2004
    • 11.5. Cas des r´seaux bi-partis : mise en œuvre par tableaux e 169ϕ soit un flot compatible, il faut et il suffit d’assurer: p 1) ∀i 1 ≤ i ≤ n ⇒ j=1 ϕi,j = ϕi,p+1 (conservation au nœud xi ) n ∀j 1 ≤ j ≤ p ⇒ i=1 ϕi,j = ϕn+1,j (conservation au nœud yj ) 2) 1 ≤ i ≤ n + 1,1 ≤ j ≤ p + 1 ⇒ 0 ≤ ϕi,j ≤ ci,j (compatibilit´) eDe plus, la valeur de ϕ est donn´e par e n p v(ϕ) = ϕi,p+1 = ϕn+1,p i=1 j=1Les diff´rentes ´tapes sont alors : e eObtention d’un flot complet initial. Saturer le tableau ϕ ligne par ligne (m´thode dite du ecoin Nord-ouest), c’est-`-dire: a 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 lignesSi ϕi,p+1 = ci,p+1 on dira que la ligne i est satur´e (cela correspond ` la saturation de l’arc e ad’entr´e (e,xi )). De mˆme si ϕn+1,j = cn+1,j pour la colonne j (saturation de l’arc de sortie e e(yj ,s)).Marquage Le marquage consiste ici ` alterner des phases de marquage avant et marquages aarri`re, o` e u – une phase de marquage avant consiste ` marquer de nouvelles colonnes ` partir des lignes a a d´j` marqu´es, ea e – une phase de marquage arri`re consiste ` marquer de nouvelles lignes ` partir des colonnes e a a d´j` marqu´es. ea eInitialement, toute ligne i non satur´e est marqu´e (+e) e eEnsuite, les phases avant et arri`re se d´roulent comme suit: e e – phase de marquage avant :pour toute ligne i marqu´e ` la phase pr´c´dente e a e e pour toute colonne j depuis 1 jqa p si j non marqu´e et ϕi,j < ci,j e alors marquer (+i) la colonne j fsi c IFSIC 2004
    • 170 Flots dans un r´seau de transport e fpour colonne fpour ligne – phase de marquage arri`re : epour toute colonne j marqu´e ` la phase pr´c´dente e a e e pour toute ligne i depuis 1 jqa n si i non marqu´e et ϕi,j > 0 e alors marquer (-j) la ligne i fsi fpour lignefpour colonneArrˆt: les deux situations d’arrˆt se produisent lorsque: e e1: s est marqu´ : lors d’une phase avant une colonne j non satur´e est marqu´e. Cela corres- e e e pond au sommet yj marqu´ et l’arc (yj ,s) non satur´. e e2: blocage : lors d’une phase (avant ou arri`re) aucune nouvelle rang´e (ligne ou colonne selon e e les cas) n’a pu ˆtre marqu´e et toutes les colonnes marqu´es sont satur´es. e e e eDans le premier cas, marquage(G) rend faux (G.ϕ non maximum), dans le deuxi`me cas, mar- equage(G) rend vrai (G.ϕ maximum)Am´lioration(G) (dans le cas o` s est marqu´). e u e Partant de la colonne marqu´e non satur´e jk qui a provoqu´ l’arrˆt du marquage, on remonte e e e ela chaˆ de marquage jusqu’` trouver une ligne i1 marqu´e (+e): c’est une chaˆ de marques ıne a e ınealtern´es: e (+ik ),(−jk−1 ),(+ik − 1), . . . ,(+i2 ),(−j1 ),(+e)Simultan´ment, on calcule ε = min(ε+ ,ε− ), o` e u ε+ = min (ci ,j − ϕi ,j ) =1,...,k ε− = min ϕi ,j −1 (voir figure ci-dessous) =2,...,kpuis on ajuste ϕ en ajoutant/retranchant alternativement ε: ϕi ,j ←ϕi ,j + ε, ϕi ,j −1 ←ϕi ,j −1 −εpuis ϕn+1,jk ←ϕn+1,jk + ε, ϕi1 ,p+1 ←ϕi1 ,p+1 + εExemple Nous traitons maintenant l’exemple donn´ au d´but de ce paragraphe. Un seul e etableau contient les flux et les capacit´s. Chaque case se pr´sente comme suit: e e ci,j ϕi,j c IFSIC 2004
    • 11.5. Cas des r´seaux bi-partis : mise en œuvre par tableaux e 171Flot complet initial et marquage correspondant (+x5 ) (+x3 ) (+x5 ) (+x3 ) (+x1 ) (+x5 ) y1 y2 y3 y4 y5 y6 (−y1 ) x1 20 10 30 0 20 0 30 20 10 0 0 0 0 30 (−y1 ) x2 30 20 0 30 30 0 70 20 10 0 30 10 0 70 (+e) x3 0 20 20 20 0 20 80 0 0 20 10 0 20 50 (+e) x4 0 10 10 10 0 40 60 0 0 10 0 0 40 50 (+e) x5 30 0 20 0 0 20 60 0 0 10 0 0 10 20 40 20 40 40 30 70 v=220 40 20 40 40 10 70Am´lioration du flot: La chaˆ de marquage est: e ıne (y5 ,s) de capacit´ r´siduelle 20 e e (x1 ,y5 ) ” ” 20 (x1 ,y1 ) ” ” -20 (x5 ,y1 ) ” ” 30 (e,x5 ) ” ” 40 soit un flux ` transf´rer de 20. a e c IFSIC 2004
    • 172 Flots dans un r´seau de transport eTexte de la fonctionENT epsil ;ENT SOMMET::ε ;STRING SOMMET::marq ; local ENS[SOMMET] MBOOL marquage(GRAPHE G) c’est d´but e M ← ∅ ; epsil ← 0 ; marquer(e, ’’+’’, +∞) ; si s ∈ M alors epsil ← s.ε fsi ; Result ← s ∈ M finmarquer(SOMMET x; STRING m; ENT ecart) c’est precondition x ∈ M local ENT e d´but e 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 fin-- ` la sortie de cette proc´dure, soit s est marqu´ (en avant ` partir de x) soit tous les som- a e e amets marquables ` partir de x sont marqu´s. a e c IFSIC 2004
    • 11.5. Cas des r´seaux bi-partis : mise en œuvre par tableaux e 173Texte de la proc´dure eamelioration(GRAPHE G) ; local SOMMET debchaine ; d´but e 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 ; fin Algorithme de FORD-FULKERSONford-fulkerson(GRAPHE G) c’est d´but e depuis G.ϕ ← initial -- d´livre un flot initial compatible; le flot ≡ 0 convient e jusqua marquage(G) faire amelioration(G) fait fin 1 1 4 2 2 2 2 e 2 5 s 2 2 3 6 Fig. 11.3 – Exemple d’application de Ford-Fulkerson c IFSIC 2004
    • 174 Flots dans un r´seau de transport e 1 (-5) 1 1 4 2 1 2 2 2 (-5) 1 2 2 1 2 2 e 2 5 s (+) 1 (+3) (+6) 2 1 2 3 6 1 (+e) (+2) Fig. 11.4 – flot complet et marquage 1 1 1 4 2 1 2 2 2 1 2 2 2 2 e 2 5 s 1 (+) 2 2 1 2 2 3 6 1 coupe minimale Fig. 11.5 – deuxi`me flot et marquage e c IFSIC 2004
    • 11.5. Cas des r´seaux bi-partis : mise en œuvre par tableaux e 175 x 20 1 y1 10 40 20 30 30 x 20 30 2 y2 20 30 30 70 20 20 40 e 80 x y3 s 60 3 20 20 40 60 10 10 y4 x 10 4 30 40 30 20 y5 70 x 20 5 y 6 Fig. 11.6 – R´seau bi-parti e c IFSIC 2004
    • 176 Flots dans un r´seau de transport eDeuxi`me flot et marquage correspondant e (+x5 ) (+x3 ) (+x5 ) (+x3 ) (+x2 ) (+x5 ) y1 y2 y3 y4 y5 y6 (−y2 ) x1 20 10 30 0 20 0 30 0 10 0 0 20 0 30 (−y1 ) x2 30 20 0 30 30 0 70 20 10 0 30 10 0 70 (+e) x3 0 20 20 20 0 20 80 0 0 20 10 0 20 50 (+e) x4 0 10 10 10 0 40 60 0 0 10 0 0 40 50 (+e) x5 30 0 20 0 0 20 60 20 0 10 0 0 10 40 40 20 40 40 30 70 v=240 40 20 40 40 30 70 Ce flot est maximal car il sature les sorties.11.6 Application: probl`mes de couplage des graphes bi-partis e Les probl`mes de couplage de cardinalit´ maximale constituent une des applications les e eplus classiques des mod`les de flots. Ils interviennent aussi comme ´tape dans la r´solution de e e eprobl`mes d’affectation ` coˆt optimal, largement utilis´s en optimisation combinatoire. Histo- e a u eriquement, la th´orie du couplage maximum d’un graphe bi-parti a pr´c´d´ la th´orie des flots; e e e e eelle apparaˆ maintenant comme une application de cette derni`re aux aux graphes bi-partis. En ıt efait, le r´sultat fondamental, du ` K¨nig et Hall, r´sulte de l’application aux r´seaux bi-partis e a o e emod´lisant le probl`me du lemme de Ford-Fulkerson, de mˆme l’algorithme r´solvant le probl`me e e e e e(algorithme de Evegary et K¨hn) est l’adaptation de l’algorithme de Ford-Fulkerson. u11.6.1 Le probl`me e Soit Y et Z deux ensembles finis et Γ une relation sur Y × Z, ou encore, ce qui est ´quivalent, eune application de Y dans 2Z (ensemble des parties de Z). Le triplet (Y,Z,Γ) est en fait un graphebi-parti G, avec Y ∪ Z comme ensemble de sommets, et Γ comme ensemble d’arcs. D´finition 11.14 On appelle couplage du graphe bi-parti G une partie e A ⊆ Y et une bijection ϕ : A → ϕ(A) telle que ϕ(A) ⊆ Z et ∀x ∈ A : ϕ(x) ∈ Γ(x). D´finition 11.15 Si (A,ϕ) est un couplage de G alors |A| = |ϕ(A)| e s’appelle le cardinal (ou valeur) du couplage. c IFSIC 2004
    • 11.6. Application: probl`mes de couplage des graphes bi-partis e 177Remarque Un couplage peut aussi ˆtre vu comme un sous-ensemble W de l’ensemble des earcs Γ du graphe bi-parti G = (Y,Z,Γ) tel que deux arcs distincts de W n’aient ni origine niextr´mit´ commune (figure 11.7). e e e a Y={a, b, c, d, } f Z={e, f, g, h, i } b A={a, b, c } g c (A)={e, f, h } h d couplage de cardinal 3 (arcs en gras) i Fig. 11.7 – Couplage du graphe G ´ Probl`me 11.1 Etant donn´ un graphe bi-parti G e e = (Y,Z,Γ), d´terminer un couplage de G, de cardinalit´ maximum e eRemarque S’il existe un couplage de valeur |Y |, on dit qu’on peut coupler Y dans Z.11.6.2 Mod´lisation en r´seau bi-parti e e Au graphe bi-parti G = (Y,Z,Γ) on associe le r´seau de transport e G = (Y,Z,e,s; Γ ; c ) avec Γ = Γ ∪ {(e,y),y ∈ Y } ∪ {(z,s),z ∈ Z} c(e,y) = c(z,s) = 1 ∀y ∈ Y,∀z ∈ Z c(y,z) = +∞ c IFSIC 2004
    • 178 Flots dans un r´seau de transport e e s 1 1 Y Z On v´rifie facilement que tout flot compatible sur G est un couplage de G et r´ciproquement, e edont les valeurs sont ´gales. Il suffit pour cela de consid´rer la correspondance e e z = ϕ(y) ⇔ ϕ(y,z) = 1 Nous donnons le r´sultat fondamental de la th´orie du couplage maximum, du ` K¨nig et e e a oHall: Th´or`me 11.16 Soit G = (Y,Z,Γ) un graphe bi-parti. Il existe un e e couplage de valeur Y si, et seulement si, ∀A ⊆ Y : |A| ≤ |Γ(A)|D´monstration. i) Supposons qu’il existe un couplage ϕ de valeur |Y |, et consid´rons le e er´seau de transport associ´. Soit A ⊆ Y . Alors A = {e} ∪ A ∪ Γ(A) d´finit une coupe Γ S (A ). e e eCalculons sa capacit´: e A (A) les arcs sortants de A’ sont: e s – (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 . D’o`: u cS (A ) = |Y A| + |Γ(A)| = |Y | − |A| + |Γ(A)| D’apr`s le lemme de Ford-Fulkerson, e v(ϕ) = |Y | ≤ cS (A ) = |Y | − |A| + |Γ(A)| c’est-`-dire |A| ≤ |Γ(A)| a c IFSIC 2004
    • 11.6. Application: probl`mes de couplage des graphes bi-partis e 179ii) R´ciproquement, soit ϕ un flot de valeur maximale sur le r´seau de transport associ´ ` G, e e eaet soit A = {e,A ⊆ Y,B ⊆ Z} l’ensemble des sommets marqu´s par le marquage associ´ ` G.ϕ. e eaD’apr`s le th´or`me de Ford-Fulkerson, v(ϕ) = cS (A ) < ∞ (car v(ϕ) ≤ |Y | < ∞) donc la coupe e e eΓ + (A ) ne comporte aucun arc (y,z) ∈ Γ. Par cons´quent Γ(A) ⊆ B soit encore |Γ(A)| ≤ |B| et eaussi : cS (A ) = |Y | − |A| + |B| ≥ |Y | − |A| + |Γ(A)|Comme, par hypoth`se, |A| ≤ |Γ(A)|, il vient v(ϕ) = cS (A ) ≥ |Y | d’o`, par double in´galit´, e u e ev(ϕ) = |Y | P La condition n´cessaire et suffisante ´tablie par ce th´or`me est ´videmment impraticable e e e e epratiquement, puisqu’il faudrait la v´rifier sur les 2|Y | parties de Y . Pratiquement, il suffit de ecalculer un couplage de valeur maximum en appliquant l’algorithme de Ford-Fulkerson adapt´ eau r´seau bi-parti mod´lisant le probl`me (§11.5) (ou un autre algorithme de calcul de flot e e emaximal), puis de comparer la valeur de ce couplage ` |Y |. a Du point de vue algorithmique, la mise en œuvre de l’algorithme de Ford-Fulkerson bi-partiest ici plus simple que pour un r´seau bi-parti quelconque: la colonne et la ligne suppl´mentaires e eportant les capacit´s d’entr´e et de sortie deviennent inutiles (puisque ces capacit´s sont impli- e e ecitement ´gales ` 1); de mˆme, les capacit´s des arcs de Γ n’ont pas besoin d’ˆtre indiqu´es: e a e e e etoute case du tableau est soit interdite si elle ne correspond pas ` un arc de Γ (capacit´ 0), soit a eautoris´e, c’est-`-dire de capacit´ ∞. Enfin, les flux ne peuvent prendre que les valeurs 0 ou 1: il e a esuffira donc de ”marquer” les cases autoris´es avec un signe indiquant si elles sont s´lectionn´es e e e(flux 1) ou non (flux 0). En fait, le probl`me revient ` s´lectionner, parmi les cases autoris´es, un ensemble de cases e a e etel qu’au plus une case par rang´e soit s´lectionn´e (couplage) et, parmi tous les ensembles e e er´pondant ` la question, en donner un de cardinal maximum (couplage maximum). Une rang´e e a esera dite satur´e si une case de cette rang´e est s´lectionn´e (cela correspond ` la saturation e e e e ad’un arc d’entr´e si la rang´e est une ligne, ou d’un arc de sortie si la rang´e est une colonne). e e eEnfin, une case autoris´e ne peut jamais ˆtre satur´e (car elle est de capacit´ ∞). e e e e Pour illustrer l’int´rˆt des mod`les de couplage et la mise en œuvre pratique de l’algo- ee erithme de Ford-Fulkerson, nous traitons ci-apr`s un exemple concret de calcul de syst`me de e erepr´sentants distincts. e11.6.3 Exemple: syst`me de repr´sentants distincts e e Soit X = {x1 , . . . ,xn } un ensemble fini, et Y1 , . . . ,Ym des parties de X: chaque Yj regroupedes ´l´ments de X selon un certain crit`re. On appelle syst`me de repr´sentants distincts (srd) ee e e eun sous-ensemble E ⊆ X dont chaque ´l´ment repr´sente une et une seule partie Yj . On a donc: ee eE = {xi1 , . . . ,xim } avec k = ⇒ xik = xi et xik ∈ Yk ,k = 1, . . . ,m. On se ram`ne au probl`me de couplage d’un graphe bi-parti de la mani`re suivante: soit e e eY = {Y1 , . . . ,Ym }, Z ≡ X et (Yj ,xi ) ∈ Γ ⇔ xi ∈ Yj . Tout couplage sur (Y,Z,Γ) d´finit donc une bijection d’une partie de Y sur une partie de Z, ec’est-`-dire qu’` tout Yj correspond un ´l´ment bien d´fini de Z ≡ X (son ”repr´sentant”), et a a ee e edeux Yj distincts ont deux repr´sentants distincts. e c IFSIC 2004
    • 180 Flots dans un r´seau de transport e Consid´rons l’exemple suivant: e X = {Jean, Anita, Louis, Mireille, Albert, Patricia, Florent} et Y1 = {Jean, Anita, Louis} (moins de 20 ans) Y2 = {Mireille, Albert } (chˆmeurs) o Y3 = {Anita, Louis, Patricia } (amateurs de th´ˆtre) ea Y4 = {Mireille, Patricia } (m`res de famille) e Y5 = {Jean, Anita } (´tudiants) e Y6 = {Jean, Louis } (membres de l’association sportive) Y7 = {Mireille, Florent } (membres du comit´ d’action sociale) e (+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´thode du coin Nord-ouest): v = 6. Ce couplage initial ne permet de choisir eque 6 repr´sentants (les ´tudiants ne sont pas repr´sent´s). Le marquage, effectu´ sur le tableau e e e e eci-dessus, permet de marquer Albert, colonne non satur´e. Ce couplage n’est donc pas maximal. eLa phase d’am´lioration donne le couplage ci-dessous, qui, lui, est maximal (valeur |Y |=7) e Jean Anita Louis Mireille Albert Patricia Florent Y1 × × Y2 × Y3 × × Y4 × Y5 × Y6 × Y7 ×(en nous avons indiqu´ les nouvelles cases s´lectionn´es dans cette solution). e e e Jean repr´sente les moins de 20 ans e Anita ... les ´tudiants e Louis ... l’association sportive Mireille ... les m`res de famille e Albert ... les chˆmeurs o Patricia ... les amateurs de th´ˆtre ea Florent ... le comit´ d’action sociale e c IFSIC 2004
    • Annexe ALes op´rations de la classe GRAPHE eet leur s´mantique e Dans ce qui suit, un graphe non valu´ G est un doublet (X, Γ) et un graphe valu´ G est un e etriplet (X, Γ), v)Constructeurcreer post vide G.creer cr´e un nouvel objet de type graphe, d´sign´ par G, vide e e eOp´rations de consultation (lecture) eFonctions ` r´sultat bool´en a e eBOOL vide post Result ⇒ nm som=0 ∧ nb arc=0BOOL 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 grapheGraphes valu´s eE v(SOMMET x, y) : E pre valid arc(x,y) v(x,y) = valeur de l’arc (x,y). c IFSIC 2004
    • 182 Les op´rations de la classe GRAPHE et leur s´mantique e eFonctions ` r´sultat entier a eENT nb som nombre de sommetsENT nb arc nombre d’arcsENT 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´d´cesseurs de x. e eParcours de l’ensemble des sommetsBOOL som termine som termine = vrai ssi le parcours de l’ensemble des sommets est ´puis´. e epremier 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 l’ensemble des arcsBOOL arc termine vrai ssi le parcours de l’ensemble des arcs est ´puis´. e epremier arc positionne l’arc courant sur le premier arc de l’ensemble des arcs.prochain arc pre non arc termine avance l’arc courant au prochain arc.ARC arc cour c IFSIC 2004
    • 183 pre non arc termine renvoie l’arc courant du parcours.Fonctions ` r´sultat ensemble de sommets a eENS[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´e e post x ∈ points entr´e ⇒ lst pred(x)=∅ e points entr´e = {x ∈ X | Γ−1 (x) = ∅}. eENS[SOMMET] points sortie post x ∈ points sortie ⇒ lst succ(x)=∅ G.points sortie = {x ∈ X | Γ(x) = ∅}.Proc´dures de modification (´criture) e eGraphes non valu´s eajout sommet(SOMMET x) post validsom(x) G.ajout sommet(x) ajoute le sommet x au graphe G. Sans effet si x est d´j` un sommet. eaajout arc(SOMMET x,y) post validarc(x,y) G.ajout arc(x,y) ajoute les sommets x, y et l’arc (x,y) au graphe G. Sans effet si (x,y) est d´j` un arc. eaoter sommet(SOMMET x) pre non vide post non validsom(x) G.oter sommet(x) ˆte le sommet x et tous les arcs adjacents ` x o a .oter arc(SOMMET x,y) c IFSIC 2004
    • 184 Les op´rations de la classe GRAPHE et leur s´mantique e e pre non vide post non validarc(x,y) G.oter arc(x,y) ˆte l’arc (x,y). osous graphe(ENS[SOMMET] E) pre non vide post x ∈ E ⇒ non validsom(x). G.sous graphe(E) ˆte de G tous les sommets appartenant ` E. o aGraphes valu´s eajout val(SOMMET x, y; E ) post valid arc(x,y) ; v(x,y) = ajout val(x, y , ) ajoute l’arc (x,y) de valeur . Si l’arc existe d´j`, remplace sa valeur eamodif val(SOMMET x, y; E ) pre valid arc(x,y) post v(x,y) = modif val(x, y, ) modifie la valeur de l’arc.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. Christofides. Graph Theory ; an algorithmic approach. Academic Press, 1975.[Din70] Dinic, G. A. Algorithm for solution of a problem of maximum flow in a network with lower estimation. Soviet. Math. Dokl., 11:1277-1280, 1970.[EK72] Edmonds, J. and Karp, R. M. Theoretical improvements in algorithmic efficiency for network flow problems. J. ACM 19(2):248-264, 1972.[GM79] M. Gondran, M. Minoux. Graphes et Algorithmes. Eyrolles, 1979.[HP82] J. M. H´lary, R. Pedrono. Recherche Op´rationnelle : Exercices Corrig´s. Hermann, e e e 1982.[Kar74] Karzanov, A.V. Determining the maximal flow in a network by the method of preflows. Soviet. Math. Dokl., 15:434-437, 1974.[MKM78] Malhorta, M.V., Kumar, M.P., Mahes Hwari S.N. An algorithm for finding maximum flow in network. Inf. Proc. Letters, 7(6):277-278, 1978.[Ros83] ROSEAUX. Exercices et Probl`mes r´solus de Recherche Op´rationnelle, tome 1. e e e Masson, 1983.[Roy70] B. Roy. Alg`bre Moderne et Th´orie des Graphes, tomes 1 & 2. Dunod, 1970. e e c IFSIC 2004
    • Index , 29 composantes fortement connexes : Foulkes,←, 27 84 composantes fortement connexes : Tarjan,ajout sommet, 25 92 composantes fortement connexes : Tarjanajoutarc, 25 (exemple), 88Algorithme composantes fortements connexes : ascendants- τ -minimalit´, 80 e descendants, 86 ´num´ration des chemins ´l´mentaires (it´ratif), e e ee e composition +, 125 68 Descendants en largeur d’abord, 63 ´num´ration des chemins ´l´mentaires (r´cursif), e e ee e descendants en profondeur d’abord (r´cursif), e 69 65 Bellmann-Kalaba, 141 existence de circuits : Marimont, 73 Dijkstra, 154 exploration de la descendance d’un sommet Ford-Fulkerson, 173 (g´n´ral), 57 e e Ford-Fulkerson, am´lioration, 173 e Exploration en largeur d’abord, 59 Ford-Fulkerson, marquage, 172 Exploration en profondeur d’abord, 61 Kruskal, 150 fermeture transitive : puissances, 40, 41 Prim, 155 fermeture transitive : Roy-Warshall, 41, Roy-Warshall avec routage, 46 44 Roy-Warshall simplifi´, 95e glouton, 66, 112 ford, 141 heuristique, 141 chemins de valeur minimale : ordinal-racine, heuristique d’am´lioration, 106 e 121 num´rotation conforme avec parcours en e chemins de valeur minimale : ordinal-racine profondeur, 75 2, 123 Op´rateur ◦, 31 e chemins de valeur minimale : puissances, ordinal-racine, 141 124 saisie, 24 chemins de valeur minimale : Bellmann- sous graphe, 34 Kalaba, 109 transformation, 124, 128 chemins de valeur minimale : Bellmann- Anti-r´flexivit´, 18 e e Kalaba acc´l´r´, 112 ee e Anti-sym´trie, 18 e chemins de valeur minimale : Dijkstra, 116 Anti-transitivit´, 77 e chemins de valeur minimale : Ford, 105 Arˆte, 145 e chemins de valeur minimale : Warshall- Arborescence, 51 Floyd, 126 branche, 51 c IFSIC 2004
    • INDEX 187 feuille, 51 Diagramme sagittal, 19 racine, 51 Dictionnaire des pr´d´cesseurs, 20 e eArbre, 145 Dictionnaire des successeurs, 20 partiel de poids minimum, 148 Dio¨ 128 ıde,Arc, 15, 16 ∪ multiplication latine, 132 ´tat visit´, 53 e e × +, 132 capacit´, 157 e max ×, 130 charg´, 162 e max +, 130 extr´mit´, 16, 21 e e min ×, 131 flux, 157 min +, 130 origine, 16, 21 min max, 131 satur´, 162 e min min, 131 visit´, 53 e ET OU, 130Attribut, 26 Dualit´, 161 eC++, 26 Eiffel, 26Chaˆ 145 ıne, ExplorationChemin, 19 descendance d’un sommet, 53 ´l´mentaire, 19, 38 ee largeur d’abord, 58 concat´nation, 19 e meilleur d’abord, 113 existence, 37 profondeur d’abord, 59 longueur, 19, 106 Fermeture longueur maximum, 75 transitive, 38 valeur, 98 Flot, 158 valeur additive 1-minimale, 99 compatible, 158 valeur additive minimale, 99 complet, 167, 169 valeur minimale : routage, 126 valeur, 159, 160 valeur optimale, 98 PE complet, 167PE ∗-optimal-∗, 99 FonctionPE ´l´mentaire, 49 ee injective, 75PE extr´mit´, 19 e e Fonction ordinale, 74, 119PE longueur, 33 Ford-FulkersonPE origine, 19 algorithme, 162PE sommet interm´diaire, 19 e am´lioration, 167 ePE x-optimal, 98 lemme, 161PE x-optimal-y, 98 marquage, 162, 167, 169Circuit, 19, 71 marquage arri`re, 162, 169 e ´l´mentaire, 19 ee marquage avant, 162, 169 absorbant, 103, 126 proc´dure d’am´lioration, 163, 170 e e hamiltonien, 93 th´or`me, 163 e ePE absorbant, 100Classe, 26 G(X), 29cr´er, 25 e GrapheCycle, 145 τ -minimal, 49, 77, 93 c IFSIC 2004
    • 188 INDEX arborescence 1-minimale, 102 associatif, 30 bi-parti, couplage, 176 commutatif, 30 composante connexe, 145 composition, 30 connexe, 145 union, 29 d’´cart, exploration, 165 e PE compatible avec une relation, 30 d´veloppement arborescent, 51 e PE distributif, 30 diagonal, 30 Op´ration Θ, 41 e fermeture transitive, 37 Ordonnancement, 136 fortement anti-transitif, 78 au plus tard relativement ` une date finale, a nombre cyclomatique, 145 139 non orient´, 145 e marge libre dans un ordonnancement, 140 parcours, 53 marge par chemin, 140 parcours en profondeur, 102 PE au plus tˆt, 138 o partiel, 29 PE compatible, 136 potentiel-tˆche, 136, 138 a PE marge totale relativement ` une date finale, a puissance, 33 140 puissance, interpr´tation, 33 e r´duit selon les c.f.c, 82 e Probl`me e sous-graphe, 34 approvisionnement et demande, 157 transitif, 37 couplage bi-parti, 176 transpos´, 34 e syst`me de repr´sentants distincts, 179 e e valu´, 97 e Programmation dynamique, 110PE composante fortement connexe terminale, Projet, 135 82 contrainte, 135, 136PE composantes fortement connexes, 81 contrainte au plus tˆt, 135, 136, 141 oPE fortement connexe, 81 contrainte au plus tard, 135, 137PE sous-graphe, 71 contrainte implicite, 137 contrainte redondante, 137, 142Java, 26 contraintes, 137 contraintes d´terministes, 135 eKirchoff contraintes implicites, 138 loi, 157 contraintes non d´terministes, 135 eLangage mod´lisation potentiel-tˆche, 136 e a objet, 26 tˆche, 135, 137 aLoi de composition R´flexivit´, 18 e e ´l´ment absorbant, 97 ee R´seau de transport, 157 e ´l´ment neutre, 97 ee bi-parti, 168 associative, 97 PE coupe, 161M´thode, 26 e RelationMarimont, 72 ordre, 29Multi-graphe, 15 ordre partiel, 29 Relation binaire, 16Op´rateur e ´quivalence, 16 e c IFSIC 2004
    • INDEX 189 ordre, 16 ´ Tableau booleen, 20 ordre partiel, 16 Transitivite´, 37 ordre total, 16 Turbo-Pascal, 26 pr´-ordre, 16 e TypePE ´quivalence, 49, 81 e arc, 21Repr´sentation e file, 58 liste des sommets, 23 graphe, 24, 25 liste des successeurs, 23 ´ graphe, methodes, 24 tableau bool´en, 22 e pile, 59Roy-Warshall, 71 sommet, 21, 23Roy-Warshall, 41 table, 44 routage, 44 tas, 113 Type abstrait, 25Simula, 26SmallTalk, 26Sommet, 15 ´ etat dehors, 53 ´ etat en attente, 53 ´ ´ etat termine, 53 ascendant, 19, 85 attributs minimaux, 100 ´ degre, 18 ´ ´ degre exterieur, 18 degre ´ interieur, 18 ´ descendant, 19, 53, 85 flux entrant, 159 flux sortant, 159 ´ numero, 21 ´ numerotation conforme, 75 ´ numerotation conforme inverse, 77 ´ point d’entree, 48 point de sortie, 48 ´ ´ predecesseur, 16 successeur, 16 ´ visite, 53 voisin, 145PE anti-racine, 158 ´PE point d’entree, 71PE point de sortie, 71PE puits, 158PE racine, 158PE source, 158 ´Symetrie, 18 ´τ -equivalence, 49 c IFSIC 2004