Numérique et sciences informatiques (spécialité) · TerminaleBac
Graphes : représentations, exercices corrigés de Terminale NSI
Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur
L'essentiel
- Un graphe se représente par une matrice d'adjacence (tableau de 0 et de 1) ou par des listes de voisins (dictionnaire).
- Pour un graphe non orienté, la matrice est symétrique ; pour un graphe orienté, elle ne l'est en général pas.
- Un graphe pondéré associe un nombre (le poids) à chaque arête ; la matrice contient alors les poids.
- Le dessin d'un graphe n'est pas unique : on raisonne sur sa structure, pas sur sa figure.
- Matrice : lecture rapide d'une arête mais beaucoup de place ; listes : économes quand il y a peu d'arêtes.
Comment utiliser ces exercices
Ces exercices portent sur les représentations d'un graphe : le dessin, la matrice d'adjacence et les listes de voisins. Ils sont classés du plus simple au plus délicat. Cherche d'abord seul, avec une feuille, puis ouvre les indices un par un, et seulement ensuite la correction.
Les exercices
Exercice 1 Construire une matrice d'adjacence
Un graphe non orienté a pour sommets , , , (dans cet ordre) et pour arêtes , , et .
- Écris sa matrice d'adjacence.
- Combien de cases de cette matrice valent ?
Indice 1
Une arête donne un à deux endroits : ligne colonne , et ligne colonne .
Indice 2
Aucun sommet n'a d'arête vers lui-même : la diagonale est remplie de .
Voir la correction pas à pas
On prépare un tableau dont les lignes et colonnes sont ordonnées .
On place les pour : cases et . Pour : et . Pour : et . Pour : et .
On complète par des . La matrice est .
On compte les : par arête, donc .
La matrice est symétrique, comme toujours pour un graphe non orienté, et le nombre de vaut deux fois le nombre d'arêtes.
Exercice 2 Passer à des listes de voisins
On reprend le graphe de l'exercice précédent (arêtes , , , ).
- Écris-le sous forme de dictionnaire Python associant à chaque sommet la liste de ses voisins.
- Quel est le nombre de voisins du sommet ?
Indice 1
Le dictionnaire commence par {"A": ["B", "C"], ...}.
Indice 2
Compte les arêtes qui touchent .
Voir la correction pas à pas
Voisins de : et .
Voisins de : et . Voisins de : , et . Voisins de : .
Le dictionnaire est
{"A": ["B","C"], "B": ["A","C"], "C": ["A","B","D"], "D": ["C"]}.Le sommet a voisins, c'est
len(g["C"]).
Chaque arête apparaît deux fois dans ce dictionnaire, une fois dans la liste de chacune de ses extrémités.
Exercice 3 Lire une matrice : nombre d'arêtes
Un graphe non orienté à cinq sommets numérotés de à a pour matrice d'adjacence
Combien ce graphe a-t-il d'arêtes ?
Indice 1
Additionne les ligne par ligne : chaque ligne donne le nombre de voisins du sommet.
Indice 2
Chaque arête est comptée deux fois dans la matrice.
Voir la correction pas à pas
Les lignes contiennent respectivement , , , et cases à .
La somme des cases vaut .
Chaque arête étant comptée une fois par extrémité, on divise par : .
On peut vérifier en listant les arêtes : , , , , , . Cela fait bien six arêtes.
Exercice 4 Un graphe orienté
Un graphe orienté a pour sommets et pour arcs , , , , , .
- Écris sa matrice d'adjacence (la case de la ligne , colonne vaut si l'arc existe).
- Cette matrice est-elle symétrique ?
- Combien d'arcs partent du sommet ?
Indice 1
Un arc ne donne qu'un seul : ligne , colonne .
Indice 2
Le nombre d'arcs qui partent du sommet se lit sur la ligne .
Voir la correction pas à pas
Ligne : arcs vers et , soit . Ligne : arc vers , soit .
Ligne : arcs vers et , soit . Ligne : arc vers , soit .
Pas de symétrie : la case vaut mais la case vaut .
Sur la ligne , il y a deux : deux arcs partent du sommet .
Dans un graphe orienté, la ligne d'un sommet décrit les arcs qui en partent et la colonne ceux qui y arrivent. C'est pourquoi la matrice n'est plus symétrique.
Exercice 5 Du code à la structure du graphe
Un programme définit le graphe suivant :
g = {"A": ["B", "D"],
"B": ["A", "C", "D"],
"C": ["B"],
"D": ["A", "B"]}
def nb_aretes(g):
return sum(len(v) for v in g.values()) // 2
- Que renvoie
nb_aretes(g)? - Pourquoi divise-t-on par ? Pourquoi serait-ce faux pour un graphe orienté ?
Indice 1
Calcule d'abord len de chaque liste.
Indice 2
Pense à la manière dont une arête apparaît dans le dictionnaire.
Voir la correction pas à pas
Les longueurs des listes sont , , et ; leur somme vaut .
Chaque arête non orientée est écrite deux fois (dans la liste de chaque extrémité), donc .
Les arêtes sont , , , : on en compte bien quatre.
Dans un graphe orienté, un arc n'est écrit qu'une fois, dans la liste de : il ne faut alors pas diviser.
Avant d'utiliser une formule de comptage, demande-toi toujours si le graphe est orienté ou non.
Exercice 6 Matrice de poids et coût d'un chemin
Un graphe pondéré non orienté a pour sommets et pour arêtes pondérées : de poids , de poids , de poids , de poids , de poids .
- Écris la matrice des poids, en mettant quand il n'y a pas d'arête.
- Quel est le coût total du chemin ?
- Ce chemin est-il plus court que le chemin direct ?
Indice 1
Dans un graphe pondéré, le poids d'une arête peut représenter une distance ou un coût 3. On le place dans la matrice à la place du .
Indice 2
Le coût d'un chemin est la somme des poids de ses arêtes.
Voir la correction pas à pas
La matrice des poids, dans l'ordre , est .
Le chemin utilise les arêtes de poids , et : coût .
Le chemin coûte .
Comme , le chemin qui passe par est plus économique, bien qu'il compte plus d'arêtes.
Le nombre d'arêtes d'un chemin ne dit rien de son coût : il faut additionner les poids.
Exercice 7 Choisir la représentation : coût mémoire
Un graphe non orienté a sommets et arêtes.
- Combien de cases contient sa matrice d'adjacence ?
- Combien de sommets au total apparaissent dans l'ensemble de ses listes de voisins ?
- Quelle représentation choisir pour ce graphe, et pourquoi ?
Indice 1
La matrice a une ligne et une colonne par sommet.
Indice 2
Chaque arête est écrite deux fois dans les listes de voisins.
Voir la correction pas à pas
La matrice est carrée de côté : cases.
Chaque arête figure dans la liste de chacune de ses deux extrémités : entrées au total.
est bien inférieur à : presque toutes les cases de la matrice contiendraient un .
On choisit donc les listes de voisins, plus économes quand il y a peu d'arêtes. La matrice garde l'avantage de répondre immédiatement à la question « ces deux sommets sont-ils reliés ? ».
Le choix dépend de la densité du graphe et de l'usage : peu d'arêtes, on préfère les listes ; test fréquent d'une arête précise, la matrice est pratique.
Exercice 8 Nombre maximal d'arêtes
On considère des graphes non orientés à sommets, sans arête reliant un sommet à lui-même et sans arête multiple.
- Combien d'arêtes au maximum un tel graphe peut-il avoir ?
- Quel serait le nombre maximal d'arcs pour un graphe orienté de sommets, sans boucle et avec au plus un arc de vers ?
- Comment le voit-on sur la matrice d'adjacence ?
Indice 1
Une arête relie deux sommets distincts : compte les paires de sommets.
Indice 2
Dans un graphe orienté, l'arc et l'arc sont deux arcs différents.
Voir la correction pas à pas
Le nombre de paires de sommets distincts parmi est .
Pour un graphe orienté, chaque sommet peut émettre un arc vers chacun des autres : arcs au maximum.
Sur la matrice, la diagonale reste à (pas de boucle). Il reste cases utilisables, dont la moitié suffit au cas non orienté, par symétrie : arêtes.
Un graphe qui atteint ce maximum est dit complet. La matrice d'un graphe complet non orienté ne contient que des hors de la diagonale.
Les questions qu'on se pose
Deux matrices différentes peuvent-elles représenter le même graphe ?
Oui. La matrice dépend de l'ordre dans lequel on étiquette les sommets 3. Si tu échanges l'étiquette de deux sommets, deux lignes et deux colonnes de la matrice sont échangées, mais le graphe reste le même. De même, plusieurs dessins peuvent représenter un seul graphe 1. Pour comparer deux représentations, fixe d'abord l'ordre des sommets.
Au bac, faut-il préférer la matrice ou les listes de voisins ?
Le sujet l'indique en général : on te demande de lire ou d'écrire l'une ou l'autre. Quand tu as le choix, retiens la règle de l'exercice sur le coût mémoire : peu d'arêtes, les listes de voisins (un dictionnaire Python) ; test fréquent de la présence d'une arête, la matrice. Dans tous les cas, précise l'ordre des sommets et si le graphe est orienté ou non.
Comment vérifier rapidement une matrice d'adjacence que je viens d'écrire ?
Trois contrôles. Pour un graphe non orienté, la matrice doit être symétrique. La diagonale doit être nulle s'il n'y a pas de boucle. La somme de toutes les cases doit valoir deux fois le nombre d'arêtes (le nombre d'arcs pour un graphe orienté).
Sources
- Document officiel eduscol : Graphes (structures de données), Éduscol. Consulté le 7 novembre 2026.
- Représentation graphique, Wikipédia. Consulté le 7 novembre 2026.
- Théorie des graphes, Wikipédia. Consulté le 7 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.