[英]Find and count all possible paths starting from one node not exceeding specific length in Cypher Neo4j
[英]Cypher (Neo4j) Match all paths with specific length and value
我是 Cypher 和 Neo4j 的新手,但我發現它真的很有趣,並試圖用它來解決我遇到的數學問題。 為了使問題易於說明,我將其按比例縮小,希望您能幫助我找到正確的邏輯。
數學問題:給定一組瓷磚,你可以有多少種方式 select 3 個瓷磚,總和小於 x?
在我的示例中,假設我有 5 個圖塊(100、100、80、80、50),並且我必須至少包含一個 100 塊,並且 x 為 270。
由於順序無關緊要,所以我考慮問題的方式是從最高的 nr 開始,然后從那里可以選擇 go 到相同的 nr,或者下一個較低的數字,或者第二個較低的數字. 這意味着,從 100 開始,我可以選擇 select 或者另外 100,或者 80(下一個較低的),或者 50(第二個較低的)。
到目前為止,我能夠定義從 100 開始並進一步到 m 2 步的路徑:
MATCH path = (n:Node {value:100})-[:CONNECTED*2]-(m)
問題:如何找到具有特定節點值總和的所有路徑? 由於順序無關緊要,我只對獨特的單向路徑感興趣。 (意思是,例如,如果我得到一個路徑為 100-80-50,那么我對路徑 50-80-100 不感興趣,因為它包含完全相同的圖塊,只是順序不同)。
謝謝!
你的意思是這個?
MATCH path = (n:Node {value:100})-[:CONNECTED*2]-(m)
WITH REDUCE(x=0,n in nodes(path)|x+n.value) as expected, [n in nodes(path)|n.value] as listNode
WHERE expected >100
RETURN listNode
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.