4
20/2/2016 Al gor i thme de Di j kstr a http://yallouz.arie.free.fr/terminal e cour s/gr aphes/di j kstra.php 1/4 E. W. Dijkstra (1930-2002) a proposé en 1959 un algorithme qui permet de déterminer le plus court chemin entre deux sommets d'un graphe connexe pondéré (orienté ou non) dont le poids lié aux arêtes est positif ou nul. EXEMPLE Le graphe ci-dessous représente le réseau routier d'une région qui prend en compte le sens de la circulation, chaque arc représente une route à sens unique dont le poids est la distance en kilomètre entre deux sommets. Quel est l'itinéraire le plus court qui relie E à S ? D'après document d'accompagnement des programmes de Mathématiques - Classe terminale de la série ES ALGORITHME DE DIJKSTRA L'algorithme dû à Dijkstra est basé sur le principe suivant : Si le plu s court chemin reliant E à S passe par les sommets , , …, alors, les différentes éta pes sont aussi les plus courts chemins relia nt E aux différe nts sommets , , …, . On construit de proche en proche le chemin cherché en choisissant à chaque itération de l'algorithm e, u n sommet du graphe parmi ce ux qui n'ont pas encore été traités, tel que la long ueur connue provisoi rement d u plus court chemin allant de E à soit la p lus courte p ossible. INITIALISATION DE L'ALGORITHME : Étape 1 : On affecte le poids 0 au sommet origine (E) et on attribue provisoirement un poids aux autres sommets. RÉPÉTER LES OPÉRATIONS SUIVANTES TANT QUE LE SOMMET DE SORTIE (S) N'EST PAS AFFECTÉ D'UN POIDS DÉFINITIF 1. Étape 2 : Parmi les sommets dont le poids n'est pas définivement fixé choisir le sommet X de poids p minimal. Marquer définitivement ce sommet X affecté du poids p(X). 2. Étape 3 : Pour tous les sommets Y qui ne sont pas définitivement marqués, adjacents au dernier sommet fixé X : Calculer la somm e s du poids de X et du poids de l'arête reliant X à Y. Si la somme  s est inférieure au poids provisoirement affecté au sommet Y, affecter provisoirement à Y le nouveau poids  s et indiquer entre parenthèses le sommet X pour se souvenir de sa provenance. QUAND LE SOMMET S EST DÉFINTIVEMENT MARQUÉ

Algorithme de Dijkstra + Exemple

Embed Size (px)

Citation preview

Page 1: Algorithme de Dijkstra + Exemple

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 14

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 14

E W Dijkstra (1930-2002) a proposeacute en 1959 un algorithme qui permet de deacuteterminer le plus courtchemin entre deux sommets dun graphe connexe pondeacutereacute (orienteacute ou non) dont le poids lieacute auxarecirctes est positif ou nul

EXEMPLE

Le graphe ci-dessous repreacutesente le reacuteseau routier dune reacutegion qui prend en compte le sens de lacirculation chaque arc repreacutesente une route agrave sens unique dont le poids est la distance en kilomegravetreentre deux sommets Quel est litineacuteraire le plus court qui relie E agrave S

Dapregraves document daccompagnement des programmes de Matheacutematiques - Classe terminale de la seacuterie ES

ALGORITHME DE DIJKSTRA

Lalgorithme ducirc agrave Dijkstra est baseacute sur le principe suivant

Si le plus court chemin reliant E agrave S passe par les sommets hellip alors les diffeacuterenteseacutetapes sont aussi les plus courts chemins reliant E aux diffeacuterents sommets hellip

On construit de proche en proche le chemin chercheacute en choisissant agrave chaque iteacuteration delalgorithme un sommet du graphe parmi ceux qui nont pas encore eacuteteacute traiteacutes tel que lalongueur connue provisoirement du plus court chemin allant de E agrave soit la plus courte possible

INITIALISATION DE LALGORITHME

Eacutetape 1 On affecte le poids 0 au sommet origine (E) et on attribue provisoirement un poids infin auxautres sommets

