2010-02-09 6 views
1

J'ai une liste de points (coordonnées x, y) et une liste de connexions entre eux. Exemples:Chemin le plus simple entre les points

Points A B C D E

Connexions AB BC CE BD

D E 
    | | 
A-B-C 

Bien sûr, il y a beaucoup plus de points et de connexions que cela. ..

Ce dont j'ai besoin o est de trouver le chemin le plus simple entre certains de ces points. Par exemple, si je voulais aller à A, C et D, je voudrais utiliser les connexions AB, BC et BD.

Existe-t-il un moyen de calculer ceci pour n'importe quel ensemble de points que je veux connecter?

+3

Le plus simple est un terme quelque peu arbitraire. Que voulez-vous dire par le plus simple? –

Répondre

2

Étant donné que vous n'indiquez aucun coût associé aux arêtes, un Breadth First Search est probablement ce que vous recherchez. Il trouve le chemin le plus court d'un nœud donné à tous les autres nœuds (le cas échéant), je suppose que c'est ce que vous entendez par «plus simple».

+0

@Phil: Veuillez relire le chapitre sur la traversée de graphes à partir d'un bon livre (essayez CLRS). BFS est garanti de renvoyer le chemin le plus court dans un graphe non pondéré, mais DFS trouve simplement un chemin, pas nécessairement le plus court. Lisez la preuve de ceci. De plus, dans un graphe non pondéré, tous les coûts marginaux sont généralement supposés égaux à 1. Si tous les coûts sont égaux à 0, le concept d'un chemin «le plus court» n'a pas de sens (tous les chemins coûtent 0). Mais peut-être votre problème a-t-il besoin de coûts pour être 0 pour une raison quelconque, auquel cas vous devriez éditer votre question et définir exactement ce que vous entendez par «plus simple». – MAK

+2

Vous avez raison. J'ai fait une erreur. J'ai sorti ma réponse et je vous ai donné +1. – Phil

Questions connexes