我需要计算在图中将两个节点A和B与它们的最低共同祖先分开的距离。我使用followinf函数查找LCA:
match p1 = (A:Category {idCat: "Main_topic") -[*0..]-> (common:Category) <-[*0..]- (B:Category {idCat: "Heat_transfer"})
return common, p1
Neo4j中是否有任何函数可以返回d(A,common)和d(B,common)之间的距离。
谢谢您的帮助
答案 0 :(得分:0)
如果我正确地理解了lowest common ancestor
,这归结为找到A
和B
之间的最短路径,并且在它们之间至少有一个节点。您可以使用此查询来完成。在此,p
的长度大于1的条件将迫使这两个节点之间至少有一个节点。下面的示例使用IMDB toy database并返回电影头像。
match p=shortestPath((n:Person {name:'Zoe Saldana'})-[r*1..15]-(n1:Person {name:'James Cameron'})) where length(p) > 1 return nodes(p)[1]
基本上,您可以从路径的节点中选择任何元素,除了第一个和最后一个元素(因为它们分别是A
和B
)