SlideShare una empresa de Scribd logo
1 de 189
Descargar para leer sin conexión
ALGORITHMIQUE DES GRAPHES

                         Jean-Michel H´lary
                                       e
                                     1
                              IFSIC

                             Cours C66
                             Juin 2004




1. c IFSIC 2004
2




    c IFSIC 2004
Table des mati`res
              e

1 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                                                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   12

2 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                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19

3 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 . . . . . . . . . . . . . . . . . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26

4 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 . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   34

5 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                                                                                                                              .   49

6 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 . . . .       . . . . . .     .   .   .   .   .   .   .   .   .   .   66

7 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 . .       .   .   .   .   .   .   .   .   .   .   .   .   94

8    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
               e

9     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 . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   142

10 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 . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   154

11 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                                                     .   .   .   .   .   .   .   .   .   .   .   .   .   179

A 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 1

Introduction, exemples

1.1    Historique
    La th´orie des graphes a pris naissance en 1736 : le math´maticien allemand L. Euler
           e                                                      e
apporta une r´ponse au probl`me que se posaient les habitants de la ville de Koenigsberg ; `
                 e              e                                                                a
savoir :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                 e
ayant 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                 e
provoquant un d´veloppement de la th´orie des graphes comme mod`les de probl`mes concrets ;
                   e                    e                               e          e
cet 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         ee
verte dans les ann´es 1960, avec le d´veloppement des sciences de l’information et de la commu-
                     e                e
nication. Des informaticiens tels que Dijkstra, Knuth, Wirth, Sakharovitch, Gondran
et beaucoup d’autres, participent au d´veloppement de l’algorithmique des graphes autant qu’`
                                        e                                                        a
la mod´lisation de probl`mes n´s de ces nouvelles sciences en terme de graphes. Une approche
        e                 e       e
historique se trouve dans l’introduction de [GM79], qui renvoie d’ailleurs ` un ouvrage historique
                                                                           a
complet sur la premi`re ´poque de la th´orie des graphes (1746-1936) [BLW76].
                       e e                e


1.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                                 e
propres 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 algorithmes
adapt´s aux principaux types de probl`mes de graphe et la mani`re de les programmer, il faut
      e                                 e                           e
mettre l’accent sur un aspect essentiel : l’´tude des techniques de programmation d’algorithmes
                                            e
de graphe. Cette ´tude est enrichissante par elle- mˆme car elle donne l’occasion d’aborder sur
                  e                                    e
des exemples non triviaux des notions d’algorithmique aussi fondamentales que les structures de
donn´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    e
donnons dans la section suivante trois exemples de situations– d’origine informatique ou non –
qui se prˆtent ` une telle mod´lisation.
         e     a               e


1.3     Exemples
1.3.1    Le probl`me du chou, de la ch`vre et du loup
                 e                    e
L’´nonc´
   e     e
     Un passeur, disposant d’une barque, doit faire traverser une rivi`re ` un chou, une ch`vre
                                                                      e a                   e
et un loup. Outre le passeur, la barque peut contenir au plus une des trois unit´s qui doivent
                                                                                  e
traverser. D’autre part, pour des raisons de s´curit´, le passeur ne doit jamais laisser seuls la
                                              e     e
ch`vre et le chou, ou le loup et la ch`vre. (Par contre, le loup ne mangera pas le chou... et
   e                                   e
r´ciproquement). Comment le passeur doit-il s’y prendre?
 e

Mod´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               e
final, et des transitions autoris´es. Chaque ´tat se traduit par un sommet, ou point. Chaque
                                   e            e
transition autoris´e d’un ´tat ` un autre se traduit par un arc, allant du premier ´tat vers le
                   e        e     a                                                      e
second. Dans cet exemple, un ´tat est une configuration possible sur la rive de d´part. D´signons
                                e                                                  e        e
par P le passeur, L le loup, X la ch`vre, C le chou. Une configuration sera alors d´sign´e par
                                       e                                                 e    e
l’ensemble des pr´sents sur la rive de d´part. L’´tat initial est PLXC et l’´tat final ∅. Chaque
                   e                        e        e                         e
arc, repr´sentant une transition possible, sera libell´ –pour la clart´ de la mod´lisation– par la
          e                                             e               e          e
description de l’action entreprise (A signifie : aller , R signifie retour. On obtient alors le graphe
suivant :
Probl`mee

    Chaque solution correspond ` un chemin dans le graphe, de PLXC ` ∅ et alternant les ´tiquettes
                                a                                  a                    e
A et R. Un chemin correspond ` une s´quence d’actions enchaˆ
                              a      e                       ınables les unes aux autres (l’´tat
                                                                                              e
initial d’une action est ´gal ` l’´tat final de la pr´c´dente).
                         e    a e                   e e

R´solution
 e

Pour l’instant, ”` la main” (ou ”au pif”, comme on veut !), on trouve deux solutions :
                 a
soit 7 travers´es simples, quelle que soit la solution. Laissons au lecteur le soin de fournir au
              e
passeur, 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              e


1.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      a
chacun a besoin de 2 baguettes. Lorsqu’un des philosophes d´sire manger, il requiert deux
                                                                   e
baguettes et ne les lib`re que lorsqu’il a fini son repas 1 . Par contre, tant qu’il n’a pas obtenu
                       e
les deux baguettes, il ne peut rien faire qu’attendre : mˆme s’il a eu la chance d’obtenir une
                                                            e
baguette, 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
           e
au mˆme moment, et chacun se pr´cipite sur les baguettes... mais chacun n’en obtient qu’une.
      e                             e
