def RGG(n, beta, mean_degree): G = nx.empty_graph(n) powerLawArray = utils.powerLawArray(n, beta, mean_degree) powerLawDegreeArray = np.array(powerLawArray, dtype = np.longlong) sumOfDegrees = powerLawDegreeArray.sum() delimiterArray = np.cumsum(powerLawDegreeArray) delimiterArray = np.insert(delimiterArray, 0, 0) delimiterArray = np.delete(delimiterArray, n) someCounter = 0 while someCounter < sumOfDegrees/2: G.add_edge(np.searchsorted(delimiterArray, rnd.randrange(sumOfDegrees)), np.searchsorted(delimiterArray, rnd.randrange(sumOfDegrees))) someCounter += 1 txtname = "generated/adj-%s-%s-%s-.txt" % (str(n), str(beta), str(mean_degree)) nx.write_adjlist(G, txtname) degreeSequence=sorted(nx.degree(G).values(),reverse=True) dmax=max(degreeSequence) plt.clf() plt.cla() plt.loglog(degreeSequence,'b-',marker='o') plt.title("Degree rank plot") plt.ylabel("degree") plt.xlabel("rank") if n < 1000: plt.axes([0.45,0.45,0.45,0.45]) plt.cla() Gcc=nx.connected_component_subgraphs(G)[0] pos=nx.spring_layout(Gcc) plt.axis('off') nx.draw_networkx_nodes(Gcc,pos,node_size=20) nx.draw_networkx_edges(Gcc,pos,alpha=0.4) pngname = "generated/graph-%s-%s-%s-.png" % (str(n), str(beta), str(mean_degree)) plt.savefig(pngname)
def RGG(n, beta, mean_degree): G = nx.empty_graph(n) powerLawArray = utils.powerLawArray(n, beta, mean_degree) powerLawDegreeArray = np.array(powerLawArray, dtype = np.longlong) sumOfDegrees = powerLawDegreeArray.sum() delimiterArray = np.cumsum(powerLawDegreeArray) delimiterArray = np.insert(delimiterArray, 0, 0) delimiterArray = np.delete(delimiterArray, n) someCounter = 0 while someCounter < sumOfDegrees/2: G.add_edge(np.searchsorted(delimiterArray, rnd.randrange(sumOfDegrees)), np.searchsorted(delimiterArray, rnd.randrange(sumOfDegrees))) someCounter += 1 txtname = "test/adj-%s-%s-%s-.txt" % (str(n), str(beta), str(mean_degree)) nx.write_adjlist(G, txtname)
# number of vertices n = 10000 # create an empty graph on n vertices G = nx.empty_graph(n) # power of the model beta = 1.7 # average degree of the graph mean_degree = 50 # generate a power-law array with defined parameters powerLawArray = utils.powerLawArray(n, beta, mean_degree) print np.max(powerLawArray) #может просто последний элемент печатать? впрочем, неважно # as stated in Chung-Lu article we create an array of ints just taking the lower bound of the values # from the power-law sequence #powerLawDegreeSequence = [0]*n powerLawDegreeArray = np.array(powerLawArray, dtype = np.longlong) print powerLawDegreeArray.size # counter. sumOfDegrees = Sum_i d_i sumOfDegrees = powerLawDegreeArray.sum() print sumOfDegrees