Mercurial > public > think_complexity
view ch2ex6.py @ 24:5c2c4ce095ef
A stab at the L(p)/L(0) plot.
I still don't quite get how the graphs in the Watts and Strogatz paper were
generated. My results have basically the same shape, but don't converge to 0.
I'm not sure how this is possible if the rewire function does not remove edges.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 03 Jan 2013 18:41:13 -0600 |
parents | 9f1fccc13991 |
children |
line wrap: on
line source
"""ch2ex6.py - Program for Chapter 2.5, exercise 6. This program generates random graphs with parameters n and p and computes the fraction of them that are connected. """ import string from Graph import Vertex from RandomGraph import RandomGraph LABELS = string.letters + string.punctuation def test_graph(n, p): """Generate a RandomGraph with parameters n & p and return True if the graph is connected, False otherwise. """ vs = [Vertex(c) for c in LABELS[:n]] g = RandomGraph(vs) g.add_random_edges(p) return g.is_connected() def test_p(n, p, num): """Generate num RandomGraphs with parameters n & p and return the number of graphs that are connected. """ count = 0 for i in range(num): if test_graph(n, p): count += 1 return count def main(script_name, n=26, p=0.1, num=1, *args): """Generate num RandomGraphs with parameters n & p and print out the number of graphs that are connected. """ n = int(n) p = float(p) num = int(num) count = test_p(n, p, num) print count if __name__ == '__main__': import sys main(*sys.argv)