web-dev-qa-db-fra.com

Relaxation d'un bord dans l'algorithme de Dijkstra

Que signifierelaxation of an Edgedans le contexte de la théorie des graphes? Je suis tombé sur cette idée en étudiant l'algorithme de Dijkstra pour le chemin le plus court à source unique.

31
Geek

Voici une belle description de l'algorithme qui explique également la notion de relaxation.

La notion de "relaxation" provient d'une analogie entre l'estimation du plus court chemin et de la longueur d’un ressort de traction hélicoïdal, qui n'est pas conçu pour la compression. Initialement, le coût du plus court chemin est une surestimation, comparée à un printemps étendu. Aussi court des chemins sont trouvés, le coût estimé est abaissé, et le printemps est détendu. Finalement, le chemin le plus court, s'il en existe un, est trouvé et le ressort a été relâché à sa longueur de repos.

39
krjampani

Le processus de relaxation dans l'algorithme de Dijkstra consiste à mettre à jour le coût de tous les sommets connectés à un sommet v, si ces coûts sont améliorés en incluant le chemin via v.

22
digitalvision

Détendre un contour (concept que l’on trouve également dans d’autres algorithmes de chemin le plus court) tente de réduire le coût de la création d’un sommet en utilisant un autre sommet.

Vous calculez les distances entre un sommet de départ, par exempleS, et tous les autres sommets. À un moment donné, vous obtenez des résultats intermédiaires - des estimations actuelles. La relaxation est le processus où vous vérifiez, pour certains sommets u et v :

if directly_connected(v, u)
    if est(S, v) > est(S, u) + dist(u,v)
       est(S, v) = est(S, u) + dist(u, v)

est(S,a) est l'estimation actuelle de la distance, et dist(a,b) est la distance entre deux sommets voisins du graphique.

Ce que vous vérifiez dans le processus de relaxation est que votre estimation actuelle de a à b pourrait être améliorée en "déviant" le chemin à travers c d'un chemin de a à c et de c à b .

8
penelope

supposons dans le graphe si nous avons (u, v) E où w (u, v) = 10 puis si en ajoutant un troisième sommet entre eux comme w (u, y) = 1 et w (y, v) = 3 on trouve maintenant un chemin entre u et v de poids 1 + 3 = 4 <10. Nous allons maintenant considérer le second chemin comme le plus court (u, y, v) et ignorer le premier, c’est la relaxation.

0
siddique