我需要使用cypher查询或python客户端库(如pye2neo)在neo4j中找到数据库的LCA。
我知道要执行此操作的算法,例如here。但是在我自己在python中实现一个算法之前,我想知道是否有一个内置的方法用于这个或其他一些预先存在的包。
目前我的方法包括:
Query = 'match p1 = (con1) -[*0..]-> (common) <-[*0..]- (con2)
where con1.name = A and con2.name = B
return common, p1'
用于启动节点A和B
Psuedo代码:
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)
总结:是否有一种简单的内置/预先存在的方法,可以使用python客户端库或cypher从可变数量的输入节点中查找LCA?
由于
答案 0 :(得分:0)
我有点困惑。 “查询中剩余的节点”是什么意思?
听起来像ShortestPath的修改版本会很有用。它是双向的,默认情况下,它从端节点以相反的方向搜索。如果双方在哪里使用相同的方向(说出去),那么你将达到最低的共同祖先(至少在我低调你的问题时)。