def count_em(n): vertices, edges = make_grid(n) corner_root = (0, ) * 2 vertex_order = order_vertices(vertices, edges, root = corner_root) edge_order = order_edges(vertices, edges, vertex_order) frontiers = make_frontiers(vertex_order, edge_order) beads = make_connectedness_tree( vertex_order, edge_order, frontiers, ) beads = reduce_beads(beads, verbose = False) count = bdd_count_solutions({'s' : len(beads), 'dag' : beads}) print count * 2
def gen_random_solutions(beads, how_many): bdd_beads = { 's' : len(beads), 'dag' : beads, } c = {} n_solns = bdd_count_solutions(bdd_beads, c) print 'number of solutions : %d' % n_solns print 'here are a few random ones:' for _ in xrange(how_many): yield bdd_generate_random_solution( bdd_beads, c, rand = numpy.random.rand )