REacutePEacuteTER LES OPEacuteRATIONS SUIVANTES TANT QUE LE SOMMET DE SORTIE (S) NEST PASAFFECTEacute DUN POIDS DEacuteFINITIF

1 Eacutetape 2 Parmi les sommets dont le poids nest pas deacutefinivement fixeacute choisir le sommet Xde poids p minimal Marquer deacutefinitivement ce sommet X affecteacute du poids p(X)

2 Eacutetape 3 Pour tous les sommets Y qui ne sont pas deacutefinitivement marqueacutes adjacents audernier sommet fixeacute X

Calculer la somme s du poids de X et du poids de larecircte reliant X agrave YSi la somme s est infeacuterieure au poids provisoirement affecteacute au sommet Yaffecter provisoirement agrave Y le nouveau poids s et indiquer entre parenthegraveses le

sommet X pour se souvenir de sa provenance

QUAND LE SOMMET S EST DEacuteFINTIVEMENT MARQUEacute

983155

1

983155

2

983155

983147

983155

1

983155

2

983155

983147

983155

983145

983155

983145

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 24

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 24

Le plus court chemin de E agrave S sobtient en eacutecrivant de gauche agrave droite le parcours en partant de lafin S

VOUS POUVEZ OBSERVER LE DEacuteROULEMENT DE LALGORITHME DE DIJKSTRA PAS Agrave PAS EN CLIQUANT SUR LES BOUTONS

Pour faciliter la recherche du plus court chemin il est commode de preacutesenter les reacutesultats dans untableau

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 34

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 34

E A B C D F G S Sommet seacutelectionneacute etcommentaires

0 infin infin infin infin infin infin infin E de poids 0 on marque lessommets adjacents A B et C

5 (E) 3 (E) 2(E) infin infin infin infinC on selectionne les sommetsadjacents G et F on les marque

provisoirement G(2+3) et F(2+2)

5 (E) 3 (E) infin 4 (C) 5 (C) infinB le sommet adjacent A estaffecteacute dun poids eacutegal agrave 4(3+1lt5)

4 (B) infin 4 (C) 5 (C) infinA le sommet D va ecirctre marqueacute

provisoirement avec un poids 6=4+2

6 (A) 4 (C) 5 (C) infin

F le sommet adjacent D seraaffecteacute dun poids eacutegal agrave 5

(4+1lt6) le sommet S va ecirctremarqueacute provisoirement avec un poids 10= 4+6

5(F) 5 (C) 10 (F) D on conservera le poids de S

(5+7gt10 )

5 (C) 10 (F)

G le sommet adjacent est deacutejagrave

traiteacute

10 (F) S

Pour deacuteterminer le trajet le plus court on remonte les sommets en partant de S S vient de F quivient de C qui vient de E

Le plus court chemin est E-C-F-S la distance parcourue est de 10 km

Agrave VOTRE TOUR

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 44

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 44

Dans le graphe pondeacutereacute ci-dessous les poids des arecirctes sont deacutetermineacutes de manegravere aleacuteatoire Un papier un crayon et veacuterifiez vos reacutesultats

VOUS POUVEZ VEacuteRIFIER LE DEacuteROULEMENT DE LALGORITHME DE DIJKSTRA PAS Agrave PAS EN CLIQUANT SUR LESBOUTONS

Page 2: Algorithme de Dijkstra + Exemple

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 24

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 24

Le plus court chemin de E agrave S sobtient en eacutecrivant de gauche agrave droite le parcours en partant de lafin S

VOUS POUVEZ OBSERVER LE DEacuteROULEMENT DE LALGORITHME DE DIJKSTRA PAS Agrave PAS EN CLIQUANT SUR LES BOUTONS

Pour faciliter la recherche du plus court chemin il est commode de preacutesenter les reacutesultats dans untableau

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 34

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 34

E A B C D F G S Sommet seacutelectionneacute etcommentaires

0 infin infin infin infin infin infin infin E de poids 0 on marque lessommets adjacents A B et C

5 (E) 3 (E) 2(E) infin infin infin infinC on selectionne les sommetsadjacents G et F on les marque

