2013-04-12 11 views
12

Was ist der beste Weg, um Zyklen in einem Graphen einer beträchtlichen Größe unter Verwendung von Chiffre zu erkennen.Erkennen von Zyklen in einem Neo4j-Eigenschaftsgraphen unter Verwendung einer Chiffre

Ich habe eine Grafik, die etwa 250000 Knoten und etwa 270000 Beziehung hat und ich möchte Zyklen in Sub-Grafik von etwa 10k Knoten erkennen und 100k Beziehungen einbeziehen. Die Chiffre, die ich geschrieben habe, ist wie

start 
     n = node:node_auto_index(some lucene query that returns about 10k nodes) 

match 
    p = n-[:r1|r2|r3*]->n 
return p 

Allerdings erweist sich dies nicht als sehr effizient.

Kann jemand einen besseren Weg vorschlagen, dies zu tun.

Antwort

0

1) Zählen un-gekennzeichneten Knoten
2) Flag Knoten ohne ausgehenden Beziehungen (Blätter)
3) Flag Knoten keine eingehenden Beziehungen (Wurzeln)
4) Falls irgendwelche Knoten in 2 oder 3 gekennzeichnet wurden Rückkehr 1

5) zu Schritt un-gekennzeichneten Knoten bleiben Sie mindestens 1 Zyklus haben

der Zyklus (n) wird
Blick auf Knoten mit dem wenigsten in der Menge von un-gekennzeichneten Knoten sein [in | out] Kanten können helfen
, wenn es noch zu viele gibt, um den Zyklus

zu identifizieren
Verwandte Themen