Laboratoire de Programmation
Système de renseignements
automatiques pour voyageurs
de la SNCB
- Algorithme de Moore-Dijkstra -
Info BAC 2 - Volvert Sylvain
Février 2012
Table des matières
1. Représentation des données (rappel) .................................................................................. 3
2. Code de l'algorithme ........................................................................................................... 4
3. Spécification de l'algorithme de Moore-Dijkstra ................................................................ 4
4. Organigramme de l'algorithme ........................................................................................... 5
5. Invariant de l'algorithme ..................................................................................................... 6
6. Preuve de la correction de l'algorithme de Moore-Dijkstra ................................................ 6
6.1. Correction partielle ...................................................................................................... 6
6.2. Correction totale de l'algorithme ............................................................................... 10
7. Adaptation de l'algorithme de Moore-Dijstra ................................................................... 11
Page 3 sur 11
1. Représentation des données (rappel)
tab_horaire = array [1..2 , 1..40] of string ;
l_gare = 
cel_gare = record gare_prec : l_gare;
nom_gare : string;
gare_suiv : l_gare;
end;
l_train =  ;
cel_train = record num_train : string ;
horaire : tab_horaire ;
train_suiv : l_train ;
end ;
l_liaison =  ;
cel_liaison = record nom_li : string ;
début : l_gare ;
fin : l_gare ;
train : l_train ;
liaison_suiv : l_liaison ;
end ;
l_gare :
l_liaison :
l_train :
tab_horaire :
gare :
gare_prec
nom_gare
gare_suiv
gare_prec
nom_gare
train
:
num_train
horaire
train_suiv
num_train
horaire
liai :
nom_li
début
fin
train
liaison_suiv
nom_li
début
fin
train
1 (la)
2
1
(lb)
Arrêt heure
40
Page 4 sur 11
2. Code de l'algorithme
D := {d};
(d) := 0;
foreach x X \ D do
begin
(x) := (d) + p(d,x);
prec(x) := d
end
while do
begin
choose c X \ D such that (c) = min{ (y) : y X \ D};
D := D {c};
foreach x X \ D do
if (c) + p(c,x) < (x)
then
begin
(c) := (c) + p(c,x);
prec(x) :=c
end
end
rappel :
- On partitionne l'ensemble X en deux ensembles : D et X \ D
- Un tableau relève pour chaque point le poids du meilleur chemin connu jusqu'à
présent
- Un autre tableau prec détermine pour chaque point son prédécesseur sur le chemin
extrémal qui mène à lui
3. Spécification de l'algorithme de Moore-Dijkstra
Pré : p initialisé
 { d }
Post :    󰂭


1
1
"x-1" représente le prec(x)
1 / 12 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !