【问题标题】:what is the best way to find longest path between set of nodes(certain nodes) in neo4j?在neo4j中找到一组节点(某些节点)之间最长路径的最佳方法是什么?
【发布时间】:2013-11-06 00:51:17
【问题描述】:

我有一组将由用户声明的节点(我的意思是用户输入了一些单词,我的节点中存在的那些将包含在我的节点集中),我想找到之间存在的最长路径这些节点(不必包括集合中的所有节点,但不应该包括在我的节点集中不存在的节点)在 neo4j 嵌入式 java 数据库中。(我不知道起始节点是什么,所有它们可以是起始节点。)

首先我想也许我必须对这些节点和它们之间的关系做一个子图,然后在那个子图中找到最长的路径,但我不知道什么是正确和最好的做法?

然后我想,我可以直接找到一组节点之间的最长路径(可以这样做吗?)。

或者如果这做不到,那么如何找到某些节点(节点集)的关系并建立一个关系集,然后找到关系集之间的最长路径?

我想要最佳和最快的性能方式,我不想要密码查询,因为我使用的是 java core api(它更快),所以请告诉我最好的方式是什么?

将其视为具有如此多节点的大型数据库。

提前致谢。

【问题讨论】:

    标签: java graph path neo4j


    【解决方案1】:

    恐怕除了遍历整个图形之外,任何标准算法都无法做到这一点。因此,在性能上没有最佳方式。 neo4j 没有内置选项。

    这是一个密码查询(抱歉,我不知道 neo4j 中的其他输入语言):

    start n1=node(*), n2=node(user) 
    match n1--n2    //filter only the just declared user nodes, or any other matching condition
    with n1, n2
    match p=n1-[r:..*]-m, m--n2    //all paths between declared user nodes
    return p
    order by length(r) desc
    limit 1
    

    【讨论】:

    • 感谢您的宝贵时间,您真好。
    猜你喜欢
    • 1970-01-01
    • 2016-03-06
    • 2011-03-08
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    相关资源
    最近更新 更多