La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

La recherche de chemin optimal dans un graphe I.Un problème doptimisation 1) Introduction 2) Définitions 3) Problème et méthode II.Solutions au problème.

Présentations similaires


Présentation au sujet: "La recherche de chemin optimal dans un graphe I.Un problème doptimisation 1) Introduction 2) Définitions 3) Problème et méthode II.Solutions au problème."— Transcription de la présentation:

1 La recherche de chemin optimal dans un graphe I.Un problème doptimisation 1) Introduction 2) Définitions 3) Problème et méthode II.Solutions au problème 1) Relâchement dune arête 2) Algorithme de Bellman-Ford 3) Algorithme de Dijkstra

2 I.1 Position du problème Une carte de 25 villes, reliées 2 à 2 entre elles Nombre de chemins de longueur 24 reliant la ville A à la ville B : 23! > 2*10^22 Supercalculateur Téra-10 (CEA) : 50 téraflops (50*10^12 op/sec) En supposant 1 calcul de chemin = 1 opération : 4*10^8 s > 12 années de calcul France : communes

3 I.2 Définitions Graphe : G = (S, A) S ensemble des sommets = [| 0 ; n -1 |] A ensemble des arêtes : A C S² w : A -> R fonction de pondération Poids dune arête (u,v) : w (u,v) Chemin : suite (s o,…, s n ) de sommets tels que pour i Є [| 0 ; n |] (s i, s i+1 ) Є A Les s i sont dits accessibles depuis s 0. Poids dun chemin = somme des poids de ses arêtes Circuit absorbant = circuit de poids strictement négatif

4 I.3 Problème et méthodes Problème : pour (s, t ) Є S ², déterminer un chemin de poids minimal de s à t sil en existe un. Équivalent à : pour s Є S, déterminer pour tout sommet t Є S accessible depuis s un chemin de poids minimal de s à t. -> création dune arborescence de racine s Méthode : attribution de poids provisoires à tous les sommets (initialement, sauf pour s : 0 ) que lon fait décroître progressivement. On associe à chaque sommet t un prédécesseur (initialement NIL ) qui sera le sommet précédant t dans le chemin minimal de s à t.

5 II.1 Relâchement dune arête Relâchement : diminution du poids Relâchement : pas de changement Si possible, diminue le poids provisoire du sommet darrivée en notant son prédécesseur. 1 er cas 2 ème cas II.2 Algorithme de Bellman-Ford : Programmation dynamique, |S| - 1 fois le relâchement de toutes les arêtes. Fonctionne pour les poids négatifs, détecte les circuits absorbants. Complexité : O(S*A)

6 II.2 Algorithme de Bellman-Ford Fonctionne toujours, détecte les circuits absorbants Faire |S| -1 fois : relâcher toutes les arêtes du graphe Si certaines arêtes peuvent encore être relâchées, alors il y a un circuit absorbant Complexité : O(S*A)

7 II.3 Algorithme de Dijkstra Seulement si les poids sont positifs ou nuls. Stratégie « gloutonne ». F ensemble des sommets à traiter (initialement S). Tant que F Ø faire extraire de F le sommet u de poids provisoire minimal relâcher toutes les arêtes partant de u Complexité : dépend de limplémentation Liste : O(S ² + A ) = O( S ² ) Tas binaire : O( (S+A ) lg S ) Tas de Fibonacci : O( S lg S + A )

8 Tas binomiaux Bk+1 Bk B0 B1B2 B3 Nombre de fils max pour un nœud dun tas binomial à n nœuds : D(n) = log n [2]

9 min Nombre de fils max pour un nœud dun tas de Fibonacci à n nœuds : D(n) = log n [Ф][Ф] Tas de Fibonacci

10

11 CONSOLIDER (T) Pour i 0 à D(n(T)) faire A(i) NIL Pour chaque nœud w de la liste des racines de T fairex w d degré(x) tant que A(d) NIL faire y A(d) si clé(x) > clé(y) alors permuter x et y RELIER_TAS (T,x,y) A(d) NIL d d+1 A(d) x Min(T) NIL Pour i 0 à D(n(T)) faire si A(i) NIL alorsajouter A(i) à la liste des racines de T si min(T) = NIL ou clé(A(i)) < clé(min(T)) alors min(T) A(i) RELIER_TAS (T,x,y) 1.Supprimer y de la liste des racines de T 2.Faire de y un enfant de x, incrémenter degré(x) 3.Marque(y) faux

12 DIMINUER_CLE (T,x,k) Si k > cle(x) alors renvoyer une erreur clé(x) k y p(x) Si y NIL et clé(x) < clé(y) alors COUPER (T,x,y) Si clé(x) < clé(min(T)) alors min(T) x COUPER (T,x,y) Supprimer x de la liste des enfants de y Décrémenter degré(y) Ajouter x à la liste des racines de T p(x) NIL marque(x) faux z p(y) si z NIL alors si marque(y) = faux alors marque(y) = vrai sinon COUPER (T,y,z)


Télécharger ppt "La recherche de chemin optimal dans un graphe I.Un problème doptimisation 1) Introduction 2) Définitions 3) Problème et méthode II.Solutions au problème."

Présentations similaires


Annonces Google