我試圖找到兩個在我的Neo4j數據庫中彼此距離最遠的節點。爲了我的分析目的,我正在考慮兩個節點之間的最短距離作爲它們之間的距離。因此,最遠的兩個節點將具有它們之間最長的最短路徑。我使用Cypher的以下語法來查找最短的節點。圖中任意兩個節點之間的最長最短路徑
給定兩個節點,如Neo4j示例文檔http://docs.neo4j.org/chunked/milestone/query-match.html#match-shortest-path中所示,我可以運行以下Cypher查詢。
MATCH p = shortestPath((martin:Person)-[*..15]-(oliver:Person))
WHERE martin.name = 'Martin Sheen' AND oliver.name = 'Oliver Stone'
RETURN p
我的數據庫有超過1億個節點。蠻力的方式顯然需要很長時間。有沒有簡單或更快的方法來獲得這兩個節點?
[作爲一個額外的皺紋..圖進行加權,但這個細節可以忽略不計。]
你正在尋找一個單一來源的最短路徑列表,然後試圖確定哪些是最長的? – Nicholas
是的。我的目標是找到兩個相距甚遠的節點,任何節點。放在上下文中,我仍然在努力尋找派系,正如你在前面的帖子中所建議的那樣。我正在試驗分區圖。爲了有效地分割它們,我需要兩個相距很遠的節點,以儘量減少它們屬於同一個子圖的機會。 PS - 我沒有正式的圖表教育,所以我正在嘗試創建一些不完美的「make do」解決方案,但要完成工作。感謝您回覆。 – Anshul
嗨@Anshul,只是想問問你是如何解決問題的? – lmazgon