ALGORITHMIQUE DES GRAPHES                         Jean-Michel H´lary                                       e              ...
2    c IFSIC 2004
Table des mati`res              e1 Introduction, exemples                                                                 ...
4                                                                                                           `             ...
`TABLE DES MATIERES                                                                                                       ...
6                                                                                             `                           ...
`TABLE DES MATIERES                                                                                                       ...
8                                `                   TABLE DES MATIERES    c IFSIC 2004
Chapitre 1Introduction, exemples1.1    Historique    La th´orie des graphes a pris naissance en 1736 : le math´maticien al...
10                                                                      Introduction, exemples` la partie 1. Outre la n´ce...
1.3. Exemples                                                                                     11                      ...
12                                                                          Introduction, exemples        B poss`de S et r...
1.3. Exemples                                                                                  13le genre d’´tudes que l’o...
14                                                                     Introduction, exemples    Dans le r´seau 1, ce nomb...
Chapitre 2Graphes : un mod`le math´matique                e       e2.1       D´finitions math´matiques et notations        ...
16                                                            Graphes : un mod`le math´matique                            ...
2.1. D´finitions math´matiques et notations      e             e                                                           ...
18                                                              Graphes : un mod`le math´matique                          ...
2.2. Notion de chemin                                                                         192.2    Notion de chemin   ...
20                                                           Graphes : un mod`le math´matique                             ...
Chapitre 3Aspect algorithmique : un type dedonn´es abstrait    e   Dans ce chapitre on donne d’abord trois exemples de rep...
22                                        Aspect algorithmique : un type de donn´es abstrait                              ...
3.2. Trois exemples de repr´sentation concr`te                           e               e                                ...
24                                             Aspect algorithmique : un type de donn´es abstrait                         ...
3.3. Le type abstrait Graphe : les m´thodes                                    e                                          ...
26                                     Aspect algorithmique : un type de donn´es abstrait                                 ...
3.4. Notations                                                                                     27affecter lambda(REEL ...
28   Aspect algorithmique : un type de donn´es abstrait                                           e           c IFSIC 2004
Chapitre 4Relations et op´rateurs entre               egraphes    Dans ce qui suit, nous d´signerons par G(X) l’ensemble d...
30                                                      Relations et op´rateurs entre graphes                             ...
4.3. Composition                                                                                  31D´monstration : Cet ´n...
32                                                       Relations et op´rateurs entre graphes                            ...
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
C66
Prochain SlideShare
Chargement dans…5
×

C66

52 269 vues

Publié le

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
52 269
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
9
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

C66

  1. 1. ALGORITHMIQUE DES GRAPHES Jean-Michel H´lary e 1 IFSIC Cours C66 Juin 20041. c IFSIC 2004
  2. 2. 2 c IFSIC 2004
  3. 3. Table des mati`res e1 Introduction, exemples 9 1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2 Relations graphes et informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.3 Exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.1 Le probl`me du chou, de la ch`vre et du loup . e e . . . . . . . . . . . . . . . 10 1.3.2 Blocage mutuel dans un partage de ressources . . . . . . . . . . . . . . . . 11 1.3.3 Fiabilit´ dans les r´seaux . . . . . . . . . . . . e e . . . . . . . . . . . . . . . 122 Graphes : un mod`le math´matique e e 15 2.1 D´finitions math´matiques et notations . e e . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1 L’objet math´matique . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1.1 Vision ensembliste . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1.2 Vision fonctionnelle . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1.1.3 Vision relationnelle . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.2 Vocabulaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.1.3 Propri´t´s de graphes . . . . . . . ee . . . . . . . . . . . . . . . . . . . . . . 18 2.2 Notion de chemin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 2.3 Repr´sentations de l’objet math´matique e e . . . . . . . . . . . . . . . . . . . . . . 193 Aspect algorithmique : un type de donn´es abstrait e 21 3.1 Les sommets et les arcs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.1 Le type Sommet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1.2 Le type Arc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Trois exemples de repr´sentation concr`te . . . . . . . e e . . . . . . . . . . . . . . . 22 3.2.1 Repr´sentation par tableaux . . . . . . . . . . . e . . . . . . . . . . . . . . . 22 3.2.2 Repr´sentation par tableaux et listes . . . . . . e . . . . . . . . . . . . . . . 23 3.2.3 Repr´sentation d´centralis´e par listes . . . . . e e e . . . . . . . . . . . . . . . 23 3.3 Le type abstrait Graphe : les m´thodes . . . . . . . . . e . . . . . . . . . . . . . . . 24 3.4 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 Relations et op´rateurs entre e graphes 29 4.1 Relation d’ordre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.2 Union . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.3 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 c IFSIC 2004
  4. 4. 4 ` TABLE DES MATIERES 4.3.1 D´finition . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 30 4.3.2 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.2.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.3.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 32 4.3.3 Complexit´ . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 32 4.4 Puissances d’un graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.5 Graphe transpos´ . . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 34 4.6 Sous-graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345 Fermeture transitive 37 5.1 Retour sur la transitivit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 37 5.2 Caract´risation du graphe G+ . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 38 5.3 Algorithme des puissances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.3.1 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.3.2 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 41 5.4 Algorithme de Roy-Warshall . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.4.1 Principe de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 5.4.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.4.3 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 43 5.4.4 Routage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 5.4.4.1 D´finition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 44 5.4.4.2 Construction des routages par l’algorithme de Roy-Warshall . 46 5.4.4.3 Exemple d’ex´cution . . . . . . . . . . . . . . . . . . . . . . . . e . 47 5.4.4.4 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 5.5 τ -minimalit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e . 496 M´thodes d’exploration e 51 6.1 D´veloppement arborescent issu d’un sommet donn´ . . . . e e . . . . . . . . . . . . 51 6.2 Exploration de la descendance de x . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.2.1 Sp´cification du r´sultat . . . . . . . . . . . . . . . . e e . . . . . . . . . . . . 53 6.2.2 Principe des m´thodes d’exploration . . . . . . . . . e . . . . . . . . . . . . 53 6.2.3 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 6.2.4 Texte de l’algorithme g´n´ral d’exploration . . . . . e e . . . . . . . . . . . . 56 6.2.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 56 6.3 Strat´gies d’exploration particuli`res : largeur et profondeur e e . . . . . . . . . . . . 56 6.3.1 Exploration en largeur d’abord . . . . . . . . . . . . . . . . . . . . . . . . 58 6.3.1.1 Une structure de donn´es : la file . . . . . . e . . . . . . . . . . . . 58 6.3.1.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 58 6.3.1.3 Exemple d’ex´cution . . . . . . . . . . . . . e . . . . . . . . . . . . 58 6.3.2 Recherche en profondeur d’abord . . . . . . . . . . . . . . . . . . . . . . . 59 6.3.2.1 Une structure de donn´es : la pile . . . . . e . . . . . . . . . . . . 59 6.3.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 60 6.3.2.3 Exemple d’ex´cution . . . . . . . . . . . . . e . . . . . . . . . . . . 60 6.4 Exemple d’application : calcul de l’ensemble des descendants . . . . . . . . . . . . 62 c IFSIC 2004
  5. 5. `TABLE DES MATIERES 5 6.4.1 Cas de la recherche en largeur . . . . . . . . . . . . . . . . . . . . . . . . . 63 6.4.2 Cas de la recherche en profondeur : expression r´cursive e . . . . . . . . . . 63 6.5 ´ Enum´ration des chemins ´l´mentaires issus de x . . e ee . . . . . . . . . . . . . . . . 64 6.5.1 Algorithmes gloutons et non gloutons . . . . . . . . . . . . . . . . . . . . 667 Circuits. Composantes fortement connexes 71 7.1 D´termination de l’existence de circuits . . . . . . . . . . . e . . . . . . . . . . . . 71 7.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 7.1.2 Algorithme de Marimont . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.2.1 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 72 7.1.2.3 Complexit´ . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 73 7.2 Application des graphes sans circuit : fonction ordinale . . . . . . . . . . . . . . . 74 7.3 Application : fermeture anti-transitive et τ -minimalit´ . . . e . . . . . . . . . . . . 77 7.4 Composantes fortement connexes . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.4.1 D´finition . . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 81 7.4.2 Algorithme de FOULKES . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.4.2.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 7.4.2.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 84 7.4.2.3 Complexit´ . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 84 7.4.3 Algorithme descendants-ascendants . . . . . . . . . . . . . . . . . . . . . 85 7.4.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 7.4.3.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 85 7.4.3.3 Complexit´ . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 85 7.4.4 Algorithme de TARJAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 7.4.4.1 Principe de l’algorithme de TARJAN . . . . . . . . . . . . . . . 87 7.4.4.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 7.4.4.3 Mise en œuvre et texte de l’algorithme . . . . . . . . . . . . . . 90 7.4.4.4 Complexit´ . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . 93 7.4.5 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 7.4.5.1 Recherche d’un graphe minimal dans τ (G) . . . . . . . . . . . . 93 7.4.5.2 Calcul rapide de la fermeture transitive . . . . . . . . . . . . . . 948 Chemins de valeur optimale 97 8.1 D´finitions et probl`mes pos´s . . . . . . . . . . . . . . . . . . e e e . . . . . . . . . . 97 8.2 Chemins de valeur additive minimale issus d’un sommet donn´ e . . . . . . . . . . 99 8.2.1 Existence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 8.2.2 Caract´risation . . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . 100 8.3 Algorithme de FORD : exploration . . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 8.3.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 8.3.3 Une heuristique d’am´lioration . . . . . . . . . . . . . . e . . . . . . . . . . 106 8.4 Algorithme de BELLMANN-KALABA . . . . . . . . . . . . . . . . . . . . . . . 106 8.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 c IFSIC 2004
  6. 6. 6 ` TABLE DES MATIERES 8.4.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.3 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.4 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.4.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 e 8.4.6 Acc´l´ration de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . 110 ee 8.5 Cas des arcs de valeur positive ou nulle : algorithme de DIJKSTRA . . . . . . . 112 8.5.1 Principe de l’algorithme de DIJKSTRA . . . . . . . . . . . . . . . . . . . 113 8.5.2 Analyse de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 8.5.3 Exemple d’ex´cution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 e 8.5.4 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.5 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 8.5.6 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 e 8.6 Cas des graphes sans circuit : algorithme ORDINAL . . . . . . . . . . . . . . . . 118 8.6.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 8.6.2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.6.3 Preuve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 8.6.4 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.6.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 e 8.6.6 Adaptations et am´liorations . . . . . . . . . . . . . . . . . . . . . . . . . 122 e 8.6.6.1 Calcul progressif des attributs . . . . . . . . . . . . . . . . . . . 122 8.6.6.2 Mise ` jour de l’ensemble des points d’entr´e . . . . . . . . . . . 122 a e 8.6.6.3 Nouvelle version de l’algorithme . . . . . . . . . . . . . . . . . . 123 8.6.6.4 G´n´ralisation au cas o` 1 n’est pas n´cessairement point d’entr´e124 e e u e e 8.7 Valeurs optimales de tout sommet ` tout sommet . . . . . . . . . . . . . . . . . 124 a 8.7.1 De la fermeture transitive aux valeurs optimales . . . . . . . . . . . . . . 124 8.7.2 Transformation de l’algorithme des puissances . . . . . . . . . . . . . . . . 124 8.7.3 Transformation de l’algorithme de Roy-Warshall . . . . . . . . . . . . 126 8.8 Alg`bres de chemins : transformations d’algorithmes . . . . . . . . . . . . . . . . 128 e9 Probl`mes d’ordonnancement e 135 9.1 Nature des probl`mes . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 135 9.2 Mod´lisation ` l’aide de graphe . . . . . . . . . . . . . . e a . . . . . . . . . . . . . 136 9.2.1 graphe potentiel-tˆche . . . . . . . . . . . . . . . a . . . . . . . . . . . . . 136 9.2.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 9.3 Ordonnancements particuliers; chemin critique; marges. . . . . . . . . . . . . . 138 9.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 9.5 Choix des algorithmes de r´solution . . . . . . . . . . . . e . . . . . . . . . . . . . 140 9.6 ´ Elimination de contraintes redondantes . . . . . . . . . . . . . . . . . . . . . . . 14210 Arbres ; arbre partiel de poids optimum 145 10.1 D´finition et propri´t´s caract´ristiques . . . . . e ee e . . . . . . . . . . . . . . . . . . 145 10.2 Arbres partiels dans un graphe non orient´ valu´ e e . . . . . . . . . . . . . . . . . . 147 10.3 Algorithme de KRUSKAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 10.3.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 c IFSIC 2004
  7. 7. `TABLE DES MATIERES 7 10.3.2 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 10.3.3 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 10.3.4 Complexit´ . . . . . . . . . . . e . . . . . . . . . . . . . . . . . . . . . . . . 151 10.4 Algorithme de PRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.4.1 Principe de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 10.4.2 Mise en œuvre de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . 153 10.4.3 Texte de l’algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 10.4.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15411 Flots dans un r´seau de transport e 157 11.1 Exemple introductif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 11.2 D´finitions et propri´t´s g´n´rales . . . . . . . . . . . . . . e ee e e . . . . . . . . . . . . . 158 11.3 Recherche d’un flot compatible de valeur maximum . . . . . . . . . . . . . . . . . 161 11.3.1 Sch´ma g´n´ral . . . . . . . . . . . . . . . . . . . . e e e . . . . . . . . . . . . . 161 11.3.2 Marquage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 11.3.3 Am´lioration . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 163 11.4 Algorithme de Ford-Fulkerson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 11.4.1 Fonction marquage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 11.4.2 Proc´dure am´lioration . . . . . . . . . . . . . . . e e . . . . . . . . . . . . . 165 11.4.3 Algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 11.4.4 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 11.4.5 Complexit´ . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 168 11.5 Cas des r´seaux bi-partis : mise en œuvre par tableaux . . e . . . . . . . . . . . . . 168 11.6 Application: probl`mes de couplage des graphes bi-partis . e . . . . . . . . . . . . . 176 11.6.1 Le probl`me . . . . . . . . . . . . . . . . . . . . . . e . . . . . . . . . . . . . 176 11.6.2 Mod´lisation en r´seau bi-parti . . . . . . . . . . . e e . . . . . . . . . . . . . 177 11.6.3 Exemple: syst`me de repr´sentants distincts . . . . e e . . . . . . . . . . . . . 179A Les op´rations de la classe GRAPHE et leur s´mantique e e 181 c IFSIC 2004
  8. 8. 8 ` TABLE DES MATIERES c IFSIC 2004
  9. 9. Chapitre 1Introduction, exemples1.1 Historique La th´orie des graphes a pris naissance en 1736 : le math´maticien allemand L. Euler e eapporta une r´ponse au probl`me que se posaient les habitants de la ville de Koenigsberg ; ` e e asavoir :comment traverser les sept ponts de cette ville sans jamais passer deux fois par le mˆme. e Jusqu’en 1946, la th´orie des graphes reste du domaine des math´matiques; les math´maticiens e e eayant associ´ leurs noms aux travaux les plus marquants sont, entre autres : e – au 19`me si`cle : Kirchoff, Hamilton, Sylvester, Kempe, Lucas, Petersen, Tarry e e e e e ¨ – au 20`me si`cle (1`re moiti´) : Poincare, Sainte-Lague, Kuratowski, Hall, Polya, e ¨ Konig, Whitney, Tutte.Des recherches militaires li´es au conflit mondial de 1939-45 naˆ la Recherche Op´rationnelle e ıt eprovoquant un d´veloppement de la th´orie des graphes comme mod`les de probl`mes concrets ; e e e ecet aspect est encore renforc´, dans les ann´es qui suivent, par le d´veloppement des Sciences e e e´Economiques et de Gestion. Les grands sp´cialistes de cette nouvelle orientation des graphes e ¨seront des auteurs tels que Kuhn, Dantzig, Ford, Fulkerson, Ghouila-Houry, Harary,Saaty, Bellmann, Roy, Berge, Faure, Kaufmann, etc... Une troisi`me ´poque a ´t´ ou- e e eeverte dans les ann´es 1960, avec le d´veloppement des sciences de l’information et de la commu- e enication. Des informaticiens tels que Dijkstra, Knuth, Wirth, Sakharovitch, Gondranet beaucoup d’autres, participent au d´veloppement de l’algorithmique des graphes autant qu’` e ala mod´lisation de probl`mes n´s de ces nouvelles sciences en terme de graphes. Une approche e e ehistorique se trouve dans l’introduction de [GM79], qui renvoie d’ailleurs ` un ouvrage historique acomplet sur la premi`re ´poque de la th´orie des graphes (1746-1936) [BLW76]. e e e1.2 Relations graphes et informatique Les relations entre graphes et informatique sont ` double sens : a 1. l’informatique, outil de r´solution de probl`mes de graphes e e 2. les graphes, outil de mod´lisation de probl`mes informatiques. e e On aboutit donc, dans certaines situations, ` l’informatique comme outil de r´solution de ses a epropres probl`mes (via la mod´lisation en termes de graphes). Ce cours s’int´resse essentiellement e e e c IFSIC 2004
  10. 10. 10 Introduction, exemples` la partie 1. Outre la n´cessit´ qu’il y a, pour un informaticien, de connaˆa e e ıtre les algorithmesadapt´s aux principaux types de probl`mes de graphe et la mani`re de les programmer, il faut e e emettre l’accent sur un aspect essentiel : l’´tude des techniques de programmation d’algorithmes ede graphe. Cette ´tude est enrichissante par elle- mˆme car elle donne l’occasion d’aborder sur e edes exemples non triviaux des notions d’algorithmique aussi fondamentales que les structures dedonn´es et l’ad´quation de la repr´sentation au probl`me trait´, les niveaux de programmation e e e e e(types abstraits et mise en oeuvre), la complexit´, etc.. e Cependant la mod´lisation de probl`mes en terme de graphes ne doit pas ˆtre n´glig´e. Nous e e e e edonnons dans la section suivante trois exemples de situations– d’origine informatique ou non –qui se prˆtent ` une telle mod´lisation. e a e1.3 Exemples1.3.1 Le probl`me du chou, de la ch`vre et du loup e eL’´nonc´ e e Un passeur, disposant d’une barque, doit faire traverser une rivi`re ` un chou, une ch`vre e a eet un loup. Outre le passeur, la barque peut contenir au plus une des trois unit´s qui doivent etraverser. D’autre part, pour des raisons de s´curit´, le passeur ne doit jamais laisser seuls la e ech`vre et le chou, ou le loup et la ch`vre. (Par contre, le loup ne mangera pas le chou... et e er´ciproquement). Comment le passeur doit-il s’y prendre? eMod´lisation e Il s’agit d’une situation tr`s classique d’un syst`me ` ´tats poss´dant un ´tat initial, un ´tat e e ae e e efinal, et des transitions autoris´es. Chaque ´tat se traduit par un sommet, ou point. Chaque e etransition autoris´e d’un ´tat ` un autre se traduit par un arc, allant du premier ´tat vers le e e a esecond. Dans cet exemple, un ´tat est une configuration possible sur la rive de d´part. D´signons e e epar P le passeur, L le loup, X la ch`vre, C le chou. Une configuration sera alors d´sign´e par e e el’ensemble des pr´sents sur la rive de d´part. L’´tat initial est PLXC et l’´tat final ∅. Chaque e e e earc, repr´sentant une transition possible, sera libell´ –pour la clart´ de la mod´lisation– par la e e e edescription de l’action entreprise (A signifie : aller , R signifie retour. On obtient alors le graphesuivant :Probl`mee Chaque solution correspond ` un chemin dans le graphe, de PLXC ` ∅ et alternant les ´tiquettes a a eA et R. Un chemin correspond ` une s´quence d’actions enchaˆ a e ınables les unes aux autres (l’´tat einitial d’une action est ´gal ` l’´tat final de la pr´c´dente). e a e e eR´solution ePour l’instant, ”` la main” (ou ”au pif”, comme on veut !), on trouve deux solutions : asoit 7 travers´es simples, quelle que soit la solution. Laissons au lecteur le soin de fournir au epasseur, en langage naturel, les explications n´cessaires ` l’accomplissement de sa mission. e a c IFSIC 2004
  11. 11. 1.3. Exemples 11 PLX A(PX) L R(PX) A(PX) R(PL) R(PC) PX A(PC) R(P) A(PL) PXLC A(PX) PLC X ∅ R(PL) A(PL) A(PC) LC R(P) R(PC) A(PX) PXC C R(PX) Fig. 1.1 – graphe des transitions L PLX PLXC LC PLC X PX ∅ C PXC Fig. 1.2 – Solution du probl`me des travers´es e e1.3.2 Blocage mutuel dans un partage de ressources 3 philosophes chinois A, B, C poss`dent, ` eux trois, trois baguettes R, S, T. Pour manger, e achacun a besoin de 2 baguettes. Lorsqu’un des philosophes d´sire manger, il requiert deux ebaguettes et ne les lib`re que lorsqu’il a fini son repas 1 . Par contre, tant qu’il n’a pas obtenu eles deux baguettes, il ne peut rien faire qu’attendre : mˆme s’il a eu la chance d’obtenir une ebaguette, il ne la rend pas tant qu’il n’a pas pu aller au bout de son repas. Consid´rons alors la situation suivante : les 3 philosophes ont envie de manger exactement eau mˆme moment, et chacun se pr´cipite sur les baguettes... mais chacun n’en obtient qu’une. e ePour fixer les id´es : e A poss`de R et requiert S e 1. apr`s les avoir soigneusement lav´es! e e c IFSIC 2004
  12. 12. 12 Introduction, exemples B poss`de S et requiert T e C poss`de T et requiert R e Bigre ! Il va bien falloir faire preuve de patience... et de philosophie. Ils ne peuvent pas sortirde ce blocage mutuel, et vont donc mourir de faim, sauf si quelqu’un (c’est-`-dire l’un d’eux, aou un personnage ext´rieur) se rend compte de la situation et intervient autoritairement, par eexemple en lib´rant de force une des baguettes pour l’attribuer ` un des deux autres. e a Cette situation est un exemple de ce qui peut se passer dans les syst`mes informatiques ecomplexes, o` plusieurs entit´s (processeurs, p´riph´riques,etc.) se partagent des ressources. u e e eLes entit´s en question ´tant a priori moins intelligentes que les philosophes chinois, il faut e epallier cette lacune en ´tant capable de d´tecter automatiquement les situations d’interblocage. e eQuel que soit le nombre d’entit´s et de ressources, les configurations de possession/requˆte des e eressources par les entit´s peuvent ˆtre mod´lis´es par un graphe de la mani`re suivante : e e e e e. chaque entit´ est repr´sent´ par un sommet e e e. un arc existe, depuis le sommet X vers le sommet Y si X requiert une ressource que poss`de Y.eAinsi, dans l’exemple des philosophes et des baguettes, on obtient le graphe dessin´ figure 1.3 : e B (S) Le libell´ sur l’arc d´signe e e A (T) la ressource demand´e (par e l’origine) et poss´d´e (par e e l’extr´mit´) e e (R) C Fig. 1.3 – graphe des attentes Un tel graphe est dynamique dans la mesure o` les ressources sont lib´r´es et r´-allou´es au u ee e ecours du temps. Mais ` chaque instant, il y a un graphe et un seul et de plus, si une situation ad’interblocage apparaˆ le graphe n’´volue plus. Maintenant, il est clair que l’interblocage entre ıt, eplusieurs entit´s se produit si et seulement si les sommets correspondants sont situ´s sur un e ecircuit, c’est ` dire un chemin dont l’extr´mit´ co¨ a e e ıncide avec l’origine. C’est donc un algorithmede d´tection de circuit qui permettra, ici, de r´soudre le probl`me de d´tection de l’interblocage. e e e e Le probl`me pr´sent´ (interblocage) est un exemple d’un type de situation tr`s courant e e e emettant en jeu des objets (les entit´s) et des relations entre ces objets (la requˆte d’une ressource e eposs´d´e par un autre). e e1.3.3 Fiabilit´ dans les r´seaux e e Un r´seau est un syst`me de communication dans lequel des sites communiquent entre eux e esoit directement, soit par l’interm´diaire d’autres sites, en envoyant des messages qui circulent ele long de lignes de communication. La repr´sentation de tels r´seaux par des graphes est ici e e´vidente, les sites et les lignes correspondant trivialement aux sommets et aux arcs. Mais selone c IFSIC 2004
  13. 13. 1.3. Exemples 13le genre d’´tudes que l’on souhaite effectuer, le graphe mod´lisant le r´seau devra ˆtre pr´cis´; e e e e e epar exemple : – les communications sont-elles uni- ou bidirectionnelles? – Un message ´mis parvient-il sˆrement ou de mani`re al´atoire ` destination? e u e e a – Les lignes de communication peuvent-elles acheminer une quantit´ illimit´e ou non d’in- e e formations par unit´ de temps? (d´bit d’une ligne) e e etc... Autant de probl`mes, autant de solutions que l’on cherche ` exprimer en termes d’algorithmes e ade graphe. A titre d’exemple, nous montrons deux probl`mes li´s ` des ´tudes de fiabilit´. e e a e e C A B D Fig. 1.4 – r´seau 1 e C F A D B E G Fig. 1.5 – r´seau 2 eExemple 1. R´sistance aux pannes Dans un r´seau, il peut se produire qu’une ligne de e ecommunication soit coup´e, ne transmettant plus aucun message. Il en est de mˆme pour un site e edont la panne peut ˆtre assimil´e ` la coupure de toutes les lignes qui y aboutissent ou qui en e e apartent. Supposons que, dans un r´seau, on achemine des informations d’un sommet A vers un esommet B, ´ventuellement via des sites interm´diaires servant de relais. De telles informations e edoivent emprunter des chemins allant de A ` B. Ainsi, une information issue de A parviendra ` B si a aet seulement si au moins un chemin est valide (c’est ` dire la s´quence d’arcs qui le constitue ne a ecomporte que des arcs non d´t´rior´s). Le probl`me pos´ est alors le suivant : quel est le nombre ee e e emaximum de pannes auquel cet acheminement peut r´sister? Autrement dit, quel est le nombre emaximum de chemins ind´pendants existant entre A et B? (deux chemins sont ind´pendants si e eet seulement si ils sont disjoints au sens des arcs et des sommets interm´diaires). e c IFSIC 2004
  14. 14. 14 Introduction, exemples Dans le r´seau 1, ce nombre est ´gal ` 2 car, s’il n’y a qu’une panne, quelle que soit sa loca- e e alisation (site ou ligne) il reste toujours un chemin valide. Par contre il existe des configurationsa` 2 pannes (lignes AC et DB par exemple) auxquelles l’acheminement ne r´siste pas. e Dans le r´seau 2, ce nombre est ´gal ` 3 (sites D, F, G). e e aExemple 2. Routage de fiabilit´ maximale Dans ce mod`le, chaque ligne (arc) est munie e ed’une valeur, ´gale ` la probabilit´ qu’un message ´mis ` l’origine parvienne sans alt´ration ` e a e e a e al’extr´mit´. Un ´metteur A ´met vers un r´cepteur B, plusieurs parcours d’acheminement ´tant e e e e e epossibles. Si on suppose que les alt´rations des messages sont des ´v`nements ind´pendants, la e e e eprobabilit´ de non alt´ration le long d’un chemin est donc ´gale au produit des probabilit´s de e e e echaque arc le constituant. On cherche donc ` d´terminer un routage de fiabilit´ maximale de A ` a e e aB (c’est ` dire un chemin de A ` B de probabilit´ maximale), repr´sent´ de la mani`re suivante : a a e e e ea` chaque sommet de ce chemin, on associe le sommet suivant. c IFSIC 2004
  15. 15. Chapitre 2Graphes : un mod`le math´matique e e2.1 D´finitions math´matiques et notations e e2.1.1 L’objet math´matique e2.1.1.1 Vision ensembliste D´finition 2.1 Un graphe est un doublet G = (X,Γ), o` e u X = ensemble –en g´n´ral fini– appel´ ensemble des sommets e e e Γ=ensemble de couples (x,y) ∈ X 2 , appel´ ensemble des arcs. eAinsi, Γ ⊆ X 2 . Par d´finition d’un ensemble, entre deux sommets donn´s il existe au plus un e earc; on peut toutefois, dans certains cas, consid´rer des multi-graphes dans lesquels plusieurs earcs distincts existent entre deux sommets, mais il faut alors adopter une d´finition diff´rente e epour Γ.Exemple : graphe G1 X = {1,2,3,4,5,6,7,8,9} Γ = {(1,2),(1,3),(2,5),(3,3),(3,4),(3,6),(4,2),(4,5),(5,6),(5,7),(5,8),(6,3),(8,7)}2.1.1.2 Vision fonctionnelle D´finition 2.2 Un graphe est un doublet G = (X,Γ), o` e u X = ensemble des sommets Γ= fonction de X dans l’ensemble 2X des parties de X.Ainsi, ` tout sommet x est associ´ l’ensemble Γ(x) ⊆ X. La notation 2X pour d´signer l’ensemble a e edes parties de X vient du fait que, si X est de cardinal fini |X|, le nombre de sous-ensembles c IFSIC 2004
  16. 16. 16 Graphes : un mod`le math´matique e e(parties) de X est ´gal ` 2|X| . En effet, si X = {x1 ,x2 , . . . ,xn } la construction d’un sous-ensemble e ade X revient ` d´cider, pour chaque xi , si cet ´l´ment fait partie ou non du sous-ensemble. Il y a a e eedonc n d´cisions binaires ind´pendantes, soit 2 × 2 × . . . × 2 = 2n = 2|X| constructions possibles. e eExemple : graphe G1 X = {1,2,3,4,5,6,7,8,9} Γ(1) = {2,3} ; Γ(2) = {5} ; Γ(3) = {3,4,6} ; Γ(4) = {2,5} ; Γ(5) = {6,7,8} ; Γ(6) = {3} ; Γ(7) = ∅ ; Γ(8) = {7} ; Γ(9) = ∅2.1.1.3 Vision relationnelle A tout graphe G = (X,Γ) est associ´e une relation binaire R sur X, et r´ciproquement, par e el’´quivalence suivante : e xRy ⇐⇒ (x,y) ∈ Γ Nous verrons ult´rieurement qu’` chaque propri´t´ des relations binaires correspond une e a eepropri´t´ du graphe. ee´Equivalences et ordres Parmi les relations binaires, celles qui v´rifient les propri´t´s de e eer´flexivit´ et transitivit´ sont particuli`rement importantes. On les appelle des pr´-ordres, car e e e e eelles elles expriment en particulier les relations de classement avec ex-aequo.Exemple de pr´-ordre Soit E un ensemble d’´l´ments. Chaque ´l´ment x est muni d’une e ee eeestampille enti`re n(x). Il est facile de voir que la relation x ∼ y ⇔ n(x) ≤ n(y) est un pr´- e eordre. Deux ´l´ments distincts x et y sont ex-aequo si n(x) = n(y). La figure 2.1.a montre le eegraphe d’une telle relation. Un pr´-ordre est sp´cialis´ en ´quivalence ou en ordre selon qu’il est sym´trique ou anti- e e e e esym´trique. Ainsi, la relation d’ex-aequo est une ´quivalence car elle est sym´trique (la figure e e e2.1.b en montre le graphe) tandis que la relation x y ⇔ x = y ∨ n(x) < n(y) est un ordrecar elle est antisym´trique (figure 2.1.c). Rappellons qun ordre est dit total si pour tout couple ed’´l´ments x et y, on a toujours xRy ou yRx. Un ordre non complet est dit partiel. C’est le cas eenotamment de l’exemple de la figure 2.1.c), car certains ´l´ments ne sont pas comparables. ee2.1.2 Vocabulaire Pour un arc (x,y) ∈ Γ, x est l’origine et y est l’extr´mit´ de l’arc e e On dit aussi que y est successeur de x, ou que x est pr´d´cesseur de y. e e On note : Γ(x) = {y ∈ X | (x,y) ∈ Γ} l’ensemble des successeurs de x Γ−1 (x) = {z ∈ X | (z,x) ∈ Γ} l’ensemble des pr´d´cesseurs de x e e c IFSIC 2004
  17. 17. 2.1. D´finitions math´matiques et notations e e 17 ´e El´ment a b c d e f g h i j k Estampille 10 5 4 5 7 7 3 4 5 2 10j g c b e a a) preordre (sans les consequences transitives ni les boucles de reflexivite) h d f k ij g c b e a b) equivalence (sans les boucles de reflexivite) h d f k ij g c b e a c) ordre (sans les consequences transitives ni les boucles de reflexivite) h d f k i Fig. 2.1 – Pr´-ordre, ´quivalence et ordre e e c IFSIC 2004
  18. 18. 18 Graphes : un mod`le math´matique e e Si A ⊂ X : Γ(A) = Γ(x) x∈A Γ−1 (A) = Γ−1 (x) x∈A 1 d+ (x) = card(Γ(x)) est le degr´ ext´rieur de x e e 2 1 d− (x) = card(Γ−1 (x)) est le degr´ int´rieur de x e e 2 d(x) = d+ (x) + d− (x) est le degr´ de x e2.1.3 Propri´t´s de graphes e e On montre, pour quelques propri´t´ des relations binaires, une propri´t´ caract´ristique du ee ee egraphe correspondant. La caract´risation de la transitivit´ ne sera abord´e qu’au chapitre 5 e e e(fermeture transitive). Dans ce qui suit, on pose ∆ = {(x,x)|x ∈ X} (ensemble des “boucles”).R´flexivit´ e e ∀x ∈ X : (x,x) ∈ Γ. Boucle sur chaque sommet . ∆⊂ΓAnti-r´flexivit´ e e ∀x ∈ X : (x,x) ∈ Γ. Graphe sans boucle . ∆∩Γ=∅Sym´trie e ∀x ∈ X,∀y ∈ X : (x,y) ∈ Γ =⇒ (y,x) ∈ Γ. L’existence d’un arc implique l’existence de l’arc oppos´. e Γ=Γ −1Anti-sym´trie e ∀x ∈ X,∀y ∈ X : (x,y) ∈ Γ ∧ (y,x) ∈ Γ =⇒ x = y . L’existence d’un arc interdit l’existence de l’arc oppos´, sauf e dans le cas d’une boucle. Γ ∩ Γ−1 ⊂ ∆ c IFSIC 2004
  19. 19. 2.2. Notion de chemin 192.2 Notion de chemin D´finition 2.3 Un chemin de G est une suite de sommets e [xi1 ,xi2 , . . . ,xik ] telle que : (xi1 ,xi2 ) ∈ Γ, (xi2 ,xi3 ) ∈ Γ, . . . , (xik−1 ,xik ) ∈ Γ xi1 en est l’origine, xik l’extr´mit´ et les xij (2 ≤ j ≤ k − 1), s’ils e e existent, les sommets interm´diaires. eUn chemin allant de x ` y, dont on ne pr´cise pas les sommets interm´diaires, sera not´ : a e e e u = [x ∗ y]Si l’on souhaite d´signer des sommets interm´diaires, on utilisera la notation telle que : e e u = [x1 ∗ xp ∗ xq ∗ xk ]y est alors un descendant de x et x un ascendant de y.La longueur du chemin u , ou |u|, est le nombre d’arcs qui le composent.u · v d´signe la concat´nation de deux chemins tels que e e extr´mit´ de u = origine de v ; on a alors |u · v| = |u| + |v|. e eUn circuit est un chemin dont l’extr´mit´ co¨ e e ıncide avec l’origine.Un chemin (resp. circuit) ´l´mentaire est d´fini par une suite de sommets sans r´p´tition (sauf ee e e el’origine et l’extr´mit´ pour un circuit) e e2.3 Repr´sentations de l’objet math´matique e e On s’int´resse aux repr´sentations visuelles, destin´es au traitement ”` la main”. On peut e e e autiliser :a)- le graphique (diagramme sagittal) Exemple : graphe G1 2 4 9 1 3 5 7 8 6 Fig. 2.2 – Diagramme Sagittal c IFSIC 2004
  20. 20. 20 Graphes : un mod`le math´matique e e Cette repr´sentation pose des probl`mes de topologie (croisements d’arcs) et de lisibilit´ e e elorsqu’il y a beaucoup de sommets et/ou d’arcs. Leurs attributs sont port´s sur le graphique, ece qui peut aussi ˆtre source d’ambigu¨ e. Elle n’est adapt´e en g´n´ral que pour les ”petits” e ıt´ e e egraphes (card(X) ≤ 10).b)- un tableau d’attribution des arcs. S’il s’agit de repr´senter l’existence des arcs, ce ta- ebleau sera une matrice bool´enne. e extr´mit´s → e e 1 2 3 4 5 6 7 8 9 origines ↓ 1 1 1 2 1 3 1 1 1 4 1 1 5 1 1 1 6 1 7 8 1 9 c)- dictionnaire des successeurs resp. des pr´d´cesseurs e e 1 2, 3 1 / 2 5 2 1, 4 3 3, 4, 6 3 1, 3, 6 4 2, 5 4 3 5 6, 7, 8 5 2, 4 6 3 6 3, 5 7 / 7 5, 8 8 7 8 5 9 / 9 /Un seul de ces deux tableaux suffit ` sp´cifier compl`tement le graphe. a e e c IFSIC 2004
  21. 21. Chapitre 3Aspect algorithmique : un type dedonn´es abstrait e Dans ce chapitre on donne d’abord trois exemples de repr´sentation algorithmique. Puis eon fait abstraction des repr´sentations particuli`res en d´finissant le type de donn´es abstrait e e e eGRAPHE. Le probl`me est de repr´senter, ` l’aide de structures de donn´es algorithmiques, le e e a edoublet math´matique (X,Γ) avec Γ ⊆ X 2 . e3.1 Les sommets et les arcs La d´finition des types Sommet et Arc est utilis´e dans toutes les repr´sentations de graphes. e e eElle est pr´sent´e ci-dessous. e e3.1.1 Le type Sommet Tout sommet est identifi´ par un num´ro (entier), qui sera d´sign´ par num. En g´n´ral, on e e e e e esuppose que num≥ 1. La notation algorithmique est la suivante : ENT SOMMET::num ;signifiant que les objets de type SOMMET ont un attribut de nom num et de type entier. L’expressionx.num d´signe alors le num´ro du sommet x. e e3.1.2 Le type Arc Tout arc poss`de deux sommets (son origine et son extr´mit´). e e e SOMMET ARC::ori ; SOMMET ARC::ext ; Si γ est un objet de type arc, l’expression γ .ori (resp. γ .ext) d´signe le sommet origine e(resp. extr´mit´) de l’arc γ, et γ .ori.num (resp. γ .ext.num) le num´ro du sommet origine (resp. e e eextr´mit´) de γ. e e c IFSIC 2004
  22. 22. 22 Aspect algorithmique : un type de donn´es abstrait e i j Dans une repr´sentation graphique on utilisera souvent le sch´ma ci-dessous pour indiquer e eque l’arc dessin´ relie le sommet de num´ro i au sommet de num´ro j. e e e Par commodit´ de notation, on d´signera souvent par (x,y) l’arc γ tel que γ .ori=x et γ .ext=y, e eou par (i,j) l’arc γ tel que γ .ori.num=i et γ .ext.num=j.3.2 Trois exemples de repr´sentation concr`te e e Ces exemples utilisent les structures de donn´es suppos´es connues TABLEAU[G], TABLEAU2[G], e eLISTE[G]. La premi`re d´crit les tableaux ` une dimension, la deuxi`me les tableaux ` deux e e a e adimensions et la troisi`me les listes chaˆ ees. L’identificateur G d´signe le type des ´l´ments e ın´ e eecontenus dans ces structures (type g´n´rique formel). e e3.2.1 Repr´sentation par tableaux e ENT GRAPHE::nmax ; -- num´ro maximum de sommet. On repr´sente les graphes dont les sommets peuvent ˆtre num´ e e e TABLEAU[BOOL] GRAPHE::vs ; -- G.vs[i] indique l’existence du sommet de num´ro i, 1 ≤ i ≤ G.nmax e TABLEAU2[BOOL] GRAPHE::m ; -- G.m[i,j] indique l’existence de l’arc (i,j), 1 ≤ i, j ≤ G.nmaxOn a toujours l’implication ∀i ∀j : G.m[i,j] ⇒ G.vs[i] ∧ G.vs[j] (un arc ne peut relier que dessommets existants). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont repr´sent´s de la mani`re e e e esuivante : x ∈ X ⇔ G.vs[x.num] (x,y) ∈ Γ ⇔ G.m[x.num,y.num]Exemple : Graphe G1 nmax = 10 ; 1 2 3 4 5 6 7 8 9 10vs v v v v v v v v v f c IFSIC 2004
  23. 23. 3.2. Trois exemples de repr´sentation concr`te e e 23 1 2 3 4 5 6 7 8 9 10 1 v v 2 v 3 v v v 4 v vm 5 v v v les cases vides ont 6 v des valeurs faux 7 8 v 9 103.2.2 Repr´sentation par tableaux et listes e Les attributs nmax et vs sont d´finis comme pr´c´demment. e e e TABLEAU[LISTE[SOMMET]] GRAPHE::ts ; -- G.ts[i] d´signe la liste des successeurs du sommet e de num´ro i, 1 ≤ i ≤ G.nmax. eOn a toujours : si G.vs[i] est faux, alors G.ts[i] est n´cessairement vide (en fait, cette liste en’est mˆme pas d´finie). Dans cette repr´sentation de G = (X,Γ), les ensembles X et Γ sont e e erepr´sent´s de la mani`re suivante : e e e x ∈ X ⇔ G.vs[x.num] (x,y) ∈ Γ ⇔ G.ts[x.num].contient(y)Exemple : Graphe G1 nmax = 10 ; 1 2 3 4 5 6 7 8 9 10vs v v v v v v v v v f3.2.3 Repr´sentation d´centralis´e par listes e e e Le type SOMMET est enrichi : chaque sommet a maintenant comme attribut la liste de sessuccesseurs. Le graphe se r´duit alors ` la liste de ses sommets. e a ENT SOMMET::num ; -- comme pr´c´demment e e LISTE[SOMMET] SOMMET::ls ; -- x.ls est la liste des sommets successeurs de x. LISTE[SOMMET] GRAPHE::lsom ; -- G.lsom est la liste des sommets du graphe G.Dans cette repr´sentation du graphe G = (X,Γ), les ensembles X et Γ sont repr´sent´s de la e e emani`re suivante : e x ∈ X ⇔ G.lsom.contient(x) c IFSIC 2004
  24. 24. 24 Aspect algorithmique : un type de donn´es abstrait ets 1 [ 2; 3 ] 2 [5] 3 [ 3; 4; 6 ] 4 [ 2; 5 ] 5 [ 6; 7; 8 ] 6 [3] 7 [] 8 [7 ] 9 [9] 10 (x,y) ∈ Γ ⇔ G.lsom.contient(x) et G.lsom.contient(y) et x.ls.contient(y) lsom 1 2 3 4 5 6 7 8 9 G1 x.ls [ 2; 3 ] [5] [ 3; 4; 6 ] [ 2; 5 ] [ 6; 7; 8 ] 3 ] [ [] [7 ] [9]Exemple : Graphe G13.3 Le type abstrait Graphe : les m´thodes e La plupart des algorithmes de r´solution de probl`mes mod´lis´s par des graphes peuvent ˆtre e e e e ed´crits ` l’aide de traitements plus ou moins ´l´mentaires sur le graphe mod´lisant le probl`me. e a ee e eCette description –enchaˆ ınement contrˆl´ des actions– est ´videmment, ` un certain niveau, oe e aintrins`que, c’est ` dire ind´pendante de la repr´sentation choisie pour le graphe. e a e e Par exemple, l’algorithme de saisie ci-apr`s construit un graphe ` partir de donn´es lues dans e a eun fichier. Le format de pr´sentation des donn´es est le suivant : e e – S´quence des arcs, chaque arc ´tant donn´ comme un couple d’entiers (num´ro d’origine, e e e e num´ro d’extr´mit´), termin´e par (0,0); e e e e – s´quence des num´ros des sommets isol´s, termin´e par 0. e e e eExprim´ en faisant abstraction d’une repr´sentation concr`te particuli`re, on obtient le texte: e e e eGRAPHE construction c’est local ENT i, j ; c IFSIC 2004
  25. 25. 3.3. Le type abstrait Graphe : les m´thodes e 25 GRAPHE G ; d´but e -- initialisation au graphe vide G. creer ; -- lecture de la liste des arcs depuis i ← lire ; j ← lire jusqu a i=0 et j=0 faire G. ajoutarc(i, j) ; i ← lire ; j ← lire fait ; -- lecture de la liste des sommets isol´s e depuis i ← lire jusqua i=0 faire G. ajout sommet(i) ; i ← lire fait ; Result ← G -- Result est une variable exprimant le r´sultat d’une fonction e fin L’algorithme, pr´sent´ sous cette forme, peut s’appliquer ` n’importe quelle repr´sentation e e a einterne du graphe : il suffit, dans chaque cas, de ”traduire” convenablement les op´rations in- ediqu´s en italique. e Dans ce texte, le type GRAPHE n’est pas d´fini concr`tement : on l’appelle type abstrait. e eCela signifie, qu’` ce niveau d’expression, on n’a pas besoin d’en savoir plus sur les structures ade donn´es qui seront effectivement utilis´es pour repr´senter concr`tement l’objet G. e e e e Les traitements ´l´mentaires en italique ont ´t´ d´nomm´s. On les appelle des m´thodes du ee ee e e etype abstrait GRAPHE, et tout ce que l’on a besoin de connaˆıtre est leur s´mantique. Ainsi, on eaura d´fini une fois pour toutes que : e creer : proc´dure qui initialise le graphe courant au graphe vide (∅,∅). e ajoutarc(ENT i; ENT j) : ajout au graphe courant de l’arc (i, j) (et au besoin des sommets de num´ro i et j) e ajout sommet(ENT i) : ajout au graphe courant du sommet de num´ro i e La liste compl`te des acc`s, avec leur s´mantique, est donn´e en Annexe. e e e e On peut poursuivre cette d´marche. En effet, les structures de donn´es utilis´s dans les e e erepr´sentations ”concr`tes” des graphes peuvent ˆtre elles aussi consid´r´es comme des types de e e e eedonn´es abstraits (c’est le cas par exemple du type g´n´rique LISTE[T]). Ces types de donn´es e e e eabstraits peuvent ` leur tour ˆtre manipul´s ` travers leurs m´thodes, et mis en oeuvre selon a e e a ediverses repr´sentations concr`tes, etc. Dans le cas du type LISTE[T], par exemple, la m´thode e e e c IFSIC 2004
  26. 26. 26 Aspect algorithmique : un type de donn´es abstrait eBOOL contient(T x) est telle que .contient(x) renvoie vrai si et seulement si la liste contientun ´l´ment de type T, de valeur x. ee Nous ne d´taillerons pas ici ces repr´sentations, qui sont ´tudi´es dans les cours de tech- e e e eniques de programmation ou structures de donn´es. Il faut n´anmoins mettre l’accent sur le e efait essentiel que la d´marche est absolument identique dans le cas des graphes, des listes, etc... : es´parer la partie intrins`que d’un algorithme des d´tails de mise en oeuvre, ou d’impl´mentation. e e e eOn peut toujours d´finir de nouveaux niveaux d’abstraction, ` condition de bien pr´ciser les e a etypes abstraits manipul´s et leurs m´thodes. Remarquons enfin que les types pr´d´finis, mˆme e e e e e´l´mentaires (r´el, entier, caract`re, bool´en) utilis´s dans les langages de haut niveau sontee e e e eeux aussi des types abstraits par rapport ` la machine, leur impl´mentation concr`te en m´moire a e e ed´pendant du mat´riel utilis´ ; les m´thodes sont alors, dans un langage donn´, les op´rations e e e e e epr´d´finies du langage telles que : lecture/´criture, op´rations arithm´tiques ou logiques, com- e e e e eparaisons, etc... Cette d´marche de programmation par abstractions successives est r´alis´e, notamment, e e edans les langages dits de “programmation par objets”, appel´s encore, improprement, “langages eorient´s objets”. Citons, parmi les plus connus, Eiffel, Java, C++, dans une moindre mesure eTurbo-Pascal (` partir de la version 6) ou encore, plus anciens, Simula et Smalltalk. Dans aces langages, les types sont d´crits dans des classes, contenant tout ` la fois les valeurs des objets e adu type (appel´s attributs) et les m´thodes permettant de manipuler ces valeurs (en lecture ou e een ´criture). Nous renvoyons, pour plus de d´tail, aux cours de programmation s’appuyant sur e ela d´marche par objets. Dans la suite de ce polycopi´, les notations utilis´es dans la description e e edes algorithmes seront proches de celles utilis´es dans de tels langages, sans pour autant ˆtre li´e e e ea` l’un d’entre eux en particulier. Le . est l’op´rateur d’application de m´thode ou d’attribut ` e e al’objet d´sign´. Par exemple, G.ajout arc(i,j) est une instruction, signifiant que l’on applique e el’op´ration ajout arc, avec les deux param`tres effectifs i et j ` l’objet de type GRAPHE d´sign´ par e e a e eG. De mˆme, G.valid arc(i,j) est une expression dont l’´valuation renvoie une valeur bool´enne, e e evalant vrai si et seulement si l’objet de type GRAPHE d´sign´ par G poss`de l’arc (i, j). e e e3.4 Notations L’approche objet interdit en g´n´ral d’acc´der directement aux attributs d’un objet distant, e e eque ce soit en ´criture (c’est-`-dire pour affecter directement sa valeur) ou mˆme en lecture e a e(pour obtenir sa valeur). Dans ce cas, des ´critures telles que e x.att := valeur (affectation ”` distance”, c’est-`-dire via x, de l’attribut att), ou mˆme a a e v:=x.att (lecture ”` distance”, c’est-`-dire via x de l’attribut att) a a sont souvent interdites; de telles op´rations ne peuvent en effet ˆtre r´alis´es que par des e e e em´thodes (proc´dures ou fonctions) ´quipant le type de l’objet d´sign´ par x. e e e e e Par exemple, avec la d´claration eREEL SOMMET::lambda ;la mise ` jour de l’attribut lambda d’un objet de type SOMMET d´sign´ par x ne pourra se faire a e eque si le type SOMMET poss`de une m´thode e e c IFSIC 2004
  27. 27. 3.4. Notations 27affecter lambda(REEL v) post lambda=vqui effectue, de mani`re interne, l’affectation lambda:=v. L’instruction externe r´alisant une telle e emise ` jour s’´crira alors : a e x.affecter lambda(4.18) Toutefois, afin d’all´ger l’´criture des algorithmes et d’en faciliter la lecture, nous utiliserons e ele symbole ← ayant la signification suivante: x.lambda ←4.18 suppose que le type SOMMET est ´quip´ d’une m´thode r´alisant cette affecta- e e e etion. L’´criture e ci-dessus est alors ´quivalente e ` a l’instruction d’appelx.affecter lambda(4.18). Dans un mˆme souci de simplification, une expression telle x.lambda ed´livre la valeur de l’attribut lambda de l’objet d´sign´ par x, en supposant que le type de x est e e e´quip´ d’une m´thode permettant cette lecture (certains langages, comme Eiffel, permettent dee e etelles lectures directes, ` condition que l’attribut soit ”exportable”). a Enfin, toujours pour all´ger le formalisme, si a et b d´signent deux objets de mˆme type, e e el’´criture a ←b d´note l’instruction de copie de l’objet d´sign´ par b dans l’objet d´sign´ par a e e e e e e(affectation de valeurs). Finalement, dans les parties “math´matiques” (propri´t´s, d´monstrations, etc.) nous utilise- e ee erons des notations fonctionnelles plus classiques telles que λ(x) ou pred(x) (au lieu des notations“algorithmiques” x.lambda ou x.pred). D’une mani`re g´n´rale, x d´signant un objet d’un type e e e eC, et att un attribut de ce type, les deux notations att(x) et x.att seront consid´r´es comme eeayant la mˆme signification. e c IFSIC 2004
  28. 28. 28 Aspect algorithmique : un type de donn´es abstrait e c IFSIC 2004
  29. 29. Chapitre 4Relations et op´rateurs entre egraphes Dans ce qui suit, nous d´signerons par G(X) l’ensemble des graphes ayant X comme ensemble ede sommets. Sur G(X), nous pouvons consid´rer un certain nombre de relations ou op´rations; dans ce e echapitre, nous en ´tudions quelques unes. On note : e G1 = (X,Γ1 ),G2 = (X,Γ2 ) deux ´l´ments de G(X). ee4.1 Relation d’ordre La relation G1 G2 ⇐⇒ Γ1 ⊂ Γ2 qui se lit : “G1 est un graphe partiel de G2 ” est une relation d’ordre partiel sur G(X). Pour cette relation, G(X) a un minimum : (X,∅) maximum : (X,X 2 ) Toute partie de G(X) poss`de d’ailleurs au moins un minorant et un majorant, comme c’est ele cas de toute partie finie d’un ensemble ordonn´. e4.2 Union G1 ∪ G2 = (X,Γ1 ∪ Γ2 ) Cet op´rateur poss`de toutes les propri´t´s de l’union ensembliste. e e ee c IFSIC 2004
  30. 30. 30 Relations et op´rateurs entre graphes e4.3 Composition4.3.1 D´finition e G3 = G1 ◦ G2 = (X,Γ3 )est d´fini par : e Γ3 = {(x,y) | ∃z ∈ X : (x,z) ∈ Γ1 ∧ (z,y) ∈ Γ2 } L’op´rateur ◦ n’est pas commutatif. Toutefois, il est associatif et poss`de un ´l´ment neutre, e e eea` savoir le graphe ”diagonal” : D = (X,∆) o` ∆ = {(x,x) | x ∈ X} u En effet, ∀G ∈ G(X) : G ◦ D = D ◦ G = G. Par abus de notation, on ´crira parfois e Γ3 = Γ1 ◦ Γ2 lorsque G3 = G1 ◦ G2 Proposition 4.1 ◦ est distributif par rapport ` ∪ a Autrement dit : ∀G1 ,G2 ,G3 ∈ G(X) : (G1 ∪ G2 ) ◦ G3 = (G1 ◦ G3 ) ∪ (G2 ◦ G3 ) G1 ◦ (G2 ∪ G3 ) = (G1 ◦ G2 ) ∪ (G1 ◦ G3 )(D´monstration laiss´e au lecteur). e e Par contre, ∪ n’est pas distributif par rapport ` ◦ : a (G1 ◦ G2 ) ∪ G3 = (G1 ∪ G3 ) ◦ (G2 ∪ G3 )contre-exempleG1 = G2 2 2G3 = D 1 1G1 ◦ G2 = (X,∅)(G1 ◦ G2 ) ∪ G3 = D 3 3D’autre part : G1=G2 D(G1 ∪ D) ◦ (G2 ∪ D) = G1 ∪ D Proposition 4.2 L’op´rateur ◦ est compatible ` gauche et ` droite avec e a a la relation d’ordre d´finie en 3.1 e c IFSIC 2004
  31. 31. 4.3. Composition 31D´monstration : Cet ´nonc´ signifie que e e e ∀G1 ,G2 ,G3 ∈ G(X) : G1 G2 ⇒ (G1 ◦ G3 G2 ◦ G3 ) ∧ (G3 ◦ G1 G3 ◦ G2 )Si Gi = (X,Γi ) (i = 1,2,3), on a : (x,y) ∈ Γ1 ◦ Γ3 ⇒ ∃z ∈ X : (x,z) ∈ Γ1 ∧ (z,y) ∈ Γ3 ⇒ ∃z ∈ X : (x,z) ∈ Γ2 ∧ (z,y) ∈ Γ3 ⇒ (x,y) ∈ Γ2 ◦ Γ3ce qui montre que G1 ◦ G3 G2 ◦ G3 . La deuxi`me in´galit´ se montre de mani`re analogue.P e e e e4.3.2 Algorithme Nous donnons ci-dessous un algorithme de construction de G3 = G1 ◦ G2 , en supposant poursimplifier que X = [1..n]4.3.2.1 Analyse Pour tout couple (x,y) ∈ X 2 , il faut d´terminer si (x,y) est ou non un arc de G3 . Par ed´finition, e (x,y) ∈ Γ3 ⇐⇒ ∃z (1 ≤ z ≤ n) ∧ ((x,z) ∈ Γ1 ) ∧ ((z,y) ∈ Γ2 ) Notons P(z) la proposition : ((x,z) ∈ Γ1 ) ∧ ((z,y) ∈ Γ2 ). Il s’agit d’´valuer le pr´dicat : e e ∃t 1 ≤ t ≤ n : P (t). Cette ´valuation est mise en œuvre par un calcul it´ratif. La figure e eci-dessous en d´termine l’invariant : e zone deja examinee zone non encore examinee 1 z z+ 1 nc’est-`-dire, plus formellement : a I ≡ (0 ≤ z ≤ n) ∧ (b = ∃t 1 ≤ t ≤ z : P (t)) Le calcul sera termin´ lorsque : e (z = n) ∨ bet, lorsque ceci se produit : – si b alors (∃t 1 ≤ t ≤ z : P (t)) ∧ (z ≤ n), c’est-`-dire (∃t 1 ≤ t ≤ n : P (t)) (*succes*) a – si ¬b alors (z = n) ∧ ¬(∃t 1 ≤ t ≤ n : P (t)) (* ´chec *) eLe r´sultat est donc ´gal ` b e e a Si le calcul n’est pas termin´, on progresse en mettant ` jour les variables z et b de la mani`re e a esuivante : z←z + 1 ; b←P (z) c IFSIC 2004
  32. 32. 32 Relations et op´rateurs entre graphes e Les valeurs initiales doivent satisfaire l’invariant ; par exemple, on peut prendre : z←0 ; b←f alse De cette analyse d´coule le texte de l’algorithme. e4.3.2.2 Texte de l’algorithme Il est donn´ page 32. e ALGORITHME DE CONSTRUCTION DE G1◦G2GRAPHE composer(GRAPHE G1, G2) c’est-- pr´ : G1 et G2 ont le mˆme ensemble de sommets : e e-- G1.ens som=G2.ens som={1,...,n} local SOMMET x,y,z; BOOL b; d´but e Result.creer;-- Result est une variable implicite de type GRAPHE, exprimantle r´sultat de la fonction e pour tout x de G1.ens som pour tout y de G1.ens som depuis z ← 0 ; b ← false jusqua z ≥ n ou b faire z ← z+1; b ← G1.validarc(x,z) et G2.validarc(z,y) fait; si b alors Result.ajoutarc(x,y) fsi fpour fpour fin4.3.3 Complexit´ e La boucle interne depuis ... jqa comporte au plus n pas , et elle est ex´cut´e exactement n2 e efois. La complexit´ maximum est donc : e2n3 acc`s validarc en3 op´rations et en2 acc`s ajoutarc e c IFSIC 2004

×