C66

52,205 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
52,205
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

C66

  1. 1. ALGORITHMIQUE DES GRAPHES Jean-Michel H´lary e 1 IFSIC Cours C66 Juin 20041. c IFSIC 2004
  2. 2. 2 c IFSIC 2004
  3. 3. 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. 4. 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
  5. 5. `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. 6. 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
  7. 7. `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. 8. 8 ` TABLE DES MATIERES c IFSIC 2004
  9. 9. 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. 10. 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
  11. 11. 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. 12. 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
  13. 13. 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. 14. 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
  15. 15. 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. 16. 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
  17. 17. 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. 18. 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
  19. 19. 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. 20. 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
  21. 21. 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. 22. 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
  23. 23. 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. 24. 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
  25. 25. 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. 26. 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
  27. 27. 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. 28. 28 Aspect algorithmique : un type de donn´es abstrait e c IFSIC 2004
  29. 29. 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. 30. 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
  31. 31. 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. 32. 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

×