Docstoc

MaiGraphes

Document Sample
MaiGraphes Powered By Docstoc
					   ENSEIGNEMENT DE PROMOTION SOCIALE




——————————————————————
                  Cours de

 MATHS APPLIQUEES A L'INFORMATIQUE
  - Introduction à la théorie des graphes -
——————————————————————




                  H. Schyns

                Décembre 2009
Introduction à la théorie des graphes               Sommaire



                                         Sommaire
1.     INTRODUCTION


2.     DEFINITIONS


3.     REPRESENTATIONS

     3.1. Position du problème
     3.2. Représentation graphique
     3.3. Représentation matricielle
     3.4. Représentation tabulaire
     3.5. Quelques exemples
       3.5.1.   Carte routière
       3.5.2.   Base de données
       3.5.3.   Automate à Etats Finis
       3.5.4.   Diagramme PERT
       3.5.5.   Flow sheet industriel
     3.6. Conclusion

4.     PROPRIETES DES GRAPHES
     4.1. Connectivité
       4.1.1.   Position du problème
       4.1.2.   Algorithme
     4.2. Nombre d'arêtes entre deux points
       4.2.1.   Position du problème
       4.2.2.   Algorithme
     4.3. Origines et extrémités
       4.3.1.   Position du problème
       4.3.2.   Approche intuitive
       4.3.3.   Algorithme
       4.3.4.   Application
     4.4. Cycles simples et multiples
       4.4.1.   Position du problème
       4.4.2.   Algorithme simple
       4.4.3.   Algorithme complet
     4.5. Plus court chemin
       4.5.1.   Position du problème
       4.5.2.   Algorithme de Dijkstra

5.     AUTRES PROPRIETES

     5.1. Planéité
       5.1.1.   Illustration
       5.1.2.   Raisonnement
       5.1.3.   Critère mathématique
       5.1.4.   Application
     5.2. Chemin et circuit eulérien

H. Schyns                                                S.1
Introduction à la théorie des graphes     Sommaire

     5.3. Chemin et circuit hamiltonien

6.     EXERCICES DU CHAPITRE

     6.1. Exercice 1
     6.2. Exercice 2
     6.3. Exercice 3
     6.4. Exercice 4
     6.5. Exercice 5

7.     SOURCES




H. Schyns                                      S.2
Introduction à la théorie des graphes                                                           1 - Introduction


1.         Introduction

       Un graphe est un objet mathématique qui permet de modéliser un grand nombre de
       problèmes de la vie courante tels que :

       -   l'organisation d'une entreprise,
       -   un algorithme de calcul,
       -   la structure d'un réseau routier ou informatique,
       -   les relations affectives ou professionnelles entre individus,
       -   des liens de causalité entre des événements,
       -   etc.

       La théorie des graphes est un outil très puissant dans l'analyse des problèmes. De
       plus, de nombreux problèmes de nature différente peuvent se mettre sous la forme
       de graphes.

       La théorie des graphes apparaît alors comme une passerelle qui permet
       d'appliquer des outils habituellement utilisés dans un contexte à la résolution
       de problèmes qui appartiennent à un autre contexte (fig. 1.1) (1).




                         fig. 1.1 La théorie des graphes en tant que passerelle de résolution

       Ce thème faisant partie du programme du cours de mathématiques appliquées à
       l'informatique, l'accent sera mis sur la méthodologie et sur les algorithmes de
       détection des propriétés.

       Les notes commencent par la définition du vocabulaire. Toutefois, pour ne pas
       alourdir ce premier chapitre, nous n'avons repris que les termes essentiels pour la
       suite du cours. Le lecteur intéressé trouvera un lexique complet dans les ouvrages
       cités en référence et, en particulier, dans le cours de Didier Maquin de l'ENSEM-
       Nancy, disponible sur le web (voir chap. 7 Sources).

       Une fois les définitions posées, nous passons aux différentes manières de
       représenter les graphes et à l'examen de quelques cas typiques : carte routière,
       base de données, automate à états finis, etc.

       Dans le chapitre suivant nous passons en revue les principaux algorithmes qui
       permettent à un ordinateur d'examiner ou de parcourir un graphe : comment savoir si
       un graphe est en un seul morceau ou non; combien d'étape faut-il parcourir pour
       aller d'un point à un autre du graphe, quel est le plus court chemin entre deux points,
       etc.


1 C'est une des démarches propice à la pensée latérale développée par Edward de Bono


H. Schyns                                                                                                   1.1
Introduction à la théorie des graphes                                            1 - Introduction

       Nous examinons ensuite rapidement quelques concepts intéressants tels que
       planéité, graphe eulérien ou graphe hamiltonien.

       Enfin, à titre d'exercice, nous proposons quelques problèmes et applications. Nous
       encourageons vivement le lecteur à essayer de les résoudre afin de prendre la
       matière bien en main.

       Le lecteur qui veut aborder ce chapitre devrait avoir :

       -    une maîtrise élémentaire d'un tableur de type Excel ou OpenOffice,
       -    une connaissance élémentaire de la gestion de bases de données,
       -    quelques bases de calcul matriciel.

       Des notes de cours sur ces différents pré-requis sont disponibles sur le site
       www.notesdecours.info.




H. Schyns                                                                                    1.2
Introduction à la théorie des graphes                                                     2 - Définitions


