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算法调用:

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

所得结果:
在这里插入图片描述
五.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
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值