2016-05-08 6 views
0

Ich versuche herauszufinden, ob es irgendwie Chiffre in Neo4j verwendet, um den kürzesten Abstand zwischen einer Gruppe von Knoten zu erhalten.So suchen Sie die kürzeste Entfernung zwischen einer Reihe von Knoten mit Cypher

Einige Hinweise zur Berücksichtigung dieser Suche:
- Abstand ist eine Eigenschaft der Beziehungen zwischen Knoten. Abstandswerte sind in Metern
- Alle Knoten haben eine Beziehung zwischen ihnen mit einer bestimmten Entfernung.
- Der Anfangs- und der Endknoten müssen dem gleichen Knoten entsprechen.

Dies ist, welche Art von Eingabe Ich mag:

 
MATCH 
(root) -[root_p1:PATH_TO]-> (p1), (root) -[root_p2:PATH_TO]-> (p2), (root) -[root_p3:PATH_TO]-> (p3), (p1) -[p1_root:PATH_TO]-> (root), (p1) -[p1_p2:PATH_TO]-> (p2), (p1) -[p1_p3:PATH_TO]-> (p3), (p2) -[p2_root:PATH_TO]-> (root), (p2) -[p2_p1:PATH_TO]-> (p1), (p2) -[p2_p3:PATH_TO]-> (p3), (p3) -[p3_root:PATH_TO]-> (root), (p3) -[p3_p1:PATH_TO]-> (p1), (p3) -[p3_p2:PATH_TO]-> (p2) 
WHERE ID(root) = 10 AND ID(p1) = 1 AND ID(p2) = 2 AND ID(p3) = 3 
. 
. 
. 

Und dann sollte das Ergebnis korrekt Folge von Knoten, die den kürzesten Weg möglich beitragen zu bekommen.

+1

Es ist nicht klar, was bei der Ausgabe sein soll. Es wäre besser, wenn Sie ein Beispiel von Eingabedaten und das gewünschte Ergebnis bringen. –

Antwort

0

Diese Abfrage könnte Ihnen passen muss:

MATCH p=(n)-[rels:PATH_TO*]->(n) 
WITH p, REDUCE(s = 0, x IN rels | s + x.distance) AS dist 
WITH p, MIN(dist) AS d 
ORDER BY d 
LIMIT 1 
RETURN RELATIONSHIPS(p), d; 

Es findet alle gerichtet zyklische Pfade mit PATH_TO Beziehungen; berechnet die Gesamtentfernung jedes Pfades; erhält einen Weg (von potenziell vielen) mit der kürzesten Gesamtstrecke; und gibt alle seine Beziehungen zusammen mit der Gesamtdistanz zurück.

Hinweis: Diese Abfrage kann bei großen Diagrammen sehr lange dauern. Wenn dies der Fall ist, können Sie versuchen, dem Muster mit variabler Länge eine vernünftige obere Grenze zu geben. Ersetzen Sie zum Beispiel [rels:PATH_TO*] durch [rels:PATH_TO*..5].

Verwandte Themen