比方说,我有一个图,图中有一种节点类型和一种边缘类型。我需要所有节点之间的中间性。我可以使用neo4j algo library:
CALL algo.betweenness.stream('Node','relation', {direction:'both'})
YIELD nodeId, centrality
但是它假设每个边的成本为1。我需要一个查询,该查询在计算中间度时使用边成本。我看不到any way in the documentation。
有没有办法使用Neo4j计算加权图中的中间性?
编辑:
这是示例图片。
您可以使用以下查询创建此图:
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
我是手工计算的。他们可能是错误的,但是却给出了主意。