2.         Définitions

       Un graphe consiste en deux ensembles :

       -    un ensemble de points, nommés nœuds ou sommets (ang.: vertex (s),
            vertices (pl))
       -    un ensemble de droites appelées arêtes (ang.: edges) les relient les nœuds.




                                              fig. 2.1 Exemple de graphe

       Dans la plupart du temps, les nœuds représentent des états, des situations tandis
       que les arêtes représentent des transformations mais c'est parfois l'inverse.

       Chaque arête connecte deux et seulement deux nœuds. Ces nœuds sont appelés
       extrémités (ang.: endpoints) de l'arête considérée. L'existence d'une arête entre
       deux nœuds est définie par de l'existence d'une certaine relation – au sens
       mathématique – entre ces nœuds (p.ex.: "est voisin de", "précède", etc.).

       Deux nœuds sont dits adjacents ou voisins lorsqu'ils sont reliés par une arête. De
       même, deux arêtes sont dites adjacentes lorsqu'elles ont un nœud commun. On
       appelle voisinage d'un nœud l'ensemble de ses voisins.

       L'ordre d'un graphe est le nombre de nœuds de ce graphe.

       Un graphe est dit non orienté lorsque toutes ses arêtes peuvent être parcourues
       indifféremment dans les deux sens. C'est le cas lorsque la relation représentée est
       symétrique par essence (p.ex.: "est voisin de", "dîne avec", "est égal à", etc.). Il est
       orienté lorsque l'une au moins de ses arêtes ne peut être parcourue que dans un
       sens, lequel doit être explicitement représenté. C'est le cas lorsque la relation
       représentée est asymétrique dans sa définition (p.ex.: "est le chef de", "doit de
       l'argent à", etc.).




                                  fig. 2.2 Graphe non-orienté (à g.) et orienté (à dr.)
       Dans un graphe non orienté, le degré d'un nœud est le nombre d'arêtes auxquelles
       ce nœud appartient. La somme des degrés de chaque nœud est égale au double du
       nombre total d'arêtes (1).




1 C'est asez évident puisque toute arête a deux extrémités


H. Schyns                                                                                            2.1
Introduction à la théorie des graphes                                                               2 - Définitions

       Dans un graphe orienté, on distingue les notions de degré entrant ; nombre d'arêtes
       qui aboutissent au nœud considéré ; et de degré sortant ; nombre d'arêtes qui
       partent du nœud considéré. Le degré d'un nœud (au sens large) est alors la somme
       des degrés entrant et sortant.

       Dans un graphe orienté, un chemin est une séquence ordonnée d'arêtes qui permet
       de passer continûment d'un nœud à un autre. Dans un graphe non orienté, on parle
       plutôt de chaîne.




                        fig. 2.3 Chemin (à g.) et circuit et cycle dans un graphe orienté (à dr.)

       Lorsque le chemin revient au nœud de départ, il définit un parcours fermé nommé
       circuit. Dans un graphe non orienté, un parcours fermé est un cycle.

       Lorsqu'un cycle est composé d'une seule arête qui relie un sommet à lui-même, on
       parle de boucle.

       Un graphe acyclique est un graphe non orienté qui ne contient aucun cycle.

       Un graphe non orienté est connexe (d'un seul tenant) s'il existe une chaîne reliant
       tout couple quelconque de sommets. La définition vaut aussi pour un graphe orienté
       à condition de considérer le graphe non-orienté correspondant, c'est-à-dire le graphe
       dans lequel toutes les arêtes sont devenues bidirectionnelles.

       Si l'existence d'un chemin entre tout couple de sommets se vérifie dans le graphe
       orienté original, alors celui-ci est dit fortement connexe.




                            fig. 2.4 Graphe orienté connexe mais non fortement connexe
       Un arbre est simplement un graphe non orienté, connexe et acyclique. Si les arêtes
       sont orientées, on parle plutôt d'arborescence (1).




1 Dont un exemple est l'arborescence des dossiers dans l'organisation d'un système de fichiers d'un
  ordinateur.


H. Schyns                                                                                                      2.2
Introduction à la théorie des graphes                                                         2 - Définitions




                                 fig. 2.5 Un arbre : non orienté, connexe et acyclique
       Les nœuds de degré 1 sont appelés feuilles; les nœuds de degré supérieur à 1
       sont les nœuds internes.

       Un graphe est dit complet quand tous ses nœuds sont reliés deux à deux. Un
       graphe complet à [ n ] nœuds est noté Kn (1)




              K1                K2                K3                K4                   K5

       Partant de K1, on constate qu'en ajoutant un nœud on doit aussi ajouter une arête
       pour obtenir K2. En toute généralité, si on ajoute un nœud à Kn, il faut aussi ajouter
       n arêtes pour obtenir Kn+1. Le graphe complet Kn contient donc [ a ] arêtes avec

                                                                 n×(n-1)
                                        a=1+ 2+3+...+(n-1)=
                                                                    2

       Ainsi, le graphe complet K6 compte 15 arêtes, soit 5 de plus que K5.




1 Par référence au mathématicien polonais Kazimierz Kuratowski (1896-1980).


H. Schyns                                                                                                2.3
Introduction à la théorie des graphes                                                           3 - Représentations


3.          Représentations

     3.1.     Position du problème

       La manière la plus évidente de représenter un graphe est - qui l'eût cru - sous forme
       graphique.

       C'est une représentation qui peut être rapidement appréhendée par l'œil et le
       cerveau humain ainsi qu'en témoigne l'expression "un petit dessin vaut mieux qu'un
       long discours".

       De nombreux objets graphiques que nous voyons chaque jour ne sont pourtant
       pas perçus en tant que graphes au sens mathématique du terme : une carte
       routière, un arbre généalogique, des fontes typographiques, un flow sheet industriel
       ou l'organigramme d'une société sont des graphes ou, plus exactement, contiennent
       des graphes.

       De manière similaire, bon nombre de concepts non-graphiques auxquels nous
       sommes confrontés peuvent aussi se mettre sous forme de graphe : une recette de
       cuisine, un mode d'emploi, une comptabilité, l'organisation d'un événement sont
       aussi des graphes.

       Inversement, les graphes admettent aussi des représentations non-graphiques, plus
       difficilement compréhensibles pour l'être humain mais bien plus commodes pour le
       traitement informatique :

       -     représentation matricielle,
       -     représentation base de données.

       Dans ce chapitre, nous verrons comment mettre l'information sous forme de graphes
       et comment mettre les graphes sous une forme "computer friendly".


     3.2.     Représentation graphique

       Au chapitre précédent, nous avons vu plusieurs définitions de graphes
       accompagnées d'exemples.

       Pour être compréhensible, un graphe doit mettre clairement en évidence les nœuds
       ou sommets. Il doit surtout leur attribuer un nom.

       Les arêtes matérialisent les relations entre les nœuds. Si cette relation est identique
       pour l'ensemble du graphe – cas de l'organigramme hiérarchique - il suffira de la
       spécifier dans la description générale. Il ne sera pas nécessaire de nommer
       chacune des arêtes; celles-ci étant définies par leurs extrémités.

                     m          A            n                     m          A             n


                                 q                                             q
                                                                     p
                                         r                                              r
               B                C                D           B                C                    D
                                                                                                          u
                                 t                                              t

                       s                                             s
                                E                                              E

                            fig. 3.1 Graphes non orienté (g.) et orienté (dr.) élémentaires

H. Schyns                                                                                                      3.1
Introduction à la théorie des graphes                                                                3 - Représentations

       Par contre, si chaque arête exprime une relation différente - cas d'un schéma de
       base de données – il faudra nommer chacune d'elles pour que le graphe soit
       compréhensible (fig. 3.1).


   3.3.     Représentation matricielle

       Un graphe peut être représenté de manière abstraite par une matrice d'adjacence.

       Une première idée consiste en un tableau à deux dimensions dans lequel les arêtes
       sont présentées en en-tête de colonnes et les nœuds en en-tête de ligne.

                                                                           Arêtes
                                                           m       n       q     r       s       t
                                                   A       1       1       1    0        0       0
                                                   B       1       0       0    0        1       0
                             Nœuds




                                                   C       0       0       1    1        0       1
                                                   D       0       1       0    1        0       0
                                                   E       0       0       0    0        1       1
                            tab. 3.1 Représentation matricielle du graphe de la fig. 3.1 (g.)

       Chaque colonne – qui représente une arête - est remplie de zéros, sauf dans les
       deux cellules qui correspondent à ses extrémités. Ainsi, dans le tab. 3.1 qui est la
       version matricielle du graphe de la fig. 3.1 (g), la colonne relative à l'arête [ m ] est
       nulle partout sauf en regard des lignes [ A ] et [ B ] qui représentent ses extrémités.

       Une telle représentation convient bien pour un graphe non-orienté qui ne
       contient pas de boucles.

       La représentation peut être adaptée au cas des graphes orientés, à condition de
       prendre une convention supplémentaire; par exemple, noter –1 pour le nœud
       d'origine et +1 pour le nœud de destination. Mais ça ne résout pas le problème des
       boucles.

       Une meilleure solution consiste en un tableau à deux dimensions dans lequel les
       lignes et colonnes représentent uniquement des nœuds. Les nœuds considérés
       comme origine sont présentés en en-tête de colonnes; ceux considérés comme
       extrémités, en en-tête de ligne.

                                                                           Origine
                                                               A       B      C      D       E
                                                       A       0       1      1      0       0
                                     Destination




                                                       B       1       0      0      0       0
                                                       C       0       0      0      1       0
                                                       D       1       0      0      1       0
                                                       E       0       1      1      0       0
                           tab. 3.2 Représentation matricielle du graphe de la fig. 3.1 (dr.)
       Dans ce tableau, chaque cellule représente une arête potentielle. Elle se trouve à
       l'intersection d'une colonne qui représente son nœud d'origine et une ligne qui
       représente son nœud d'extrémité. Cette cellule contient 1 ou 0 selon que l'arête
       correspondante existe ou non dans le graphe.

       Ainsi, dans le tab. 3.2 qui est la version matricielle du graphe orienté de la fig. 3.1
       (dr.), nous voyons que le nœud [ A ] est à l'origine de deux arêtes, l'une conduisant à
       [ B ] et l'autre à [ D ].

       Les éléments de la diagonale correspondent aux arêtes pour lesquelles l'origine et la
       destination sont identiques, ce qui est le cas de la boucle [ D ][ D ].

H. Schyns                                                                                                           3.2
Introduction à la théorie des graphes                                                        3 - Représentations

       Cette représentation est largement utilisée dans les traitements informatiques. Elle
       a l'inconvénient de consommer beaucoup d'espace mémoire alors que relativement
       peu de cellules contiennent des valeurs non nulles. Elle a l'avantage de pouvoir
       attribuer un poids autre que 0 ou 1 aux arêtes ainsi que nous le verrons plus loin.
       D'autre part, dans le cas d'un graphe non orienté, la matrice est symétrique (1). On
       peut donc se contenter de considérer une matrice triangulaire.


   3.4.      Représentation tabulaire

       Puisqu'un graphe est composé de nœuds et d'arêtes, il suffit, pour le décrire, de faire
       la liste des nœuds et la liste des arêtes. Cette lapalissade est à la base de la
       représentation tabulaire ou base de données.

                                                         origine
                                         Noeuds                           Arêtes
                                            I          destination          II


                                     fig. 3.2 Schéma E-R de gestion des graphes

                  Chaque ARETE prend son origine en un et un seul NOEUD
            Chaque NOEUD est pris comme origine pour une ou plusieurs ARETES

              Chaque ARETE prend sa destination en un et un seul NOEUD
        Chaque NOEUD est pris comme destination pour une ou plusieurs ARETES

       Dans cette représentation, le graphe orienté de la fig. 3.1 se met sous la forme
       suivante

                    NOEUDS                                                  ARETES
              IdN        Libelle                           IdR       IdNO    IdND       Libelle
               A        Noeud A                             m         A        B        Arc AB
               B        Noeud B                              n        A        D        Arc AD
               C        Noeud C                              p        B        A        Arc BA
               D        Noeud D                              q        C        A        Arc CA
               E        Noeud E                              r        D        C        Arc DC
                                                             s        B        E        Arc BE
                                                             t        C        E        Arc CE
                                                             u        D        D      Boucle DD

       Toutes les recherches d'information se font à l'aide de requêtes SQL. Par exemple,
       pour extraire la liste des nœuds qui sont origine d'au moins un arc nous aurons :

       SELECT DISTINCT Aretes.IdNO, Noeuds.Libelle
       FROM Noeuds INNER JOIN Aretes ON Noeuds.IdN = Aretes.IdNO;

       De même, pour extraire les nœuds qui ne sont jamais à l'origine d'une arête (2)

       SELECT DISTINCT Noeuds.IdN, Noeuds.Libelle
       FROM Noeuds LEFT JOIN Aretes ON Noeuds.IdN = Aretes.IdNO
       WHERE (Aretes.IdNO Is Null);


1 Une matrice A est symétrique si la valeur de l'élément situé à l'intersection de la colonne [ P ] et de la ligne
  [ Q ] est identique à celle de l'élément situé à l'intersection de la colonne [ Q ] et de la ligne [ P ]
2 Ces sommets sont donc des points de sortie du graphe comme on le verra plus loin.


H. Schyns                                                                                                     3.3
Introduction à la théorie des graphes                                                   3 - Représentations

       Pour extraire les nœuds qui portent des boucles, nous écrirons :

       SELECT Noeuds.Libelle
       FROM Noeuds INNER JOIN Aretes ON Noeuds.IdN = Aretes.IdNO
       WHERE Aretes.IdNO = Aretes.IdND;

       La représentation tabulaire a l'avantage d'être très compacte puisqu'elle ne contient
       que les arêtes réellement présentes dans le graphe. Par contre, les traitements sont
       un peu plus ésotériques.


   3.5. Quelques exemples

       3.5.1. Carte routière

       Une carte (fig. 3.3) contient énormément d'informations : réseau routier, relief,
       divisions administratives, etc.




                                fig. 3.3 Carte géographique (ancienne) de la Belgique

       En particulier, le réseau autoroutier représenté est un graphe mathématique (fig. 3.4)
       dans lequel les villes sont les nœuds et les autoroutes, les arêtes.




H. Schyns                                                                                              3.4
Introduction à la théorie des graphes                                                                                                             3 - Représentations

                        Oostende                                               Antwerpen
                                   Brugge
                                                        Gent
                                                                                                                             Hasselt




                                                                Bruxelles
                                   Kortrijk
                                                                                                                                                Liège




                                                          Mons                 Charleroi                    Namur




                                                                                                                             Arlon


                          fig. 3.4 Graphe non orienté du réseau autoroutier belge (simplifié)

       Ce graphe peut lui-même se mettre sous forme matricielle (tab. 3.3) :
                                                                          Antwerpen
                                    Oostende




                                                                                      Bruxelles




                                                                                                                             Charleroi
                                                                                                  Hasselt
                                               Brugge



                                                               Kortrijk




                                                                                                                     Namur



                                                                                                                                         Mons
                                                                                                             Liège




                                                                                                                                                Arlon
                                                        Gent




                    Oostende            1
                      Brugge        1         1    1
                       Gent             1          1   1     1
                      Kortrijk          1     1
                    Antwerpen                 1              1    1
                     Bruxelles                1        1          1   1    1    1
                      Hasselt                          1     1        1
                       Liège                                 1    1        1               1
                      Namur                                  1        1         1          1
                     Charleroi                               1             1          1
                       Mons                                                     1
                       Arlon                                          1    1
                             tab. 3.3 Matrice de connectivité du réseau auto-routier belge

       Comme les autoroutes peuvent être parcourues dans les deux sens, il s'agit d'un
       graphe non orienté. La matrice qui le représente est symétrique : chaque ligne est
       identique à la colonne correspondante. Eventuellement, les éléments de la matrice
       pourraient contenir la longueur ou la durée du trajet entre les deux villes concernées
       à la place des 1 et 0.

       3.5.2. Base de données

       Tout informaticien sait que la conception d'une base de données passe par
       l'établissement d'un modèle entités-relations. La fig. 3.5 représente le graphe
       entités-relations d'un facturier.




H. Schyns                                                                                                                                                        3.5
Introduction à la théorie des graphes                                                        3 - Représentations



                                                          localise     Codes       héberge
               Remises                    Clients                                                 Pays
                                                                      Postaux



                              liste        reçoit




              Conditions                                   liste       Lignes      facture
                                         Factures                                                Produits
               paiement      paie                                    Facturation



                             reprend
                                               acquitte                                           regroupe




            Déclarations                                  reçoit      Comptes                   Categorie
                                        Paiements
                TVA                                                  financiers                   TVA



                                          effectue




                                         Modes
                                        Paiement


                                fig. 3.5 Une base de données de facturation classique

       Du point de vue mathématique, il s'agit d'un graphe dans lequel les entités (tables)
       sont les nœuds et les relations sont les arêtes.

       Comme il s'agit d'un graphe orienté, nous pouvons en donner une représentation
       tabulaire. Nous avons vu au point 3.3 qu'il nous faut une table des nœuds et une
       table des arêtes. Dans le cas présent, ceci se traduit par une table des tables et une
       table des relations.

       Tout SGBD contient une méta-base de données qui gère (au moins) une
       table des tables et une table des relations (1).

                 TABLES                                                     RELATIONS
        IdT           Libelle                                  IdR   IdT1    IdTn     Libelle
        PA             Pays                                      1    PA      CP      Héberge
        CP         CodesPostaux                                  2    CP      CL      Localise
        CL            Clients                                    3    CL      FA       Reçoit
        RE           Remises                                     4    FA      RE        Liste
        PR           Produits                                    5    PR      LF      Facture
         LF      LignesFacturation                               6    FA      LF        Liste
        FA           Factures                                    7    CO      FA        Paie
        CO      ConditionsPaiement                               8    CT      PR     Regroupe
        CT         CategorieTVA                                  9    FA      PM      Acquitte
        CF      ComptesFinanciers                               10    DT      FA      Reprend
        PM          Paiements                                   11    CF      PM       Reçoit
        DT       DeclarationsTVA                                12    MP      PM      Effectue
        MP        ModesPaiement

1 Il y a aussi toujours une table des attributs ou champs. Ce sont eux qui définissent les relations mais ça ne
  change rien au raisonnement.


H. Schyns                                                                                                    3.6
Introduction à la théorie des graphes                                                         3 - Représentations

       Certaines bases de données peuvent présenter des boucles. C'est notamment le
       cas lorsqu'il y a une relation hiérarchique entre deux objets appartenant à une même
       entité.

       Prenons le cas d'une organisation quelconque qui utilise des employés pour
       accomplir des tâches. Les employés forment une hiérarchie et les tâches aussi.

       La hiérarchie des employés est représentée par la boucle :

                 Chaque EMPLOYÉ commande un ou plusieurs (sous-) EMPLOYÉS
                 Chaque EMPLOYÉ est commandé par un seul (super-) EMPLOYÉ

       La hiérarchie des tâches est représentée par la boucle :

                   Chaque TÂCHE renferme une ou plusieurs (sous-) TÂCHES
                 Chaque TÂCHE est renfermée dans une seule (super-) TÂCHE

       Ce qui se traduit par le schéma suivant :

                   commande                                                               renferme




                                            reçoit                   détermine
                          Employés                    Attributions                   Tâches



                                   fig. 3.6 Une base de données d'une organisation

       Nous pouvons aussi le mettre sous forme de graphe ainsi que nous le verrons plus
       loin (4.3.4).




                                Employés              Attributions            Tâches

                                        fig. 3.7 Graphe orienté d'une organisation

       3.5.3. Automate à Etats Finis

       La plupart des processus et des modes opératoires tels que algorithmes, recettes,
       peuvent être décrits par un automate à états finis (ang.: finite state automaton).

       Un tel automate est défini par :

       -    un nombre fini d'états (1),
       -    un certain nombre de transitions entre ces états,
       -    un certain nombre d'actions qui activent ces transitions,
       -    des équations logiques qui définissent les conditions dans lesquelles les actions
            peuvent être déclenchées.

       L'automate peut être représenté par un graphe dans lequel les nœuds
       correspondent aux états et les arêtes, aux transitions. Ce sont les arêtes qui
       supportent les conditions.


1 D'où le nom.


H. Schyns                                                                                                    3.7
Introduction à la théorie des graphes                                                                                                      3 - Représentations

       La fig. 3.8 représente le fonctionnement d'un système d'exploitation qui charge,
       exécute ou parque des processus.



                   Nouveau
                                            9



                                                          Prêt
                                            6                                      1
                                                5                                 2

                   Permuté                                  4                                           Actif
                     Prêt
                                                                                  3                                                  10



                       8                                Bloqué                                                                             Terminé
                                             7


                   Permuté
                    Bloqué


                      fig. 3.8 Lancement et arrêt d'un processus par un système d'exploitation

       Ce graphe orienté se met facilement sous forme matricielle (tab. 3.4) :

                                                                                            Origine

                                                                                                                  Permuté prêt
                                                                 Nouveau




                                                                                                        Permuté



                                                                                                                                 Terminé
                                                                                               Bloqué

                                                                                                         bloqué
                                                                                       Actif
                                                                           Prêt




                                             Conditions



                                              Nouveau
                                                Prêt              1        1            1       1                   1
                             Destination




                                                Actif                      1            1
                                               Bloqué                                   1       1
                                           Permuté bloqué                                       1         1
                                            Permuté prêt                   1                              1         1
                                              Terminé                                   1
                                                 tab. 3.4 Matrice représentative d'un automate

       On remarque que la diagonale n'est pas nulle : certaines transitions sont des
       boucles qui permettent au processus de rester dans le même état.

       En réalité, les 1 ne sont pas statiques. Ils correspondent au résultat de l'équation
       logique qui conditionne le passage d'un état à l'autre. Ces équations sont
       réévaluées périodiquement pour tous les processus qui sont dans un état d'origine
       donné de manière à définir les états qu'ils peuvent atteindre.

       Pour le débutant, la grosse difficulté consiste à ne pas confondre les états, les
       transitions et les conditions… ce n'est pas toujours évident !

       3.5.4. Diagramme PERT

       Le diagramme PERT (1) est un outil de planification dans lequel on visualise l'inter-
       dépendance des tâches et leur ordonnancement en étapes :



1 Project Evaluation and Review Technique


H. Schyns                                                                                                                                                 3.8
Introduction à la théorie des graphes                                             3 - Représentations

       -        chaque étape est représentée par un cercle
       -        chaque tâche est représentée par une flèche qui conduit d'une étape à une
                autre une autre étape.


                                                        Tâche 3
                                                          15
                          Tâche 1                                                    Transfert
                                         Etape 1                        Etape 3         0
                             5

                                        Dmin Dmax                     Dmin Dmax
                                         5    25                        20   40
           Etape 0                                                                                Etape 5

       Dmin Dmax                                                                                 Dmin Dmax
            0      0                                                                              40     40
                                         Etape 2                        Etape 4


                          Tâche 2       Dmin Dmax                     Dmin Dmax       Tâche 6
                            10           10   10                       25   25          15
                                                        Tâche 4
                                                          15


                                          fig. 3.9 Diagramme PERT typique

       Chaque tâche se voit attribuer une durée estimée.

       Chaque étape se voit attribuer :

       -        une date au plus tôt (Dmin) qui résulte de l'addition des durées définies pour
                l'enchaînement des tâches qui y conduisent.
       -        une date au plus tard (Dmax) qui tient compte de la durée totale du projet et qui
                est déterminée en remontant dans le diagramme.

       Une étape peut être le point de départ de plusieurs tâches mais les flèches ne
       doivent jamais se croiser.

       Nous retrouvons sensiblement les mêmes concepts que dans l'automate à états
       finis, les étapes étant l'équivalent des états et les tâches, l'équivalent des transitions.

                                                      origine
                 Détails                                                               Détails
                                         Etapes                   Tâches
                  Etape                               destin.                          Tâche


                                         fig. 3.10 Diagramme E-R d'un PERT

       3.5.5. Flow sheet industriel

       Un flow sheet industriel (fig. 3.11) est un schéma dans lequel :

       -        les différents appareils (réservoirs, réacteurs…) et activateurs (pompes,
                vannes…) d'une installation industrielle (usine, atelier…) sont représentés par
                des symboles;
       -        les flux de matière et d'énergie entre ces appareils sont représentés par des
                lignes.

       Un activateur est un dispositif qui autorise le passage d'un flux tandis qu'un appareil
       est un dispositif capable de stocker, de transformer ou de délivrer de la matière ou
       de l'énergie.

H. Schyns                                                                                          3.9
Introduction à la théorie des graphes                                                 3 - Représentations




                                  fig. 3.11 Flowsheet d'un procédé chimique typique

       Du point de vue de la théorie des graphes :

       -    les appareils sont les nœuds,
       -    les flux sont les arêtes. Chaque flux est pourvu d'un ou de plusieurs activateurs
            (fig. 3.12).




                                   fig. 3.12 Graphe des flux du procédé chimique

       La représentation matricielle (tab. 3.5) est assez semblable à celle de l'automate à
       états finis. L'état ouvert ou fermé du ou des activateurs tient lieu de conditions.




H. Schyns                                                                                           3.10
Introduction à la théorie des graphes                                                         3 - Représentations

                                                             ORIGINE
                                      TA TB TC EE W1 R TD S1               C W2 D TF TE
                                 R VTA VTB VTC M VW1 R
                                 TD                         VR
                                 D                               VTD VS1 VCD
                                 TE                                       VTE
                   DESTINATION   C                                              VW2 1
                                 TF                                                 VTF
                                 TA
                                 TB
                                 TC
                                 EE
                                 W1
                                 S1
                                 W2

                                        tab. 3.5 Représentation matricielle du même procédé


   3.6.     Conclusion

       De nombreux problèmes peuvent se mettre sous la forme d'un graphe. Or, pour
       traiter un graphe de manière abstraite, il suffit de disposer :

       -    soit d'un objet "Matrice" dans un langage quelconque;
       -    soit d'une base de données "Noeuds-Arêtes".

       La suite n'est plus qu'une question d'algorithmes génériques… Ces algorithmes font
       l'objet du chapitre suivant.




H. Schyns                                                                                                   3.11
Introduction à la théorie des graphes                                                 4 - Propriétés des graphes


4.          Propriétés des graphes

     4.1.     Connectivité

       4.1.1. Position du problème

       Un premier problème qui se pose est de savoir si un graphe (non orienté) est d'un
       seul tenant ou non; en d'autres mots, s'il est connexe ou non.

       Le problème se pose notamment :

       -     en cartographie : est-il possible d'aller de Paris à Dublin par la route ? Y a-t-il un
             continuum habité entre Bruxelles et Liège (1) ?
       -     en informatique : est-il possible d'atteindre telle machine à partir de telle autre ?
             Jusqu'où un virus peut-il se propager dans un système ?
       -     en épidémiologie : une épidémie locale peut-elle se transformer en pandémie
             mondiale ? Quelle proportion de la population faut-il vacciner pour faire barrière
             à la maladie ?
       -     en animation 3D : les objets sont-ils attachés et se déplacent-ils ensemble ou
             non ?

       Nous savons qu'un graphe non orienté est connexe s'il existe une chaîne reliant tout
       couple quelconque de sommets. Inversement, il suffit de trouver une seule paire de
       nœuds impossibles à relier pour que le graphe soit non connexe.

                                              A         B        C         D




                                              E         F        G         H




                                              I         J        K         L


                                        fig. 4.1 Un graphe trivialement non-connexe

       Si la (non-)connectivité d'un graphe simple tel que celui de la fig. 4.1 apparaît
       immédiatement à l'observateur humain, il en va tout autrement quand le graphe
       compte un grand nombre de nœuds et d'arêtes.




                              fig. 4.2 Les murs du labyrinthe sont-ils d'un seul tenant ?


1 On considère qu'il y a habitat continu tant que les maisons sont à une distance inférieure à maximum
  donnée les unes des autres (p.ex 100m).


H. Schyns                                                                                                   4.1
Introduction à la théorie des graphes                                              4 - Propriétés des graphes

       Qui peut dire rapidement si les murs du labyrinthe de la fig. 4.2 sont d'un seul tenant
       ou non ? S'il contient des zones dont il est impossible de s'échapper ?

       Dans de tels systèmes, le recours à l'informatique est indispensable. Encore faut-il
       disposer d'un algorithme performant.

       4.1.2. Algorithme

       Plusieurs algorithmes ont été proposés pour détecter la connexité d'un graphe. Les
       plus connus sont ceux du parcours en largeur et du parcours en profondeur.

       L'algorithme présenté ci-dessous est très simple et basé sur un classement de
       nombres binaires (1).

       Partons de la représentation matricielle du graphe simple de la fig. 4.1. Cette
       matrice est symétrique. Nous avons omis les zéros pour plus de clarté et, pour les
       besoins de l'algorithme, nous avons ajouté des 1 (qui représentent des boucles) sur
       la diagonale :

                  A    B    C    D      E   F   G    H     I    J    K    L        Degré   ValBin
             A    1    1                1                                            3      3200
             B    1    1                                                             2      3072
             C              1    1                    1                              3      784
             D              1    1                    1                              3      784
             E    1                     1   1              1    1                    5      2252
             F                          1   1              1    1                    4      204
             G                                   1    1                   1          3       49
             H              1    1               1    1              1    1          6      819
             I                          1   1              1    1                    4      204
             J                          1   1              1    1                    4      204
             K                                        1             1                2       18
             L                                   1    1                   1          3       49
                                            tab. 4.1 Matrice de connectivité

       La suite 1 et de 0 de chaque ligne du tableau peut être interprétée comme un
       nombre binaire dont la valeur décimale est reprise dans la colonne de droite
       (ValBin).

       Dans un premier temps, nous décidons de donner le plus gros poids binaire aux
       nœuds qui ont le degré le plus élevé. Nous trions donc les lignes et colonnes du
       tableau en ordre décroissant de degré. Ce n'est pas strictement nécessaire pour la
       suite, mais ça permet déjà d'y voir plus clair.

                  H    E    F    I      J   A   C    D    G     L    B    K        Degré   ValBin
             H    1                             1    1    1     1         1          6      2109
             E         1    1    1      1   1                                        5      1984
             F         1    1    1      1                                            4      1920
             I         1    1    1      1                                            4      1920
             J         1    1    1      1                                            4      1920
             A         1                    1                        1               3      1090
             C    1                              1    1                              3      2096
             D    1                              1    1                              3      2096
             G    1                                        1    1                    3      2060
             L    1                                        1    1                    3      2060
             B                              1                        1               2       66
             K    1                                                       1          2      2049
                                            tab. 4.2 Matrice de connectivité


1 N'ayant pas trouvé cet algorithme, ou du moins, cette implémentation dans la littérature, je peux peut-être
  en revendiquer la paternité. Son originalité consiste à remplir la diagonale avec des 1 et à interpréter les
  lignes comme des nombres binaires (on pourrait également les considérer comme des nombres décimaux
  ou des chaînes de caractères).


H. Schyns                                                                                                 4.2
Introduction à la théorie des graphes                                              4 - Propriétés des graphes


       L'algorithme consiste à classer ces nombres dans l'ordre décroissant (ou
       croissant) en permutant les lignes et les colonnes correspondantes (1).

       N'importe quel algorithme de tri peut faire l'affaire mais pour des raisons didactiques
       nous illustrerons le cas d'un tri simple.

       La ligne H étant déjà en bonne position, nous poursuivons le tri en permutant les
       lignes E et C ainsi que les colonnes E et C. Bien sûr, ce tri détruit l'ordre des degrés
       mais c'est sans importance :

                      H    C    F       I   J   A   E   D   G     L   B    K            Val
                 H    1    1                            1   1     1        1           3101
                 C    1    1                            1                              3088
                 F              1       1   1       1                                  928
                 I              1       1   1       1                                  928
                 J              1       1   1       1                                  928
                 A                              1   1                 1                 98
                 E              1       1   1   1   1                                  992
                 D    1    1                            1                              3088
                 G    1                                      1    1                    2060
                 L    1                                      1    1                    2060
                 B                              1                     1                 66
                 K    1                                                     1          2049
                                    tab. 4.3 Après la première permutation (E-C)

       Nous remarquons que les valeurs binaires ont été modifiées dans l'opération mais
       sans que cela ait un impact sur l'ordre déjà établi (H et C).

       Nous poursuivons le tri en permutant les lignes F et D ainsi que les colonnes F et D :

                      H    C    D       I   J   A   E   F   G     L   B    K            Val
                 H    1    1    1                           1     1        1           3597
                 C    1    1    1                                                      3584
                 D    1    1    1                                                      3584
                 I                      1   1       1   1                              432
                 J                      1   1       1   1                              432
                 A                              1   1                 1                 98
                 E                      1   1   1   1   1                              496
                 F                      1   1       1   1                              432
                 G    1                                      1    1                    2060
                 L    1                                      1    1                    2060
                 B                              1                     1                 66
                 K    1                                                     1          2049
                                    tab. 4.4 Après la deuxième permutation (F-D)

       Même observation que ci-dessus : les valeurs binaires des lignes ont été modifiées
       mais cela n'a eu aucun impact sur les lignes déjà triées.

       A présent, permutons I et G :




1 En réalité, il s'agit d'un simple tri lexicographique, semblable à un classement alphabétique inverse dans
  lequel 1 vient avant 0.


H. Schyns                                                                                                4.3
Introduction à la théorie des graphes                                                   4 - Propriétés des graphes

                      H    C    D       G    J    A    E     F    I    L    B    K           Val
                 H    1    1    1       1                              1         1          3845
                 C    1    1    1                                                           3584
                 D    1    1    1                                                           3584
                 G    1                 1                              1                    2308
                 J                           1         1     1    1                         184
                 A                                1    1                    1                98
                 E                           1    1    1     1    1                         248
                 F                           1         1     1    1                         184
                 I                           1         1     1    1                         184
                 L    1                 1                              1                    2308
                 B                                1                         1                66
                 K    1                                                          1          2049
                                        tab. 4.5 Après la troisième permutation (I-G)

       Ensuite J et L :

                      H    C    D       G    L    A    E     F    I    J    B    K           Val
                 H    1    1    1       1    1                                   1          3969
                 C    1    1    1                                                           3584
                 D    1    1    1                                                           3584
                 G    1                 1    1                                              2432
                 L    1                 1    1                                              2432
                 A                                1    1                    1                98
                 E                                1    1     1    1    1                    124
                 F                                     1     1    1    1                     60
                 I                                     1     1    1    1                     60
                 J                                     1     1    1    1                     60
                 B                                1                         1                66
                 K    1                                                     1               2049
                                    tab. 4.6 Après la quatrième permutation (J-L)

       Nous poursuivons avec A et K :

                      H    C    D       G    L    K    E     F    I    J    B    A           Val
                 H    1    1    1       1    1    1                                         4032
                 C    1    1    1                                                           3584
                 D    1    1    1                                                           3584
                 G    1                 1    1                                              2432
                 L    1                 1    1                                              2432
                 K    1                           1                                         2112
                 E                                     1     1    1    1         1           61
                 F                                     1     1    1    1                     60
                 I                                     1     1    1    1                     60
                 J                                     1     1    1    1                     60
                 B                                                     1     1                3
                 A                                   1                 1     1               35
                                    tab. 4.7 Après la cinquième permutation (A-K)

       Et finalement avec B et A :

                      H    C    D       G    L    K    E     F    I    J    A    B           Val
                 H    1    1    1       1    1    1                                         4032
                 C    1    1    1                                                           3584
                 D    1    1    1                                                           3584
                 G    1                 1    1                                              2432
                 L    1                 1    1                                              2432
                 K    1                           1                                         2112
                 E                                     1     1    1    1    1                62
                 F                                     1     1    1    1                     60
                 I                                     1     1    1    1                     60
                 J                                     1     1    1    1                     60
                 A                                     1                    1     1          35
                 B                                                          1     1           3
                                            tab. 4.8 Matrice de connectivité triée




H. Schyns                                                                                                     4.4
Introduction à la théorie des graphes                                             4 - Propriétés des graphes

       Nous obtenons finalement un tableau bien trié dans lequel plusieurs îlots
       apparaissent le long de la diagonale. Il ne nous reste plus qu'à voir s'il est possible
       d'isoler des sous-tableaux indépendants.

       Pour cela, partons du nœud [ H ] qui se trouve dans le coin supérieur gauche du
       tableau (tab. 4.9). Parcourons cette ligne en partant de son extrémité [ B ] et en
       revenant vers l'origine et arrêtons-nous juste avant la première arête rencontrée,
       c'est-à-dire dans la colonne [ E ]. Ceci signifie que [ E ] n'est pas connecté à [ H ] qui
       est pourtant le sommet de degré maximum.

       Voyons si [ E ] est connecté à l'un des nœuds déjà traités. Déplaçons-nous
       verticalement dans la colonne [ E ] pour revenir à la diagonale, et arrêtons-nous au
       premier nœud rencontré avant d'atteindre la diagonale.

                             H    C     D   G    L   K    E    F    I    J   A    B
                        H    1    1     1   1    1   1
                        C    1    1     1
                        D    1    1     1
                        I    1              1    1
                        L    1              1    1
                        K    1                        1
                        E                                 1    1    1    1    1
                        F                                 1    1    1    1
                        G                                 1    1    1    1
                        J                                 1    1    1    1
                        A                                 1                 1   1
                        B                                                   1   1
                                 tab. 4.9 Recherche des sous-graphes indépendants

       En fait, nous ne trouvons aucune arête avant d'atteindre la diagonale. [ E ] est donc
       un nœud qui ne se connecte à aucun des nœuds déjà examinés du graphe.

       Il n'existe aucune arête liant les nœuds de l'ensemble {H, C, D, G, L, K} à ceux de
       l'ensemble {E, F, G, J, A, B} ainsi qu'en témoignent les deux rectangles vides du
       tableau. En effet, si c'était le cas (par exemple une arête [ A-G ] ), il y aurait un bit
       de poids fort en plus dans l'une des lignes inférieures du tableau et celle-ci serait
       remontée dans le classement pour se mêler aux lignes du premier bloc.

       Par conséquent, ces deux ensembles sont disjoints et le graphe initial n'est pas
       connexe.

       L'ensemble {H, C, D, G, L, K} que nous avons isolé constitue un sous-tableau
       indépendant et donc un graphe connexe distinct.

                             H    C     D   G    L   K    E    F    I    J   A    B
                        H    1    1     1   1    1   1
                        C    1    1     1
                        D    1    1     1
                        I    1              1    1
                        L    1              1    1
                        K    1                        1
                        E                                 1    1    1    1    1
                        F                                 1    1    1    1
                        G                                 1    1    1    1
                        J                                 1    1    1    1
                        A                                 1                    1   1
                        B                                                      1   1
                                   tab. 4.10 Recherche d'un autre îlot indépendant

       Comme il pourrait y avoir plus de deux sous-graphes, nous reprenons la recherche
       avec l'élément suivant de la diagonale. L'examen de la ligne [ E ] nous conduit
       directement au nœud [ B ] qui est le dernier de la liste. En descendant dans la
       colonne [ B ], nous trouvons l'arête [ A-B ] avant de rencontrer la diagonale. [ B ] est
       donc lié aux nœuds déjà traités.
H. Schyns                                                                                               4.5
Introduction à la théorie des graphes                                               4 - Propriétés des graphes

       Par conséquent, les nœuds de l'ensemble {E, F, I, J, A, B} forment un seul sous-
       graphe connexe indépendant du premier.

       Nous pouvons à présent remettre la diagonale à zéro :

                             H    C     D   G   L       K   E   F   I   J       A   B
                        H         1     1   1   1       1
                        C     1         1
                        D     1    1
                        I     1                 1
                        L     1             1
                        K     1
                        E                                       1   1   1       1
                        F                                   1       1   1
                        G                                   1   1       1
                        J                                   1   1   1
                        A                                   1                       1
                        B                                                    1
                                    tab. 4.11 Deux sous-graphes connexes isolés

       Nous vérifions sur le graphe initial que nous avons bien isolé les deux figures :

                                        A           B           C           D




                                        E           F           G           H




                                        I           J           K           L


                       fig. 4.3 Le graphe initial, décomposé en deux sous-graphes connexes


   4.2.     Nombre d'arêtes entre deux points

       4.2.1. Position du problème

       Dans un graphe connexe (non orienté), nous savons qu'il est toujours possible de
       trouver un chemin pour aller d'un sommet [ A ] à un autre sommet [ B ]. Par contre,
       nous ne savons pas quel est le nombre minimal d'arêtes qu'il faut parcourir ni le
       nombre minimal de sommets qu'il faut traverser pour nous rendre de [ A ] à [ B ].

       Ce problème se pose notamment :

       -    en transports : quel trajet présente le nombre minimal de frontières à traverser
            pour se rendre de Belgique en Turquie ? Combien de véhicules faut-il prendre
            au minimum pour de rendre de Liège-centre à une plage aux Seychelles.
       -    en informatique : quel est le nombre minimal de routeurs qu'un paquet doit
            traverser pour passer d'une machine à une autre ?
       -    en automation : comment faire un minimum de mouvement à un bras robotisé
            pour prendre une pièce sur une bande transporteuse et la déposer correctement
            sur un banc de travail ?
       -    en généalogie : quel est le degré de parenté entre deux individus donnés ?

       A nouveau, le problème peut sembler trivial dans des cas simples, il l'est nettement
       moins quand le graphe est dense et étendu comme celui de la fig. 4.4; quand il faut
       raisonner dans l'espace, comme dans le cas du polyèdre de la fig. 4.5 ou quand il
       faut expliquer ces choses à un ordinateur.


H. Schyns                                                                                                 4.6
Introduction à la théorie des graphes                                                 4 - Propriétés des graphes




                 fig. 4.4 Graphe de la relation "a une frontière terrestre avec" appliqué à l'Europe (1)




                                                                              2
                                         fig. 4.5 Icosidodécaèdre ditrigonal ( )

       Une variante du problème consiste déterminer quels sont les sommets les plus
       éloignés l'un de l'autre dans un graphe; éloigné s'entend en termes de nombre d'arcs
       et de sommets.

       4.2.2. Algorithme

       Pour illustrer la démarche nous posons la question suivante : quel est le nombre
       minimum de pays qu'un transporteur routier danois doit traverser pour se rendre au
       Portugal ?


1 L'Espagne et l'Irlande ont une frontière terrestre avec le Royaume-Uni respectivement via Gibraltar et
  l'Uster. La Pologne et la Lituanie en ont une avec la Russie via l'enclave de Kaliningrad.
2 Provenant du site http://www.mathcurve.com/polyedres/polyedres.shtml


H. Schyns                                                                                                   4.7
Introduction à la théorie des graphes                                                4 - Propriétés des graphes

       Partons du graphe "européen" de la fig. 4.4. quelque peu élagué pour ne pas
       encombrer la résolution et établissons la matrice de connectivité :

                              F     D    B    L   CH    I    E     NL   A   DK   P             ValBin
                 France       1     1    1    1    1    1    1                                  2032
               Allemagne      1     1    1    1    1               1    1   1                   1998
                Belgique      1     1    1    1                    1                            1928
              Luxembourg      1     1    1    1                                                 1920
                 Suisse       1     1              1    1               1                       1636
                  Italie      1                    1    1               1                       1124
                Espagne       1                              1                   1              1041
               Pays-Bas             1    1                         1                             776
                Autriche            1              1    1               1                        612
               Danemark             1                                      1                     514
                Portugal                                      1                 1                17
                                  tab. 4.12 Connectivité des pays européens de l'Ouest

       Les lignes et colonnes ont été classées selon la méthode décrite au point précédent
       de manière à vérifier si le graphe est connexe, ce qui est le cas.

       L'absence de 1 à l'intersection de la ligne du Danemark et de la colonne du Portugal
       confirme que ces deux pays ne sont pas voisins (en rouge). Le transporteur devra
       forcément transiter par un pays tiers. Idem pour un transporteur venant des Pays-
       Bas qui désire se rendre en Autriche (en bleu).

       L'algorithme consiste à calculer les puissances successives de la matrice de
       connectivité jusqu'à ce qu'une valeur non nulle apparaisse dans les cellules
       concernées.

       En d'autres mots, pour en effectuant une première fois le produit matriciel de la
       matrice de connectivité par elle-même, nous déterminons les sommets qui sont
       séparés par un et un seul pays de transit.

                                       F   D B        L CH I        E NL A DK P
                         France        7   5     4    4   4    3    2     2    3     1   1
                       Allemagne       5   8     5    4   4    3    1     3    3     2
                        Belgique       4   5     5    4   2    1    1     3    1     1
                      Luxembourg 4         4     4    4   2    1    1     2    1     1
                         Suisse        4   4     2    2   5    4    1     1    4     1
                          Italie       3   3     1    1   4    4    1          3
                        Espagne        2   1     1    1   1    1    3                    2
                       Pays-Bas        2   3     3    2   1               3    1     1
                        Autriche       3   3     1    1   4    3          1    4     1
                       Danemark        1   2     1    1   1               1    1     2
                        Portugal       1                            2                    2
                             tab. 4.13 Pays situés à un pays de transit (au plus) d'un autre

       La matrice résultante contient des valeurs qui ne sont plus seulement des 1 et des 0.
       Ces valeurs indiquent le nombre de chemins possibles pour se rendre à la
       destination choisie. Ainsi, un routier allemand qui veut se rendre en Italie dispose de
       trois possibilités : il peut choisir de traverser soit l'Autriche, soit la Suisse, soit la
       France (1).

       Cette matrice nous montre que le routier néerlandais ne doit traverser qu'un seul
       pays de transit pour se rendre en Autriche mais qu'il n'a qu'une seule possibilité : via
       l'Allemagne. Le routier belge peut se rendre dans tous les autres pays (sauf au
       Portugal) au prix d'un seul transit mais il n'a pas trop le choix du parcours (sauf pour
       la Suisse). Le chauffeur français a plus de chance et plus de choix : il peut atteindre



1 Ca, c'est la carte qui le dit, pas la matrice de connectivité.


H. Schyns                                                                                                  4.8
Introduction à la théorie des graphes                                                  4 - Propriétés des graphes

       tous les autres pays et dispose de plusieurs itinéraires. Par contre, le chauffeur
       danois n'est pas encore arrivé à Lisbonne.

       En multipliant cette matrice par la matrice initiale nous définissons les trajets qui
       nécessitent la traversée de deux pays de transit :

                                     F    D B       L CH I        E        NL   A DK       P
                        France       29 3 22 2 22 17 1                     11   15 6       3
                      Allemagne      3 34 25 22 23 15 6                    16   18 1       1
                       Belgique      22 25 21 18 13 8             5        13   9  6       1
                     Luxembourg 2 22 18 16 12 8                   5        1    8  5       1
                        Suisse       22 23 13 12 21 17 5                   7    17 5       1
                         Italie      17 15 8        8 17 14 4              4    14 3       1
                       Espagne       1    6    5    5   5    4    7        2    3  1       5
                      Pays-Bas       11 16 13 1         7    4    2        9    5  4
                       Autriche      15 18 9        8 17 14 3              5    14 4
                      Danemark       6    1    6    5   5    3    1        4    4  4
                       Portugal      3    1    1    1   1    1    5                        4
                          tab. 4.14 Pays situés à deux pays de transit     (au plus) d'un autre

       Nous voyons que tous les pays de la liste sont à une distance maximale de deux
       sommets (deux pays de transit) les uns des autres, à l'exception notable du
       Portugal.

       Ainsi, le chauffeur italien qui doit se rendre aux Pays-Bas doit traverser deux pays
       (Autriche-Allemagne / Suisse-Allemagne / France-Allemagne / France-Belgique).
       Quant à notre pauvre chauffeur danois, il lui faudra encore traverser un pays avant
       d'atteindre le Portugal.

       Nous poursuivons le raisonnement en multipliant cette matrice par la matrice initiale.
       Nous définissons ainsi les trajets qui nécessitent la traversée de trois pays de
       transit :
                                      F   D B        L CH I         E      NL A DK P
                        France       150 155 112 101 113 83 42              63 84 36 13
                      Allemagne 155 178 127 111 120 86 37                   75 90 44 7
                       Belgique      112 127 99 86 77 52 28                 59 55 31 6
                     Luxembourg 101 111 86 76 70 48 26                      50 50 27 6
                        Suisse       113 120 77 70 100 77 28                43 78 28 6
                         Italie       83 86 52 48 77 62 22                  27 60 18 5
                       Espagne        42 37 28 26 28 22 22                  13 18 7 12
                      Pays-Bas        63 75 59 50 43 27 13                  38 32 20 2
                       Autriche       84 90 55 50 78 60 18                  32 63 22 3
                      Danemark        36 44 31 27 28 18 7                   20 22 14 1
                       Portugal       13 7      6    6    6    5 12         2    3     1   9
                           tab. 4.15 Pays situés à trois pays de transit   (au plus) d'un autre

       Cette fois, tout le monde est interconnecté !

       Une valeur non nulle est apparue à l'intersection de la ligne du Danemark et de la
       colonne du Portugal. Le chauffeur danois doit traverser trois pays (sommets) et
       donc parcourir quatre arêtes pour aller à Lisbonne. Il ne dispose que d'un seul
       itinéraire : via l'Allemagne, la France et l'Espagne.

       La comparaison des deux dernières matrices nous montre que les plus grandes
       distances se situent entre :

       -    le Portugal et les Pays-Bas,
       -    le Portugal et l'Autriche,
       -    le Portugal et le Danemark.




H. Schyns                                                                                                    4.9
Introduction à la théorie des graphes                                               4 - Propriétés des graphes

       Le Portugal apparaît ainsi comme le pays le plus éloigné des autres (1).

       Nous apprenons aussi qu'il suffit de parcourir un maximum de quatre arêtes pour se
       rendre d'un point du graphe à un autre.

       Cette distance maximale (en fait mini-max) constitue le diamètre du graphe.


   4.3.     Origines et extrémités

       4.3.1. Position du problème

       Nous savons à présent définir si un graphe non orienté est connexe et quel est le
       nombre minimal d'arêtes qu'il faut parcourir pour aller de [ A ] à [ B ].

       Dans le cas de graphes orientés, un problème supplémentaire se pose : où sont les
       sources ou origines (en d'autres mots, par où entre-t-on dans le graphe) ? Où sont
       les puits ou extrémités (en d'autres mots, par où en sort-on) ? Par quels sommets
       passe-t-on entre l'origine et l'extrémité ?

       Ce problème se pose notamment :

       -    en gestion de projets : quels sont les pré-requis et les étapes pour réaliser un
            projet donné (méthode PERT) ?
       -    en organisation d'entreprise : quel est le chemin suivi par un document, une
            tâche dans une organisation ?
       -    en organisation de bases de données : dans quel ordre faut-il remplir les tables
            pour assurer l'intégrité référentielle de l'ensemble ?
       -    en électronique : par où entre-t-on dans le circuit ? Quels sont ses outputs ?
       -    en jeux vidéo : comment le joueur entre-t-il dans le jeu ? Quel est l'objectif ?
            Par quelles épreuves le joueur doit-il passer ?

       Un cas particulièrement intéressant est celui de la réalisation de bases de données.

       L'analyse entités-relations fournit un premier schéma d'organisation semblable à
       celui de la fig. 4.7 mais ne fournit guère d'indications sur l'ordre d'implémentation.

       Nous allons voir comment la théorie des graphes permet de résoudre ce problème.

       4.3.2. Approche intuitive

       Quand un problème est complexe, il faut commencer par le simplifier (2).
       Commençons par le graphe élémentaire de la fig. 4.6.


                                        A         B              C             D

                            fig. 4.6 Origine (A) et destination (D) dans un graphe orienté

       Il nous paraît évident que [ A ] est un point d'entrée dans le graphe tandis que [ D ]
       est un point de sortie. Mais comment ferons-nous avec un graphe beaucoup plus
       compliqué comptant des milliers de sommets ?



1 Dans le cadre des hypothèses formulées dans cet exemple.
                                                             e
2 En paraphrasant René Descartes, philosophe français du XVII s. (1596-1650); père de la démarche
  analytique.


H. Schyns                                                                                                4.10
Introduction à la théorie des graphes                                                                 4 - Propriétés des graphes

       En y regardant de plus près, nous notons que :

       -    une arête à [ A ] pour origine, mais aucune n'a [ A ] comme destination,
       -    des arêtes ont [ B ] ou [ C ] pour origine et d'autres ont [ B ] ou [ C ] comme
            destination,
       -    une arête à [ D ] pour destination, mais aucune n'a [ D ] comme origine.

       Nous pouvons en conclure que

       -    un nœud est un point d'entrée dans un graphe orienté si et seulement s'il
            n'apparaît jamais comme destination des arêtes du graphe
       -    un nœud est un point de sortie d'un graphe orienté si et seulement s'il
            n'apparaît jamais comme origine des arêtes du graphe

       4.3.3. Algorithme

       Représentons le graphe de la fig. 4.6 sous la forme matricielle habituelle. Cette fois,
       le graphe est orienté et nous devons préciser que les origines des arêtes sont les
       en-têtes de colonne et que les destinations sont les en-têtes de ligne :

                                                                          Origine
                                                                  A       B       C       D       S
                                                          A                                       0
                                        Destination




                                                          B       1                               1
                                                          C               1                       1
                                                          D                       1               1
                                                          S       1       1       1       0
                                                tab. 4.16 Représentation matricielle

       Nous ajoutons une colonne et une ligne supplémentaires pour les totaux.

       Le total de la ligne [ A ] nous indique immédiatement que [ A ] n'est jamais
       destination d'une arête. Par contre, le total de la colonne [ A ] nous indique que
       [ A ] est utilisé une fois comme origine. Il est donc possible de partir de [ A ] mais
       pas d'y arriver. Nous en déduisons que [ A ] est un point d'entrée dans le graphe.

       De manière similaire, le total de la colonne [ D ] nous indique immédiatement que
       [ D ] n'est jamais comme origine d'une arête. Par contre, la ligne [ D ] nous indique
       que [ D ] est utilisé comme destination. Il est donc possible d'arriver à [ D ] mais pas
       d'en repartir. Nous en déduisons que [ D ] est un point de sortie du graphe.

       Un sommet qui serait à la fois un point d'entrée et un point de sortie serait un point
       isolé.

       Chacun sait que quand on coupe le bout d'une ficelle, on se retrouve avec un
       nouveau bout. De manière similaire, dans la matrice, nous pouvons supprimer le
       "bout" [ A ] : supprimons la colonne [ A ], ainsi nous supprimons les arêtes qui en
       partent; supprimons aussi la ligne [ A ] puisque ce sommet est retiré du graphe :

                                                                          Origine
                                                                      B       C       D       S
                                                              B                               0
                                                  Dest.




                                                              C       1                       1
                                                              D               1               1
                                                              S       1       1       0
                                                tab. 4.17 Représentation matricielle


H. Schyns                                                                                                                  4.11
Introduction à la théorie des graphes                                               4 - Propriétés des graphes

       Cette fois, nous voyons que [ B ] n'est jamais destination d'une arête. Par contre,
       [ B ] est utilisé une fois comme origine. Nous en déduisons que [ B ] est un point de
       niveau 2 dans le graphe.

       En continuant de la sorte, nous progressons dans un graphe, depuis les points
       d'entrée, vers les points de sortie. De manière similaire, nous pourrions remonter
       depuis les points de sortie vers les points d'entrée.

       4.3.4. Application

       Pour illustrer la démarche nous posons la question suivante : dans quel ordre faut-il
       implémenter les tables de la base de données dont le diagramme Entités-Relations
       est repris à la fig. 4.7 ?


                                                          localise     Codes        héberge
              Remises                     Clients                                                 Pays
                                                                      Postaux



                               liste       reçoit




            Conditions                                     liste       Lignes       facture
                                         Factures                                               Produits
             paiement         paie                                   Facturation



                             reprend
                                               acquitte                                          regroupe




            Déclarations                                  reçoit      Comptes                   Categorie
                                        Paiements
                TVA                                                  financiers                   TVA



                                          effectue




                                          Modes
                                         Paiement



                           fig. 4.7 Diagramme Entités-Relations d'une chaîne de facturation

       Avant d'attaquer le problème, il n'est pas inutile de rappeler le symbolisme :




                 fig. 4.8 Différents symboles qui représentent une relation un à plusieurs optionnelle

       Rappelons aussi que, pour assurer l'intégrité référentielle, les enregistrements qui
       appartiennent à l'entité située du coté "un" doivent être encodés avant ceux de
       l'entité située du côté "plusieurs".

       Le diagramme Entités-Relations est donc aussi un diagramme de
       précédence; l'entité "un" étant l'origine et l'entité "plusieurs" la destination de
       l'arête qui représente la relation.

       C'est donc un graphe orienté que nous pouvons représenter comme à la fig. 4.9.

H. Schyns                                                                                                   4.12
Introduction à la théorie des graphes                                                                                                                                                   4 - Propriétés des graphes

                                                                                                                          Codes
                              Remises                                   Clients                                                                                                             Pays
                                                                                                                         postaux



                                                                                                                          Lignes
                            Conditions                                             Factures                                                                                          Produits
                                                                                                                        facturation




                                                                                   Paiements


                                                                                                                         Comptes
                            Déclarations
                                                                                                                        financiers



                                                                   Modes
                                                                  paiement


                                fig. 4.9 Graphe orienté tiré du diagramme Entités-Relations

       Le tab. 4.18 montre sa matrice de connectivité. Elle compte une large majorité de
       zéros :



                                                                                                                         Cond. Paiement
                      Origine
                                              Codes Postaux




                                                                                                                                          Catégorie TVA




                                                                                                                                                                                                    Modes Paiemt
                                                                                                                                                          Comptes Fin.
                                                                                              Lignes Fact.




                                                                                                                                                                                     Déclarations
                                                                                                                                                                         Paiements
                                                                         Remises




                                                                                                             Factures
                                                                                   Produits
                                                              Clients
                                       Pays




                                                                                                                                                                                                                   S

                    Destination
                       Pays                                                                                                                                                                                        0
                  Codes Postaux         1                                                                                                                                                                          1
                      Clients                    1                                                                                                                                                                 1
                     Remises                                                                                  1                                                                                                    1
                     Produits                                                                                                                1                                                                     1
                   Lignes Fact.                                                     1                         1                                                                                                    2
                     Factures                                  1                                                            1                                                          1                           3
                 Cond. Paiement                                                                                                                                                                                    0
                 Catégorie TVA                                                                                                                                                                                     0
                  Comptes Fin.                                                                                                                                                                                     0
                    Paiements                                                                                 1                                             1                                         1            3
                  Déclarations                                                                                                                                                                                     0
                 Modes Paiemt                                                                                                                                                                                      0
                        S               1        1             1          0         1           0             3             1                1              1              0           1              1

                                 tab. 4.18 Matrice de connectivité de la base de données

       La matrice montre immédiatement qu'il y a six nœuds d'entrée dans la base de
       données. C'est par ces entités qu'il faut commencer l'implémentation. Nous les
       appellerons Entités de niveau I (1).

       De même, nous repérons trois nœuds de sortie. Ces trois entités seront les
       dernières à être traitées mais il ne nous est pas encore possible de déterminer leur
       niveau.

       Elaguons le graphe en supprimant les nœuds d'entrée, lignes et colonnes (sans
       toucher aux nœuds de sortie). Nous obtenons la sous-matrice du tab. 4.19.




1 En toute rigueur, il faudrait parler de sommet ou nœud de niveau I.


H. Schyns                                                                                                                                                                                                              4.13
Introduction à la théorie des graphes                                                                                                                                     4 - Propriétés des graphes

                                  Origine




                                                       Codes Postaux




                                                                                                                       Lignes Fact.


                                                                                                                                                          Paiements
                                                                                     Remises




                                                                                                                                          Factures
                                                                                                    Produits
                                                                       Clients
                                                                                                                                                                      S

                                Destination
                              Codes Postaux                                                                                                                           0
                                   Clients                1                                                                                                           1
                                  Remises                                                                                                   1                         1
                                  Produits                                                                                                                            0
                                Lignes Fact.                                                             1                                  1                         2
                                  Factures                              1                                                                                             1
                                 Paiements                                                                                                  1                         1
                                        S                 1             1             0                  1               0                  3               0

                                                 tab. 4.19 Entités de niveau II

       Nous mettons en évidence deux nouveaux points d'entrée. Ces entités seront
       traitées en deuxième ligne. Nous les appellerons Entités de niveau II.

       Nous poursuivons notre travail d'élagage et nous obtenons le tab. 4.20.

                                         Origine
                                                                                                    Lignes Fact.


                                                                                                                                          Paiements
                                                                                     Remises


                                                                                                                       Factures
                                                                       Clients




                                                                                                                                                           S
                                        Destination
                                         Clients                                                                                                            0
                                         Remises                                                                         1                                  1
                                    Lignes Fact.                                                                         1                                  1
                                         Factures                       1                                                                                   1
                                        Paiements                                                                        1                                  1
                                             S                          1             0                  0               3                  0

                                                 tab. 4.20 Entités de niveau III

       Il nous montre que l'entité Client est une entité de niveau III.

       Après avoir supprimé l'entité Client nous obtenons les entités de niveau IV de la tab.
       4.21 :
                                             Origine
                                                                                          Lignes Fact.


                                                                                                                                Paiements
                                                                            Remises


                                                                                                             Factures




                                                                                                                                                  S

                                          Destination
                                            Remises                                                                1                                  1
                                         Lignes Fact.                                                              1                                  1
                                          Factures                                                                                                    0
                                            Paiements                                                              1                                  1
                                                 S                               0             0                   3                  0

                                                 tab. 4.21 Entités de niveau IV

       Enfin, nous arrivons aux points de sortie. Ces trois points de sortie sont des entités
       de niveau V. Elles seront traitées en dernier lieu.




H. Schyns                                                                                                                                                                                      4.14
Introduction à la théorie des graphes                                                               4 - Propriétés des graphes

                                           Origine




                                                                    Lignes Fact.
                                                                                    Paiements
                                                          Remises
                                                                                                S

                                         Destination
                                          Remises                                               0
                                         Lignes Fact.                                           0
                                         Paiements                                              0
                                                 S         0          0               0

                                             tab. 4.22 Entités de niveau V

       A partir de cette hiérarchie, il est aisé de regrouper les entités en sous-groupes
       indépendants (fig. 4.10) mais ceci sort du cadre de ce cours (1).



              Remises                    Clients                                    Codes                   Pays
                                                                                   Postaux
                 V                         III                                        II                      I




             Conditions                 Factures                                Lignes                     Produits
              paiement                                                        Facturation
                  I                        IV                                      V                          II




            Déclarations                Paiements                                   Comptes               Categorie
                TVA                                                                financiers               TVA
                  I                        V                                            I                     I




                                         Modes
                                        Paiement
                                            I




                     fig. 4.10 Hiérarchie des nœuds (entités) et regroupement en sous-graphes

       Une version simplifiée du graphe orienté est présentée à la fig. 4.11.

       Comme il est dit dans l'introduction, l'algorithme décrit dans ce chapitre peut
       s'appliquer à tous les problèmes organisationnels et dépasse le cadre de la
       réalisation de bases de données.




1 Le lecteur intéressé peut lire le document intitulé "Développer une application – Première partie : analyse et
  principes" disponible dans la section "Access" du site www.notesdecours.info


H. Schyns                                                                                                                4.15
Introduction à la théorie des graphes                                                4 - Propriétés des graphes



                             Clients



                                                        Factures                 Paiements



                            Produits



                            fig. 4.11 Graphe orienté des étapes de réalisation du facturier


   4.4.      Cycles simples et multiples

       4.4.1. Position du problème

       Grâce à la méthode décrite au paragraphe précédent nous sommes capables
       d'identifier les points d'entrée et de sortie d'un graphe orienté et de le traverser de
       part en part. Toutefois, les graphes se laissent rarement traverser sans problèmes :
       le plus souvent ils présentent des cycles.

       Un cycle apparaît dans un graphe orienté lorsqu'une arête part d'un sommet donné
       pour aboutir à un sommet rencontré précédemment dans la hiérarchie (fig. 4.12).

                                                            D




                                        A           B              C         E

                                 fig. 4.12 Graphe orienté présentant un cycle simple

       Ces cycles sont parfois souhaités, parfois indésirables. Dans tous les cas, il est
       important de pouvoir les identifier :

       -    en réseau : la configuration des routeurs peut engendrer des boucles de routage
            dans lesquelles les paquets vont se perdre sans espoir de sortie;
       -    en engineering : les schémas industriels présentent très fréquemment des
            boucles de recyclage, souvent imbriquées. Toute boucle doit être pourvue d'une
            purge afin d'éviter l'accumulation de composés indésirables.




           Alimentation                                 Réacteur                               Production
                                Mélangeur                                 Séparateur
                A                                        A®B                                        B


                               fig. 4.13 Boucle de recyclage dans un schéma industriel

       -    en économie : la structure financière des gros conglomérats industriels indique
            souvent des participations croisées qui compliquent leur évaluation.
       -    en gestion de projets : les besoins simultanés d'informations ou de ressources
            se traduisent par des boucles qui provoquent des blocages (méthode PERT).
       -    en organisation de bases de données : le schéma Entités-Relations d'une base
            de données bien conçue ne peut pas faire apparaître de boucles.



H. Schyns                                                                                                 4.16
Introduction à la théorie des graphes                                                                          4 - Propriétés des graphes

       4.4.2. Algorithme simple

       L'algorithme de détection des points d'entrée et de sortie décrit au chapitre
       précédent sert également à la détection des cycles.

       Définissons le graphe de la fig. 4.12 sous la forme matricielle habituelle :

                                                                               Origine
                                                                   A       B       C       D       E       S
                                                          A                                                0




                                    Destination
                                                          B        1                       1               2
                                                          C                1                               1
                                                          D                        1                       1
                                                          E                        1                       1
                                                          S        1       1       2       1       0
                                                    tab. 4.23 Représentation matricielle

       Nous voyons immédiatement que [ A ] est le nœud d'entrée dans le graphe et que
       [ A ] et relié à [ B ] (tab. 4.23).

       Poursuivons notre progression dans le graphe en supprimant la ligne et la colonne
       [ A ]. Surprise ! Plus aucune ligne n'est vide : la suppression du nœud d'entrée [ A ]
       ne provoque pas l'apparition d'une nouvelle entrée (tab. 4.24).

                                                                               Origine
                                                                       B       C       D       E       S
                                                               B                       1               1
                                              Destinat.




                                                               C       1                               1
                                                               D               1                       1
                                                               E               1                       1
                                                               S       1       2       1       0
                                                          tab. 4.24 Entrée dans un cycle

       Nous venons de buter sur un cycle dont [ B ] est l'entrée ou, plus exactement la
       source.

       Puisque nous ne pouvons pas poursuivre dans cette direction, prenons le graphe
       par l'autre bout. La matrice révèle que [ E ] est l'extrémité du graphe, c'est-à-dire le
       puits. Or on arrive à [ E ] à partir de [ C ].

       Nous supprimons l'extrémité [ E ] en retirant la ligne et la colonne [ E ]. Cette
       opération devrait faire apparaître une autre extrémité mais il n'en est rien : plus
       aucune colonne n'est vide !

                                                                               Origine
                                                                           B       C       D       S
                                                                   B                       1       1
                                                      Destin




                                                                   C       1                       1
                                                                   D               1               1
                                                                   S       1       1       1
                                                                   tab. 4.25 Sortie du cycle

       Nous en déduisons que nous venons de buter contre un cycle dont [ C ] est la sortie.
       Le cycle relie les sommets restants [ B ], [ C ] et [ D ]. On y entre par le sommet [ B ]
       et on en sort - si on y arrive - par le sommet [ C ] (fig. 4.14).




H. Schyns                                                                                                                           4.17
Introduction à la théorie des graphes                                          4 - Propriétés des graphes


                                                        D




                                        A         B            C           E




                                            fig. 4.14 Cycle simple isolé

       Un schéma Entités-Relations ne peut jamais présenter de cycle.

       La présence d'un cycle indique soit une relation incorrecte, soit une cardinalité
       incorrecte (plusieurs : un au lieu de un : plusieurs).

       Dans le cas d'un diagramme PERT de suivi de projet, un cycle définit une
       situation de blocage.

       [ B ] ne peut accomplir sa tâche tant que [ D ] n'a pas fini la sienne; [ D ] ne peut
       accomplir sa tâche tant que [ C ] n'a pas fini la sienne et [ C ] ne peut finir son travail
       tant que [ B ] ne lui a pas fourni le sien.

       Une solution souvent utilisée consiste à enfermer [ B ], [ C ] et [ D ] dans un même
       lieu de travail jusqu'à ce qu'ils soient arrivés à une solution commune. C'est ce qui
       se passe lors de certaines négociations gouvernementales.

       Dans un autre scénario, tous les intervenants font simultanément et
       indépendamment les un des autres un projet martyr basé sur ce qu'ils attendent de
       l'intervenant qui les précède. Par exemple, le projet de [ B ] aurait la forme "Si [ D ]
       faisait ceci, alors je ferais cela". Chacun passe ensuite son projet au suivant et
       rédige un nouveau projet dans lequel il corrige les hypothèses qu'il a faites en
       fonction de ce qu'il reçoit du précédent.

       4.4.3. Algorithme complet

       L'algorithme qui vient d'être décrit révèle rapidement si un graphe contient au moins
       un cycle; il ne précise pas s'il y a plusieurs cycles successifs ou imbriqués.

                                            G            H            I




                            A           B         C            D           E       F

                                            fig. 4.15 Cycles successifs

       Par exemple, dans le cas de la fig. 4.15, l'algorithme isole bien les sommets {B, C,
       D, E, G, H, I} comme étant impliqués dans des cycles mais n'isole pas les trois
       cycles successifs.

       De même qu'un explorateur progresse dans une forêt équatoriale en taillant dans les
       lianes qui entravent son parcours, l'algorithme complet progresse dans le graphe en
       coupant les arêtes qui créent des cycles. Au terme du parcours, l'algorithme aura
       défini le niveau hiérarchique de chacun des sommets et déterminé le nombre de
       cycles rencontrés.

       Pour illustrer la démarche, partons du graphe de la fig. 4.16.


H. Schyns                                                                                           4.18
Introduction à la théorie des graphes                                                                                       4 - Propriétés des graphes


                                                                                F                   G




                                          A                             B               C                   D               E

                                                            fig. 4.16 Cycles successifs et imbriqués

       Un examen visuel préliminaire révèle trois boucles :

       -    [ B-C-F-B ]
       -    [ C-D-G-D ]
       -    [ B-C-D-G-F-B ]

       La matrice de connectivité du tab. 4.26 Entrée et sortie du graphe                                                                     révèle
       immédiatement le point d'entrée en [ A ] et le point de sortie en [ E ] :

                                                                                    Origine
                                                                A       B       C       D       E       F       G       S
                                                        A                                                               0
                                                        B       1                                       1               2
                                Destination




                                                        C               1                                       1       2
                                                        D                       1                                       1
                                                        E                               1                               1
                                                        F                       1                               1       2
                                                        G                               1                               1
                                                        S       1       1       2       2       0       1       2
                                                             tab. 4.26 Entrée et sortie du graphe

       Dans cet algorithme; nous progressons toujours de l'entrée vers la sortie, jamais en
       sens inverse. [ A ] est le sommet initial (niveau I) et une arête nous conduit à [ B ].
       Nous pouvons à présent supprimer la ligne et la colonne [ A ] afin de mettre en
       évidence le niveau suivant. Plus aucune origine n'apparaît : nous nous heurtons à
       un premier cycle.

                                                                                    Origine
                                                                    B       C       D       E       F       G       S
                                                            B                                       1               1
                                                            C       1                                       1       2
                                          Destination




                                                            D               1                                       1
                                                            E                       1                               1
                                                            F               1                               1       2
                                                            G                       1                               1
                                                            S       1       2       2       0       1       2
                                                                tab. 4.27 Premier cycle et coupure

       Toutefois, nous savons par l'étape précédente que [ A ] nous conduisait à [ B ].

       Nous décidons de "couper" toutes les arêtes qui ont [ B ] pour destination.

       Pour "couper" les liaisons, nous créons artificiellement une ligne vide [ B ] dans la
       matrice de connectivité. [ B ] devient donc un sommet de niveau II. Nous voyons
       par la même occasion qu'une arête relie [ B ] à [ C ].




H. Schyns                                                                                                                                        4.19
Introduction à la théorie des graphes                                                                                 4 - Propriétés des graphes


                                                                            F                    G




                                  A                                B                 C                   D        E
                                  I                                II                III

                                                       fig. 4.17 Coupure du premier cycle

       Nous pouvons à présent supprimer la ligne et la colonne [ B ] afin de mettre en
       évidence le niveau suivant (tab. 4.28). A nouveau, aucune origine n'apparaît : nous
       nous heurtons à un deuxième cycle.

                                                                                 Origine
                                                                    C       D        E       F       G       S
                                                           C                                         1        1
                                       Destination

                                                           D        1                                         1
                                                           E                1                                 1
                                                           F        1                                1        2
                                                           G                1                                 1
                                                           S        2       2        0       1       2
                                                     tab. 4.28 Deuxième cycle et coupure

       Nous savons que [ B ] nous conduisait à [ C ]. Nous décidons donc de "couper"
       toutes les arêtes qui ont [ C ] pour destination.

       Ceci crée une ligne vide [ C ] dans la matrice de connectivité et [ C ] devient un
       sommet de niveau III. Nous voyons par la même occasion qu'une arête relie [ C ] à
       [ D ] et [ F ] (fig. 4.18).
                                                                            VI                   V
                                                                            F                    G




                                  A                            B                     C                   D        E
                                   I                               II                III                 IV       V

                                                     fig. 4.18 Coupure du deuxième cycle

       Nous pouvons à présent supprimer la ligne et la colonne [ C ] afin de mettre en
       évidence le niveau suivant (tab. 4.29). Cette fois, nous découvrons que [ D ] est une
       nouvelle origine "normale". C'est un sommet de niveau IV.

                                                                                 Origine
                                                                        D        E       F       G       S
                                                               D                                         0
                                                 Destin.




                                                               E        1                                1
                                                               F                                 1       1
                                                               G        1                                1
                                                               S        2        0       1       1
                                                                   tab. 4.29 Sortie du cycle

       La suite de la progression ne pose plus de problème. Après avoir supprimé la ligne
       et la colonne [ D ], nous identifions [ E ] et [ G ] comme étant des sommets de niveau
       V (tab. 4.30)




H. Schyns                                                                                                                                  4.20
Introduction à la théorie des graphes                                                          4 - Propriétés des graphes

                                                                Origine
                                                           E      F       G       S
                                                       E                          0




                                         Destin
                                                       F                  1       1
                                                       G                          0

                                                       S   0      0       1
                                            tab. 4.30 Sommets de niveau V

       Il ne reste finalement que [ F ] qui est un sommet de niveau VI et qui marque la fin
       de notre progression.

       L'algorithme nous a permis :

       -    de traverser tout le graphe,
       -    d'attribuer un niveau hiérarchique à tous les sommets,
       -    d'identifier deux cycles,
       -    d'identifier une arête de chaque cycle,

       Pour identifier exactement tous les sommets et arêtes impliquées dans chaque
       cycle, il suffit de repartir de la matrice initiale dans laquelle nous supprimons toutes
       les arêtes coupées sauf la dernière (fig. 4.19) (1).
                                                           VI                 V
                                                           F                  G




                                  A               B                C                  D    E
                                   I                  II           III                IV   V

                                        fig. 4.19 Identification du dernier cycle

       Nous appliquons ensuite l'algorithme simple vu au point 4.4.2. ce qui nous donne
       très rapidement le cycle [ C-D-G-C ].

       Ces trois sommets peuvent être fusionnés en effectuant un OR logique entre les
       lignes puis entre les colonnes [ C ], [ D ] et [ G ]. Nous restaurons ensuite l'avant-
       dernière arête coupée (fig. 4.20) et nous reprenons le processus.

                                                           VI
                                                           F

                                                                              V

                                                                           G
                                  A               B                       C D              E
                                   I                  II           III                IV   V

                            fig. 4.20 Fusion des sommets et identification du cycle suivant

       Nous identifions ainsi le cycle [ B-(CDG)-F-B ].




1 On peut aussi simplement repartir de la matrice obtenue avant la dernière coupure.


H. Schyns                                                                                                           4.21
Introduction à la théorie des graphes                                               4 - Propriétés des graphes

   4.5.     Plus court chemin

       4.5.1. Position du problème

       Jusqu'à présent, nous avons traité de graphes simples constitués d'arêtes
       "binaires" :

       -    l'arête existe, elle est représentée par un 1 dans la matrice de connectivité;
       -    l'arête n'existe pas, son absence est représentée par un 0 dans la matrice de
            connectivité.

       Dans les graphes pondérés, les arêtes sont affectées d'un poids quelconque,
       évidemment en rapport avec le problème traité (fig. 4.21) (1).

                                                                   B
                                                          2                7
                                                  A                3            D
                                                          6                3
                                                                   C

                                          fig. 4.21 Exemple de graphe pondéré

       Ce poids représente une caractéristique du parcours qui va de l'origine à la
       destination :

       -    une distance kilométrique
       -    une durée
       -    un coût
       -    un nombre de personnes
       -    etc.

       Pour un même graphe, on peut avoir plusieurs jeux de poids. C'est notamment le
       cas des cartes routières dans lesquelles on représente numériquement les distances
       (parfois aussi le temps nécessaire) et qualitativement l'importance des routes.

       Un graphe pondéré admet une représentation matricielle simple, semblable à celles
       que nous avons déjà rencontrées. Le poids attribué à chaque arête est inscrit dans
       la cellule correspondante (tab. 4.31).

                                                              Origine
                                                      A       B    C       D   S
                                                  A                            0
                                        Destin.




                                                  B   2                        2
                                                  C   6       3                9
                                                  D           7        3       10
                                                  S   8       10       3   0
                            tab. 4.31 Matrice de connectivité correspondant à la fig. 4.21

       A partir du moment où les arêtes sont affectées d'un poids, nous allons
       naturellement nous poser la question de savoir quel est le parcours de poids
       minimum (maximum) pour aller d'un sommet du graphe à un autre.

       Ce problème se pose notamment :



1 On pourrait aussi attribuer un poids aux nœuds mais l'expérience montre que ce poids peut généralement
  être attribué aux arêtes entrantes ou sortantes.


H. Schyns                                                                                                4.22
Introduction à la théorie des graphes                                                   4 - Propriétés des graphes

       -       en cartographie : quel est le trajet plus court (le plus rapide) entre deux villes ?
       -       en informatique : dans un réseau de routeurs quel est le chemin le plus rapide
               pour transmettre un paquet d'un serveur à un client ?
       -       en organisation d'entreprise : quelle est la durée (le coût, la charge humaine)
               minimale de réalisation d'un projet ?

       4.5.2. Algorithme de Dijkstra

       Plusieurs algorithmes ont été proposés pour résoudre le problème du plus court
       chemin dans un graphe ou, plus exactement, du chemin qui minimise la somme des
       poids des arêtes parcourues.

       A ce jour, l'algorithme le plus efficace est dû à E. Dijkstra (1). Nous allons l'illustrer
       au moyen du graphe de la fig. 4.22 (2).

       La matrice de connectivité (non représentée) révèle que [ C ] est un point d'entrée et
       [ I ] un point de sortie du graphe. Quel est le chemin optimal c'est-à-dire le chemin
       de moindre poids, qui permette de se rendre de [ C ] à [ I ] (3).




                                    fig. 4.22 Application de l'algorithme de Dijkstra

       Nous commençons par faire un tableau (4) qui compte autant de colonnes qu'il y a
       de sommets dans le graphe. Nous ajoutons une colonne supplémentaire pour
       mémoriser la meilleure solution trouvée (tab. 4.32).

       Chaque élément contient deux caractéristiques :

       -       un coût ou poids,
       -       le nœud à partir duquel on arrive à cet élément pour ce coût;

       Pas       Noeuds      A      B      C       D      E       F       G      H        I     J     Min
           0       Coût      ∞      ∞      0       ∞      ∞       ∞       ∞      ∞       ∞      ∞      0
                   Via                                                                                 C
                                           tab. 4.32 Initialisation du tableau


1 Edsger Dijkstra, mathématicien et informaticien néerlandais né à Rotterdam en 1930, mort à Nuenen 2002.
  Sa contribution à l'informatique est considérable. On lui doit notamment le principe des sémaphores
  utilisés dans la conception des systèmes d'exploitation.
2 Cet exemple est repris de l'excellent site Aromath dirigé par Bernard Langer (voir sources).
3 Notons au passage qu'on peut choisir deux points quelconques mais dans ce cas, on aura recours à un
  algorihme d'élaguage (voir exercices).
4 Du point de vue de la programmation, il s'agit plutôt d'un vecteur de structures ou d'objets.


H. Schyns                                                                                                    4.23
Introduction à la théorie des graphes                                          4 - Propriétés des graphes

       Partant de [ C ], nous ignorons encore le coût des trajets pour nous rendre aux
       autres points. Nous inscrivons que le coût est infini a priori. Par contre, le coût pour
       ce rendre en [ C ] est nul puisque c'est le point de départ.

       Dans la cellule de droite, le résultat optimal indique un coût nul si on part de [ C ]

       Nous ajoutons une ligne supplémentaire dans laquelle nous traitons les sommets
       directement accessibles à partir de [ C ] et le coût correspondant.

       Pas     Nœuds         A      B   C      D     E      F         G    H     I     J     Min
         0       Coût        ∞      ∞   0      ∞     ∞      ∞         ∞    ∞    ∞      ∞      0
                 Via                                                                          C
         1       Coût        4      ∞         10     16     ∞         ∞    ∞    ∞      ∞      4
                 Via         C                C      C                                        A
                                             tab. 4.33 Premier pas

       De [ C ] nous pouvons nous rendre à [ A ](4), à [ D ](10) et à [ E ](16). Tous ces
       coûts sont inférieurs aux coûts infinis de l'étape précédente, donc ils les remplacent.
       Il est inutile de considérer un retour à [ C ], donc la colonne est barrée.

       Le coût est minimum (4) quand on quitte [ C ] pour aller à [ A ].

       Puisque le passage par [ A ] est la solution retenue à ce stade, nous ajoutons une
       nouvelle ligne dans laquelle nous traitons les sommets directement accessibles à
       partir de [ A ] et le coût correspondant.

       Pas     Nœuds         A      B   C      D     E      F         G    H     I     J     Min
         0       Coût        ∞      ∞   0      ∞     ∞      ∞         ∞    ∞    ∞      ∞      0
                 Via                                                                          C
         1       Coût        4      ∞         10     16     ∞         ∞    ∞    ∞      ∞      4
                 Via         C                C      C                                        A
         2       Coût              14         8      16     14        ∞    ∞    ∞      ∞      D
                 Via               A          A      C      A                                 8
                                            tab. 4.34 Deuxième pas

       De [ A ] nous pouvons nous rendre à [ B ](10), à [ D ](4) et à [ F ](10). Toutefois, il
       ne faut pas oublier que nous avons déjà un coût de 4 unités pour aller de [ C ]
       jusqu'à [ A ]. Il faut donc ajouter ce coût antérieur aux coûts locaux.

       Nous voyons que le trajet de [ C ] vers [ D ] en passant par [ A ] coûte moins cher (8)
       que le trajet direct (10). C'est d'ailleurs cette solution économique qui est retenue
       dans la dernière cellule.

       Puisque le passage par [ D ] est la meilleure solution retenue à ce stade, nous
       ajoutons une nouvelle ligne dans laquelle nous traitons les sommets directement
       accessibles à partir de [ D ] et le coût correspondant (tab. 4.35).

       Pas     Nœuds         A      B   C      D     E      F         G    H     I     J     Min
         0       Coût        ∞      ∞   0      ∞     ∞      ∞         ∞    ∞    ∞      ∞       0
                 Via                                                                          C
         1       Coût        4      ∞         10     16     ∞         ∞    ∞    ∞      ∞       4
                 Via         C                C      C                                        A
         2       Coût              14         8      16     14        ∞    ∞    ∞      ∞      D
                 Via               A          A      C      A                                  8
         3       Coût              14                16     14        29   ∞    ∞      ∞      14
                 Via               A                 C      A         D                       B
                                            tab. 4.35 Troisième pas

H. Schyns                                                                                           4.24
Introduction à la théorie des graphes                                          4 - Propriétés des graphes

       [ D ] permet d'accéder à [ F ] pour un coût local de 12 unités, auxquels il faut ajouter
       les 8 unités dépensées jusqu'ici. Le total n'est pas meilleur que le trajet déjà indiqué
       qui, passant par [ A ], ne coûte que 14 unités. La colonne [ F ] reste donc
       inchangée.

       [ D ] permet aussi d'accéder à [ G ](21) pour un coût total de 29 unités, meilleur que
       le coût infini noté jusqu'à présent.

       Cette ligne présente deux minima, l'un passant par [ B ] et l'autre passant par [ F ].
       Que nous sélectionnions l'un ou l'autre comme optimum est sans importance car
       nous verrons que l'autre sera traité au pas suivant. Nous décidons donc de prendre
       l'optimum que passe par [ B ] (et par [ A ])ce qui amène le coût total de notre chemin
       à 14 unités.

       De [ B ], nous pouvons aller à [ E ](5), [ J ](10) et [ I ](17).

       Les passages vers [ I ] et [ J ] n'étaient pas encore apparus; ils replacent
       avantageusement le coût infini noté jusqu'à présent (tab. 4.36).

       Par contre, compte tenu du coût total de 14 unités déjà déboursé, le passage par
       [ B ] n'est pas la meilleure solution pour se rendre à [ E ]; le trajet direct venant de
       [ C ] est moins coûteux.

       Pas     Nœuds         A      B   C      D      E     F         G   H      I     J     Min
         0       Coût        ∞      ∞   0      ∞     ∞      ∞         ∞   ∞     ∞      ∞       0
                 Via                                                                          C
         1       Coût        4      ∞         10     16     ∞         ∞   ∞     ∞      ∞       4
                 Via         C                C      C                                        A
         2       Coût              14         8      16     14        ∞   ∞     ∞      ∞      D
                 Via               A          A      C      A                                  8
         3       Coût              14                16     14    29      ∞     ∞      ∞      14
                 Via               A                 C      A     D                           B
         4       Coût                                16     14    29      ∞     31     24     14
                 Via                                 C      A     D             B      B      F
                                            tab. 4.36 Quatrième pas
       Nous voyons que la meilleure solution de cette ligne est le passage par [ F ], déjà
       apparu ex aequo à l'étape précédente.

       Pas     Nœuds         A      B   C      D      E     F         G   H      I     J     Min
         0       Coût        ∞      ∞   0      ∞     ∞      ∞         ∞   ∞     ∞      ∞       0
                 Via                                                                          C
         1       Coût        4      ∞         10     16     ∞         ∞   ∞     ∞      ∞       4
                 Via         C                C      C                                        A
         2       Coût              14         8      16     14        ∞   ∞     ∞      ∞      D
                 Via               A          A      C      A                                  8
         3       Coût              14                16     14    29      ∞     ∞      ∞      14
                 Via               A                 C      A     D                           B
         4       Coût                                16     14    29      ∞     31     24     14
                 Via                                 C      A     D             B      B      F
         5       Coût                                16           29      17    31     24     16
                 Via                                 C            D       F     B      B      E
                                            tab. 4.37 Cinquième pas
       [ F ] nous permet uniquement de passer à [ H ] pour un coût local de 3 unités.
       Toutefois, le trajet de coût minimal est encore celui qui permet d'arriver à [ E ] en
       venant directement de [ C ].
H. Schyns                                                                                           4.25
Introduction à la théorie des graphes                                            4 - Propriétés des graphes

       De [ E ], nous pouvons accéder à [ G ] pour un coût local de 4 unités

       Pas     Nœuds         A      B   C        D      E      F       G    H      I     J     Min
         0       Coût        ∞      ∞   0        ∞      ∞      ∞       ∞    ∞     ∞      ∞       0
                 Via                                                                            C
         1       Coût        4      ∞           10     16      ∞       ∞    ∞     ∞      ∞       4
                 Via         C                  C      C                                        A
         2       Coût              14           8      16      14      ∞    ∞     ∞      ∞      D
                 Via               A            A      C       A                                 8
         3       Coût              14                  16      14      29   ∞     ∞      ∞      14
                 Via               A                   C       A       D                        B
         4       Coût                                  16      14      29   ∞     31     24     14
                 Via                                   C       A       D          B      B      F
         5       Coût                                  16              29   17    31     24     16
                 Via                                   C               D    F     B      B      E
         6       Coût                                                  20   17    31     24     17
                 Via                                                   E    F     B      B      H
                                               tab. 4.38 Sixième pas

       Si on tient compte des 16 unités dépensées jusqu'ici, c'est mieux que les 29 unités
       nécessaires à un passage par [ D ]. Toutefois, atteindre [ H ] en passant par [ F ] est
       encore le trajet le plus intéressant à ce stade (tab. 4.38).

       Pas     Nœuds         A      B   C        D      E      F       G    H      I     J     Min
         0       Coût        ∞      ∞   0        ∞      ∞      ∞       ∞    ∞     ∞      ∞       0
                 Via                                                                            C
         1       Coût        4      ∞           10     16      ∞       ∞    ∞     ∞      ∞       4
                 Via         C                  C      C                                        A
         2       Coût              14           8      16      14      ∞    ∞     ∞      ∞      D
                 Via               A            A      C       A                                 8
         3       Coût              14                  16      14      29   ∞     ∞      ∞      14
                 Via               A                   C       A       D                        B
         4       Coût                                  16      14      29   ∞     31     24     14
                 Via                                   C       A       D          B      B      F
         5       Coût                                  16              29   17    31     24     16
                 Via                                   C               D    F     B      B      E
         6       Coût                                                  20   17    31     24     17
                 Via                                                   E    F     B      B      H
         7       Coût                                                  20         31     22     20
                 Coût                                                  E          B      H      G
         8       Via                                                              31     22     22
                 Coût                                                             B      H       J
         9       Via                                                              30            30
                 Coût                                                              J             I
                                            tab. 4.39 Trois derniers pas

       De [ H ] nous allons en [ G ](3) et en [ J ](5).

       Le coût total du trajet pour atteindre en [ G ] n'est pas amélioré (20); nous décidons
       de le laisser inchangé car ce trajet déjà noté il implique moins d'étapes. Par contre,
       la situation est améliorée quand il s'agit d'atteindre [ J ]. Néanmoins, le trajet
       optimum à ce stade est celui qui permet d'atteindre [ G ] en passant par [ E ] (tab.
       4.39, ligne 7).


