Introduction aux graphes
Définitions fondamentales
Un graphe est formellement défini par un couple , où est un ensemble de sommets (ou nœuds) et est un ensemble d'arêtes (ou liens) reliant ces sommets.
- Sommets (ou Nœuds) : Ce sont les "objets" de notre système. On les représente souvent par des points.
- Exemple : Dans un réseau routier, les villes sont les sommets.
- Arêtes (ou Liens) : Ce sont les "relations" entre les sommets. On les représente par des lignes.
- Exemple : Dans un réseau routier, les routes sont les arêtes.
Il existe plusieurs types de graphes :
- Graphe non orienté : Les arêtes n'ont pas de direction. La relation est symétrique. Si A est lié à B, alors B est lié à A.
- Exemple : Une amitié sur Facebook est souvent non orientée : si vous êtes ami avec quelqu'un, cette personne est aussi votre amie.
- Une arête entre et est notée .
- Graphe orienté (ou digraphe) : Les arêtes ont une direction. La relation n'est pas nécessairement symétrique. Si A pointe vers B, B ne pointe pas forcément vers A.
- Exemple : Les followers sur Instagram : vous pouvez suivre quelqu'un sans que cette personne vous suive en retour.
- Une arête orientée (ou arc) de vers est notée . est l'origine et est l'extrémité.
- Boucle : Une arête qui relie un sommet à lui-même.
- Exemple : Un site web qui contient un lien vers lui-même.
- Arêtes multiples (ou parallèles) : Plusieurs arêtes reliant la même paire de sommets.
- Exemple : Deux routes différentes entre deux mêmes villes.
Un graphe est une modélisation de relations entre objets.
Représentations d'un graphe
Comment représenter un graphe de manière pratique pour l'étudier ou le manipuler informatiquement ?
-
Dessin de graphe : C'est la représentation la plus intuitive. Les sommets sont des points ou des cercles, les arêtes sont des lignes (avec des flèches pour les graphes orientés).
- Avantage : Très visuel, facile à comprendre.
- Inconvénient : Difficile à utiliser pour de grands graphes ou pour des calculs.
-
Liste d'adjacence : Pour chaque sommet, on liste les sommets auxquels il est connecté.
- Pour un graphe non orienté : Chaque sommet a une liste de ses voisins.
- Exemple : ,
- Pour un graphe orienté : Chaque sommet a une liste de ses successeurs (les sommets vers lesquels il y a un arc).
- Avantage : Efficace pour les graphes "creux" (avec peu d'arêtes).
- Inconvénient : Vérifier l'existence d'une arête nécessite de parcourir la liste de .
- Pour un graphe non orienté : Chaque sommet a une liste de ses voisins.
-
Matrice d'adjacence : Une matrice carrée de taille (où est le nombre de sommets). L'élément vaut 1 s'il y a une arête (ou un arc) du sommet vers le sommet , et 0 sinon.
- Pour un graphe non orienté sans boucles ni arêtes multiples, la matrice est symétrique ().
- Exemple (graphe non orienté ci-dessus) :
- Avantage : Facile pour les calculs matriciels (nous y reviendrons !), vérification rapide de l'existence d'une arête.
- Inconvénient : Peut être très grande et contenir beaucoup de zéros pour les graphes creux (peu efficace en mémoire).
-
Matrice d'incidence : Une matrice de taille (où est le nombre de sommets et le nombre d'arêtes). L'élément vaut 1 si le sommet est une extrémité de l'arête , et 0 sinon. Pour les graphes orientés, on peut utiliser -1 pour l'origine et 1 pour l'extrémité.
- Avantage : Utile pour certains problèmes spécifiques (ex: flot).
- Inconvénient : Moins courante et souvent moins intuitive que la matrice d'adjacence pour les problèmes de base.
La matrice d'adjacence est une représentation clé pour les calculs.
Vocabulaire spécifique des graphes
Pour décrire et analyser les graphes, nous utilisons un vocabulaire précis :
-
Degré d'un sommet :
- Pour un graphe non orienté, le degré d'un sommet est le nombre d'arêtes incidentes à ce sommet.
- Exemple : Dans le graphe précédent, , , , .
- Pour un graphe orienté, on distingue :
- Degré entrant (degré intérieur) : Nombre d'arcs ayant ce sommet comme extrémité.
- Degré sortant (degré extérieur) : Nombre d'arcs ayant ce sommet comme origine.
- Propriété : La somme des degrés de tous les sommets d'un graphe non orienté est égale à deux fois le nombre d'arêtes (chaque arête relie deux sommets, et est donc comptée deux fois).
- Pour un graphe non orienté, le degré d'un sommet est le nombre d'arêtes incidentes à ce sommet.
-
Chemin : Une séquence de sommets connectés par des arêtes. Dans un graphe orienté, on parle de chemin orienté ou chemin.
- Exemple : Dans le graphe non orienté précédent, est un chemin.
- Un chemin est défini par une suite de sommets telle que est une arête (ou pour un non orienté) pour tout de à .
-
Cycle : Un chemin qui commence et se termine au même sommet, sans repasser deux fois par la même arête. Dans un graphe orienté, on parle de circuit.
- Exemple : est un cycle.
-
Graphe connexe : Un graphe non orienté est connexe si, pour toute paire de sommets , il existe un chemin entre et . En d'autres termes, le graphe est d'un seul tenant.
- Exemple : Un réseau routier où l'on peut aller de n'importe quelle ville à n'importe quelle autre.
-
Composante connexe : Une sous-partie maximale d'un graphe non orienté qui est connexe. Un graphe non connexe est composé de plusieurs composantes connexes.
- Exemple : Si un pont s'effondre, un pays peut être divisé en deux composantes connexes de villes.


