2013-04-12 11 views
12

サイファーを使用してかなりのサイズのグラフでサイクルを検出する最適な方法は何ですか?cypherを使用したneo4jプロパティグラフのサイクルの検出

私は約250000ノードと約270000の関係を持つグラフを持っており、約10kノードのサブグラフで100kの関係を含むサイクルを検出したいと思います。私が書いたサイファーは、

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

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

ですが、これは非常に効率的ではありません。

誰かがこれを行うより良い方法を提案できますか?

答えて

0

1)任意のノードが2または3でフラグが立てられた場合にない発信関係で)フラグノード(リーフ)
3)無着信関係(根)
4)とフラグノード
2未籍ノードカウント非フラグが立てられたノードは、あなたが少なくとも1サイクル

サイクル(複数可)で[最少を持つノードを見ていない船籍のノードの集合
になります持って残っている場合は1

5)のステップに戻ります| out]エッジが助けるかもしれない
依然としてサイクルを識別するのに多すぎる場合は3210

関連する問題