H. Schyns                                                                                             4.26
Introduction à la théorie des graphes                                       4 - Propriétés des graphes

       De [ G ] nous allons en [ J ](3). Mais, compte tenu des 20 unités déjà dépensées,
       cette solution est plus onéreuse que celle déjà notée. Le trajet optimum est celui qui
       permet d'atteindre [ J ] en passant par [ H ] (tab. 4.39, ligne 8)

       De [ J ] nous atteignons notre destination [ I ] pour un coût local de 8 unités.

       Avec les 22 unités déjà dépensées ce trajet coûte moins que celui qui passait par
       [ B ].

       Nous atteignons donc [ I ] pour un coût total de 30 unités.

       Il suffit de lire le bas des colonnes du tableau pour savoir le chemin parcouru :

       -    Nous arrivons à [ I ] à condition de passer par [ J ] (bas de la colonne [ I ])
        -   Nous arrivons à [ J ] à condition de passer par [ H ] (bas de la colonne [ J ])
       -    Nous arrivons à [ H ] à condition de passer par [ F ] (bas de la colonne [ H ])
       -    Nous arrivons à [ F ] à condition de passer par [ A ] (bas de la colonne [ F ])
       -    Nous arrivons à [ A ] à condition de passer par [ C ] (bas de la colonne [ A ])

       La solution de coût minimum est donc :

       [ C ]-( 4 )-[ A ]-( 10 )-[ F ]-( 3 )-[ H ]-( 5 )-[ J ]-( 8 )-[ I ]

       soit 30 unités.

       Cet algorithme est notamment utilisé dans tous les routeurs pour le routage optimum
       des paquets internet ainsi que par les sites tels que fr.mappy.com qui recherchent la
       meilleure route entre deux localités.




