Neo4j Gremlin: кратчайший взвешенный путь

Мы используем встроенный Neo4J 2.0; у нас есть График с примерно 1 миллионом узлов и 50 миллионами отношений; мы должны найти N shortPath, но с хорошо известным свойством стоимости. Мы увидели, что такого метода нет в классе GraphAlgo neo4j, и мы думали использовать Gremlin (или любую другую утилиту), чтобы найти эти пути. Мы хотим указать, какое свойство отношения следует учитывать при нахождении кратчайших путей.

Кто-нибудь нашел решение этой проблемы? Как мы могли реализовать такую ​​функциональность?

Любое предложение действительно ценится ... Спасибо, Анджело


person Angelo Immediata    schedule 24.03.2014    source источник


Ответы (1)


Вы можете использовать Gremlin для расчета кратчайших путей. Вот пример в GremlinDocs:

http://gremlindocs.com/#recipes/shortest-path

В следующем фрагменте из этого раздела обсуждается использование свойства "weight" для расчета стоимости пути:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).outE.inV.loop(2){it.object.id!="3" && it.loops < 6}.path.filter{it.last().id=="3"}.transform{[it.findAll{it instanceof Edge}.sum{it.weight}, it]}
==>[0.4, [v[1], e[9][1-created->3], v[3]]]
==>[1.4000000059604645, [v[1], e[8][1-knows->4], v[4], e[11][4-created->3], v[3]]]

Я не уверен, что это именно то, что вам нужно, но, возможно, это вдохновит вас на решение.

person stephen mallette    schedule 25.03.2014