Pour 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 sortir
de ce blocage mutuel, et vont donc mourir de faim, sauf si quelqu’un (c’est-`-dire l’un d’eux,
                                                                                     a
ou un personnage ext´rieur) se rend compte de la situation et intervient autoritairement, par
                         e
exemple 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
                                                                                   e
complexes, o` plusieurs entit´s (processeurs, p´riph´riques,etc.) se partagent des ressources.
               u                   e                 e     e
Les entit´s en question ´tant a priori moins intelligentes que les philosophes chinois, il faut
          e                  e
pallier cette lacune en ´tant capable de d´tecter automatiquement les situations d’interblocage.
                          e                  e
Quel que soit le nombre d’entit´s et de ressources, les configurations de possession/requˆte des
                                     e                                                         e
ressources 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.e
Ainsi, 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      e
cours du temps. Mais ` chaque instant, il y a un graphe et un seul et de plus, si une situation
                         a
d’interblocage apparaˆ le graphe n’´volue plus. Maintenant, il est clair que l’interblocage entre
                        ıt,           e
plusieurs entit´s se produit si et seulement si les sommets correspondants sont situ´s sur un
                 e                                                                          e
circuit, c’est ` dire un chemin dont l’extr´mit´ co¨
               a                            e    e ıncide avec l’origine. C’est donc un algorithme
de 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                                                             e
mettant en jeu des objets (les entit´s) et des relations entre ces objets (la requˆte d’une ressource
                                    e                                             e
poss´d´e par un autre).
     e e

1.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                   e
soit directement, soit par l’interm´diaire d’autres sites, en envoyant des messages qui circulent
                                     e
le 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 selon
e

                                              c IFSIC 2004
1.3. Exemples                                                                                  13


le genre d’´tudes que l’on souhaite effectuer, le graphe mod´lisant le r´seau devra ˆtre pr´cis´;
           e                                               e           e           e      e e
par 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                                         a
de 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
                                                     e

Exemple 1. R´sistance aux pannes Dans un r´seau, il peut se produire qu’une ligne de
                 e                                      e
communication soit coup´e, ne transmettant plus aucun message. Il en est de mˆme pour un site
                          e                                                      e
dont la panne peut ˆtre assimil´e ` la coupure de toutes les lignes qui y aboutissent ou qui en
                      e           e a
partent. Supposons que, dans un r´seau, on achemine des informations d’un sommet A vers un
                                     e
sommet B, ´ventuellement via des sites interm´diaires servant de relais. De telles informations
           e                                     e
doivent emprunter des chemins allant de A ` B. Ainsi, une information issue de A parviendra ` B si
                                            a                                                a
et seulement si au moins un chemin est valide (c’est ` dire la s´quence d’arcs qui le constitue ne
                                                       a        e
comporte que des arcs non d´t´rior´s). Le probl`me pos´ est alors le suivant : quel est le nombre
                              ee     e            e       e
maximum de pannes auquel cet acheminement peut r´sister? Autrement dit, quel est le nombre
                                                        e
maximum de chemins ind´pendants existant entre A et B? (deux chemins sont ind´pendants si
                           e                                                          e
et 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    a
lisation (site ou ligne) il reste toujours un chemin valide. Par contre il existe des configurations
a
` 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    a

Exemple 2. Routage de fiabilit´ maximale Dans ce mod`le, chaque ligne (arc) est munie
                                    e                          e
d’une valeur, ´gale ` la probabilit´ qu’un message ´mis ` l’origine parvienne sans alt´ration `
               e     a             e                e    a                            e       a
l’extr´mit´. Un ´metteur A ´met vers un r´cepteur B, plusieurs parcours d’acheminement ´tant
      e    e     e          e              e                                              e
possibles. Si on suppose que les alt´rations des messages sont des ´v`nements ind´pendants, la
                                    e                              e e           e
probabilit´ de non alt´ration le long d’un chemin est donc ´gale au produit des probabilit´s de
           e           e                                    e                             e
chaque arc le constituant. On cherche donc ` d´terminer un routage de fiabilit´ maximale de A `
                                            a e                               e               a
B (c’est ` dire un chemin de A ` B de probabilit´ maximale), repr´sent´ de la mani`re suivante :
         a                     a                e                e     e          e
a
` chaque sommet de ce chemin, on associe le sommet suivant.




                                            c IFSIC 2004
Chapitre 2

Graphes : un mod`le math´matique
                e       e

2.1       D´finitions math´matiques et notations
           e             e
2.1.1     L’objet math´matique
                      e
2.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.
                                                e

Ainsi, Γ ⊆ X 2 . Par d´finition d’un ensemble, entre deux sommets donn´s il existe au plus un
                       e                                                e
arc; on peut toutefois, dans certains cas, consid´rer des multi-graphes dans lesquels plusieurs
                                                 e
arcs distincts existent entre deux sommets, mais il faut alors adopter une d´finition diff´rente
                                                                            e            e
pour Γ.

Exemple : graphe G1
  X = {1,2,3,4,5,6,7,8,9}

   Γ = {(1,2),(1,3),(2,5),(3,3),(3,4),(3,6),(4,2),(4,5),(5,6),(5,7),(5,8),(6,3),(8,7)}

2.1.1.2    Vision fonctionnelle


   D´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                                           e
des 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    a
de X revient ` d´cider, pour chaque xi , si cet ´l´ment fait partie ou non du sous-ensemble. Il y a
              a e                                ee
donc n d´cisions binaires ind´pendantes, soit 2 × 2 × . . . × 2 = 2n = 2|X| constructions possibles.
         e                      e

Exemple : 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                                    e
l’´quivalence suivante :
  e

       xRy ⇐⇒ (x,y) ∈ Γ

   Nous verrons ult´rieurement qu’` chaque propri´t´ des relations binaires correspond une
                     e            a              ee
propri´t´ du graphe.
      ee

´
Equivalences et ordres Parmi les relations binaires, celles qui v´rifient les propri´t´s de
                                                                         e                ee
r´flexivit´ et transitivit´ sont particuli`rement importantes. On les appelle des pr´-ordres, car
 e        e              e               e                                           e
elles 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                 ee
estampille enti`re n(x). Il est facile de voir que la relation x ∼ y ⇔ n(x) ≤ n(y) est un pr´-
                 e                                                                             e
ordre. Deux ´l´ments distincts x et y sont ex-aequo si n(x) = n(y). La figure 2.1.a montre le
               ee
graphe 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                                            e
sym´trique. Ainsi, la relation d’ex-aequo est une ´quivalence car elle est sym´trique (la figure
     e                                               e                           e
2.1.b en montre le graphe) tandis que la relation x        y ⇔ x = y ∨ n(x) < n(y) est un ordre
car elle est antisym´trique (figure 2.1.c). Rappellons qun ordre est dit total si pour tout couple
                     e
d’´l´ments x et y, on a toujours xRy ou yRx. Un ordre non complet est dit partiel. C’est le cas
  ee
notamment de l’exemple de la figure 2.1.c), car certains ´l´ments ne sont pas comparables.
                                                            ee


2.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    10

j          g          c           b           e       a         a) preordre
                                                                 (sans les consequences transitives
                                                                 ni les boucles de reflexivite)
                      h           d           f       k


                                  i


j          g          c           b           e       a         b) equivalence
                                                                 (sans les boucles de reflexivite)
                      h           d           f       k


                                  i



j          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
                                         e



2.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        e
graphe 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
                             Γ=Γ   −1


Anti-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                                                                         19


2.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.
                                        e

Un 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 e
Un 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 e
l’origine et l’extr´mit´ pour un circuit)
                   e   e


2.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                  a
utiliser :

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                                                     e
lorsqu’il y a beaucoup de sommets et/ou d’arcs. Leurs attributs sont port´s sur le graphique,
                                                                          e
ce 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 e
graphes (card(X) ≤ 10).

b)- un tableau d’attribution des arcs. S’il s’agit de repr´senter l’existence des arcs, ce ta-
                                                          e
bleau 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 3

Aspect algorithmique : un type de
donn´es abstrait
    e

   Dans ce chapitre on donne d’abord trois exemples de repr´sentation algorithmique. Puis
                                                                 e
