2013-04-12 6 views
12

Каков наилучший способ обнаружения циклов на графике значительного размера с использованием cypher.Обнаружение циклов в графике свойств neo4j с использованием cypher

У меня есть график, который имеет около 250000 узлов и около 270000 отношений, и я хотел бы обнаружить циклы в подграфе около 10 тыс. Узлов и связанных с отношениями 100 тыс. Цифер, который я написал, похож на

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) Флаг узлов с не входящих соотношений (корнями)
4) Если какие-либо узлы помечено в 2 или 3 вернуться к шагу 1

5) Если не-маркированные узлы остаются у вас есть по крайней мере один цикл

цикл (ы) будет находиться в наборе не-помечено узлов
, глядя на узлах с наименьшим количеством [в | out] могут помочь
, если есть еще слишком много для идентификации цикла

Смежные вопросы