← Retour au sommaire

Chapitre 24 – Graphes et ordonnancement

Exercices par capacités · BTS

Dernière mise à jour : 21 juin 2026

Capacités travaillées

C1 — Vocabulaire des graphes, degrés et matrice d'adjacence

Exercice 1

On considère le graphe non orienté ci-dessous.

A B C D
Graphe non orienté à 4 sommets et 5 arêtes
  1. Lister les arêtes du graphe.
  2. Donner le degré de chaque sommet.
  3. Vérifier le lemme des poignées de mains \(\sum d(v) = 2|E|\).
  1. Arêtes : \(\{A,B\}\), \(\{A,C\}\), \(\{B,C\}\), \(\{B,D\}\), \(\{C,D\}\) — soit 5 arêtes.
  2. \(d(A) = 2\) (B, C) ; \(d(B) = 3\) (A, C, D) ; \(d(C) = 3\) (A, B, D) ; \(d(D) = 2\) (B, C).
  3. \(\sum d(v) = 2+3+3+2 = 10\) et \(2|E| = 2\times 5 = 10\). Le lemme est vérifié.
Exercice 2

Un graphe orienté à 4 sommets possède les arcs suivants : \(1 \to 2\), \(1 \to 3\), \(2 \to 4\), \(3 \to 4\), \(4 \to 1\). Construire sa matrice d'adjacence \(M\) (les lignes représentent l'origine, les colonnes la destination).

On place un 1 en case \((i,j)\) s'il existe un arc \(i \to j\).

1234
10110
20001
30001
41000

La matrice est non symétrique, ce qui est normal pour un graphe orienté.

Exercice 3

Un graphe non orienté connexe a tous ses sommets de degré pair. Admet-il un cycle eulérien ? Le problème des 7 ponts de Königsberg (graphe dont les 4 sommets sont de degré impair) admet-il un parcours eulérien ? Justifier à l'aide du critère d'Euler.

Critère : un graphe connexe admet un cycle eulérien si et seulement si tous ses sommets sont de degré pair ; il admet une chaîne eulérienne (sans retour au départ) si et seulement si il a exactement deux sommets de degré impair.

Premier graphe : tous les sommets de degré pair → il admet bien un cycle eulérien.

Königsberg : les 4 sommets sont de degré impair (plus de deux sommets impairs), donc il n'existe ni cycle ni chaîne eulérienne. Le parcours est impossible.

Exercice 4

Un arbre est un graphe connexe sans cycle. Pour relier 8 sites par un réseau en arbre :

  1. Combien d'arêtes contient un arbre à 8 sommets ?
  2. Un graphe de 8 sommets et 10 arêtes peut-il être un arbre ? Justifier.
  1. Un arbre à \(n\) sommets a exactement \(n-1\) arêtes, soit \(8 - 1 = 7\) arêtes.
  2. Non : un arbre à 8 sommets a 7 arêtes. Avec 10 arêtes, le graphe contient nécessairement des cycles, donc ce n'est pas un arbre.

C2 — Appliquer l'algorithme de Dijkstra

Exercice 5

Un livreur part du dépôt A et veut rejoindre le client F. Le réseau (graphe orienté pondéré, poids = distance en km) comporte les arcs suivants :

ArcA→BA→CB→DB→EC→BC→DD→FE→F
Poids42511823

Déterminer le plus court chemin de A à F et sa longueur par l'algorithme de Dijkstra.

On note dist[x] la distance provisoire la plus courte depuis A.

  • Init : dist[A]=0, les autres \(=\infty\).
  • Traiter A (0) : dist[B]=4, dist[C]=2.
  • Traiter C (2) : via C→B : \(2+1=3 < 4\) → dist[B]=3 ; via C→D : \(2+8=10\) → dist[D]=10.
  • Traiter B (3) : via B→D : \(3+5=8 < 10\) → dist[D]=8 ; via B→E : \(3+1=4\) → dist[E]=4.
  • Traiter E (4) : via E→F : \(4+3=7\) → dist[F]=7.
  • Traiter D (8) : via D→F : \(8+2=10 > 7\) → pas de mise à jour.

