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

2024-06-11 16:44:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要使用cypher查询或pye2neo等python客户机库在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

  1. 对任意两个起始节点执行查询。这将返回共同的祖先及其路径。在
  2. 对于查询中剩余的每个节点(例如C、D、e…),对该节点和先前返回的父节点执行查询。此父对象替换上一个。在
  3. 最后找到的父级是LCA

Psuedo代码:

^{pr2}$

总而言之:有没有一种简单的内置/预先存在的方法可以使用python客户机库或cypher从可变数量的输入节点中查找LCA?在

谢谢


Tags: 方法name算法客户节点common内置机库
1条回答
网友
1楼 · 发布于 2024-06-11 16:44:10

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

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

相关问题 更多 >