21
ALGORITHME DE JOHNSON Pour le chemin le plus court pour tous les couples

A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

Embed Size (px)

Citation preview

Page 1: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

ALGORITHME DE JOHNSONPour le chemin le plus court pour tous les couples

Page 2: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

DÉROULEMENT

Introduction Le problème algorithmique L’état de l’art Les grands principes utilisés Détails d’implémentation et structures de

données Analyse de complexité Conclusion

Page 3: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

INTRODUCTION

2 algorithmes de Johnson Le plus court chemin Optimiser l’ordonnancement des processus

Bref historique Donald Bruce Johnson Professeur à l’Université de Cornell à Ithaca à

New York Publié l’algorithme en 1977

Page 4: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LE PROBLÈME ALGORITHMIQUE

Le plus court chemin entre deux points Application à tous les couples Exemples Plus de nœuds = plus complexe

Page 5: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

L’ÉTAT DE L’ART

Beaucoup de chercheurs impliqués Deux catégories Dijkstra et Bellman-Ford

OSPF A*

Fonction heuristique Floyd-Warshall

Programmation dynamique Matrice Pas de cycle négatif

Page 6: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS

Afin de bien illustrer les grands principes de l’algorithme, nous utiliserons le graphe orienté pondéré suivant :

Page 7: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Première étape : Ajout d’un nœud

Nouveau nœud appelé « X » Le nouveau nœud est connecté à tous les autres

nœuds du graphe grâce à des arcs de poids zéro. C’est donc le même coût pour passer du nœud

« X » à n’importe quel autre nœud du graphe.

Page 8: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Page 9: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Deuxième étape : Algorithme Bellman-Ford Capacité de trouver le meilleur chemin dans un

graphe avec des poids négatifs. Ici, il est utilisé pour détecter la présence ou non

de circuit(s) absorbant(s) à l’intérieur du graphe. Circuit : Chemin partant d’un sommet, effectue la

visite d’autres sommets et revient se terminer au sommet de départ.

Circuit absorbant : Circuit qui possède un poids total négatif.

Si un circuit absorbant est détecté, alors l’algorithme de Johnson s’arrête puisque celui-ci ne s’applique par sur les graphes possédant des circuits.

Page 10: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Si l’algorithme Bellman-Ford ne détecte pas de circuit(s), il calcule le poids minimum nécessaire pour passer du nouveau nœud « X » jusqu’à chacun des nœuds du graphe.

Page 11: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Troisième étape : Ajuster la valeur des arcs

Appelons p(y,z), l’arc passant du nœud y au nœud z.

Modifions la valeur de p(y,z) par le résultat de p(y,z) + [h(y) – h(z)]. Après avoir effectué ce calcul pour tous les arcs,

nous aurons un graphe contenant des arcs de poids nul ou positif.

Page 12: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Exemple de calcul : p(y,z) = p(y,z) + [h(y) – h(z)]p(B,A) = p(B,A) + [h(B) – h(A)]p(B,A) = 2 + [-1 – 0]p(B,A) = 1

Exemple de calcul : p(y,z) = p(y,z) + [h(y) – h(z)]p(E,D) = p(E,D) + [h(E) – h(D)]p(E,D) = -1 + [-3 – -5]p(E,D) = 1

Page 13: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Quatrième et dernière étape :L’algorithme de Dijkstra Permets de trouver le chemin le plus court entre

deux nœuds dans un graphe ou le poids des arcs est nul ou positif. (on ne pouvait pas l’utiliser au départ puisque notre graphe original contenait des arcs au poids négatif)

Il suffit de partir du nœud de départ, et de choisir l’arc qui a une valeur minimale

Ensuite, développer les nœuds atteignables à partir de cet endroit.

Puis, trouver l’arc avec une valeur minimale à partir des arcs de départ et ceux développés.

Page 14: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Répéter l’opération jusqu’à ce que le nœud d’arrivée soit atteint.

Faire cette série d’opérations pour l’ensemble des nœuds du graphe.

Nous avons donc le chemin le plus court pour chaque couple !

Page 15: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

LES GRANDS PRINCIPES UTILISÉS (SUITE)

Page 16: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

DÉTAILS D’IMPLÉMENTATION ET STRUCTURES DE DONNÉES

Expliquer la rivalité:Johnson VS Floyd-Warshall

Johnson Nœud extérieur Bellman-Ford Dijkstra

Floyd-Warshall Initialiser avec une grande valeur, boucle n² Calcul des chemins dans la boucle n³

Page 17: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

DÉTAILS D’IMPLÉMENTATION ET STRUCTURES DE DONNÉES

Présentation du graphe à résoudre

Page 18: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

DÉTAILS D’IMPLÉMENTATION ET STRUCTURES DE DONNÉES

Présentation du prototype

Succès!

Page 19: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

DÉTAILS D’IMPLÉMENTATION ET STRUCTURES DE DONNÉES

Où est le problème chez Floyd-Warshall?

Page 20: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

ANALYSE DE LA COMPLEXITÉ

Ajout d’un nœud et des arcs : Θ(N) Bellman-Ford : O( N*A) Ajustement des poids des arcs : Θ(A) Dijkstra

Tableau simple ou liste chaînée : O(N² + A) Arbre binaire : O( (N+A) log N) Monceau : O(N log N + A)

Au final : O(N² log N + N*A) avec le monceau (car pour tous les couples)

Page 21: A LGORITHME DE J OHNSON Pour le chemin le plus court pour tous les couples

CONCLUSION

Efficace: Floyd-Warshall = Θ(N3) Johnson = O(N² log N + N*A)

Questions