Aller au contenu

Exercices – Graphes : parcours et plus court chemin

BTS SIO SISR 2e année – Pour aller plus loin – S17

Note

Comment travailler. Cherche d'abord sur papier, puis ouvre « Voir la réponse ». Aucune réponse sans justification n'est complète.

Exercice 1 – Trace du parcours en largeur

Dérouler le parcours en largeur de g (cours) depuis "C".

Voir la réponse

File : C. On défile C : on ajoute D, E. On défile D : rien. On défile E : on ajoute A. On défile A : on ajoute B (C est déjà vu). On défile B. Ordre : ["C", "D", "E", "A", "B"].

Exercice 2 – Distances en sauts

Donner la distance en nombre de sauts de A à chaque sommet de g.

Voir la réponse

A : 0 ; B : 1 ; C : 1 ; D : 2 ; E : 2.

Exercice 3 – Profondeur ou largeur ?

Soit h = {"A": ["B", "C"], "B": ["C"], "C": []}. Le parcours en profondeur depuis A atteint C par un chemin de 2 sauts. Quel est le plus court chemin de A à C ?

Voir la réponse

A → C directement : 1 saut. Le parcours en largeur le trouve, la profondeur (qui passe par B d'abord) ne le garantit pas.

Exercice 4 – Trace de Dijkstra

Dérouler Dijkstra depuis S sur {"S": {"A": 7, "B": 2}, "A": {"C": 1}, "B": {"A": 3, "C": 8}, "C": {}}.

Voir la réponse

S = 0. Traiter S : A = 7, B = 2. Traiter B (2) : A = 5 (2 + 3), C = 10. Traiter A (5) : C = 6. Traiter C (6). Résultat : S 0, B 2, A 5, C 6. Chemin vers C : S → B → A → C.

Exercice 5 – Poids négatif

Pourquoi Dijkstra peut-il se tromper avec un poids négatif ?

Voir la réponse

Il fixe la distance d'un sommet dès qu'il le traite, en supposant qu'aucun chemin plus long en poids ne peut devenir plus court. Avec un poids négatif, un chemin passant par d'autres sommets peut finalement coûter moins cher : la distance déjà fixée est alors fausse.

Exercice 6 – Choisir

Réseau d'entreprise : on veut le chemin de plus faible latence entre deux routeurs. Quel algorithme ? Et pour le chemin qui traverse le moins de routeurs ?

Voir la réponse

Latence : Dijkstra (poids = latence, positifs). Moins de routeurs : parcours en largeur.

Je sais faire

  • Représenter un graphe pondéré en dictionnaire
  • Dérouler un parcours en largeur
  • Dérouler Dijkstra
  • Choisir l'algorithme adapté

Ce que je dois reprendre : ______________________

Ma question à poser à l'enseignant : ______________________