Aller au contenu

Problèmes de cheminement - Algorithme de Dijkstra

Page 1 sur 13Lecteur de document UniversityLib

Problèmes de cheminement - Algorithme de Dijkstra

Graph Theory · notes

Voir tous les documents en programmation

Fiche de révisionRésumé

Résumé – Problèmes de cheminement - Algorithme de Dijkstra

Rédigée à partir de ce document, puis vérifiée avant publication.

Cette page traite de l'algorithme de Dijkstra, un outil fondamental en théorie des graphes, utilisé pour résoudre les problèmes de cheminement, notamment le calcul du plus court chemin entre deux sommets. Nous explorerons son fonctionnement, ses étapes clés, ainsi qu'un exemple pratique pour illustrer son application.

Introduction aux problèmes de cheminement

Les problèmes de cheminement sont des questions classiques dans le domaine de la théorie des graphes. L'objectif principal est de déterminer une route entre des sommets d'un graphe qui minimise ou maximise une certaine fonction économique. Le problème le plus courant consiste à rechercher le chemin le plus court entre deux sommets, ce qui signifie minimiser la somme des poids des arêtes traversées.

Il existe plusieurs algorithmes pour résoudre ces problèmes, parmi lesquels on trouve :

  • Algorithme de Bellman
  • Algorithme de Dijkstra
  • Algorithme de Floyd

Ces algorithmes peuvent être appliqués à divers problèmes, tels que le problème du voyageur de commerce, le problème du postier chinois, ainsi que des méthodes d'ordonnancement comme PERT et GANTT.

Définition et fonctionnement de l'algorithme de Dijkstra

L'algorithme de Dijkstra est conçu pour calculer le plus court chemin d'un sommet initial à tous les autres sommets d'un graphe. Il fonctionne par étapes, en construisant progressivement un ensemble de sommets marqués à partir du sommet de départ.

Principe de l'algorithme

Le principe de l'algorithme repose sur les étapes suivantes :

  • Initialisation : On commence par définir la distance du sommet de départ (noté x0) à lui-même comme étant 0, et la distance à tous les autres sommets comme infinie.
  • Marquage des sommets : À chaque étape, on sélectionne le sommet non marqué dont la distance estimée est la plus petite. Ce sommet est ensuite marqué.
  • Mise à jour des distances : Pour chaque sommet adjacent non marqué, on met à jour la distance estimée si le chemin passant par le sommet marqué est plus court que la distance actuellement connue.
  • Répétition : Ces étapes sont répétées jusqu'à ce que tous les sommets soient marqués.

Formulation de l'algorithme

Voici une formulation simplifiée de l'algorithme :

Initialisation
d(x0) = 0, P(x0) = nul
aucun sommet n’est marqué
min_dist_M = 0

pour tout s ∈ S, s ≠ x0 répéter
    d(s) = +∞, P(s) = nul

répéter
    chercher x non marqué tel que d(x) = min_dist_M
    marquer x
    pour tout y ∈ G(x), y non marqué répéter
        si d(x) + v(x, y) < d(y) alors
            d(y) ← d(x) + v(x, y) (mise à jour de la distance)
            P(y) ← x (mise à jour du père)
    min_dist_M = min{d(s), s ∉ M}
jusqu’à ce que M = S

Exemple d'application de l'algorithme de Dijkstra

Considérons un graphe avec les sommets A, B, C, D et E, et les poids des arêtes suivants :

  • A-B = 6
  • A-C = 2
  • C-B = 3
  • A-D = 2
  • D-E = 5
  • B-E = 1

Nous allons appliquer l'algorithme de Dijkstra pour trouver le plus court chemin de A à E.

Au départ, nous avons :

  • d(A) = 0
  • d(B) = +∞
  • d(C) = +∞
  • d(D) = +∞
  • d(E) = +∞

Après la première itération, nous marquons A et mettons à jour les distances :

  • d(B) = 6
  • d(C) = 2
  • d(D) = 2

Ensuite, nous marquons C (car d(C) est le plus petit) et mettons à jour :

  • d(B) = 5 (car d(A) + v(A, C) + v(C, B) = 2 + 3)
  • d(D) reste 2

Nous continuons ce processus jusqu'à ce que tous les sommets soient marqués. Finalement, nous trouvons que le chemin le plus court de A à E est A-D-E avec un poids total de 7.

Points clés à retenir

Voici quelques points importants à retenir concernant l'algorithme de Dijkstra :

  • Il est utilisé pour trouver le plus court chemin dans un graphe pondéré.
  • Il fonctionne en marquant progressivement les sommets et en mettant à jour les distances.
  • Il est efficace pour les graphes avec des poids d'arêtes non négatifs.

Questions fréquentes

Qu'est-ce que l'algorithme de Dijkstra ?

L'algorithme de Dijkstra est une méthode utilisée pour trouver le plus court chemin entre un sommet de départ et tous les autres sommets d'un graphe pondéré, en minimisant la somme des poids des arêtes traversées.

Comment fonctionne l'algorithme de Dijkstra ?

Il fonctionne en initialisant les distances, en marquant les sommets et en mettant à jour les distances des sommets adjacents jusqu'à ce que tous les sommets soient marqués.

Quels sont les cas d'utilisation de l'algorithme de Dijkstra ?

Il est couramment utilisé dans des applications telles que la navigation GPS, les réseaux de communication et les systèmes de transport pour déterminer les itinéraires les plus courts.

Quels sont les avantages de l'algorithme de Dijkstra ?

Ses principaux avantages incluent son efficacité pour les graphes avec des poids d'arêtes non négatifs et sa capacité à trouver le chemin le plus court de manière systématique.

Toutes les révisions