[PDF] [PDF] Algorithmique des graphes - Cours 7 – Calcul de distances - LaBRI

Algorithme de Ford : Détection de circuit absorbant 13: for tout arc e = (u,v) ∈ E( G) do 14: if d[v] > d[u] + w(u,v) then 15: return FAUX 16: end if 17: end for



Previous PDF Next PDF





[PDF] Quelques rappels sur la théorie des graphes - CNRS

circuit absorbant, un plus court chemin sera de longueur inférieure à n et au bout de n - 1 passages, on aura trouvé tous les plus courts chemins partant de s0 (Si  



[PDF] CH1 GRAPHES ORIENTÉS - IGM

Comme il peut y avoir des circuits, il faut recommencer S'il n'y a pas ce circuit absorbant, un plus court chemin est nécessairement élémentaire On est donc sûr 



[PDF] Algorithmes de recherche du plus court chemin - LRDE - Epita

Si un graphe possède un circuit absorbant, alors il n'existe pas de plus court de circuits absorbants, et x et y deux sommets de G Si il existe un chemin allant 



[PDF] Algorithmique des graphes - Cours 7 – Calcul de distances - LaBRI

Algorithme de Ford : Détection de circuit absorbant 13: for tout arc e = (u,v) ∈ E( G) do 14: if d[v] > d[u] + w(u,v) then 15: return FAUX 16: end if 17: end for



[PDF] GRAPHE ET LANGAGE

Un circuit absorbant est un circuit de valuation négative Proposition V 3 Soit G un graphe orienté valué n'ayant pas de circuits absorbants, et s et s deux sommets 



[PDF] 1 Lalgorithme de Bellman-Ford

un graphe orienté pondéré G = (V,E), de fonction de poids w, et une origine s, l' algorithme retourne une valeur booléenne indiquant s'il existe un circuit de poids  



[PDF] Théorie des graphes

7 avr 2011 · un circuit de G=(S,A) est un chemin [xi1 , ,xik ] de G tel que ∀k≥2 Dans le cas des graphes possédant des circuits absorbants, on pourrait



[PDF] RESOLUTION DE PROBLEMES DE PLUS COURT - AUNEGE

C'est un circuit dit "absorbant" En empruntant ce circuit autant de fois que l'on veut, la longueur des chemins peut tendre vers moins l'infini



[PDF] 1 Recherche de chemins optimaux dans les graphes - Proxem

On ne peut donc considérer les graphes à circuits absorbants, car on ne peut y trouver de chemin minimal: en tournant en rond dans un circuit absorbant, on 

[PDF] exemple de probleme ethique

[PDF] ethique d'entreprise exemples

[PDF] exemple probleme ethique en entreprise

[PDF] situation non éthique vécue en entreprise

[PDF] dilemme ethique exemple

[PDF] refus de traitement et autonomie de la personne

[PDF] refus de traitement en psychiatrie

[PDF] exemple dilemme éthique infirmière

[PDF] dilemme éthique définition

[PDF] étude de cas éthique infirmière

[PDF] dilemme ethique santé

[PDF] exemple de situation éthique en stage

[PDF] situation éthique exemple

[PDF] problème éthique infirmière

[PDF] cas clinique éthique

Algorithmique des graphes

Cours 7 - Calcul de distances

František Kardoš

frantisek.kardos@u-bordeaux.fr

Calcul de distances

Entrée : Un graphe (orienté ou pas)G, avec une pondération des arêtes w:E(G)!R+; un sommet de départs

Sortie : La distancedist(s;v)pour tout sommetv

Rappel : la distance entre deux sommets est le poids minimum d"une chaîne (d"un chemin) les reliant.

Calcul de distances

Entrée : GrapheGavec les arêtes pondérées; sommet de départs8 4 17 2 91 5 2

8 3 3 5

6 7 4 6

s

Quelques observations

Pour accéder à un sommetudepuiss, plusieurs

chaînes/chemins optimaux peuvent exister.La chaîne optimale (le chemin optimal) n"est pas forcément

celle (celui) d"un plus petit nombre d"arêtes (arcs).Si le prédécesseur deudans une chaîne optimale (un chemin

optimal) est un voisin (entrant)vdeu, alors la sous-chaîne (le sous-chemin) desàvest optimal.e aussi.On a donc dist(s;u) =minvu2E(G)fdist(s;v) +w(vu)g:

Quelques observations

Pour accéder à un sommetudepuiss, plusieurs

chaînes/chemins optimaux peuvent exister.La chaîne optimale (le chemin optimal) n"est pas forcément

celle (celui) d"un plus petit nombre d"arêtes (arcs).Si le prédécesseur deudans une chaîne optimale (un chemin

optimal) est un voisin (entrant)vdeu, alors la sous-chaîne (le sous-chemin) desàvest optimal.e aussi.On a donc dist(s;u) =minvu2E(G)fdist(s;v) +w(vu)g:

Quelques observations

Pour accéder à un sommetudepuiss, plusieurs

chaînes/chemins optimaux peuvent exister.La chaîne optimale (le chemin optimal) n"est pas forcément

celle (celui) d"un plus petit nombre d"arêtes (arcs).Si le prédécesseur deudans une chaîne optimale (un chemin

optimal) est un voisin (entrant)vdeu, alors la sous-chaîne (le sous-chemin) desàvest optimal.e aussi.On a donc dist(s;u) =minvu2E(G)fdist(s;v) +w(vu)g:

Quelques observations

Pour accéder à un sommetudepuiss, plusieurs

chaînes/chemins optimaux peuvent exister.La chaîne optimale (le chemin optimal) n"est pas forcément

