Berechnung der gesamten Pfadkosten in der Chiffre unter Berücksichtigung der Direktionalität

9

Mit einer Chiffre-Abfrage auf neo4j, in einem gerichteten, zyklischen Graphen, benötige ich eine BFS-Abfrage und eine Zielknoten-Sortierung pro Tiefe.

Für die Sortierung innerhalb der Tiefe sollte eine benutzerdefinierte "Gesamtpfadkostenfunktion" verwendet werden, die basierend auf

berechnet wird
  • alle Beziehungsattribute r.followrank zwischen Start- und Endknoten.
  • Relation Direktionalität (follarank, wenn es zum Endknoten zeigt, oder 0, falls nicht)

Auf jeder Suchtiefe n sollte ein Knoten, der mit einem hochrangigen Knoten auf der Ebene n-m, m>0 verbunden ist, höher eingestuft werden als ein Knoten, der mit einem niedrigrangigen Knoten auf der Ebene n-m verbunden ist. Umgekehrte Direktionalität sollte einen 0-Rang ergeben (was bedeutet, dass der Knoten und sein Teilbaum immer noch Teil der Rangfolge sind).

Ich benutze neo4j community-1.9.M01. Der Ansatz, den ich bisher gemacht habe, war, eine Folge von Folgen für den kürzesten Weg zu jedem Endknoten zu extrahieren

Ich dachte, ich hätte eine großartige erste Idee für diese Frage, aber sie scheint an mehreren Punkten zu versagen.

Meine Abfrage lautet:

%Vor%

welche Ausgaben

%Vor%

Es sieht ähnlich wie ich aus, aber die Probleme sind

  1. Knoten 8, 9, 10, 11 haben die gleiche Beziehungsrichtung wie 7! Das inverse Abfrageergebnis ...*length(strt-[*0..]-()-[r]->() )... sieht noch seltsamer aus - siehe die Abfragen rechts unten.
  2. Ich weiß nicht, wie ich die Ergebnisse des Ausdrucks length() auf 1 normieren soll.

Direktionalität:

%Vor%

Inverse Abfrage:

%Vor%

Meine Fragen sind also:

  1. Was ist mit dieser Abfrage los?
  2. Gibt es einen Arbeitsansatz?

Für ein zusätzliches Detail, ich kenne den Min (Länge (Pfad)) Aggregator, aber es funktioniert nicht in diesem Fall, wo ich versuche, Informationen über den besten Treffer zu extrahieren - die zusätzlichen Informationen, die ich über die besten zurücksende Hit wird das Ergebnis wieder disaggregieren - ich denke, das ist eine Einschränkung der Ziffern.

    
bebbi 15.11.2012, 18:33
quelle

1 Antwort

0

Grundsätzlich möchten Sie einen Rang nur unter Berücksichtigung von Beziehungen, die "mit dem Pfadfluss" sind, erstellen. Um "mit Pfadfluss" zu testen, müssen Sie leider den Pfadindex der Start / End-Knoten jeder Beziehung überprüfen, und das kann nur mit APOC jetzt gemacht werden.

%Vor%

(Ich kann den APOC-Teil nicht testen, daher müssen Sie möglicherweise NODES (Pfad) statt Pfad zur APOC-Prozedur übergeben)

    
Tezra 02.06.2017 19:18
quelle

Tags und Links