Neo4j中的加权图

4

我有一个正在运行的Neo4j实例。我有一些带权重的关系。一个例子是表示世界上所有地方,并在每个地方之间设置距离。

现在,创建两个节点A和B之间的关系似乎很容易:

Relationship relationship = A.createRelationshipTo(B, Relations.Knows );

但是实际关系的强度呢?这里有一个建议:
create a-[:`KNOWS_0.34`]->b

这样做虽然可行,但并不是一个特别好的解决方案,尤其是如果你想根据权重计算最短距离时。是否有一种方法可以将这个关系存储为整数或浮点数?
2个回答

4
我不知道这一点,但似乎在创建“关系”时可以设置其他属性:
Relationship relAB = createRelationship( nodeA, nodeC, "length", 2d );

2
Neo4j是一种属性图,这意味着您可以在节点和关系上拥有任意数量的属性。 - RaduK
你知道有哪些路径功能,可以让我从一个节点到另一个节点的路径最短,同时使用最大的权重吗? - redrubia
1
你可以检索两个节点之间的所有最短路径,然后比较它们的权重: http://docs.neo4j.org/chunked/milestone/query-match.html#_shortest_path - RaduK
1
该函数找到最短路径(单数而非复数 :( )。 - redrubia
2
好的,你应该读完整个部分:)。你既有'allShortestPaths'又有'shortestPath'。 - RaduK
太棒了!非常感谢 - redrubia

3

在您的关系中使用权重属性是一个很好的方法!

请查看Neo4j教程页面中的图算法示例。它描述了使用加权关系查找最短路径的各种方法,例如使用Dijkstra或A*算法。可以在此处找到一个出色的Dijkstra示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接