H. Schyns                                                                                        4.27
Introduction à la théorie des graphes                                                    5 - Autres propriétés



5.         Autres propriétés

     5.1. Planéité

       5.1.1. Illustration

       Un graphe est planaire s'il existe au moins une façon de le dessiner dans le plan
       sans que deux arêtes se croisent. Un petit problème célèbre et amusant nous
       permettra d'illustrer cette propriété :
                                                                    W




                                         A             B            C        E




                                                                    G

                  fig. 5.1 Le problème des trois maisons (A,B,C) et des trois fournisseurs (W,G,E)

       Dans un lotissement, trois maisons A, B, C doivent être raccordées aux fournisseurs
       d'eau (W), de gaz (G) et d'électricité (E). Est-il possible de procéder aux
       raccordements en mettant tous les tuyaux et câbles dans le même plan sans que
       ceux-ci se croisent (il est permis de déplacer les maisons et les fournisseurs) ?

       5.1.2. Raisonnement

       Quelle que soit la disposition, on arrive très facilement à alimenter les trois maisons
       en eau et en gaz (ou électricité) sans que les conduites se croisent.

                                                                    W




                                         A             B            C        E




                                                                    G

                                        fig. 5.2 Solution impossible dans le plan

       Le problème survient avec le troisième fournisseur :

       -    si le troisième fournisseur est à l'extérieur du périmètre défini par les conduites,
            il lui est impossible d'atteindre la maison centrale (B) sans couper l'une des
            conduites.
       -    s'il est à l'intérieur du périmètre, il se trouve fatalement dans l'une des zones
            limitées par les conduites des deux autres fournisseurs, auquel cas il lui est
            impossible d'atteindre la troisième maison.

       Il n'y a donc pas de solution dans le plan. Par contre, dans l'espace, la solution est
       évidente.



