2012-06-27 3 views
2

Есть ли запрос для графика Neo4J, который мог бы пересекать указанный граф и находить узлы на основе взаимных отношений? Например, если узел A связан с узлом B (двунаправленно), B связан с C, C связан с D, D связан с A, A связан с C, а B связан с D, так что существует подграф, в котором каждый узел связан с каждым другим узлом, есть эффективный способ вернуть этот подграф или группу узлов?Поиск различных групп узлов на основе взаимных отношений в neo4j

Я понимаю, что мое объяснение бедным, поэтому я приведу пример графа в консоли: http://console.neo4j.org/r/qb2xmp

Здесь я создал граф, и я хотел бы вернуться группы, которые взаимно связанные 3 или более - поэтому в этом случае я бы в идеале хотел вернуть группу Скотта, Джоша, Фрэнка и Бена, а также группу Фрэнка, Бена и Эрика. Если возможно, я хотел бы определить, кто составляет эти отдельные группы.

+0

Я считаю, что вы ищете свой график для кликов (http://en.wikipedia.org/wiki/Clique_(graph_theory)) или «полные подграфы». http://en.wikipedia.org/wiki/Clique_problem описывает подходы к этой (не простой) проблеме. К сожалению, я не знаю, имеет ли neo4j такой алгоритм. Но я боюсь, что нет. – Slomo

+0

Спасибо! Перспектива мрачная, но я ценю это зная! – scottandrus

ответ

1

Это пример Clique Problem и NP-Complete.
Here is a related question on SO with a good explanation!

Извините, я попал в слишком рано. Таким образом, нет «эффективного» способа сделать это. Это не неприемлемо, хотя в некоторых случаях, и вам удастся найти алгоритм, который решает эту общую проблему и реализует ее в Neo4J.

+0

Стрелять. Я предположил, что это, вероятно, проблема с большим объемом алгоритмов, но я надеялся, что для Neo4j может быть установлен алгоритм. Благодаря! – scottandrus

+0

Кроме того, если вы можете придумать реализацию, сообщество Neo4j было бы очень интересно добавить его в компонент graph-algo, см. Https://github.com/neo4j/community/tree/master/graph-algo –

+0

Мне будет интересно найти способ внести свой вклад, если я смогу найти решение. В настоящее время я работаю над реализацией C# /. NET [алгоритма Брон-Кербоша] (http://en.wikipedia.org/wiki/Bron%E2%80%93Kerbosch_algorithm). – scottandrus

0

Вы нашли решение для этого?

я осуществил что-то вроде этого на мой проект for text network visualization но он запускает Gephi Toolkit (на Java), чтобы выполнить некоторые метрические расчеты на графике, выявления сообществ и т.д. Но это слишком тяжело ...

Вы могли бы быть интересно изучить алгоритмы Гефи, хотя, в частности, макет Force Atlas реализован в Sigma.Js и особенно алгоритм модульности, используемый в Gephi. Это может дать вам некоторые подсказки относительно того, как действовать ...

+0

Ничего себе. Но как этот инструмент может быстро вычислить сообщества на графике? Является ли его логика основанной на геологии? – floatingpurr

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