Neo4j中间性在加权图中

时间:2019-04-17 18:34:12

标签: neo4j cypher

比方说,我有一个图,图中有一种节点类型和一种边缘类型。我需要所有节点之间的中间性。我可以使用neo4j algo library

CALL algo.betweenness.stream('Node','relation', {direction:'both'})
YIELD nodeId, centrality

但是它假设每个边的成本为1。我需要一个查询,该查询在计算中间度时使用边成本。我看不到any way in the documentation

有没有办法使用Neo4j计算加权图中的中间性?

编辑:

这是示例图片。

betweenness example graph

您可以使用以下查询创建此图:

MERGE (a0:A{name:"A0"}) MERGE (a1:A{name:"A1"}) MERGE (a2:A{name:"A2"}) MERGE (a3:A{name:"A3"}) MERGE (a4:A{name:"A4"}) MERGE (a0)-[:r{cost:2}]-(a1) MERGE (a2)-[:r{cost:1}]-(a1) MERGE (a1)-[:r{cost:3}]-(a3) MERGE (a3)-[:r{cost:1}]-(a4) MERGE (a0)-[:r{cost:6}]-(a4)

如果我使用上面给出的中介查询,则结果如下:

**nodeId    centrality**
0           1.0
1           3.5
2           0.0
3           1.0
4           0.5

但是,如果我们使用图片中给出的成本,则中间性应该像:

**nodeId    centrality**
0           0.0
1           5.0
2           0.0
3           3.0
4           0.0

我是手工计算的。他们可能是错误的,但是却给出了主意。

0 个答案:

没有答案