H. Schyns                                                                                                 5.1
Introduction à la théorie des graphes                                                5 - Autres propriétés


       5.1.3. Critère mathématique

       La planéité est une propriété est importante pour la réalisation de circuits imprimés
       mono couche. Dans la réalisation de bases de données, la non-planéité du
       diagramme Entités-Relation est souvent l'indice d'une mauvaise organisation des
       entités ou d'un manque d'abstraction dans l'analyse.

       Existe-t-il un critère de planéité ?

       Partons d'un graphe complet K3, Ce graphe est fatalement planaire puisque, par la
       géométrie euclidienne, nous savons que trois points définissent un plan et un
       triangle dans ce plan et que les côtés d'un triangle ne se croisent pas. Nous avons
       donc un graphe complet planaire de 3 sommets et 3 arêtes (fig. 5.3).




                                            fig. 5.3 Graphe complet K3

       Si nous ajoutons un nœud, combien d'arêtes pouvons-nous tracer sans que deux
       d'entre-elles se croisent ?

       Deux cas sont à considérer :

       -    le nouveau nœud est à l'intérieur du triangle, auquel cas, on peut tracer trois
            arêtes vers les sommets existants (fig. 5.4);
       -    le nouveau nœud est à l'extérieur du triangle, auquel cas, on peut aussi tracer
            trois arêtes vers les sommets existants.




                                    1 2                       1       2

                                        3
                                                                  3



                                  fig. 5.4 Ajout d'un quatrième nœud et ses arêtes

       En fait, ces deux solutions sont identiques : trois sommets définissent un périmètre
       et le quatrième est à l'intérieur du périmètre. Nous avons maintenant un graphe
       complet de 4 nœuds et 6 arêtes.

       Ajoutons un cinquième nœud et voyons combien d'arêtes nous pouvons ajouter
       sans provoquer de croisement :

       -    soit le cinquième nœud est à l'intérieur d'un des triangles internes et nous ne
            pouvons ajouter que trois arêtes pour le relier aux trois sommets du triangle en
            question (fig. 5.5);
       -    soit le cinquième nœud est à l'extérieur de la figure et nous ne pouvons ajouter
            que trois arêtes pour le relier aux trois sommets qui délimitent le périmètre.