on fait abstraction des repr´sentations particuli`res en d´finissant le type de donn´es abstrait
                            e                    e        e                        e
GRAPHE. Le probl`me est de repr´senter, ` l’aide de structures de donn´es algorithmiques, le
                  e              e        a                               e
doublet math´matique (X,Γ) avec Γ ⊆ X 2 .
              e


3.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                      e
Elle est pr´sent´e ci-dessous.
           e    e

3.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 e
suppose 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’expression
x.num d´signe alors le num´ro du sommet x.
       e                    e

3.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                                                       e
extr´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                                              e
que 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                  e
ou 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         e
LISTE[G]. La premi`re d´crit les tableaux ` une dimension, la deuxi`me les tableaux ` deux
                   e     e                   a                         e                a
dimensions et la troisi`me les listes chaˆ ees. L’identificateur G d´signe le type des ´l´ments
                       e                  ın´                      e                  ee
contenus dans ces structures (type g´n´rique formel).
                                    e e



3.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.nmax


On a toujours l’implication ∀i ∀j : G.m[i,j] ⇒ G.vs[i] ∧ G.vs[j] (un arc ne peut relier que des
sommets existants).
    Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont repr´sent´s de la mani`re
                   e                                                      e    e            e
suivante :
    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   10
vs
          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                   v
m        5                                            v       v     v                 les cases vides ont
         6                    v                                                       des valeurs faux
         7
         8                                                    v
         9
        10

3.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.
                e
On a toujours : si G.vs[i] est faux, alors G.ts[i] est n´cessairement vide (en fait, cette liste
                                                        e
n’est mˆme pas d´finie). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont
        e         e                       e
repr´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   10
vs
              v       v   v   v   v       v   v   v       v    f

3.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 ses
successeurs. 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    e
mani`re suivante :
    e
   x ∈ X ⇔ G.lsom.contient(x)

                                                              c IFSIC 2004
24                                             Aspect algorithmique : un type de donn´es abstrait
                                                                                     e

ts        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 G1


3.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                            e
d´crits ` l’aide de traitements plus ou moins ´l´mentaires sur le graphe mod´lisant le probl`me.
  e     a                                      ee                              e              e
Cette description –enchaˆ   ınement contrˆl´ des actions– est ´videmment, ` un certain niveau,
                                         oe                    e             a
intrins`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                e
un 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         e
Exprim´ en faisant abstraction d’une repr´sentation concr`te particuli`re, on obtient le texte:
         e                                  e                e           e


GRAPHE 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                       e
interne du graphe : il suffit, dans chaque cas, de ”traduire” convenablement les op´rations in-
                                                                                    e
diqu´s en italique.
     e
    Dans ce texte, le type GRAPHE n’est pas d´fini concr`tement : on l’appelle type abstrait.
                                               e         e
Cela signifie, qu’` ce niveau d’expression, on n’a pas besoin d’en savoir plus sur les structures
                 a
de 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                        e
type abstrait GRAPHE, et tout ce que l’on a besoin de connaˆıtre est leur s´mantique. Ainsi, on
                                                                           e
aura 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       e
repr´sentations ”concr`tes” des graphes peuvent ˆtre elles aussi consid´r´es comme des types de
    e                  e                          e                    ee
donn´es abstraits (c’est le cas par exemple du type g´n´rique LISTE[T]). Ces types de donn´es
     e                                                e e                                   e
abstraits peuvent ` leur tour ˆtre manipul´s ` travers leurs m´thodes, et mis en oeuvre selon
                   a            e           e a                 e
diverses 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
                                                                             e


BOOL contient(T x) est telle que .contient(x) renvoie vrai si et seulement si la liste         contient
un ´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     e
niques de programmation ou structures de donn´es. Il faut n´anmoins mettre l’accent sur le
                                                     e             e
fait essentiel que la d´marche est absolument identique dans le cas des graphes, des listes, etc... :
                        e
s´parer la partie intrins`que d’un algorithme des d´tails de mise en oeuvre, ou d’impl´mentation.
 e                        e                          e                                    e
On peut toujours d´finir de nouveaux niveaux d’abstraction, ` condition de bien pr´ciser les
                       e                                            a                        e
types 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 sont
ee               e                   e          e           e
eux aussi des types abstraits par rapport ` la machine, leur impl´mentation concr`te en m´moire
                                           a                       e                   e         e
d´pendant du mat´riel utilis´ ; les m´thodes sont alors, dans un langage donn´, les op´rations
  e                  e        e         e                                            e         e
pr´d´finies du langage telles que : lecture/´criture, op´rations arithm´tiques ou logiques, com-
   e e                                        e           e                e
paraisons, etc...
    Cette d´marche de programmation par abstractions successives est r´alis´e, notamment,
             e                                                                   e e
dans les langages dits de “programmation par objets”, appel´s encore, improprement, “langages
                                                                e
orient´s objets”. Citons, parmi les plus connus, Eiffel, Java, C++, dans une moindre mesure
       e
Turbo-Pascal (` partir de la version 6) ou encore, plus anciens, Simula et Smalltalk. Dans
                    a
ces langages, les types sont d´crits dans des classes, contenant tout ` la fois les valeurs des objets
                              e                                        a
du type (appel´s attributs) et les m´thodes permettant de manipuler ces valeurs (en lecture ou
                 e                    e
en ´criture). Nous renvoyons, pour plus de d´tail, aux cours de programmation s’appuyant sur
    e                                           e
la d´marche par objets. Dans la suite de ce polycopi´, les notations utilis´es dans la description
     e                                                  e                      e
des algorithmes seront proches de celles utilis´es dans de tels langages, sans pour autant ˆtre li´e
                                                e                                              e      e
a
` l’un d’entre eux en particulier. Le . est l’op´rateur d’application de m´thode ou d’attribut `
                                                  e                            e                       a
l’objet d´sign´. Par exemple, G.ajout arc(i,j) est une instruction, signifiant que l’on applique
          e    e
l’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      e
G. De mˆme, G.valid arc(i,j) est une expression dont l’´valuation renvoie une valeur bool´enne,
         e                                                  e                                    e
valant vrai si et seulement si l’objet de type GRAPHE d´sign´ par G poss`de l’arc (i, j).
                                                          e   e              e


3.4     Notations
    L’approche objet interdit en g´n´ral d’acc´der directement aux attributs d’un objet distant,
                                  e e          e
que 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 e
m´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
                           e

REEL 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    e
que si le type SOMMET poss`de une m´thode
                           e        e


                                               c IFSIC 2004
3.4. Notations                                                                                     27


affecter lambda(REEL v)
 post lambda=v
qui effectue, de mani`re interne, l’affectation lambda:=v. L’instruction externe r´alisant une telle
                      e                                                         e
mise ` 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      e
le 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         e
tion.     L’´criture
            e            ci-dessus    est    alors     ´quivalente
                                                       e               `
                                                                       a     l’instruction    d’appel
x.affecter lambda(4.18). Dans un mˆme souci de simplification, une expression telle x.lambda
                                        e
d´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 de
e      e         e
telles 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                            e
l’´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 e
rons 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          e
C, et att un attribut de ce type, les deux notations att(x) et x.att seront consid´r´es comme
                                                                                         ee
ayant la mˆme signification.
            e




                                              c IFSIC 2004
