Mercurial > public > think_complexity
view ch2ex6.py @ 35:10db8c3a6b83
Chapter 5.5, exercise 6, #2: plot P(k) vs. k for a WS graph.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Wed, 09 Jan 2013 20:51:16 -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)