Plus court chemin : A → C → B → E → F, de longueur \(2+1+1+3 = 7\) km.

Exercice 6

Sur un petit réseau, les arcs pondérés sont : A→B : 6, A→C : 1, C→B : 2, C→D : 5, B→D : 1. Déterminer la plus courte distance de A à D.

  • Init : dist[A]=0.
  • Traiter A (0) : dist[B]=6, dist[C]=1.
  • Traiter C (1) : via C→B : \(1+2=3 < 6\) → dist[B]=3 ; via C→D : \(1+5=6\) → dist[D]=6.
  • Traiter B (3) : via B→D : \(3+1=4 < 6\) → dist[D]=4.
  • Traiter D (4) : sommet final.

Plus court chemin : A → C → B → D, de longueur \(1+2+1 = 4\).

Exercice 7

Pourquoi l'algorithme de Dijkstra ne peut-il pas être utilisé lorsque certaines arêtes ont des poids négatifs ? Quel algorithme faut-il alors utiliser ?

Dijkstra est un algorithme glouton : une fois un sommet traité (distance minimale), sa distance est considérée comme définitive. Avec des poids négatifs, un chemin passant plus tard par une arête négative pourrait raccourcir une distance déjà figée, ce qui invalide le principe.

Dans ce cas on utilise l'algorithme de Bellman-Ford (complexité \(O(|V|\cdot|E|)\)), qui accepte les poids négatifs et détecte les cycles absorbants négatifs.

C3 — Construire un arbre couvrant minimal (algorithme de Kruskal)

Exercice 8

On veut câbler un réseau reliant 5 sites. Les coûts (en milliers d'euros) des liaisons possibles sont :

ArêteA-BA-CB-CB-DC-DC-ED-E
Poids42510387

Déterminer l'arbre couvrant minimal par l'algorithme de Kruskal et son coût total.

On trie les arêtes par poids croissant et on les ajoute si elles ne créent pas de cycle.

  1. A-C : 2 → ajouter.
  2. C-D : 3 → ajouter.
  3. A-B : 4 → ajouter.
  4. B-C : 5 → créerait le cycle A-B-C-A → rejeter.
  5. D-E : 7 → ajouter.

L'arbre compte 4 arêtes pour 5 sommets (c'est complet). ACM = {A-C, C-D, A-B, D-E}.

Coût total : \(2 + 3 + 4 + 7 = 16\) (soit 16 000 €).

Exercice 9

Appliquer l'algorithme de Kruskal au graphe à 4 sommets dont les arêtes pondérées sont : A-B : 1, A-C : 3, B-C : 2, B-D : 5, C-D : 4. Donner l'arbre couvrant minimal et son poids.

Tri croissant : A-B(1), B-C(2), A-C(3), C-D(4), B-D(5).

  1. A-B : 1 → ajouter.
  2. B-C : 2 → ajouter.
  3. A-C : 3 → créerait le cycle A-B-C-A → rejeter.
  4. C-D : 4 → ajouter.

L'arbre compte 3 arêtes pour 4 sommets (complet). ACM = {A-B, B-C, C-D}, poids total \(1+2+4 = 7\).

Exercice 10

Dans l'algorithme de Kruskal, combien d'arêtes contient l'arbre couvrant minimal d'un graphe connexe à \(n\) sommets ? Pourquoi rejette-t-on une arête qui crée un cycle ?

L'arbre couvrant minimal est un arbre couvrant : il contient les \(n\) sommets et exactement \(n-1\) arêtes.

Une arête créant un cycle relie deux sommets déjà connectés dans l'arbre en construction : elle est inutile pour assurer la connexité et n'augmenterait que le coût total. On la rejette donc pour conserver une structure d'arbre (sans cycle) de poids minimal.

