networkx随机图生成

networkx随机图生成

导入包
import networkx as nx   #导入networkx包
import random			#导入random包
import matplotlib.pyplot as plt #导入画图工具包

新建图
G = nx.Graph()			#建立无向图
H = nx.path_graph(100)	#添加节点
G.add_nodes_from(H)		#添加节点
随机概率添加边的函数
def rand_edge(vi,vj,p=0.2):		#默认概率p=0.1
    probability =random.random()#生成随机小数
    if(probability<p):			#如果小于p
        G.add_edge(vi,vj)  		#连接vi和vj节点
添加边
i=0
while (i<100):
    j=0
    while(j<i):
            rand_edge(i,j)		#调用rand_edge()
            j +=1
    i +=1
matplotlib画图

随机图

连通子图

number_components = nx.number_connected_components(G) 
largest_components = max(nx.connected_components(G), key=len)
print("最大连通子图:" + str(largest_components))
print("最大连通子图长度:"+ str(len(largest_components)))
print("连通子图个数: "+str(nx.number_connected_components(G)))
节点的度
nx.degree(G)
DVweight = G.degree()
degree_sum = sum(span for n, span in DVweight) 		#各节点度数之和
degree_max = max(span for n, span in DVweight)		#节点最大度数
代码
import networkx as nx     #导入networkx包
import random			  #导入random包
import matplotlib.pyplot as plt

G = nx.Graph()
H = nx.path_graph(100)
G.add_nodes_from(H)

def rand_edge(vi,vj,p=0.2):
    probability =random.random()
    if(probability<p):
        G.add_edge(vi,vj)   
i=0
while (i<100):
    j=0
    while(j<i):
            rand_edge(i,j)
            j +=1
    i +=1

number_components = nx.number_connected_components(G) 
largest_components = max(nx.connected_components(G), key=len)
nx.degree(G)
DVweight = G.degree()
degree_sum = sum(span for n, span in DVweight) 		#各节点度数之和
degree_max = max(span for n, span in DVweight)		#节点最大度数

print("度数之和: " + str(degree_sum))
print("节点最大度数:" + str(degree_max))
print("最大连通子图:" + str(largest_components))
print("最大连通子图长度:"+ str(len(largest_components)))
print("连通子图个数: "+str(nx.number_connected_components(G)))
nx.draw_networkx(G, with_labels=True)
plt.show()
  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值