具有中间节点的密码匹配路径

问题描述 投票:0回答:1

我有带有Stop(红色)和Connection(绿色)节点的下图。

enter image description here

我想使用A上的cost属性找到从CConnection的最短路径。

我想避免使Connection成为关系,因为我失去了CONTAINSFoo关系。

我可以像这样匹配单跳

MATCH p=(:Stop {name:'A'})<-[:BEGINS_AT]-(:Connection)-[:ENDS_AT]->(:Stop {name:'B'}) RETURN p

但是这不适用于任意数量的Connection,就像处理关系和[*]时一样。

我也试图将关系简化为一个简单的例子,但是如果没有GDS,似乎无法做到这一点。

MATCH (s1:Stop)<-[:BEGINS_AT]-(c:Connection)-[:ENDS_AT]->(s2:Stop) RETURN id(s1) AS source, id(s2) AS target, c.cost AS cost

请注意,连接是单向的,因此不可能从CA

没有任何Neo4j插件可以做到这一点吗?

neo4j cypher shortest-path
1个回答
0
投票

如果要计算加权最短路径,那么使用GDS甚至APOC插件是最简单的。您可能可以使用cypher创建最短的加权路径函数,但不会进行优化。我只能想到找到两个节点之间的所有路径并对权重求和。在下一步中,您将使用最小的权重之和来过滤路径。不过,这无法很好地扩展。

至于您问题的第二部分,我将需要更多信息,因为我不确定您到底想要什么。

© www.soinside.com 2019 - 2024. All rights reserved.