H. Schyns                                                                                             5.2
Introduction à la théorie des graphes                                                       5 - Autres propriétés




                                                          1           2


                                                              3



                                  fig. 5.5 Ajout d'un cinquième nœud et ses arêtes

       Ce faisant, nous définissons deux nouveaux triangles internes et mais le périmètre
       compte toujours trois sommets. Cette fois, le graphe n'est plus complet.

       Nous voyons que nous pouvons répéter de raisonnement indéfiniment : chaque fois
       que nous ajouterons un sommet, nous ne pourrons jamais tracer que trois arêtes
       supplémentaires. Le raisonnement définit une progression arithmétique de raison 3.

                  Nœuds                 3            4            5            6        …     N
                  Arêtes                3            6            9            12       …   3·n-6

       Nous définissons un premier critère :

       Un graphe simple (1) est planaire si
                                         a £ 3·n – 6

       où [ a ] et le nombre d'arêtes et [ n ] est le nombre de nœuds.

       Nous pouvons reprendre le raisonnement en imposant que le graphe ne présente
       aucun triangle (fig. 5.6). Tout périmètre doit compter quatre sommets au moins.

                                                      A                                 A



                                  ð         B         E           C       ou        B         C             E



                                                      D                                 D

                                                fig. 5.6 Graphe sans triangle


       Nous définissons un second critère :

       Un graphe simple sans triangles est planaire si
                                        a £ 2·n – 4


       5.1.4. Application

       On démontre facilement que



