2011-08-10 5 views
1

Dijkstrachemin Dijkstra poids

Pourquoi certains chemins ont beaucoup plus/moins de poids que d'autres voies de longueur égale? Dans Dijkstra, la longueur et le poids du trajet ne sont-ils pas équivalents?

+0

Par hasard, voulez-vous dire des arêtes quand vous dites des chemins? –

+0

@obrok: probablement ... – woliveirajr

+0

Comment avez-vous généré ce graphique? – Peaches491

Répondre

4

Vous voulez dire que la représentation graphique de la ne correspond pas à la weight chaque chemin a? Ils n'ont pas trop ... la représentation visuelle n'est qu'une représentation, rien d'autre. Il n'est pas oblié être l'équivalent du poids.

Vous pouvez redessiner le graphique comme vous le souhaitez, en vous assurant simplement que les connexions entre les sommets sont conservées.

Edit: et peu importe le type de graphique que vous utilisez, que ce soit Dijkstra ou un autre. Vous pouvez même consulter des graphiques où la direction compte: de A à B, le poids peut être de 10 et de B à A, le poids peut être de 30. Aucun problème.

Édition 2: l'image montre simplement comment les sommets se connectent les uns aux autres. L'image n'a pas besoin d'être à l'échelle avec le graphique qui est stocké dans votre programme. Parfois, vous aurez des graphes avec autant de sommets et d'arêtes que vous ne serez pas en mesure de le représenter dans le bon sens. Ce qui compte pour vos problèmes de programmation, ce sont les sommets, les arêtes et les poids. L'image est juste une représentation grossière de celui-ci. Vous pouvez redessiner l'image comme vous voulez, vous devez juste vous assurer de mettre tous les sommets, tous les bords, et tous les poids pour chaque bord.

+0

Est-il possible avec Dijkstra d'égaliser les bords avec la distance ou sont-ils des problèmes complètement séparés? – daidai

+0

Si je comprends ce que vous voulez dire: les bords sont la distance entre deux sommets (si vous pensez dans une carte, comme les villes dans un pays). Ils peuvent aussi signifier «coût» (par exemple, passer d'un état «liquide» à un état «vapeur» coûte 100o Celsius). Ils peuvent signifier tout ce que vous aimez. Le poids des arêtes est le prix pour passer du sommet A au sommet B. – woliveirajr

+0

Existe-t-il des algorithmes/versions de Dijkstra où le bord est uniquement la longueur? Je ne vois toujours pas comment/pourquoi, dans l'exemple ci-dessus, voyager entre deux distances similaires "coûte" 3 et 16 unités. – daidai

2

La longueur du chemin (comme dans la taille de la ligne dans le diagramme) est sans importance, c'est seulement pour le rendre joli. Le poids de la ligne indique le coût de déplacement entre deux nœuds. Il est cependant déroutant, et vous pourriez faire longueur = poids en changeant la façon dont le graphique est dessiné.

+0

Pourquoi le coût de déplacement entre deux points plus proches serait, par exemple, 3 fois plus que deux autres points? C'est ce que je ne comprends pas. – daidai

+0

@daidai: La distance dans le 'graph' est spécifiée (les nombres que vous avez vu dans le graphique). Le graphique n'a pas besoin d'être à l'échelle avec les distances réelles. L'image que vous produisez pour représenter le graphique vous aide simplement à le représenter. – woliveirajr

+0

Ah vois Im devine Im essayant de faire l'inverse. Les graphiques sur l'exemple sont des représentations de lieux et les lignes sont censées être les distances approximatives entre eux - et Im en utilisant cet algorithme pour trouver le chemin le plus court entre deux endroits, via d'autres. Est-ce que la Dijkstra ne convient pas à mes besoins? – daidai

Questions connexes