celle (celui) d"un plus petit nombre d"arêtes (arcs).Si le prédécesseur deudans une chaîne optimale (un chemin

optimal) est un voisin (entrant)vdeu, alors la sous-chaîne (le sous-chemin) desàvest optimal.e aussi.On a donc dist(s;u) =minvu2E(G)fdist(s;v) +w(vu)g:

Algorithme de Dijkstra

Les sommets sont visités dans l"ordre croissant de leur distance à partir du sommet de départs. A chaque étape, la distance d"un sommet est marquée définitive (le sommet est colorié noir); Les distances d"autres sommets sont éventuellement mises à jour. Si pour un sommetula valeur ded[u]est différente de1, alors il existe au moins une chaîne desàu; parmi les chaînes reliantsetu, dans celle de longueur (poids total)d[u]le prédécesseur deuest mémorisé commepere[u].

Algorithme de Dijkstra

Initialisation :

1:for allvdeV(G)do

2:d(v) 1

3:pere(v) NIL

4:couleur(v) BLANC

5:end for

6:d(s) 0

7:F FILE_PRIORITE(fsg;d)

Algorithme de Dijkstra

Propagation :

8:whileF6=;do

9:pivot EXTRAIRE_MIN(F)

10:for alle= (pivot;v)arc sortant depivotdo

11:ifcouleur(v) =BLANCthen

12:ifd(v) =1then

13:INSERER(F;v)

14:end if

15:ifd[v]>d[pivot] +w(e)then

16:d[v] d[pivot] +w(e)

17:pere[v] pivot

18:end if

19:end if

20:end for

21:couleur[pivot] NOIR

22:end while

Limitations de l"algorithme de Dijkstra

L"algorithme de Dijkstra marche bien si les poids sont positifs. Dans un graphe orienté contenant des arcs de poids négatif l"algorithme peut échouer : Il déclare la distance vers un sommet comme définitive trop tôt. Algorithme de Bellman : Graphes orientés sans circuit Principe : Considérer les sommets dans un tel ordre que s"il y a un arcu!v, alors le sommetvest considéré plus tard que le sommetu. L"arcuvest découvert lors de la visite du sommetu. Si cet arc permet d"accéder àvpar un chemin plus court que ce qu"on connaît pour l"instant, l"information sur la distance et le prédécesseur de sommetvest mise à jour. La distance d"un sommet est définitive si on a déjà considéré tous ses voisins entrants. Algorithme de Bellman : Graphes orientés sans circuit

1:for allvdeV(G)do

2:d[v] 1

3:pere[v] NIL

4:npred[v] deg[v]

5:end for

6:d[s] 0

7:INSERER_FILE(F, s)

Algorithme de Bellman : Graphes orientés sans circuit

8:whileF non videdo

9:u TETE_FILE(F)

10:DEFILER(F)

11:forv2Adj(u)do

12:ifd[v]>d[u] +w(u;v)then

13:d[v] d[u] +w[u;v]

14:pere[v] u

15:end if

16:npred(v) nped[v]1

17:ifnpred(v) =0then

18:INSERER_FILE(F;v)

19:end if

20:end for

21:end while

Algorithme de Ford : Graphes orientés avec circuits L"algorithme calcule enn1 étapes les distances à partir d"un sommet de départs. Après l"étape numéroi, pour tout sommetvla longueur du plus court chemin desàvcomposé d"au plusiarcs est calculée. Comment faire?À chaque étape, tout arcuvdu graphe est inspecté, s"il ne peut pas être le dernier arc d"un chemin desà v. Algorithme de Ford : Graphes orientés avec circuits L"algorithme calcule enn1 étapes les distances à partir d"un sommet de départs. Après l"étape numéroi, pour tout sommetvla longueur du plus court chemin desàvcomposé d"au plusiarcs est calculée. Comment faire?À chaque étape, tout arcuvdu graphe est inspecté, s"il ne peut pas être le dernier arc d"un chemin desà v. Algorithme de Ford : Graphes orientés avec circuits

1:for allvdeV(G)do

2:d[v] 1

3:pere[v] NIL

4:end for

5:d[s] 0

Algorithme de Ford : Graphes orientés avec circuits

5:foride 1 àn1do

6:fortout arce= (u;v)2E(G)do

7:ifd[v]>d[u] +w(u;v)then

8:d[v] d[u] +w[u;v]

9:pere[v] u

10:end if

11:end for

12:end for

Algorithme de Ford : Détection de circuit absorbant

13:fortout arce= (u;v)2E(G)do

14:ifd[v]>d[u] +w(u;v)then

15:returnFAUX

16:end if

17:end for

18:returnVRAI

Algorithme de Floyd

permet de calculer les distances pour toutes paires de sommets en même temps.

Après l"exécution de l"algorithme,

I la matriceWi;jcontiendra la plus courte distance entre le sommetiet le sommetj; I la matricePredi;jle sommet prédécesseur dejsur un plus court chemin deiàj.

Algorithme de Floyd

1:foride 1 àndo

2:forjde 1 àndo

3:ifi=jthen

4:W(i;j) 0

5:Pred(i;j) i

6:else ifij2E(G)then

7:W(i;j) w(i;j)

8:Pred(i;j) i

9:else

10:W(i;j) 1

11:Pred(i;j) NIL

12:end if

13:end for

14:end for

Algorithme de Floyd

15:forkde 1 àndo

16:foride 1 àndo

17:forjde 1 àndo

18:ifW(i;k) +W(k;j)

19:W(i;j) W(i;k) +W(k;j)

20:Pred(i;j) Pred(k;j)

21:end if

22:end for

23:end for

24:end for

Algorithme de Floyd : Détection de circuit absorbant Comment détecter la présence d"un circuit absorbant à la fin de l"exécution de l"algorithme de Floyd?quotesdbs_dbs21.pdfusesText_27