在networkx图上计算离散ricci曲率和ricci流。

GraphRicciCurvature的Python项目详细描述


图形曲率

在networkx图上计算离散ricci曲率和ricci流。

License


这项工作计算ollivier ricci曲率[ni],ollivier ricci流[ni2,ni3]和forman ricci曲率(或forman曲率)[sreejith]。

曲率是描述物体局部形状的一种几何性质。 如果在球面等曲率为正的曲面上画出两条平行的路径,这两条路径彼此靠近,而对于鞍形等曲率为负的曲面,这两条路径往往是分开的。

在[ni]中,我们观察到边ricci曲率在图的结构中起着重要的作用。曲率为正的边表示簇内的边,而曲率为负的边表示簇内的桥。此外,负弯曲边与图的连通性密切相关,当负弯曲边从连通图中移除时,图很快就会断开。

ricci流是使图的边ricci曲率均匀化的过程。对于给定的图,ricci流在每一条边上给出一个“ricci流度量”作为边权,使得在这些边权下,图的ricci曲率几乎处处相等。在[ni3]中,这个“ricci流度量”被证明能够检测社区。

ricci曲率和ricci流度量都可以作为图形指纹。不同的图给出了不同的边缘ricci曲率分布和不同的ricci流度量。

社区检测RICCI流程视频演示:

包装要求

  • NetworkX(基于图形库)

  • CVXPY(用于优化运输的LP解算器)

  • NumPy(cvxpy支持)

  • ^ a6}(近似最优运输距离)

  • NetworKit可选:用于更快的并行最短路径计算

安装

通过PIP安装

pip3 install [--user] GraphRicciCurvature

通过PIP(带NetworkIt)安装

pip3 install [--user]"GraphRicciCurvature [faster_apsp]"
  • 请注意,网络不是必需的。对于networkx性能较差的大型图,它是快速全对最短路径计算的可选项。如果安装失败,请参考NetworKit' Installation instructions。在大多数cast构建中,建议从源代码构建此包。

开始

  • 关于ricci曲率、ricci流和ricci流用于社区检测的基本用法,请参见jupyter笔记本教程nbviewergithub

简单示例

importnetworkxasnxfromGraphRicciCurvature.OllivierRicciimportOllivierRiccifromGraphRicciCurvature.FormanRicciimportFormanRicci# import an example NetworkX karate club graphG=nx.karate_club_graph()# compute the Ollivier-Ricci curvature of the given graph Gorc=OllivierRicci(G,alpha=0.5,verbose="INFO")orc.compute_ricci_curvature()print("Karate Club Graph: The Ollivier-Ricci curvature of edge (0,1) is %f"%orc.G[0][1]["ricciCurvature"])# compute the Forman-Ricci curvature of the given graph Gfrc=FormanRicci(G)frc.compute_ricci_curvature()print("Karate Club Graph: The Forman-Ricci curvature of edge (0,1) is %f"%frc.G[0][1]["formanCurvature"])# -----------------------------------# Compute Ricci flow metric - Optimal Transportation DistanceG=nx.karate_club_graph()orc_OTD=OllivierRicci(G,alpha=0.5,method="OTD",verbose="INFO")orc_OTD.compute_ricci_flow(iterations=10)

example.py中的更多示例。


联系人

请联系Chien-Chun Ni


参考

[NI]:NI,C.-C.,Lin,Y.-Y.,Gao,J.,Gu,X.,和Saucan,E.2015年。互联网拓扑的ricci曲率”(第26卷,第2758-2766页)。在2015年ieee计算机通信会议(infocom)上发表,ieee。arXiv

[NI2]:NI,C.-C.,Lin,Y.-Y.,Gao,J.,和Gu,X.2018年。通过离散奥利维尔-里奇流进行网络对齐”,图表绘制2018,arXiv

[NI3]:NI,C.-C.,Lin,Y.-Y.,Luo,F.和Gao,J.2019年。“RICCI流网络上的社区检测”,科学报告,arXiv

[斯雷吉思]:斯雷吉思,R.P.,卡尔蒂基安·莫汉拉吉,于尔根·乔斯特,埃米尔·索坎,和阿雷吉特·萨马尔。2016年。“复杂网络的forman曲率”,《统计力学杂志:理论与实验》,2016(6)。IOP发布:063206。arxiv

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ARM(I.Mx6)的JAVA运行时环境(JRE)   java Dojo插件在Struts 2中不起作用   java我正在读取图像并对其进行更改。但这些更改不会被保存   java如果main方法包含在main中调用的实例的定义,那么它怎么可能在类中拥有main方法呢?   java opencv3视频捕获(windows)不工作   java有关于如何在我的应用程序中使用JEditTextArea的教程吗?   java如何使用Javalin的swagger/OpenAPI用户界面读取数组formParams?   如何从Java将JSON文件导入mongodb   函数式编程Java Streams如何根据函数输出正确过滤   java Eclipse Tomcat安装程序   JavaFX程序关闭或失去连接时的java PHP函数   java禁用控制台的调试spring日志   javascript为什么ajax方法调用错误函数?   java JOptionPane。在小程序中打开两次showinputdialog