diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ch4ex4.py	Wed Jan 02 16:50:55 2013 -0600
@@ -0,0 +1,47 @@
+"""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()