2010-05-20 3 views
3

J'ai un graphique non-orienté, non-pondéré, qui n'a pas besoin d'être planaire. J'ai également un sous-ensemble de noeuds de graphe (sous-ensemble vrai) et j'ai besoin de trouver un noeud n'appartenant pas au sous-ensemble, avec la somme minimum de distances à tous les noeuds dans le sous-ensemble. Jusqu'ici, j'ai mis en œuvre une recherche inspiratoire à partir de chaque nœud du sous-ensemble, et l'intersection qui se produit en premier est le nœud que je recherche. Malheureusement, il fonctionne trop lentement car le graphe contient un grand nombre de nœuds.Dans un graphique, comment trouver le nœud le plus proche d'un groupe de nœuds?

+0

Qu'est-ce qui est trop lent? Quelle langue utilisez-vous? Qu'aimeriez-vous conseiller? Est-ce l'aspect vitesse ou l'algorithme que vous utilisez? – Glycerine

Répondre

1

Un algorithme de chemin le plus court pour toutes les paires vous permet de trouver la distance de tous les nœuds l'un à l'autre en temps O (V^3), voir Floyd-warshall. Ensuite, la somme après sera au moins quadratique et je crois que le pire cas cubique aussi. C'est une façon très simple et pas très rapide de le faire, mais il semble que ce soit un ordre de grandeur plus rapide que ce que vous faites en ce moment.

+0

Salut, Merci pour le conseil. Pendant ce temps, j'ai réalisé que ce que j'ai suggéré n'est pas correct et n'a pas besoin d'aboutir à un nœud optimal. Floyd-Warshall était ce que j'avais l'intention d'éviter à cause de la complexité du temps, mais il semble que ce soit la seule façon correcte. Merci, Nikola – Nikola

Questions connexes