Python 在neo4j中寻找最低共同祖先(LCA)

Python 在neo4j中寻找最低共同祖先(LCA),python,neo4j,py2neo,Python,Neo4j,Py2neo,我需要使用cypher查询或pye2neo之类的python客户端库在neo4j中查找数据库的LCA 我知道这样做的算法,例如。但在我自己用python实现一个算法之前,我想知道是否有一个内置的方法用于这个或其他一些预先存在的包 目前,我的方法包括: Query = 'match p1 = (con1) -[*0..]-> (common) <-[*0..]- (con2) where con1.name = A and con2.name = B return common,

我需要使用cypher查询或pye2neo之类的python客户端库在neo4j中查找数据库的LCA

我知道这样做的算法,例如。但在我自己用python实现一个算法之前,我想知道是否有一个内置的方法用于这个或其他一些预先存在的包

目前,我的方法包括:

Query = 'match p1 = (con1) -[*0..]-> (common) <-[*0..]- (con2) 
where con1.name = A and con2.name = B 
return common, p1'
总之:是否有一种简单的内置/预先存在的方法,可以使用python客户端库或cypher从数量可变的输入节点中查找LCA


谢谢

我有点困惑。“查询中的剩余节点”是什么意思


这听起来像是一个修改版的ShortestPath会很有用。它是双向的,默认情况下从结束节点反向搜索。如果双方使用相同的方向(比如外向),那么你将到达最低的共同祖先(至少就我理解你的问题而言)

我有点困惑。“查询中的剩余节点”是什么意思

这听起来像是一个修改版的ShortestPath会很有用。它是双向的,默认情况下从结束节点反向搜索。如果双方使用相同的方向(比如外向),那么你将到达最低的共同祖先(至少就我理解你的问题而言)

input_nodes = [A, B, C, D, E]

parent = get_common(input_nodes[0], input_nodes[1])
for node in input_nodes[2:]:
    parent = get_common(parent, node)