AccueilđŸ‡«đŸ‡·Chercher

Graphe (type abstrait)

En informatique, et plus particuliÚrement en génie logiciel, le type abstrait graphe est la spécification formelle[1] des données qui définissent l'objet mathématique graphe[2] et de l'ensemble des opérations qu'on peut effectuer sur elles. On qualifie d'« abstrait » ce type de données car il correspond à un cahier des charges qu'une structure de données concrÚte doit ensuite implémenter.

Un graphe orienté, dont les arcs et certains sommets sont « valués » par des couleurs.

Description

La structure de donnĂ©es abstraite de graphes consiste en un ensemble fini, Ă©ventuellement mutable de sommets ou nƓuds ou points, avec un ensemble de paires ordonnĂ©es ou non de tels Ă©lĂ©ments Ces paires sont des arĂȘtes, arcs non orientĂ©s, ou lignes pour un graphe non orientĂ©, et flĂšches, arĂȘtes orientĂ©es , arcs, ou lignes orientĂ©es dans le cas orientĂ©. Les sommets peuvent faire partie de la structure, ou ĂȘtre des entitĂ©s extĂ©rieures, reprĂ©sentĂ©es par des entiers ou des rĂ©fĂ©rences.

Une structure de graphe peut aussi associer, Ă  chaque arĂȘte, une « valeur », telle qu'une Ă©tiquette ou une valeur numĂ©rique (un coĂ»t, une capacitĂ©, une longueur, etc.). Plus gĂ©nĂ©ralement, un graphe peut aussi ĂȘtre donnĂ©e par deux ensembles d'objets, un de sommets et un ensemble d'arĂȘtes, muni de deux applications qui, Ă  chaque arĂȘte, associent son sommet de dĂ©part et son sommet d'arrivĂ©e. Cette vision[3] permet d'associer des valeurs Ă  chaque objet (sommet ou arĂȘte).

Opérations

Les opérations de base fournies par une structure de données de graphe G incluent usuellement[4] - [3] :

  • sont_adjacents(G, x, y): teste s'il y a une arĂȘte de x Ă  y;
  • voisins(G, x): liste les sommets qui sont adjacents Ă  x;
  • ajouter_sommet(G, x): ajoute le sommet x s'il n'y figure pas dĂ©jĂ ;
  • supprimer_sommet(G, x): supprime le sommet x s'il existe;
  • ajouter_arĂȘte(G, x, y): ajoute l'arĂȘte de x Ă  y s'il n'y figure pas dĂ©jĂ ;
  • supprimer_arĂȘte(G, x, y): supprime l’arĂȘte de x Ă  y si elle existe;
  • retourner_valeur_sommet(G, x): retourne la valeur associĂ©e Ă  x;
  • fixer_valeur_sommet(G, x, v): fixe la valeur de x Ă  v.

Les structures qui associent des valeurs aux arĂȘtes disposent en gĂ©nĂ©ral[4] des opĂ©rations suivante :

  • retourner_valeur_arĂȘte(G, x, y): retourne la valeur de l'arĂȘte (x, y);
  • fixer_valeur_arĂȘte(G, x, y, v): fixe Ă  v la valeur de l’arĂȘte (x, y).

Représentations

Diverses structures de données sont utilisées en pratique pour la représentation de graphes :

Liste d'adjacence[5] - [6]
Les sommets sont reprĂ©sentĂ©s comme des objets ou enregistrements, et Ă  chaque sommet est associĂ©e une liste de sommets adjacents. Cette structure permet de conserver des donnĂ©es additionnelles pour les sommets. Les informations additionnelles concernant les arĂȘtes peuvent ĂȘtre stockĂ©s dans les objets si les arĂȘtes sont reprĂ©sentĂ©es par des objets. Dans ce cas, chaque sommet peut contenir les arĂȘtes adjacentes et chaque arĂȘte ses sommets incidents.
Matrice d'adjacence[7] - [8]
C'est une matrice carrĂ©e de taille , oĂč les lignes reprĂ©sentent les sommets de dĂ©part et les colonnes les sommets d'arrivĂ©e. Une entrĂ©e peut dĂ©signer la prĂ©sence d'un arc, ou peut porter une valeur d'arc. Dans le cas des graphes non orientĂ©s, la matrice est symĂ©trique.
Matrice d'incidence[9]
C'est une matrice de taille , oĂč les lignes reprĂ©sentent les sommets et les colonnes les arĂȘtes. Une entrĂ©e indique si l'arĂȘte est incidente au sommet . Plus prĂ©cisĂ©ment : Il n'y a que deux valeurs non nulles par colonne (et une seule dans le cas d'une boucle).

La table suivante donne la complexitĂ© en temps des diverses opĂ©rations sur les graphes selon les reprĂ©sentations. Ici est le nombre de sommets et le nombre d'arĂȘtes.

Liste d'ajacence Matrice d'adjacence Matrice d'incidence
Créer le graphe
Ajouter un sommet
Ajouter une arĂȘte
Supprimer un sommet
Supprimer une arĂȘte
Test d'adjacence entre deux sommets
Remarques Lent dans la suppression parce qu'il faut trouver les sommets ou arĂȘtes Lent dans l'adjonction ou suppression de sommets parce que la matrice doit ĂȘtre reformatĂ©e Lent dans l'adjonction ou suppression de sommets ou d'arĂȘtes parce que la matrice doit ĂȘtre reformatĂ©e

Les listes d'adjacence sont en gĂ©nĂ©ral prĂ©fĂ©rables pour des graphes peu denses. Une matrice d'adjacence est au contraire prĂ©fĂ©rable quand le graphe est dense, c'est-Ă -dire quand le nombre d'arĂȘtes |E | est proche du carrĂ© du nombre de sommets |V |2, mais aussi lorsque l'on veut savoir rapidement tester l'existence d'une arĂȘte entre deux sommets[10] - [11] - [3].

Articles liés

Notes et références

  1. Manfred Broy, Martin Wirsing et Claude Pair, « A Systematic Study of Models of Abstract Data Types », Theoretical Computer Science, vol. 33,‎ , p. 139-174
  2. Sébastien Veigneau, Approches impérative et fonctionnelle de l'algorithmique : applications en C et en CAML Light, Springer Science & Business Media, (lire en ligne)
  3. Kurt Mehlhorn et Stefan NĂ€her, LEDA : A platform for combinatorial and geometric computing, Cambridge University Press, , « Chapter 6: Graphs and their data structures », p. 240–282.
  4. Goodrich et Tamassia 2015, Section 13.1.2: Operations on graphs, p. 360
  5. Cormen et al. 2002, p. 514-515.
  6. Goodrich et Tamassia 2015, p. 361-362.
  7. Cormen et al. 2002, p. 515-516.
  8. Goodrich et Tamassia 2015, p. 363.
  9. Cormen et al. 2002, Exercise 22.1-7, p. 517.
  10. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest et Clifford Stein, Algorithmique, Paris, Dunod, , xxix+1188 (ISBN 978-2-10-003922-7, SUDOC 068254024), « Section 22.1: ReprĂ©sentation de graphes », p. 514–517.
  11. Michael T. Goodrich et Roberto Tamassia, Algorithm Design and Applications, Wiley, , « Section 13.1: Graph terminology and representations », p. 355–364.

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.