neo4j中的最小生成树如何工作

时间:2017-12-06 11:38:08

标签: neo4j graph-theory graph-algorithm minimum-spanning-tree

我正在使用neo4j中的一些图论算法。我试图在我的网络中找到最小生成树(mst)。我综合创建了一个由10 000人组成的网络。每个人有12种关系类型,每种关系类型将他连接回另一个9999,并且每个关系都分配了自己的权重。

我遇到的问题是,根据定义,结果必须是跨越整个网络的树。然而,neo4j函数只返回整个网络的一个非常小的子图(只有大约12个节点)。

我使用的代码如下所示:

implementation

我可以更改什么来使函数返回通过整个网络传播的mst

1 个答案:

答案 0 :(得分:0)

algo.mst.*尚未适应当前版本(3.2.5.2 /3.3.0.0 @ 2017年12月)中成熟的Neo4j-Graph-Algorithms-CoreAPI,这可能会导致意外结果。但是管道中有一个拉取请求,您可以期待下一个版本中的一些更改。

无论如何..该过程应该为您的节点添加一个新的关系类型(默认mst)。在连接图中,每个节点也应该连接,而断开连接的图只导致这个特定连接组件的节点之间的连接(来自你的startNode)。

如果我理解你,你有多个关系类型,并且在一对节点之间有多个关系?例如。节点A与节点B连接,具有多个关系,每个关系具有不同的类型和属性值。这是个问题。通常,Graph-Algorithms-API不支持多重关联。 每对节点每个方向只能有一个连接。虽然你可以导入多种类型,但是core-api本身并不知道底层类型。如果一对节点之间的多重关系通常导入,则最后一个节点获胜。这已在文档中提及;)

要克服此限制,您可以使用某种人工节点替换您的关系类型。遍历结果树时,其中一个节点的出现将表​​明原始关系。