1
我需要使用密碼查詢或python客戶端庫(如pye2neo)在neo4j中找到數據庫的LCA。在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
- 執行查詢任意兩個節點開始。這將返回共同的祖先及其路徑。
- 對於查詢中剩餘的每個節點(例如C,D,E ...),執行該節點和先前返回的父級的查詢。該父代替前一個。
- 最後找到的父母是LCA
的僞代碼:
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)
總結:有沒有從可變數目找到LCA的一個簡單的內置/預存方式輸入節點使用python客戶端庫還是cypher?
謝謝