1 Par graphe simple, on entend un graphe qui ne contient pas de boucles ou, dans le cas présent, un
  graphe dans lequel les boucles ne sont pas comptées comme arêtes.


H. Schyns                                                                                                       5.3
Introduction à la théorie des graphes                                                        5 - Autres propriétés


       le schéma Entités-Relations d'une base de données ne peut jamais contenir
       de triangle.



                                 définit                                          organise
                Ingénieurs                   Projets              Département                 Service



                                              utilise                                         emploie




                       travaille pour       Develop-                        emploie
                                                                                             Employé
                                             peurs


                                            fig. 5.7 Schémas E-R incorrects

       En effet :

       -    soit les trois relations 1 : n se succèdent dans le même sens et forment un cycle
            inextricable (fig. 5.7 gauche). L'une des relations est certainement mal posée
            ou redondante;
       -    soit l'une des trois relations 1 : n est en sens inverse (fig. 5.7 droite) ce qui
            fournit deux chemins possibles d'une table à une autre. L'une des relations (le
            chemin direct) est redondante;
       -    soit il manque une table pivot dans le circuit.

       On en conclut que, dans une base de données bien conçue, le nombre maximum
       de relations est déterminé par le nombre de tables selon le critère vu plus haut :

                                            Relations £ 2·Tables – 4

       Ceci dit, une base de données peut très bien fonctionner sans que ce critère soit
       vérifié mais il y a fort à parier que l'objectif de non-redondance de l'information sera
       violé dans certaines circonstances. D'autre part, ce n'est pas parce qu'un schéma
       entités-relation vérifie ce critère qu'il est correct.


   5.2.     Chemin et circuit eulérien

       La notion de chemin eulérien est souvent présentée sous la forme d'un petit
       problème de réflexion. Par exemple, est-il possible de dessiner la fig. 5.8 en un seul
       trait de crayon, sans lever la pointe et sans passer deux fois par le même trait ?




                                 fig. 5.8 Dessiner cette figure d'un seul trait de crayon
       En termes plus mathématiques, on dit qu'un graphe non orienté admet un chemin
       eulérien s'il existe un chemin dans lequel chaque arête apparaît une et une seule
       fois. Si le chemin est fermé (retour au point de départ), on parle de cycle eulérien
       et le graphe est appelé graphe eulérien.