28   Aspect algorithmique : un type de donn´es abstrait
                                           e




           c IFSIC 2004
Chapitre 4

Relations et op´rateurs entre
               e
graphes

    Dans ce qui suit, nous d´signerons par G(X) l’ensemble des graphes ayant X comme ensemble
                            e
de sommets.
    Sur G(X), nous pouvons consid´rer un certain nombre de relations ou op´rations; dans ce
                                     e                                        e
chapitre, nous en ´tudions quelques unes. On note :
                  e

      G1 = (X,Γ1 ),G2 = (X,Γ2 )

   deux ´l´ments de G(X).
        ee


4.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
                               e
le cas de toute partie finie d’un ensemble ordonn´.
                                                e


4.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
                                                                       e


4.3      Composition
4.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      ee
a
` 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-exemple

G1 = G2                                                                                  2
                                                            2
G3 = D
                                              1                               1
G1 ◦ G2 = (X,∅)
(G1 ◦ G2 ) ∪ G3 = D
                                                            3                            3
D’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                                                                                  31



D´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 ◦ Γ3

ce qui montre que G1 ◦ G3 G2 ◦ G3 .
    La deuxi`me in´galit´ se montre de mani`re analogue.P
            e     e     e                  e

4.3.2     Algorithme
   Nous donnons ci-dessous un algorithme de construction de G3 = G1 ◦ G2 , en supposant pour
simplifier 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
                                              e
d´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                                                  e
ci-dessous en d´termine l’invariant :
               e

                     zone deja examinee                     zone non encore examinee

              1                                z    z+ 1                               n


c’est-`-dire, plus formellement :
       a
       I ≡ (0 ≤ z ≤ n) ∧ (b = ∃t 1 ≤ t ≤ z : P (t))
    Le calcul sera termin´ lorsque :
                            e
       (z = n) ∨ b
et, 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 *)
                                                         e
Le 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                                    e
suivante :

      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.
                       e

4.3.2.2    Texte de l’algorithme
     Il est donn´ page 32.
                e



                               ALGORITHME DE CONSTRUCTION DE G1◦G2



GRAPHE 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, exprimant
le 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
 fin




4.3.3     Complexit´
                   e
    La boucle interne depuis ... jqa comporte au plus n pas , et elle est ex´cut´e exactement n2
                                                                            e e
fois. La complexit´ maximum est donc :
                  e

2n3 acc`s validarc
        e
n3 op´rations et
     e
n2 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.
                                                               e
Remarques
   1) La complexit´ de mise en œuvre de chacun des acc`s d´pend ´videmment de la repr´sentation
                   e                                     e e       e                      e
choisie 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                       e
de 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=1


4.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
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66
C66

Más contenido relacionado

La actualidad más candente

Annexes Logiciel Pl7
Annexes Logiciel Pl7Annexes Logiciel Pl7
Annexes Logiciel Pl7
youri59490
 
Plan local de l'urbanisme
Plan local de l'urbanismePlan local de l'urbanisme
Plan local de l'urbanisme
Kouki Urb
 
pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...
pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...
pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...
Ben Messaoud Aymen
 
Introduction au statistiques inférentielle
Introduction au statistiques inférentielleIntroduction au statistiques inférentielle
Introduction au statistiques inférentielle
Taha Can
 
Rapport d'avancement estimation pertes dimensionnement radiateurs_powerex
Rapport d'avancement estimation pertes dimensionnement radiateurs_powerexRapport d'avancement estimation pertes dimensionnement radiateurs_powerex
Rapport d'avancement estimation pertes dimensionnement radiateurs_powerex
idkhajine
 

La actualidad más candente (18)

Annexes Logiciel Pl7
Annexes Logiciel Pl7Annexes Logiciel Pl7
Annexes Logiciel Pl7
 
Doc fr pic16_f87x
Doc fr pic16_f87xDoc fr pic16_f87x
Doc fr pic16_f87x
 
Plan local de l'urbanisme
Plan local de l'urbanismePlan local de l'urbanisme
Plan local de l'urbanisme
 
Algo
AlgoAlgo
Algo
 
Mmc
MmcMmc
Mmc
 
PMP Report
PMP ReportPMP Report
PMP Report
 
Graphes
GraphesGraphes
Graphes
 
These mercier christophe
These mercier christopheThese mercier christophe
These mercier christophe
 
pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...
pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...
pfe Conception et Réalisation d’un Portail WEB D’Evaluation Des Performance d...
 
Trigonometrie
TrigonometrieTrigonometrie
Trigonometrie
 
E9907
E9907E9907
E9907
 
Introduction au statistiques inférentielle
Introduction au statistiques inférentielleIntroduction au statistiques inférentielle
Introduction au statistiques inférentielle
 
Ms es 70-290_0.97_fr
Ms es 70-290_0.97_frMs es 70-290_0.97_fr
Ms es 70-290_0.97_fr
 
Rapport de Mémoire Master Recherche
Rapport de Mémoire Master RechercheRapport de Mémoire Master Recherche
Rapport de Mémoire Master Recherche
 
defour phd
defour phddefour phd
defour phd
 
Tdm pujolle
Tdm pujolleTdm pujolle
Tdm pujolle
 
Rapport d'avancement estimation pertes dimensionnement radiateurs_powerex
Rapport d'avancement estimation pertes dimensionnement radiateurs_powerexRapport d'avancement estimation pertes dimensionnement radiateurs_powerex
Rapport d'avancement estimation pertes dimensionnement radiateurs_powerex
 
CV Méthode Brutale François Meuleman
CV Méthode Brutale François MeulemanCV Méthode Brutale François Meuleman
CV Méthode Brutale François Meuleman
 

Destacado

Introduction aux algorithmes map reduce
Introduction aux algorithmes map reduceIntroduction aux algorithmes map reduce
Introduction aux algorithmes map reduce
Mathieu Dumoulin
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Hadjer BENHADJ DJILALI
 
French Grammar
French GrammarFrench Grammar
French Grammar
Miss Fanny
 
Airbus A380
Airbus  A380Airbus  A380
Airbus A380
Fungu
 
Visite Du Louvre
Visite Du LouvreVisite Du Louvre
Visite Du Louvre
guestc35121
 
Presentación etv+i y fes agosto 2013. resumida y buena
Presentación etv+i y fes agosto 2013. resumida y buenaPresentación etv+i y fes agosto 2013. resumida y buena
Presentación etv+i y fes agosto 2013. resumida y buena
Salvador Martínez Puche
 
Présentation Réunion 5/1
Présentation Réunion 5/1Présentation Réunion 5/1
Présentation Réunion 5/1
jwarembourg
 

Destacado (20)

Introduction aux algorithmes map reduce
Introduction aux algorithmes map reduceIntroduction aux algorithmes map reduce
Introduction aux algorithmes map reduce
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
 
French Grammar
French GrammarFrench Grammar
French Grammar
 
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
FORAG - Mobile Effects 2014-2 - #Mobile – Aktuelle Einblicke in die Welt der ...
 
Website
WebsiteWebsite
Website
 