C4 — Calculer les dates, les marges et le chemin critique d'un réseau PERT

Exercice 11

Un projet comporte 5 tâches enchaînées en séquence simple. Le tableau donne leur durée et leurs antériorités.

TâcheABCDE
Durée (j)35241
AntérieuresABCD
  1. Calculer la date de début au plus tôt de chaque tâche.
  2. En déduire la durée totale du projet.

Les tâches étant en séquence, chaque tâche commence quand la précédente est terminée.

  • A : début 0, fin 3.
  • B : début 3, fin \(3+5=8\).
  • C : début 8, fin \(8+2=10\).
  • D : début 10, fin \(10+4=14\).
  • E : début 14, fin \(14+1=15\).

Durée totale du projet : 15 jours (somme des durées car tout est en série).

Exercice 12

Un projet comporte les tâches suivantes. On note T⁺(début) la date de début au plus tôt.

TâcheDurée (j)Antérieures
A4
B3
C5A
D2A, B
E4C, D

Calculer les dates de début au plus tôt de C, D et E, puis la durée minimale du projet.

Propagation vers l'avant : la date de début au plus tôt d'une tâche est le maximum des dates de fin au plus tôt de ses antérieures.

  • A : début 0, fin 4. B : début 0, fin 3.
  • C (après A) : début \(= 4\), fin \(4+5=9\).
  • D (après A et B) : début \(= \max(4, 3) = 4\), fin \(4+2=6\).
  • E (après C et D) : début \(= \max(9, 6) = 9\), fin \(9+4=13\).

Durée minimale du projet : 13 jours.

Exercice 13

On reprend le projet de l'exercice 12 (durée totale 13 jours). On donne pour la tâche D : date de début au plus tôt \(T^+ = 4\), durée \(d = 2\). La tâche E (qui succède à D) a une date de début au plus tard de 9. Calculer la marge totale de la tâche D et indiquer si elle est critique.

La marge totale d'une tâche \(ij\) vaut \(MT = T^-_j - T^+_i - d_{ij}\), où \(T^-_j\) est la date au plus tard de la fin de la tâche.

La fin de D doit intervenir au plus tard quand E peut démarrer au plus tard, soit \(T^-_{\text{fin D}} = 9\).

\(MT_D = 9 - 4 - 2 = 3\) jours.

La marge totale est non nulle (\(MT_D = 3\)), donc la tâche D n'est pas critique : on peut la retarder jusqu'à 3 jours sans allonger le projet.

Exercice 14

On donne le tableau PERT d'un projet (dates calculées) où MT désigne la marge totale.

TâcheDuréeT⁺ débutT⁻ débutMT
A3000
B5330
C3352
D4880
E28102
  1. Identifier les tâches critiques.
  2. Donner le chemin critique sachant que l'enchaînement des tâches critiques est A → B → D.
  1. Une tâche est critique si sa marge totale est nulle : ce sont A, B et D (MT = 0). Les tâches C et E ont une marge de 2 jours.
  2. Le chemin critique est la suite de tâches de marge nulle : A → B → D. Sa durée \(3+5+4 = 12\) jours donne la durée minimale du projet.
Exercice 15

Expliquer la différence entre la marge totale et la marge libre d'une tâche. Pour une tâche \(ij\) de durée \(d_{ij}=5\), on donne \(T^+_i = 10\), \(T^+_j = 20\) et \(T^-_j = 22\). Calculer ces deux marges.

Marge totale : retard maximal sur la tâche sans retarder la fin du projet.

\(MT = T^-_j - T^+_i - d_{ij} = 22 - 10 - 5 = 7\) jours.

Marge libre : retard maximal sans retarder le début au plus tôt des tâches suivantes.

\(ML = T^+_j - T^+_i - d_{ij} = 20 - 10 - 5 = 5\) jours.

On a toujours \(ML \leq MT\) : la marge libre (5 j) est inférieure ou égale à la marge totale (7 j).