Masar
Masar
Bac Tunisie
Entraîner la reconnaissance
GR-CThéorie des graphes

Matrice d'adjacence, chemins de longueur n et plus court chemin (Dijkstra)

Idée directrice

Deux lectures complémentaires du graphe Eco-Gestion : (1) la matrice associée (d'adjacence) dont les puissances comptent les chaînes de longueur nn ; (2) l'algorithme de Dijkstra pour le plus court chemin dans un graphe valué. Attesté 2018–2022 (Dijkstra en contrôle 2022).

Signature de reconnaissance — l'énoncé se trahit ainsi

« matrice M associée à ce graphe »

« chaînes de longueur n reliant … »

« algorithme de Dijkstra » / « plus court chemin »

Sujet principal

Exercice — matrice d'adjacence et plus court chemin

4 questionsCorrigé masqué

Partie A. Soit le graphe non orienté GG de sommets A,B,C,DA,B,C,D (dans cet ordre) et d'arêtes AB,BC,CD,DA,ACAB,BC,CD,DA,AC.

  1. Écrire la matrice associée MM (matrice d'adjacence) du graphe GG.
  2. Calculer (M2)A,C(M^2)_{A,C}. Combien de chaînes de longueur 22 relient AA à CC ? Citer les exemples.

Partie B. Un livreur part de l'entrepôt SS vers le client TT sur le graphe valué dont les arêtes et durées (minutes) sont : S4PS\xrightarrow{4}P, S6QS\xrightarrow{6}Q, P3QP\xrightarrow{3}Q, P5TP\xrightarrow{5}T, Q2TQ\xrightarrow{2}T.

  1. Appliquer l'algorithme de Dijkstra depuis SS et dresser le tableau des distances provisoires jusqu'à clôture de TT.
  2. En déduire le plus court chemin de SS à TT et sa durée.
Voir la correction commentéeAprès avoir posé votre démarche

A.1. On pose la matrice associée (ordre A,B,C,DA,B,C,D) : M=(0111101011011010)M=\begin{pmatrix}0&1&1&1\\1&0&1&0\\1&1&0&1\\1&0&1&0\end{pmatrix}.

A.2. On pose M2=M×M=(3121121221311212)M^2=M\times M=\begin{pmatrix}3&1&2&1\\1&2&1&2\\2&1&3&1\\1&2&1&2\end{pmatrix}. On a : le coefficient (M2)A,C(M^2)_{A,C} vaut 22. Il y a donc deux chaînes de longueur 22 reliant AA à CC : ABCA-B-C et ADCA-D-C.

B.1. On applique Dijkstra depuis SS :

• Initialisation : d(S)=0d(S)=0, d(P)=d(Q)=d(T)=+d(P)=d(Q)=d(T)=+\infty.

• On ouvre SS : d(P)=4d(P)=4, d(Q)=6d(Q)=6.

• On ouvre PP (44) : d(T)=min(+,4+5)=9d(T)=\min(+\infty,4+5)=9 ; d(Q)d(Q) reste 66 car 4+3=7>64+3=7>6.

• On ouvre QQ (66) : d(T)=min(9,6+2)=8d(T)=\min(9,6+2)=8.

• On ouvre TT (88) : algorithme terminé pour TT.

B.2. On obtient d(T)=8d(T)=8 minutes. Le plus court chemin est SQTS-Q-T. L'algorithme de Dijkstra a mis à jour TT lors du passage par QQ.

Exercices d'entraînement — une nuance à la fois

Entraînement 01 / 02

Drill GR-C.1 — Lire M^3 pour compter des chaînes

2 questionsCorrigé masqué

Soit un graphe orienté dont la matrice associée MM (ordre A,B,CA,B,C) est M=(011001100)M=\begin{pmatrix}0&1&1\\0&0&1\\1&0&0\end{pmatrix}.

  1. Calculer M2M^2.
  2. Combien de chaînes orientées de longueur 22 vont de AA vers CC ?
Voir la correction commentéeAprès avoir posé votre démarche

1. On pose M2=M×MM^2=M\times M. On a : M2=(101100011)M^2=\begin{pmatrix}1&0&1\\1&0&0\\0&1&1\end{pmatrix}.

2. On a : le coefficient ligne AA, colonne CC de M2M^2 vaut 11. Il y a donc une chaîne orientée de longueur 22 de AA vers CC : ABCA\to B\to C.

Entraînement 02 / 02

Drill GR-C.2 — Plus court chemin sur un petit graphe valué

2 questionsCorrigé masqué

Sur le graphe valué de sommets A,B,CA,B,C : arêtes A2BA\xrightarrow{2}B, A5CA\xrightarrow{5}C, B2CB\xrightarrow{2}C.

  1. Appliquer Dijkstra depuis AA pour obtenir d(C)d(C).
  2. Quel est le plus court chemin de AA à CC ?
Voir la correction commentéeAprès avoir posé votre démarche

1. On pose d(A)=0d(A)=0 et d(B)=d(C)=+d(B)=d(C)=+\infty. On ouvre AA : d(B)=2d(B)=2, d(C)=5d(C)=5. On ouvre ensuite BB (distance 22) : d(C)=min(5,2+2)=4d(C)=\min(5,2+2)=4. On obtient d(C)=4d(C)=4 minutes.

2. Le plus court chemin de AA à CC est ABCA-B-C (durée 44). L'arête directe A5CA\xrightarrow{5}C est strictement plus longue. L'algorithme de Dijkstra a mis à jour d(C)d(C) lors de l'ouverture du sommet BB.

Méthode / Automatismes
  • Ordonner les sommets avant d'écrire la matrice associée.
  • Le coefficient (Mn)ij(M^n)_{ij} compte les chaînes de longueur nn de ii vers jj.
  • Dijkstra : toujours ouvrir le sommet de distance provisoire minimale non encore fixé.
Pièges classiques

Compter les sommets au lieu des arêtes dans une chaîne de longueur nn. Réinitialiser Dijkstra à chaque étape. Oublier qu'un graphe non orienté a une matrice symétrique.