networkx中关于图的wiener_index的计算函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiangcheng001/article/details/52781848

在最新的networkx1.11的版本中,其官方文档和github的源代码中其实已经嵌入的wiener index的计算函数,就在references/Algorithms/wiener_index的目录下,并且也给出了其示例。但在真正下载或安装networkx过程中却没有这个函数,如今根据github的代码将其补全。


1. 将github中的networkx/Algorithms下的wiener.py拖下来放到Python包的按照目录下,如/usr/local/lib/python2.7/dist-packages/networkx-1.11-py2.7.egg/networkx/algorithms;


2. 修改wiener代码,在第84的位置,spl(G,weight=weight)生成的是字典,故在这里改成spl(G, weight=weight).iteritems(),p,v是需要循环这个字典的;另外从itertools import的chain似乎也错了;根据定义,还应该除以n(n-1)。


3. __init__.py的文件中加入from networkx.algorithms.wiener import*(为测试是不是一定需要)


这样,在重新import networkx即可。


示例:


import networkx as nx

n = 10

g = nx.complete_graph(10)

nx.wiener_index(g)


>> 1

 
 

注意:在函数中有特殊设置,即该图必须是联通的,否则结果为inf。


其实,这个速度是很慢的,努力用Igraph试试吧。

猜你喜欢

转载自blog.csdn.net/xiangcheng001/article/details/52781848