Structures de données et algorithmes

Quelle condition sur le graphe est nécessaire pour que l'algorithme de Dijkstra trouve des plus courts chemins corrects ?

  1. ALe graphe n'a pas de cycles (chemins qui reviennent au même sommet)
  2. BLes arêtes ne sont pas orientées
  3. CTous les poids des arêtes sont supérieurs ou égaux à 0
Afficher la réponse et l'explication

Réponse : C. Tous les poids des arêtes sont supérieurs ou égaux à 0

L'algorithme de Dijkstra fixe le sommet non encore fixé dont la distance est la plus petite. Il repose sur l'hypothèse que passer par d'autres sommets ne peut qu'allonger une distance, jamais la raccourcir. Avec une arête négative, une distance peut devenir plus courte plus tard par un autre chemin ; par exemple, dans un graphe orienté avec S→A 2, S→B 3 et B→A −2, A est fixé à 2 avant que le chemin S→B→A de longueur 1 soit trouvé. En présence de poids négatifs, on utilise l'algorithme de Bellman-Ford ou une méthode similaire. L'algorithme de Dijkstra fonctionne avec des cycles et des arêtes orientées, pourvu que tous les poids soient supérieurs ou égaux à 0.

S'entraîner sur ce thème Retour au thème

Autres questions sur Structures de données et algorithmes

  1. Les tâches A à E ont les contraintes d'ordre « A avant C », « B avant C », « C avant D », « B avant E » et « E avant D ». Quel ordre satisfait toutes les contraintes (résultat d'un tri topologique) ?
  2. Une fonction f(x, y) est définie par « si y vaut 0, renvoyer x ; sinon, renvoyer f(y, x mod y) ». Quand on appelle f(84, 36), quelle est la valeur renvoyée, et combien de fois f est-elle appelée, premier appel compris ?
  3. Une fonction fib(n) qui calcule les nombres de Fibonacci est définie par récursion : « si n vaut 1 ou moins, renvoyer n ; sinon, renvoyer fib(n−1) + fib(n−2) ». Quand on appelle fib(5), combien de fois fib est-elle appelée, premier appel compris ?
  4. On paie 8 yens avec des pièces de 1 yen, 4 yens et 6 yens. Quelle affirmation relie correctement le nombre de pièces choisi par un algorithme glouton, qui utilise d'abord autant que possible la plus grosse pièce, et le nombre minimal de pièces ?
  5. On remplit un sac à dos de capacité 8 avec des objets choisis parmi quatre objets de (poids, valeur) (2, 3), (3, 4), (4, 5) et (5, 6). Il n'existe qu'un exemplaire de chaque objet, et les objets ne peuvent pas être fractionnés. Quelle est la valeur totale maximale pour un poids total de 8 ou moins ?