neo4j中心度算法(Centrality algorithm)-3.Closeness Centrality algorithm

本节介绍两个算法,因为Harmonic Centrality algorithm是紧密中心性的变体,故两个算法放在一起介绍。
一.紧密中心度介绍
   一个节点的紧密度中心性度量它与所有其他节点的平均距离(反比距离)。紧密度得分高的节点到所有其他节点的距离最短
   对于每个节点,紧密中心性算法计算其到所有其他节点的距离之和。在此基础上计算了所有节点对之间的最短路径。然后将得到的和反过来确定该节点的紧密中心度得分。

二.计算公式
    在计算中分为原始紧密中心度和标准化紧密中心度,计算公式分别为:

           原始紧密中心度=1/(与此节点相连的所有节点的和)
        标准化中心度=节点个数-1/(与此节点相连的所有节点的和)

三.使用事项
   在使用时,紧密性中心性在连通图上最有效。如果我们在一个未连通的图上使用原始的公式,我们可以以两个节点在单独的连接组件中的无限距离结束。这意味着,当我们总结出所有节点到那个节点的距离时,我们将得到一个无限的接近中心度分数。

四.neo4j算法调用

CALL algo.closeness(label:String, relationship:String,{write:true, writeProperty:'centrality',graph:'heavy', concurrency:4})
YIELD nodes, loadMillis, computeMillis, writeMillis

五.实例:
 创建节点及关系:

MERGE (a:Node{id:"A"})
MERGE (b:Node{id:"B"})
MERGE (c:Node{id:"C"})
MERGE (d:Node{id:"D"})
MERGE (e:Node{id:"E"})
MERGE (a)-[:LINK]->(b)
MERGE (b)-[:LINK]->(a)
MERGE (b)-[:LINK]->(c)
MERGE (c)-[:LINK]->(b)
MERGE (c)-[:LINK]->(d)
MERGE (d)-[:LINK]->(c)
MERGE (d)-[:LINK]->(e)
MERGE (e)-[:LINK]->(d);

neo4j中心度算法(Centrality algorithm)-3.Closeness Centrality algorithm_第1张图片
neo4j算法调用:

call algo.closeness.stream('Node','LINK')
yield nodeId,centrality
return algo.getNodeById(nodeId).id as name ,centrality
order by centrality

所得结果:
neo4j中心度算法(Centrality algorithm)-3.Closeness Centrality algorithm_第2张图片
五.Harmonic Centrality algorithm
   Harmonic Centrality algorithm是紧密中心性的变体,为了处理其无法处理不连通图
   计算公式:

     原始谐波中心度=sum(1/除节点本身以外到每个节点的距离)
     标准谐波中心度=sum(1/除节点本身以外到每个节点的距离)/(节点的数目-1)

neo4j调用:

CALL algo.closeness.harmonic(label:String, relationship:String,{write:true, writeProperty:'centrality', graph:'heavy', concurrency:4})
YIELD nodes, loadMillis, computeMillis, writeMillis

你可能感兴趣的:(neo4j-图数据库,neo4j算法)