给定一个表示社交网络的图 G(V, E),其中 V 是顶点(用户)的集合,E 是边(友谊)的集合,找出前 k 个最有影响力的用户,其中 k 是正整数。用户的影响力定义为图中表示用户的顶点的度。问题陈述与我们在社交网络分析中的现实场景直接相关。通过找到最有影响力的用户,我们可以确定拥有最多连接的用户,因此,他们更有可能在网络中传播信息或影响其他人。
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
import collections as collec
G_road = nx.read_edgelist("/data/roadNet-CA", nodetype=int, comments='#', create_using=nx.DiGraph)
out_degrees = G_road.out_degree()
out_values = sorted([d for n, d in out_degrees])
out_set = set(out_values)
out_hist = []
for x in out_set:
cnt = out_values.count(x)
for i in range(cnt):
out_hist.append(cnt)
plt.figure(figsize=(12, 8))
plt.grid(True)
plt.loglog(out_values, out_hist, 'bv-')
plt.xlabel('Out Degree')
plt.ylabel('Number of nodes')
plt.title('Out-degree distribution (Log-Log) of RoadNet graph')
plt.show()