簡體   English   中英

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 不感興趣,因為它包含完全相同的圖塊,只是順序不同)。

謝謝!

neo4j 圖像

你的意思是這個?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM