cdlib.algorithms.ricci_community

cdlib.algorithms.ricci_community(g_original: object, alpha: float = 0.5, method: str = 'Sinkhorn') NodeClustering

曲率是描述物体局部形状的几何属性。如果我们在一个具有正曲率的表面(如球体)上绘制两条平行路径,这两条路径会相互靠近;而对于具有负曲率的表面(如马鞍面),这两条路径则会相互远离。 目前有多种方法可以在图上离散化曲率,在本算法中,我们包含了两种最常用的离散Ricci曲率:基于最优传输理论的Ollivier-Ricci曲率和基于CW复形的Forman-Ricci曲率。 边Ricci曲率在图结构中起着重要作用。 具有正曲率的边代表簇内的边,而具有负曲率的边则往往是簇间的桥梁。 此外,负曲率的边与图的连通性高度相关,如果从连通图中移除负曲率的边,图很快就会变得不连通。 Ricci流是一个使图的边Ricci曲率均匀化的过程。 对于给定的图,Ricci流会在每条边上给出一个“Ricci流度量”作为边权重,使得在这些边权重下,图的Ricci曲率几乎处处相等。在[Ni3]中,这种“Ricci流度量”被证明能够检测社区。 Ricci曲率和Ricci流度量都可以作为图分类的图指纹。 不同的图会给出不同的边Ricci曲率分布和不同的Ricci流度量。

支持的图表类型

无向

有向

加权

是的

Parameters:
  • g_original – 一个 networkx/igraph 对象

  • alpha – 概率分布的参数,范围从[0 ~ 1]。它表示留在原始节点上的质量份额。默认值为0.5。

  • method – 运输方法。["OTD", "ATD", "Sinkhorn"]。默认值:Sinkhorn

Returns:

节点聚类对象

Example:

>>> from cdlib import algorithms
>>> import networkx as nx
>>> G = nx.karate_club_graph()
>>> coms = algorithms.ricci_community(G)
References:

Ni, C. C., Lin, Y. Y., Luo, F., & Gao, J. (2019). 基于Ricci流的网络社区检测. 科学报告, 9(1), 1-12.