Un cap pour ce chapitre
Ce que vous saurez faire
- Construire une matrice d’adjacence.
- Lire des listes de successeurs et de prédécesseurs.
- Comparer les coûts de stockage et les usages.
Les bases utiles pour commencer
Fixer un ordre des sommets
Pour construire une matrice, on choisit un ordre des sommets, par exemple A, B, C, D. La ligne représente le sommet de départ et la colonne celui d’arrivée dans notre convention. La case M[i][j] vaut 1 si un arc va du sommet i au sommet j, et 0 sinon.
L’ordre choisi peut changer d’une représentation à l’autre ; il doit donc être indiqué. Une matrice numérique sans noms de lignes ou sans convention est difficile à interpréter. Une fois l’ordre fixé, chaque case répond directement à une question d’existence de relation entre deux sommets.
Pour lire M[2][1], traduisez d’abord les indices dans l’ordre annoncé. Avec A,B,C,D, la case concerne C vers B. Le sens ne se déduit pas du plus petit indice. Lors d’une conversion, vérifiez chaque relation en effectuant ce trajet « nom de départ, ligne, nom d’arrivée, colonne ». Cette méthode évite une transposition involontaire.
Orientation, symétrie et diagonale
Dans un graphe non orienté, une arête A-B donne une relation dans les deux sens. La matrice est alors symétrique : M[i][j] = M[j][i]. Pour un graphe orienté, cette symétrie n’est pas imposée. Une matrice symétrique peut néanmoins représenter un graphe orienté dont tous les arcs sont réciproques.
La diagonale décrit les relations d’un sommet vers lui-même, appelées boucles dans le vocabulaire des graphes. Si le modèle les exclut, la diagonale est nulle. Le convertisseur accepte des boucles pour montrer cette information, sans les confondre avec des boucles de programmation.
Conserver seulement les voisins utiles
Une liste d’adjacence associe à chaque sommet ses voisins ou successeurs. Pour A → B et A → C, l’entrée de A contient [B, C]. Il faut conserver une entrée vide pour un sommet sans successeur, sinon on risquerait de perdre l’existence d’un sommet isolé.
Une liste de prédécesseurs conserve les relations dans l’autre sens de lecture. Pour construire celle d’un sommet, on cherche qui possède un arc vers lui. Dans une matrice, les successeurs se lisent sur sa ligne et les prédécesseurs sur sa colonne.
successeurs = {
"A": ["B", "C"],
"B": ["D"],
"C": [],
"D": []
}Choisir selon le traitement
Une matrice de n sommets contient n² cases, même si peu de liens existent. Elle permet de tester directement une relation lorsque les indices sont connus. Une représentation par listes conserve les sommets et les liens présents ; elle peut être plus compacte pour un graphe peu dense.
Parcourir les successeurs d’un sommet est naturel avec une liste dédiée. Avec une matrice, on examine sa ligne pour trouver les 1. Il n’existe donc pas un format toujours meilleur : le nombre de liens, les opérations fréquentes et les contraintes de mémoire orientent le choix. Pour un graphe pondéré, le codage des absences doit aussi éviter de confondre « aucun lien » et un éventuel poids nul.
Compter les 1 demande une convention. Dans une matrice orientée, chaque 1 représente un arc, boucle comprise. Dans un graphe non orienté sans boucle, chaque arête produit deux 1 symétriques. Il faut alors diviser leur total par deux pour compter les arêtes. Une boucle n’est présente qu’une fois sur la diagonale et demande un traitement séparé si elle est autorisée.
Exemple suivi : matrice et listes simultanément
Avec les arcs A→B, B→C et C→A, et D isolé, la matrice dans l’ordre A,B,C,D possède les lignes [0,1,0,0], [0,0,1,0], [1,0,0,0], [0,0,0,0]. Les listes de successeurs sont A:[B], B:[C], C:[A], D:[]. Le graphe contient quatre sommets malgré seulement trois arcs.
La colonne de A indique un arc venant de C ; sa ligne indique un arc vers B. Le cycle A,B,C,A apparaît dans les deux représentations. Pour vérifier la conversion, comptez les relations puis contrôlez les cases correspondantes. La ligne vide de D conserve son absence de successeurs, et sa colonne vide montre qu’il n’a pas de prédécesseur. Supprimer D ferait perdre une information du modèle.
Choisir un format et conserver le sens des poids
Pour 100 sommets, une matrice possède 10 000 cases, quel que soit le nombre de relations. Si seuls 120 arcs existent, des listes de successeurs décrivent directement ces arcs, avec une entrée par sommet. Tester un arc précis est direct dans la matrice lorsque les indices sont connus ; parcourir uniquement les voisins présents est naturel dans une liste.
Dans un graphe pondéré, remplacer les 1 par des poids exige une convention pour l’absence. Si un coût nul est possible, zéro ne peut plus signifier à la fois absence et liaison gratuite. On peut employer une valeur distincte comme None, selon l’implémentation. Les conversions doivent conserver l’orientation, les sommets isolés, les boucles et les poids. Deux tableaux visuellement différents peuvent représenter le même graphe si leur ordre des sommets diffère, à condition de comparer les noms et non les positions seules.
À vous de faire varier les choses
Transformez vos arcs en données
Saisissez des relations comme A>B,B>C entre A, B, C et D. Changez l’orientation et observez matrice, successeurs et prédécesseurs.
Lire le résultat de l’expérience initiale
3 relation(s) représentée(s).
Lignes = départs, colonnes = arrivées. 0 saisie(s) ignorée(s). Les doublons ne créent pas de nouveaux liens.
| Sommet | A | B | C | D | Successeurs | Prédécesseurs |
|---|---|---|---|---|---|---|
| A | 0 | 1 | 1 | 0 | B, C | aucun |
| B | 0 | 0 | 0 | 1 | D | A |
| C | 0 | 0 | 0 | 0 | aucun | A |
| D | 0 | 0 | 0 | 0 | aucun | B |
Changer de représentation doit conserver exactement les relations, y compris les absences et les sommets isolés.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Remplir une ligne
Dans l’ordre A, B, C, les arcs sont A → B, A → C et C → B. Donnez la ligne de A et la colonne de B.
Indice 1
La ligne décrit les départs de A.
Indice 2
La colonne décrit les arrivées vers B.
Comprendre la correction
La ligne de A est [0, 1, 1]. La colonne de B est [1, 0, 1], car A et C possèdent un arc vers B. Aucun arc B → B n’est donné. Lire une colonne comme une ligne inverserait le sens des relations.
Reconstituer les successeurs
Dans l’ordre A, B, C, une matrice possède les lignes [0,1,0], [0,0,0], [1,1,0]. Donnez les listes de successeurs.
Indice 1
Chaque 1 désigne un sommet de destination.
Indice 2
Une ligne de zéros donne une liste vide, pas un sommet absent.
Comprendre la correction
A a pour successeur B. B ne possède aucun successeur. C a pour successeurs A et B. Le dictionnaire peut donc contenir A:[B], B:[], C:[A,B]. L’entrée vide de B conserve son existence dans le graphe.
Une symétrie oubliée
Pour une arête non orientée A-B, un élève écrit seulement M[A][B] = 1 et laisse M[B][A] = 0. Que représente alors sa matrice ?
Indice 1
Une arête ne possède pas de sens privilégié.
Indice 2
La matrice actuelle ne permet qu’une direction.
Comprendre la correction
La matrice représente un arc orienté de A vers B, pas la relation réciproque attendue. Pour l’arête non orientée, il faut placer 1 dans les deux cases symétriques. Une transformation correcte conserve les possibilités de déplacement du graphe initial.
Beaucoup de sommets, peu de liens
Un graphe possède 1 000 sommets et seulement 1 500 arcs. Combien de cases une matrice contient-elle ? Pourquoi des listes peuvent-elles être intéressantes ?
Indice 1
La matrice comporte 1 000 lignes de 1 000 cases.
Indice 2
Les listes ne réservent pas une case pour chaque absence de relation.
Comprendre la correction
La matrice contient un million de cases. Des listes d’adjacence stockent les entrées des sommets et les 1 500 arcs, avec leur coût de représentation. Elles peuvent donc être plus adaptées à ce graphe peu dense, notamment pour parcourir les successeurs présents. Cela n’établit pas qu’elles sont préférables pour toutes les opérations.
Un cycle et un sommet isolé
Construisez la matrice de A→B, B→C, C→A avec D isolé, dans l’ordre A,B,C,D. Donnez la ligne de D, la colonne de A et le nombre total de 1.
Indice 1
Le sommet isolé reste présent dans les lignes et colonnes.
Indice 2
Chaque arc orienté produit un seul 1.
Comprendre la correction
La ligne D vaut 0,0,0,0. La colonne A vaut 0,0,1,0 puisqu’un seul arc C→A y arrive. Les trois arcs produisent trois 1. Le cycle ne crée pas de liaison directe supplémentaire entre chaque paire de sommets.
Compter avec une boucle
Un graphe non orienté contient les arêtes A-B, B-C et une boucle C-C. Construisez les cases non nulles de sa matrice. Combien de 1 obtient-on ? Pourquoi diviser simplement par deux donne-t-il ici un mauvais nombre de relations ?
Indice 1
Chaque arête entre deux sommets distincts apparaît deux fois.
Indice 2
La boucle occupe seulement une case diagonale.
Comprendre la correction
Les cases sont A,B ; B,A ; B,C ; C,B ; C,C. Il y a cinq 1 pour trois relations. Les quatre cases hors diagonale représentent deux arêtes, puis la case diagonale ajoute une boucle. Diviser cinq par deux ne respecte pas cette différence.
Comparer mémoire et consultations
Un graphe orienté compte 100 sommets et 120 arcs. Donnez le nombre de cases de sa matrice. Expliquez l’intérêt d’une liste de successeurs pour parcourir les voisins d’un sommet, puis l’intérêt d’une matrice pour tester un arc précis.
Indice 1
La matrice réserve une case pour chaque couple ordonné de sommets.
Indice 2
Une liste ne contient que les relations effectivement présentes.
Comprendre la correction
La matrice comporte 10 000 cases. Une liste de successeurs donne directement les voisins à parcourir, sans scanner cent cases de ligne. La matrice permet au contraire un test direct par deux indices pour une relation précise. Le choix dépend donc des opérations fréquentes et de la densité.
Les erreurs qui méritent un détour
- Inverser ligne et colonne sans annoncer une autre convention.
- Notez départ en ligne et arrivée en colonne avant de remplir chaque case.
- Supprimer les sommets sans successeur du dictionnaire.
- Une liste vide est une information : le sommet existe même s’il n’a pas de sortie.
La fiche à garder
L’essentiel à retenir
- Une matrice nécessite un ordre explicite des sommets.
- Les lignes donnent les successeurs et les colonnes les prédécesseurs dans notre convention.
- Le format dépend des liens et des opérations étudiées.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
- Bac 2026 · Antilles-Guyane · Jour 2 : Réseaux : route minimale, chemin pondéré et mémoire des prédécesseurs
- Bac 2025 · Centres étrangers groupe 1 · Jour 1 : Courses d’orientation et choix glouton sur un graphe
- Bac 2025 · Centres étrangers groupe 1 · Jour 2 : Diviseurs et multiples : énumérer les chemins sans répétition
- Bac 2025 · Amérique du Nord · Jour 1 : SQL, contraintes et coloration des mésententes
Le prochain pas
- Parcourir un graphe en profondeur : DFS
- Parcourir un graphe en largeur : BFS
- Chercher des chemins et détecter des cycles
Retrouver le catalogue de Terminale
Ce chapitre s’appuie sur le programme officiel de Terminale (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