iOS UX par iMakeit4U
iOS UX par iMakeit4UiOS UX par iMakeit4U
iOS UX par iMakeit4U
 
Airbus A380
Airbus  A380Airbus  A380
Airbus A380
 
Rdcredd
RdcreddRdcredd
Rdcredd
 
Visite Du Louvre
Visite Du LouvreVisite Du Louvre
Visite Du Louvre
 
Begoña. l'enfance de mon père
Begoña. l'enfance de mon pèreBegoña. l'enfance de mon père
Begoña. l'enfance de mon père
 
J'aime un peu / beaucoup...
J'aime un peu / beaucoup...J'aime un peu / beaucoup...
J'aime un peu / beaucoup...
 
Presentación etv+i y fes agosto 2013. resumida y buena
Presentación etv+i y fes agosto 2013. resumida y buenaPresentación etv+i y fes agosto 2013. resumida y buena
Presentación etv+i y fes agosto 2013. resumida y buena
 
David et miguel
David et miguelDavid et miguel
David et miguel
 
Présentation Réunion 5/1
Présentation Réunion 5/1Présentation Réunion 5/1
Présentation Réunion 5/1
 
Bélesta sous la neige
Bélesta sous la neigeBélesta sous la neige
Bélesta sous la neige
 
Lecole en france
Lecole en franceLecole en france
Lecole en france
 
Lennon
LennonLennon
Lennon
 
IBM ICS mobile guide_2012
IBM ICS mobile guide_2012IBM ICS mobile guide_2012
IBM ICS mobile guide_2012
 
Media Aces Déc.09
Media Aces Déc.09Media Aces Déc.09
Media Aces Déc.09
 
Les horaires d'ouverture
Les horaires d'ouvertureLes horaires d'ouverture
Les horaires d'ouverture
 

Similar a C66

Cours mecasol 0_2
Cours mecasol 0_2Cours mecasol 0_2
Cours mecasol 0_2
kahinarouam
 
Cours base données
Cours base donnéesCours base données
Cours base données
kerosina
 
Sout3
Sout3Sout3
Sout3
3on
 
Gestion risques
Gestion risquesGestion risques
Gestion risques
leila2001
 

Similar a C66 (20)

Analyse s1
Analyse s1Analyse s1
Analyse s1
 
Cours mecasol 0_2
Cours mecasol 0_2Cours mecasol 0_2
Cours mecasol 0_2
 
Analyse2 00
Analyse2 00Analyse2 00
Analyse2 00
 
Cours base données
Cours base donnéesCours base données
Cours base données
 
Sout3
Sout3Sout3
Sout3
 
matrices mpsi classe préparatoire
matrices mpsi classe préparatoire matrices mpsi classe préparatoire
matrices mpsi classe préparatoire
 
LatexPourLeProfDeMaths.pdf
LatexPourLeProfDeMaths.pdfLatexPourLeProfDeMaths.pdf
LatexPourLeProfDeMaths.pdf
 
cours de Matlab
 cours de Matlab cours de Matlab
cours de Matlab
 
Gestion risques
Gestion risquesGestion risques
Gestion risques
 
Object detection and recognition in digital images
Object detection and recognition in digital imagesObject detection and recognition in digital images
Object detection and recognition in digital images
 
Report MyProof
Report MyProofReport MyProof
Report MyProof
 
Cours matlab
Cours matlabCours matlab
Cours matlab
 
Rapport de stage
Rapport de stageRapport de stage
Rapport de stage
 
Polycope java enseignant
Polycope java enseignantPolycope java enseignant
Polycope java enseignant
 
Langage c
Langage cLangage c
Langage c
 
Dimensionnement d'un Tour (IGH) R+17 sous Eurocodes
Dimensionnement d'un Tour (IGH)  R+17 sous Eurocodes Dimensionnement d'un Tour (IGH)  R+17 sous Eurocodes
Dimensionnement d'un Tour (IGH) R+17 sous Eurocodes
 
Nagios
NagiosNagios
Nagios
 
cours-plaques
cours-plaquescours-plaques
cours-plaques
 
Vers une mesure plus pertinente de l'efficacité publicitaire des campagnes Di...
Vers une mesure plus pertinente de l'efficacité publicitaire des campagnes Di...Vers une mesure plus pertinente de l'efficacité publicitaire des campagnes Di...
Vers une mesure plus pertinente de l'efficacité publicitaire des campagnes Di...
 
courspython3.pdf
courspython3.pdfcourspython3.pdf
courspython3.pdf
 

Más de Wael Ismail

Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
Wael Ismail
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
Wael Ismail
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012
Wael Ismail
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de données
Wael Ismail
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentation
Wael Ismail
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texte
Wael Ismail
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
Wael Ismail
 
Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)
Wael Ismail
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
Wael Ismail
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)
Wael Ismail
 

Más de Wael Ismail (20)

Dc23 si
Dc23 siDc23 si
Dc23 si
 
Dc13 si
Dc13 siDc13 si
Dc13 si
 
Ds1
Ds1Ds1
Ds1
 
Dc23 si
Dc23 siDc23 si
Dc23 si
 
Dc2cc
Dc2ccDc2cc
Dc2cc
 
Dc2
Dc2Dc2
Dc2
 
Devoir de synthèse N°1
Devoir de synthèse N°1 Devoir de synthèse N°1
Devoir de synthèse N°1
 
Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012Devoir de contrôle N°1 Système et réseaux 2011-2012
Devoir de contrôle N°1 Système et réseaux 2011-2012
 
devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012devoir de contrôle N° 1 TIC 2011-2012
devoir de contrôle N° 1 TIC 2011-2012
 
Ch5 base de données
Ch5   base de donnéesCh5   base de données
Ch5 base de données
 
Ch4 internet
Ch4   internetCh4   internet
Ch4 internet
 
Ch3 eléments de présentation
Ch3   eléments de présentationCh3   eléments de présentation
Ch3 eléments de présentation
 
Ch2 tableur
Ch2  tableurCh2  tableur
Ch2 tableur
 
Ch1 traitement de texte
Ch1   traitement de texteCh1   traitement de texte
Ch1 traitement de texte
 
Les algorithmes d’approximation
Les algorithmes d’approximationLes algorithmes d’approximation
Les algorithmes d’approximation
 
Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)Presentation algo-irem-2x2 (1)
Presentation algo-irem-2x2 (1)
 
Les structures en c++
Les structures en c++Les structures en c++
Les structures en c++
 
Les structures en c++ (1)
Les structures en c++ (1)Les structures en c++ (1)
Les structures en c++ (1)
 
L2006
L2006L2006
L2006
 
Jmc habile
Jmc habileJmc habile
Jmc habile
 

