2014-01-14 31 views

回答

2

编辑(从评论):其实java的效率会比较高,使用遍历API,开始在一个节点,遍历,直到你找到结束节点和停止。所以你不会必然最终匹配存在,我想每一个可能的路径

我能想到这样做的最短路径(或其他算法http://docs.neo4j.org/chunked/milestone/tutorials-java-embedded-graph-algo.html),并检查长度:

match (node1 {id:"1"}),(node2 {id:"2"}),p=shortestPath((node1)-[*]-(node2)) 
return count(rels(p)) 

,或者想寻找存在的任何深度的路径:

match (node1 {id:"1"}),(node2 {id:"2"}),p=(node1)-[*]-(node2) 
    return count(p) 

不确定哪个更便宜。

+0

是的,但最短路径需要进行不必要的计算。无论如何,问题可能是,无论哪一条路径,如何找到一条路径。我不会拖延第二个,我最终可以将它翻译成Java API。 ypu正在寻找每条路径还是只有1? – Altober

+0

第二个尝试匹配两个节点之间任意深度的路径。所以如果存在多条路径,它可以匹配很多路径。你仍然可以通过java运行这个密码查询。 – Luanne

+1

实际上java会更有效率 - 使用遍历api,从一个节点开始,遍历直到找到结束节点并停止。所以你不一定最终会匹配我认为存在的每条可能的路径。 – Luanne

2

您可以使用GraphAlgoFactory,如manual中所述,您可以使用finder.findSinglePath找回发现者。我可能不会使用dijkstra,但最短路径或简单的路径。请参阅GraphAlgoFactory API

相关问题