Mercurial > public > think_complexity
view ch4ex4.py @ 23:74c9d126bd05
Working on the SmallWorldGraph exercises.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Wed, 02 Jan 2013 16:50:55 -0600 |
parents | |
children | 5c2c4ce095ef |
line wrap: on
line source
"""This program performs item 4 in 4.4 exercise 4. "Make a graph that replicates the line marked C(p)/C(0) in Figure 2 of the paper. In other words, confirm that the clustering coefficient drops off slowly for small values of p." """ import random import matplotlib.pyplot as pyplot from Graph import Vertex from SmallWorldGraph import SmallWorldGraph title = 'C(p)/C(0)' # compute C(0) n = 1000 k = 10 vs = [Vertex(str(i)) for i in range(n)] g = SmallWorldGraph(vs, k, 0.0) c0 = g.clustering_coefficient() print 'c0 =', c0 # compute data p_vals = [0, 0.0001, 0.0002, 0.0004, 0.0006, 0.0008, 0.001, 0.002, 0.004, 0.006, 0.008, 0.01, 0.02, 0.04, 0.06, 0.08, 0.1, 0.2, 0.4, 0.6, 0.8, 1.0] c_vals = [] for p in p_vals: g = SmallWorldGraph(vs, k, p) c_vals.append(g.clustering_coefficient() / c0) # plot graph pyplot.clf() pyplot.xscale('log') pyplot.yscale('log') pyplot.title('') pyplot.xlabel('p') pyplot.ylabel('C(p)/C(0)') pyplot.plot(p_vals, c_vals, label=title, color='green', linewidth=3) pyplot.legend(loc=4) pyplot.show()