Aller au contenu

Structures de données relationnelles

Il s’agit de définir le modèle des graphes, leurs représentations et leurs manipulations. On s’efforce de mettre en avant des applications importantes et si possibles modernes : réseau de transport, graphe du web, réseaux sociaux, bio-informatique. On précise autant que possible la taille typique de tels graphes.

Notions Commentaires
Graphe orienté, graphe non orienté. Sommet (ou nœud); arc, arête. Boucle. Degré (entrant et sortant). Chemin d’un sommet à un autre. Cycle. Connexité, forte connexité. Graphe orienté acyclique. Arbre en tant que graphe connexe acyclique. Forêt. Graphe biparti. Notation : graphe 𝐺 = (𝑆,𝐴), degrés 𝑑+(𝑠) et 𝑑−(𝑠) dans le cas orienté. On n’évoque pas les multi-arcs. On représente un graphe orienté par une matrice d’adjacence ou par des listes d’adjacence.
Pondération d’un graphe. Étiquettes des arcs ou des arêtes d’un graphe. On motive l’ajout d’information à un graphe par des exemples concrets : graphe de distance, automate fini, diagramme de décision binaire.

On présente les manipulations usuelles sur les graphes en C et en OCaml. La présentation en C s’effectue à travers des tableaux statiques. Pour la représentation en liste d’adjacence, on peut considérer un tableau à deux dimensions dont les lignes représentent chaque liste avec une sentinelle ou un indicateur de taille en premier indice.