图算法中的中心性与社区检测
1. 介数中心性近似算法
在大型图中精确计算介数中心性的成本可能非常高,因此可以选择使用近似算法,它运行速度更快,且能提供有用(尽管不精确)的信息。随机近似Brandes(RA - Brandes)算法是计算介数中心性近似得分最著名的算法。它不计算每对节点之间的最短路径,而是只考虑节点的一个子集。选择节点子集有两种常见策略:
- 随机选择 :节点以均匀随机的方式被选择,有一个定义好的选择概率。默认概率是 $\frac{log_{10}N}{e^2}$ 。如果概率为 1,该算法的工作方式与普通的介数中心性算法相同,即加载所有节点。
- 度选择 :节点随机选择,但度低于平均值的节点会被自动排除(即只有关系较多的节点才有被访问的机会)。
还可以进一步优化,限制最短路径算法使用的深度,这样就能得到所有最短路径的一个子集。
1.1 使用 Neo4j 进行介数中心性近似计算
以下查询使用随机选择方法执行 RA - Brandes 算法:
CALL algo.betweenness.sampled.stream("User", "FOLLOWS", {strategy:"degree"})
YIELD nodeId, centrality
RETURN algo.getNodeById(nodeId).id AS user, centrality
ORDER BY centrality DESC
运行此过程会得到以下结果:
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



