Neo4j центральность в взвешенных графах - PullRequest
1 голос
/ 17 апреля 2019

Допустим, у меня есть график, и в нем есть один тип узла и один тип ребра.Мне нужны центральности между всеми узлами.Я могу использовать neo4j algo library :

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

Но предполагается, что стоимость каждого ребра равна 1. Мне нужен запрос, который использует затраты ребер при расчете промежуточности.Я не вижу в документации каким-либо образом .

Есть ли способ рассчитать центральность в взвешенных графиках с использованием 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

Я рассчитал их вручную.Они могут ошибаться, но это дает представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...