H. Schyns                                                                                                     5.4
Introduction à la théorie des graphes                                                    5 - Autres propriétés

       La solution passe par l'examen des nœuds : pour ne pas être bloqué à un nœud,
       tout trait qui y arrive doit pouvoir en repartir. Il faut donc que chaque nœud soit le
       point de rencontre d'un nombre pair d'arêtes; en d'autres mots, que tous les nœuds
       soient de degré pair.




                        fig. 5.9 Deux sommets de degré impair : point de départ et d'arrivée

       Toutefois, si on admet que le chemin puisse avoir un point de départ différent de
       son point d'arrivée, alors le graphe peut admettre deux et seulement deux sommets
       de degré impair (fig. 5.9). Le chemin partira obligatoirement de l'un pour aboutir
       obligatoirement à l'autre. Malgré cette contrainte, le problème admet plusieurs
       solutions (fig. 5.10) :




                                  fig. 5.10 Deux solutions possibles parmi d'autres

       Un graphe non orienté connexe possède un chemin eulérien si et seulement
       si tous ses nœuds sont de degré pair à l'exception d'au plus 2 d'entre eux.

       Si tous les sommets sont de degré pair, alors il existe au moins un cycle dans lequel
       n'importe quel sommet peut être pris comme point de départ et d'arrivée :




                                fig. 5.11 Graphe eulérien et l'un des cycles possibles

       L'histoire raconte qu'Euler s'est intéressé à cette question parce qu'on lui avait
       soumis le problème suivant : la ville de Königsberg (aujourd'hui Kaliningrad) est
       bâtie sur deux îles reliées par un pont. Trois ponts relient les îles à la rive droite du
       fleuve, trois autres les relient à la rive gauche du fleuve (fig. 5.12) .




                                          fig. 5.12 Schéma de Kaliningrad

H. Schyns                                                                                                 5.5
Introduction à la théorie des graphes                                                 5 - Autres propriétés

       Est-il possible d'imaginer un trajet qui, partant d'un point quelconque de la ville,
       permette de traverser une et une seule fois chacun des ponts et de revenir à son
       point de départ ?

       Nous laisserons au lecteur le soin de répondre à cette question en se servant de ce
       qui a été vu dans ce chapitre.


   5.3.     Chemin et circuit hamiltonien

       Le chemin hamiltonien peut être vu comme un raffinement du chemin eulérien. Il
       s'agit d'un parcours qui passe une et une seule fois par tous les nœuds d'un
       graphe en ne parcourant qu'une seule fois les arêtes utilisées (sans
       nécessairement parcourir toutes les arêtes). Si le chemin revient à son point de
       départ, on parle de cycle hamiltonien (fig. 5.13).




                                        fig. 5.13 Chemin et cycle hamiltonien

       Alors qu'il existe un critère simple pour définir si un graphe est eulérien ou non, il
       n'existe pas de critère simple - nécessaire et suffisant (1) – pour définir si un graphe
       est hamiltonien ou non. Par contre, on dispose d'un ensemble de critères divers :

       1 - Il suffit qu'un graphe possède un nœud de degré 1 pour pouvoir affirmer qu'il ne
           contient pas de circuit hamiltonien. C'est évident puisqu'un circuit hamiltonien
           doit revenir à son point de départ en utilisant une autre arête que l'arête initiale.
           Toutefois, un tel graphe peut contenir un chemin hamiltonien (fig. 5.14).




                                         fig. 5.14 Graphe non hamiltonien

       2 - Si un graphe contient un nœud de degré 2, alors ses deux arêtes adjacentes
           doivent être incluses dans le circuit hamiltonien. C'est également évident par un
           raisonnement similaire à celui du point précédent.
       3 - Si un circuit hamiltonien passe par un nœud de degré supérieur à 2, alors
           toutes les arêtes autres que celle par lesquelles le circuit arrive au nœud et en
           repart peuvent être éliminées du graphe pour la suite. C'est évident puisqu'un
           point ne peut apparaître qu'une seule fois dans le circuit; une fois qu'il a été
           visité, il est hors de question d'y arriver à nouveau par un autre chemin.
           Cette propriété ouvre la voie à une recherche heuristique d'un circuit
           hamiltonien dans un graphe donné (cf. infra).
       4 - Un circuit hamiltonien ne peut pas contenir un plus petit circuit hamiltonien.
       5 - Tout graphe complet contenant au moins trois nœuds contient un circuit
           hamiltonien.

1 "Tous les Hommes sont mortels". Il suffit de savoir que je suis un Homme pour savoir que je suis mortel
  mais il n'est pas nécessaire d'être un Homme pour être mortel car un chat aussi est mortel.
  Réciproquement, il est nécessaire que je sois mortel pour être défini comme Homme, mais il ne suffit pas
  que je sois mortel car un chat est mortel sans pourtant être un Homme.


H. Schyns                                                                                              5.6
Introduction à la théorie des graphes                                                    5 - Autres propriétés

            C'est aussi évident puisque dans un graphe complet, chaque nœud est
            connecté à tous les autres. Il suffit donc de déplacer virtuellement les points
            vers la périphérie du graphe. Le périmètre de la figure ainsi générée est un
            cycle hamiltonien (fig. 5.15)




                               fig. 5.15 Circuit hamiltonien dans un graphe complet K5

       Un graphe simple contenant au moins 3 nœuds contient un circuit
       hamiltonien si chaque nœud est connecté à plus de la moitié des autres
       nœuds du graphe.

       En termes plus mathématiques, il faut que le degré de chaque nœud soit au moins
       égal à la moitié du nombre de nœuds du graphe.

       Cette condition n'est cependant pas nécessaire (1) ainsi qu'en témoigne le problème
       posé originellement par Hamilton : dans le dodécaèdre régulier de la fig. 5.16 (2),
       est-il possible de trouver un circuit qui passe une et une seule fois par chacun des
       20 sommets ?




                                          fig. 5.16 Dodécaèdre régulier (3)

       Le problème se simplifie quelque peu si on considère le dodécaèdre comme
       "écrasé" dans le plan, sans rien changer à l'organisation des arêtes (on parle
       d'isomorphisme)(fig. 5.17). Observons d'abord que tous les nœuds sont de degré 3.




                                fig. 5.17 Isomorphisme plan du dodécaèdre régulier



1 Il est parfois possible de trouver un chemin hamiltonien, même si cette condition n'est pas remplie.
2 Un dodécaèdre régulier est formé de 12 pentagones : un pentagone forme la base sur laquelle s'appuient
  cinq autres pentagones formant les côtés d'une coupe. La coupe reçoit un "couvercle" formé de manière
  similaire.
3 Source : serge.mehl.free.fr/anx/dodeca_tp.html


H. Schyns                                                                                                 5.7
Introduction à la théorie des graphes                                          5 - Autres propriétés

       Commençons le chemin en parcourant le pentagone intérieur (fig. 5.18). Nous ne
       pouvons toutefois pas sélectionner tout le périmètre car nous aurions déjà un circuit
       fermé, ce qui serait en contradiction avec le critère 4 ci-dessus.

       Ceci nous contraint à sélectionner les deux arêtes qui joignent les extrémités de
       notre chemin au pentagone médian (en rouge).




                                        fig. 5.18 Première partie du chemin

       Appliquons le critère 3 et éliminons les quatre arêtes excédentaires qui aboutissent
       aux nœuds internes du parcours déjà sélectionné (en gris).

       Cette étape fait apparaître trois nœuds de degré 2 sur le pentagone médian. En
       vertu du critère 2, les deux arêtes qui aboutissent à chacun de ces nœuds doivent
       faire partie du parcours hamiltonien (fig. 5.19). Ceci nous amène à sélectionner
       trois côtés (six arêtes) du pentagone médian.




                                        fig. 5.19 Deuxième partie du chemin

       Appliquons le critère 3 et éliminons les deux arêtes qui aboutissent aux nœuds
       internes de cette partie du chemin.

       Cette fois, nous faisons apparaître deux nœuds de degré 2 sur le pentagone
       externe. Les arêtes qui y conduisent doivent faire partie du circuit. Nous
       sélectionnons ainsi trois côtés du pentagone externe (fig. 5.20).




                                        fig. 5.20 Troisième partie du chemin



H. Schyns                                                                                       5.8
Introduction à la théorie des graphes                                                 5 - Autres propriétés

       Il nous reste à relier les trois segments du circuit entre eux. Il suffit de sélectionner
       l'une quelconque des arêtes qui joint deux chemins pour que toutes les autres
       sélections soient imposées en vertu des critères 2 et 3. Par exemple, relions le
       chemin interne au chemin médian grâce à l'arête marquée d'une flèche. Dès lors,
       l'arête opposée est interdite, ce qui fait apparaître un point de degré 2 dont les deux
       arêtes doivent être incluses, etc. De proche en proche, nous arrivons à la solution
       de la fig. 5.21 :




                                        fig. 5.21 Circuit hamiltonien du dodécaèdre

       Le concept de circuit hamiltonien est présent dans le célèbre problème du voyageur
       de commerce : comment un voyageur de commerce doit-il agencer sa tournée pour
       ne passer qu'une et une seule fois dans les villes où se trouvent ses clients et
       revenir à son point de départ ?

       Bien entendu, on peut compliquer le problème en donnant des poids différents aux
       arêtes et en imposant en plus que le voyageur de commerce fasse un nombre
       minimal de kilomètres, etc.

       A ce jour, le problème n'a pas reçu de solution "simple" : il faut soit examiner tous
       les cas, ce qui consomme du temps de calcul exponentiel, soit utiliser des
       algorithmes heuristiques qui fournissent une solution "convenable" en un temps de
       calcul "convenable" sans garantir que cette solution sera la meilleure possible.




H. Schyns                                                                                              5.9
Introduction à la théorie des graphes                                               6 - Exercices du chapitre



6.         Exercices du chapitre

     6.1. Exercice 1

                                                      A




                                                B          C           D




                                        E       F     G    H      I    J




                                                      K     L          M        N

                                            fig. 6.1 Une arborescence typique

       A partir des différents algorithmes présentés dans ce cours, concevoir un algorithme
       qui permette de vérifier si un graphe est une arborescence.

       On rappelle qu'une arborescence est un graphe orienté :

       -    connexe
       -    acyclique
       -    ayant un seul sommet d'entrée (source)
       -    se terminant par des feuilles (qui ont un seul parent)

       Comment mesurer la profondeur (diamètre) d'un arbre ou d'une arborescence ?
       L'algorithme valable pour les graphes non orientés est-il valable ici ?


     6.2. Exercice 2

       Etant donné le graphe de la fig. 6.2, en appliquant les méthodes exposées dans le
       cours :

       -    rechercher les éventuels sommets d'entrée (sources) et de sortie (puits),
       -    rechercher et identifier la présence éventuelle de cycles,
       -    déterminer le diamètre du graphe rendu non orienté (dans lequel toutes les
            arêtes peuvent être parcourues dans les deux sens)
       -    déterminer le plus court chemin pour aller de [ B ] à [ L ]




H. Schyns                                                                                                6.1
Introduction à la théorie des graphes                                                                                       6 - Exercices du chapitre

                                                                           E
                                                                                                        13
                                              12             6                              9

                                                                           10                                5
                                                         C                                      H                           K
                                              5

                                     A                       4                          10                              3
                                             4
                                                                 3
                                                         D                 F
                                                                                        9
                                         6                                                                  6
                                                                                                I                           L
                                                                                                        4
                                                        15                         17
                                     B                                 8                                            5
                                                                                                J

                                                   10                                   5
                                                                           G
                                                    fig. 6.2 Un graphe orienté à analyser

       Représentation matricielle correspondante :

                                                                      Origine

                                     A       B     C     D       E    F     G       H       I       J        K          L

                                 A           6                                                                                  1

                                 B                                                                                              0

                                 C   5                   4                                                                      2

                                 D   4                                                                                          1

                                 E   12            6                                                                            2
                   Destination




                                 F           15          3                     8                                                3

                                 G           10                                                     5                           2

                                 H                 10            9                                                              2

                                 I                                    9    17                                                   2

                                 J                                                          4                                   1

                                 K                               13   10            5                                           3

                                 L                                                          6       5           3               3

                                     3       3     2     2       2    2        2    1       2       2           1       0       22


   6.3. Exercice 3

       En prenant le graphe de la fig. 6.2, comme base de raisonnement, concevoir un
       algorithme qui permet d'élaguer le graphe pour ne conserver que les arêtes

       -    qui permettent d'aller de [ A ] à [ J ]
       -    qui permettent d'aller de [ E ] à [ G ]



H. Schyns                                                                                                                                        6.2
Introduction à la théorie des graphes                                                  6 - Exercices du chapitre


   6.4. Exercice 4

       Le graphe de la fig. 6.3 est un schéma Entités-Relations d'une base de données de
       gestion d'hôpital.



                                                                                              Services

                                          emploie                    Actes



                                                                      active                     gère



            Catégories     définit                     possède
                                        Soignants                  Aptitudes
            Personnel


                                          localise                   permet        gère



                          héberge         Code
              Pays                                                   Soins                   Chambres
                                         Postaux


                                          localise                  nécessite                   abrite



                          assure                        remplit
            Mutuelles                    Patients                 Inscriptions                   Lits
                                                                                  attribue



                                                                    engendre



                                                                                  acquitte
                                                                   Factures                  Paiements




                                     fig. 6.3 Un schéma Entités-Relations à analyser
       -     est-il correct du point de vue de la théorie des graphes (connexité, planéité).
       -     déterminer le niveau hiérarchique de chacune des entités
       -     implémentez le projet en définissant les sous-modules constitutifs et leur
             enchaînement.

   6.5. Exercice 5

       Joindre les dix sommets de ce volume par un circuit hamiltonien. Est-ce possible ?




       Astuce : rechercher d'abord un parcours hamiltonien dans un cube simple.

H. Schyns                                                                                                   6.3
Introduction à la théorie des graphes                               7 - Sources



7.      Sources

       - Discrete Mathematics and Its Applications
         Kenneth H. Rosen
         McGraw-Hill International Editions (4th edition)
         ISBN 0-07-116756-0

       - Théorie des graphes et articles connexes
         Anonyme
         Wikipedia
         fr.wikipedia.org/wiki/Théorie_des_graphes

       - Cours en Théorie des Graphes
         Didier Maquin
         Ecole Nationale Supérieure d'Electricité et de Mécanique
         (ENSEM – Nancy)
         cours.ensem.inpl-nancy.fr/cours-dm/graphes/graphe.html

       - Organisation des tâches avec le graphique de PERT
         Cédric Dekeyser
         Blog
         cdekeyser.com/tag/gestion-de-projet/

       - Algorithme de Dijkstra
         Bernard Langer
         Aromath : Le goût des mathématiques
         www.aromath.net/Page.php?IDP=624&IDD=0

       - Parallel thinking
         Creativity step by step
         Edward de Bono
         Harper Perennial
         ISBN 0-06-090325-2




H. Schyns                                                                   7.1

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:3
posted:10/18/2012
language:Unknown
pages:59
Description: fcgfgf