C66

  • 1. ALGORITHMIQUE DES GRAPHES Jean-Michel H´lary e 1 IFSIC Cours C66 Juin 2004 1. c IFSIC 2004
  • 2. 2 c IFSIC 2004
  • 3. Table des mati`res e 1 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 . . . . . . . . . . . . . . . 12 2 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 . . . . . . . . . . . . . . . . . . . . . . 19 3 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4 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 ` 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5 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 . 49 6 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. ` 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 . . . . . . . . . . . . . . . . . . . . 66 7 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 . . . . . . . . . . . . . . 94 8 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 ` 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 e 9 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 . . . . . . . . . . . . . . . . . . . . . . . 142 10 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. ` 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 11 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 . . . . . . . . . . . . . 179 A Les op´rations de la classe GRAPHE et leur s´mantique e e 181 c IFSIC 2004
  • 8. 8 ` TABLE DES MATIERES c IFSIC 2004
  • 9. Chapitre 1 Introduction, exemples 1.1 Historique La th´orie des graphes a pris naissance en 1736 : le math´maticien allemand L. Euler e e apporta une r´ponse au probl`me que se posaient les habitants de la ville de Koenigsberg ; ` e e a savoir :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 e ayant 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 e provoquant un d´veloppement de la th´orie des graphes comme mod`les de probl`mes concrets ; e e e e cet 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 ee verte dans les ann´es 1960, avec le d´veloppement des sciences de l’information et de la commu- e e nication. Des informaticiens tels que Dijkstra, Knuth, Wirth, Sakharovitch, Gondran et beaucoup d’autres, participent au d´veloppement de l’algorithmique des graphes autant qu’` e a la mod´lisation de probl`mes n´s de ces nouvelles sciences en terme de graphes. Une approche e e e historique se trouve dans l’introduction de [GM79], qui renvoie d’ailleurs ` un ouvrage historique a complet sur la premi`re ´poque de la th´orie des graphes (1746-1936) [BLW76]. e e e 1.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 e propres probl`mes (via la mod´lisation en termes de graphes). Ce cours s’int´resse essentiellement e e e c IFSIC 2004
  • 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 algorithmes adapt´s aux principaux types de probl`mes de graphe et la mani`re de les programmer, il faut e e e mettre l’accent sur un aspect essentiel : l’´tude des techniques de programmation d’algorithmes e de graphe. Cette ´tude est enrichissante par elle- mˆme car elle donne l’occasion d’aborder sur e e des exemples non triviaux des notions d’algorithmique aussi fondamentales que les structures de donn´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 e donnons dans la section suivante trois exemples de situations– d’origine informatique ou non – qui se prˆtent ` une telle mod´lisation. e a e 1.3 Exemples 1.3.1 Le probl`me du chou, de la ch`vre et du loup e e L’´nonc´ e e Un passeur, disposant d’une barque, doit faire traverser une rivi`re ` un chou, une ch`vre e a e et un loup. Outre le passeur, la barque peut contenir au plus une des trois unit´s qui doivent e traverser. D’autre part, pour des raisons de s´curit´, le passeur ne doit jamais laisser seuls la e e ch`vre et le chou, ou le loup et la ch`vre. (Par contre, le loup ne mangera pas le chou... et e e r´ciproquement). Comment le passeur doit-il s’y prendre? e Mod´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 e final, et des transitions autoris´es. Chaque ´tat se traduit par un sommet, ou point. Chaque e e transition autoris´e d’un ´tat ` un autre se traduit par un arc, allant du premier ´tat vers le e e a e second. Dans cet exemple, un ´tat est une configuration possible sur la rive de d´part. D´signons e e e par P le passeur, L le loup, X la ch`vre, C le chou. Une configuration sera alors d´sign´e par e e e l’ensemble des pr´sents sur la rive de d´part. L’´tat initial est PLXC et l’´tat final ∅. Chaque e e e e arc, repr´sentant une transition possible, sera libell´ –pour la clart´ de la mod´lisation– par la e e e e description de l’action entreprise (A signifie : aller , R signifie retour. On obtient alors le graphe suivant : Probl`mee Chaque solution correspond ` un chemin dans le graphe, de PLXC ` ∅ et alternant les ´tiquettes a a e A et R. Un chemin correspond ` une s´quence d’actions enchaˆ a e ınables les unes aux autres (l’´tat e initial d’une action est ´gal ` l’´tat final de la pr´c´dente). e a e e e R´solution e Pour l’instant, ”` la main” (ou ”au pif”, comme on veut !), on trouve deux solutions : a soit 7 travers´es simples, quelle que soit la solution. Laissons au lecteur le soin de fournir au e passeur, en langage naturel, les explications n´cessaires ` l’accomplissement de sa mission. e a c IFSIC 2004
  • 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 e 1.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 a chacun a besoin de 2 baguettes. Lorsqu’un des philosophes d´sire manger, il requiert deux e baguettes et ne les lib`re que lorsqu’il a fini son repas 1 . Par contre, tant qu’il n’a pas obtenu e les deux baguettes, il ne peut rien faire qu’attendre : mˆme s’il a eu la chance d’obtenir une e baguette, 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 e au mˆme moment, et chacun se pr´cipite sur les baguettes... mais chacun n’en obtient qu’une. e e Pour 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 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 sortir de ce blocage mutuel, et vont donc mourir de faim, sauf si quelqu’un (c’est-`-dire l’un d’eux, a ou un personnage ext´rieur) se rend compte de la situation et intervient autoritairement, par e exemple 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 e complexes, o` plusieurs entit´s (processeurs, p´riph´riques,etc.) se partagent des ressources. u e e e Les entit´s en question ´tant a priori moins intelligentes que les philosophes chinois, il faut e e pallier cette lacune en ´tant capable de d´tecter automatiquement les situations d’interblocage. e e Quel que soit le nombre d’entit´s et de ressources, les configurations de possession/requˆte des e e ressources 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.e Ainsi, 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 e cours du temps. Mais ` chaque instant, il y a un graphe et un seul et de plus, si une situation a d’interblocage apparaˆ le graphe n’´volue plus. Maintenant, il est clair que l’interblocage entre ıt, e plusieurs entit´s se produit si et seulement si les sommets correspondants sont situ´s sur un e e circuit, c’est ` dire un chemin dont l’extr´mit´ co¨ a e e ıncide avec l’origine. C’est donc un algorithme de 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 e mettant en jeu des objets (les entit´s) et des relations entre ces objets (la requˆte d’une ressource e e poss´d´e par un autre). e e 1.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 e soit directement, soit par l’interm´diaire d’autres sites, en envoyant des messages qui circulent e le 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 selon e c IFSIC 2004
  • 13. 1.3. Exemples 13 le genre d’´tudes que l’on souhaite effectuer, le graphe mod´lisant le r´seau devra ˆtre pr´cis´; e e e e e e par 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 a de 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 e Exemple 1. R´sistance aux pannes Dans un r´seau, il peut se produire qu’une ligne de e e communication soit coup´e, ne transmettant plus aucun message. Il en est de mˆme pour un site e e dont la panne peut ˆtre assimil´e ` la coupure de toutes les lignes qui y aboutissent ou qui en e e a partent. Supposons que, dans un r´seau, on achemine des informations d’un sommet A vers un e sommet B, ´ventuellement via des sites interm´diaires servant de relais. De telles informations e e doivent emprunter des chemins allant de A ` B. Ainsi, une information issue de A parviendra ` B si a a et seulement si au moins un chemin est valide (c’est ` dire la s´quence d’arcs qui le constitue ne a e comporte que des arcs non d´t´rior´s). Le probl`me pos´ est alors le suivant : quel est le nombre ee e e e maximum de pannes auquel cet acheminement peut r´sister? Autrement dit, quel est le nombre e maximum de chemins ind´pendants existant entre A et B? (deux chemins sont ind´pendants si e e et seulement si ils sont disjoints au sens des arcs et des sommets interm´diaires). e c IFSIC 2004
  • 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 a lisation (site ou ligne) il reste toujours un chemin valide. Par contre il existe des configurations a ` 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 a Exemple 2. Routage de fiabilit´ maximale Dans ce mod`le, chaque ligne (arc) est munie e e d’une valeur, ´gale ` la probabilit´ qu’un message ´mis ` l’origine parvienne sans alt´ration ` e a e e a e a l’extr´mit´. Un ´metteur A ´met vers un r´cepteur B, plusieurs parcours d’acheminement ´tant e e e e e e possibles. Si on suppose que les alt´rations des messages sont des ´v`nements ind´pendants, la e e e e probabilit´ de non alt´ration le long d’un chemin est donc ´gale au produit des probabilit´s de e e e e chaque arc le constituant. On cherche donc ` d´terminer un routage de fiabilit´ maximale de A ` a e e a B (c’est ` dire un chemin de A ` B de probabilit´ maximale), repr´sent´ de la mani`re suivante : a a e e e e a ` chaque sommet de ce chemin, on associe le sommet suivant. c IFSIC 2004
  • 15. Chapitre 2 Graphes : un mod`le math´matique e e 2.1 D´finitions math´matiques et notations e e 2.1.1 L’objet math´matique e 2.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. e Ainsi, Γ ⊆ X 2 . Par d´finition d’un ensemble, entre deux sommets donn´s il existe au plus un e e arc; on peut toutefois, dans certains cas, consid´rer des multi-graphes dans lesquels plusieurs e arcs distincts existent entre deux sommets, mais il faut alors adopter une d´finition diff´rente e e pour Γ. Exemple : graphe G1 X = {1,2,3,4,5,6,7,8,9} Γ = {(1,2),(1,3),(2,5),(3,3),(3,4),(3,6),(4,2),(4,5),(5,6),(5,7),(5,8),(6,3),(8,7)} 2.1.1.2 Vision fonctionnelle D´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 e des parties de X vient du fait que, si X est de cardinal fini |X|, le nombre de sous-ensembles c IFSIC 2004
  • 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 a de X revient ` d´cider, pour chaque xi , si cet ´l´ment fait partie ou non du sous-ensemble. Il y a a e ee donc n d´cisions binaires ind´pendantes, soit 2 × 2 × . . . × 2 = 2n = 2|X| constructions possibles. e e Exemple : 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 e l’´quivalence suivante : e xRy ⇐⇒ (x,y) ∈ Γ Nous verrons ult´rieurement qu’` chaque propri´t´ des relations binaires correspond une e a ee propri´t´ du graphe. ee ´ Equivalences et ordres Parmi les relations binaires, celles qui v´rifient les propri´t´s de e ee r´flexivit´ et transitivit´ sont particuli`rement importantes. On les appelle des pr´-ordres, car e e e e e elles 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 ee estampille enti`re n(x). Il est facile de voir que la relation x ∼ y ⇔ n(x) ≤ n(y) est un pr´- e e ordre. Deux ´l´ments distincts x et y sont ex-aequo si n(x) = n(y). La figure 2.1.a montre le ee graphe 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 e sym´trique. Ainsi, la relation d’ex-aequo est une ´quivalence car elle est sym´trique (la figure e e e 2.1.b en montre le graphe) tandis que la relation x y ⇔ x = y ∨ n(x) < n(y) est un ordre car elle est antisym´trique (figure 2.1.c). Rappellons qun ordre est dit total si pour tout couple e d’´l´ments x et y, on a toujours xRy ou yRx. Un ordre non complet est dit partiel. C’est le cas ee notamment de l’exemple de la figure 2.1.c), car certains ´l´ments ne sont pas comparables. ee 2.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. 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 10 j g c b e a a) preordre (sans les consequences transitives ni les boucles de reflexivite) h d f k i j g c b e a b) equivalence (sans les boucles de reflexivite) h d f k i j 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 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 e 2.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 e graphe 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 Γ=Γ −1 Anti-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. 2.2. Notion de chemin 19 2.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. e Un 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 e Un 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 e l’origine et l’extr´mit´ pour un circuit) e e 2.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 a utiliser : 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 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 e lorsqu’il y a beaucoup de sommets et/ou d’arcs. Leurs attributs sont port´s sur le graphique, e ce 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 e graphes (card(X) ≤ 10). b)- un tableau d’attribution des arcs. S’il s’agit de repr´senter l’existence des arcs, ce ta- e bleau 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. Chapitre 3 Aspect algorithmique : un type de donn´es abstrait e Dans ce chapitre on donne d’abord trois exemples de repr´sentation algorithmique. Puis e on fait abstraction des repr´sentations particuli`res en d´finissant le type de donn´es abstrait e e e e GRAPHE. Le probl`me est de repr´senter, ` l’aide de structures de donn´es algorithmiques, le e e a e doublet math´matique (X,Γ) avec Γ ⊆ X 2 . e 3.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 e Elle est pr´sent´e ci-dessous. e e 3.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 e suppose 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’expression x.num d´signe alors le num´ro du sommet x. e e 3.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 e extr´mit´) de γ. e e c IFSIC 2004
  • 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 e que 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 e ou 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 e LISTE[G]. La premi`re d´crit les tableaux ` une dimension, la deuxi`me les tableaux ` deux e e a e a dimensions et la troisi`me les listes chaˆ ees. L’identificateur G d´signe le type des ´l´ments e ın´ e ee contenus dans ces structures (type g´n´rique formel). e e 3.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.nmax On a toujours l’implication ∀i ∀j : G.m[i,j] ⇒ G.vs[i] ∧ G.vs[j] (un arc ne peut relier que des sommets existants). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont repr´sent´s de la mani`re e e e e suivante : 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 10 vs v v v v v v v v v f c IFSIC 2004
  • 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 v m 5 v v v les cases vides ont 6 v des valeurs faux 7 8 v 9 10 3.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. e On a toujours : si G.vs[i] est faux, alors G.ts[i] est n´cessairement vide (en fait, cette liste e n’est mˆme pas d´finie). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont e e e repr´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 10 vs v v v v v v v v v f 3.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 ses successeurs. 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 e mani`re suivante : e x ∈ X ⇔ G.lsom.contient(x) c IFSIC 2004
  • 24. 24 Aspect algorithmique : un type de donn´es abstrait e ts 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 G1 3.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 e d´crits ` l’aide de traitements plus ou moins ´l´mentaires sur le graphe mod´lisant le probl`me. e a ee e e Cette description –enchaˆ ınement contrˆl´ des actions– est ´videmment, ` un certain niveau, oe e a intrins`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 e un 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 e Exprim´ en faisant abstraction d’une repr´sentation concr`te particuli`re, on obtient le texte: e e e e GRAPHE construction c’est local ENT i, j ; c IFSIC 2004
  • 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 e interne du graphe : il suffit, dans chaque cas, de ”traduire” convenablement les op´rations in- e diqu´s en italique. e Dans ce texte, le type GRAPHE n’est pas d´fini concr`tement : on l’appelle type abstrait. e e Cela signifie, qu’` ce niveau d’expression, on n’a pas besoin d’en savoir plus sur les structures a de 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 e type abstrait GRAPHE, et tout ce que l’on a besoin de connaˆıtre est leur s´mantique. Ainsi, on e aura 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 e repr´sentations ”concr`tes” des graphes peuvent ˆtre elles aussi consid´r´es comme des types de e e e ee donn´es abstraits (c’est le cas par exemple du type g´n´rique LISTE[T]). Ces types de donn´es e e e e abstraits peuvent ` leur tour ˆtre manipul´s ` travers leurs m´thodes, et mis en oeuvre selon a e e a e diverses 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 Aspect algorithmique : un type de donn´es abstrait e BOOL contient(T x) est telle que .contient(x) renvoie vrai si et seulement si la liste contient un ´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 e niques de programmation ou structures de donn´es. Il faut n´anmoins mettre l’accent sur le e e fait essentiel que la d´marche est absolument identique dans le cas des graphes, des listes, etc... : e s´parer la partie intrins`que d’un algorithme des d´tails de mise en oeuvre, ou d’impl´mentation. e e e e On peut toujours d´finir de nouveaux niveaux d’abstraction, ` condition de bien pr´ciser les e a e types 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 sont ee e e e e eux aussi des types abstraits par rapport ` la machine, leur impl´mentation concr`te en m´moire a e e e d´pendant du mat´riel utilis´ ; les m´thodes sont alors, dans un langage donn´, les op´rations e e e e e e pr´d´finies du langage telles que : lecture/´criture, op´rations arithm´tiques ou logiques, com- e e e e e paraisons, etc... Cette d´marche de programmation par abstractions successives est r´alis´e, notamment, e e e dans les langages dits de “programmation par objets”, appel´s encore, improprement, “langages e orient´s objets”. Citons, parmi les plus connus, Eiffel, Java, C++, dans une moindre mesure e Turbo-Pascal (` partir de la version 6) ou encore, plus anciens, Simula et Smalltalk. Dans a ces langages, les types sont d´crits dans des classes, contenant tout ` la fois les valeurs des objets e a du type (appel´s attributs) et les m´thodes permettant de manipuler ces valeurs (en lecture ou e e en ´criture). Nous renvoyons, pour plus de d´tail, aux cours de programmation s’appuyant sur e e la d´marche par objets. Dans la suite de ce polycopi´, les notations utilis´es dans la description e e e des algorithmes seront proches de celles utilis´es dans de tels langages, sans pour autant ˆtre li´e e e e a ` l’un d’entre eux en particulier. Le . est l’op´rateur d’application de m´thode ou d’attribut ` e e a l’objet d´sign´. Par exemple, G.ajout arc(i,j) est une instruction, signifiant que l’on applique e e l’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 e G. De mˆme, G.valid arc(i,j) est une expression dont l’´valuation renvoie une valeur bool´enne, e e e valant vrai si et seulement si l’objet de type GRAPHE d´sign´ par G poss`de l’arc (i, j). e e e 3.4 Notations L’approche objet interdit en g´n´ral d’acc´der directement aux attributs d’un objet distant, e e e que 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 e m´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 e REEL 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 e que si le type SOMMET poss`de une m´thode e e c IFSIC 2004
  • 27. 3.4. Notations 27 affecter lambda(REEL v) post lambda=v qui effectue, de mani`re interne, l’affectation lambda:=v. L’instruction externe r´alisant une telle e e mise ` 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 e le 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 e tion. L’´criture e ci-dessus est alors ´quivalente e ` a l’instruction d’appel x.affecter lambda(4.18). Dans un mˆme souci de simplification, une expression telle x.lambda e d´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 de e e e telles 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 e l’´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 e rons 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 e C, et att un attribut de ce type, les deux notations att(x) et x.att seront consid´r´es comme ee ayant la mˆme signification. e c IFSIC 2004
  • 28. 28 Aspect algorithmique : un type de donn´es abstrait e c IFSIC 2004
  • 29. Chapitre 4 Relations et op´rateurs entre e graphes Dans ce qui suit, nous d´signerons par G(X) l’ensemble des graphes ayant X comme ensemble e de sommets. Sur G(X), nous pouvons consid´rer un certain nombre de relations ou op´rations; dans ce e e chapitre, nous en ´tudions quelques unes. On note : e G1 = (X,Γ1 ),G2 = (X,Γ2 ) deux ´l´ments de G(X). ee 4.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 e le cas de toute partie finie d’un ensemble ordonn´. e 4.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 Relations et op´rateurs entre graphes e 4.3 Composition 4.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 ee a ` 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-exemple G1 = G2 2 2 G3 = D 1 1 G1 ◦ G2 = (X,∅) (G1 ◦ G2 ) ∪ G3 = D 3 3 D’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. 4.3. Composition 31 D´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 ◦ Γ3 ce qui montre que G1 ◦ G3 G2 ◦ G3 . La deuxi`me in´galit´ se montre de mani`re analogue.P e e e e 4.3.2 Algorithme Nous donnons ci-dessous un algorithme de construction de G3 = G1 ◦ G2 , en supposant pour simplifier 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 e d´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 e ci-dessous en d´termine l’invariant : e zone deja examinee zone non encore examinee 1 z z+ 1 n c’est-`-dire, plus formellement : a I ≡ (0 ≤ z ≤ n) ∧ (b = ∃t 1 ≤ t ≤ z : P (t)) Le calcul sera termin´ lorsque : e (z = n) ∨ b et, 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 *) e Le 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 e suivante : z←z + 1 ; b←P (z) c IFSIC 2004
  • 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. e 4.3.2.2 Texte de l’algorithme Il est donn´ page 32. e ALGORITHME DE CONSTRUCTION DE G1◦G2 GRAPHE 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, exprimant le 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 fin 4.3.3 Complexit´ e La boucle interne depuis ... jqa comporte au plus n pas , et elle est ex´cut´e exactement n2 e e fois. La complexit´ maximum est donc : e 2n3 acc`s validarc e n3 op´rations et e n2 acc`s ajoutarc e c IFSIC 2004
  • 33. 4.4. Puissances d’un graphe 33 On dit que c’est un algorithme en O(n3 ), en termes d’acc`s validarc. e Remarques 1) La complexit´ de mise en œuvre de chacun des acc`s d´pend ´videmment de la repr´sentation e e e e e choisie 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 e de 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=1 4.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