30.07.2015 Views

Projet de programmation : Algorithme de Dijkstra

Projet de programmation : Algorithme de Dijkstra

Projet de programmation : Algorithme de Dijkstra

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

déterminer, pour un routeur donné, les liens qui seront utilisés pour atteindre les autres routeurs avecun coût minimum.2. <strong>Algorithme</strong> <strong>de</strong> <strong>Dijkstra</strong> (à partir du nœud A)Soit :• N, l’ensemble <strong>de</strong>s nœuds faisant partie <strong>de</strong> l’arbre• D(v), coût du chemin à partir <strong>de</strong> la racine jusqu’au nœud v• c(i,j), coût associé à la ligne joignant le nœud i au nœud j. Si aucune ligne ne joint ces nœuds,le coût est fixé à ∞.L’algorithme se déroule en 2 phases :• Phase 1 : la phase d’initialisation.N = {A}Pour tous les nœuds vSi v est adjacent à A,Alors D(v) = c(A, v)Sinon D(v) = ∞• Phase 2 : la répétitionBoucleTrouvez le nœuds w qui n’est pas déjà dans N <strong>de</strong> sorte que D(w) est minimalAjouter le nœud w à l’arbre NPour tous les nœuds v adjacents au nœuds w et ne se trouvant pas dans ND(v) = min( D(v) , D(w) + c(w, v) )Le nouveau coût pour atteindre le nœud v est soit l’ancien coût pour atteindrece nœud, soit un chemin plus court vers w + coût entre les nœuds w et vJusqu’à ce que tous les nœuds se trouvent dans NExemple (supposons pour le calcul à partir <strong>de</strong> R2) :Initialisation :N = { R2 }c(R1) = 5c(R3) = 2c(R4) = INFINIBOUCLE 1 : BOUCLE 2 : BOUCLE 3 :N = { R2, R3 } N= { R1, R2, R3 } N = {R1, R2, R3, R4}c(R1) = 5 c(R4) = 8c(R4) = 103. Métho<strong>de</strong> <strong>de</strong> résolution simplifiéePour résoudre ce problème, nous allons représenter le réseau sous la forme d’une matrice n x n. Si unlien existe entre le routeur i et le routeur j <strong>de</strong> coût c, nous placerons, à l’intersection <strong>de</strong> la ligne i et <strong>de</strong>la colonne j le coût c associé à ce lien. Ce coût c se trouvera également à l’intersection <strong>de</strong> la ligne j et<strong>de</strong> la colonne i.En effet, par souci <strong>de</strong> simplification, nous considérerons que le coût d’une ligne reliant le routeur R Aau routeur R B est i<strong>de</strong>ntique au coût reliant le routeur R B au routeur R A . Dans les réseaux informatiques,ce n’est pas nécessairement le cas.Toutes les autres cases contiendront la valeur –1 représentant l’absence <strong>de</strong> lien entre les <strong>de</strong>ux routeurs.L. Swinnen 2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!