provisoirement G(2+3) et F(2+2)

5 (E) 3 (E) infin 4 (C) 5 (C) infinB le sommet adjacent A estaffecteacute dun poids eacutegal agrave 4(3+1lt5)

4 (B) infin 4 (C) 5 (C) infinA le sommet D va ecirctre marqueacute

provisoirement avec un poids 6=4+2

6 (A) 4 (C) 5 (C) infin

F le sommet adjacent D seraaffecteacute dun poids eacutegal agrave 5

(4+1lt6) le sommet S va ecirctremarqueacute provisoirement avec un poids 10= 4+6

5(F) 5 (C) 10 (F) D on conservera le poids de S

(5+7gt10 )

5 (C) 10 (F)

G le sommet adjacent est deacutejagrave

traiteacute

10 (F) S

Pour deacuteterminer le trajet le plus court on remonte les sommets en partant de S S vient de F quivient de C qui vient de E

Le plus court chemin est E-C-F-S la distance parcourue est de 10 km

Agrave VOTRE TOUR

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 44

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 44

Dans le graphe pondeacutereacute ci-dessous les poids des arecirctes sont deacutetermineacutes de manegravere aleacuteatoire Un papier un crayon et veacuterifiez vos reacutesultats

VOUS POUVEZ VEacuteRIFIER LE DEacuteROULEMENT DE LALGORITHME DE DIJKSTRA PAS Agrave PAS EN CLIQUANT SUR LESBOUTONS

Page 3: Algorithme de Dijkstra + Exemple

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 34

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 34

E A B C D F G S Sommet seacutelectionneacute etcommentaires

0 infin infin infin infin infin infin infin E de poids 0 on marque lessommets adjacents A B et C

5 (E) 3 (E) 2(E) infin infin infin infinC on selectionne les sommetsadjacents G et F on les marque

provisoirement G(2+3) et F(2+2)

5 (E) 3 (E) infin 4 (C) 5 (C) infinB le sommet adjacent A estaffecteacute dun poids eacutegal agrave 4(3+1lt5)

4 (B) infin 4 (C) 5 (C) infinA le sommet D va ecirctre marqueacute

provisoirement avec un poids 6=4+2

6 (A) 4 (C) 5 (C) infin

F le sommet adjacent D seraaffecteacute dun poids eacutegal agrave 5

(4+1lt6) le sommet S va ecirctremarqueacute provisoirement avec un poids 10= 4+6

5(F) 5 (C) 10 (F) D on conservera le poids de S

(5+7gt10 )

5 (C) 10 (F)

G le sommet adjacent est deacutejagrave

traiteacute

10 (F) S

Pour deacuteterminer le trajet le plus court on remonte les sommets en partant de S S vient de F quivient de C qui vient de E

Le plus court chemin est E-C-F-S la distance parcourue est de 10 km

Agrave VOTRE TOUR

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 44

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 44

Dans le graphe pondeacutereacute ci-dessous les poids des arecirctes sont deacutetermineacutes de manegravere aleacuteatoire Un papier un crayon et veacuterifiez vos reacutesultats

VOUS POUVEZ VEacuteRIFIER LE DEacuteROULEMENT DE LALGORITHME DE DIJKSTRA PAS Agrave PAS EN CLIQUANT SUR LESBOUTONS

Page 4: Algorithme de Dijkstra + Exemple

7242019 Algorithme de Dijkstra + Exemple

httpslidepdfcomreaderfullalgorithme-de-dijkstra-exemple 44

2022016 Algorithme de Dijkstra

httpyallouzariefreefrterminale_coursgraphesdijkstraphp 44

Dans le graphe pondeacutereacute ci-dessous les poids des arecirctes sont deacutetermineacutes de manegravere aleacuteatoire Un papier un crayon et veacuterifiez vos reacutesultats

VOUS POUVEZ VEacuteRIFIER LE DEacuteROULEMENT DE LALGORITHME DE DIJKSTRA PAS Agrave PAS EN CLIQUANT SUR LESBOUTONS