Le site du prof

Structures de données

Niveau 0

Authentifiez-vous pour suivre votre progression !


Les Graphes

Structures relationnelles : pourquoi des graphes ?

Contrairement aux arbres qui imposent une hiérarchie stricte (un fils n'a qu'un seul père), le graphe est une structure de données permettant de modéliser des relations libres et complexes entre des entités.

Objectifs

  • Modéliser des situations concrètes (réseaux sociaux, routage, cartes).
  • Maîtriser le vocabulaire : sommets, arcs, arêtes, orientation, connexité.
  • Implémenter un graphe en Python via une matrice ou une liste d'adjacence.

Exemple 1 : Réseau routier

Exemple 2 : Réseau web

Exemple 3 : Réseau social


Vocabulaire technique

  • Les éléments du graphe sont appelés des sommets (ou nœuds).
  • Une relation entre deux sommets est :
    • Une arête dans un graphe non-orienté (relation symétrique).
    • Un arc dans un graphe orienté (relation à un sens, représentée par une flèche).
  • Le degré d'un sommet est le nombre d'arêtes qui lui sont liées.
  • Un chemin est une suite de sommets reliés par des arêtes/arcs. Si le chemin revient à son point de départ, on parle de cycle.
  • Un graphe est connexe s'il existe toujours un chemin entre n'importe quelle paire de sommets.

Représentations en machine

Il existe deux méthodes principales pour coder un graphe en informatique :

1. La liste d'adjacence

On associe à chaque sommet la liste de ses voisins (ses successeurs). En Python, on utilise souvent un dictionnaire où les clés sont les sommets et les valeurs sont des listes :

2. La matrice d'adjacence

Il s'agit d'un tableau à deux dimensions (matrice). Si le graphe possède n sommets, la matrice est de taille n*n. La case (i, j) contient 1 s'il existe un lien entre le sommet i et le sommet j, sinon 0.

Exemples :


Implémentation en Python

Nous allons utiliser la programmation orientée objet pour manipuler un graphe représenté par une liste d'adjacence (via un dictionnaire) :