コード例 #1
0
    def smoke_test_random_graph(self):
        seed = 42
        G=gnp_random_graph(100,0.25,seed)
        G=binomial_graph(100,0.25,seed)
        G=erdos_renyi_graph(100,0.25,seed)
        G=fast_gnp_random_graph(100,0.25,seed)
        G=gnm_random_graph(100,20,seed)
        G=dense_gnm_random_graph(100,20,seed)

        G=watts_strogatz_graph(10,2,0.25,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 10)

        G=connected_watts_strogatz_graph(10,2,0.1,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 10)

        G=watts_strogatz_graph(10,4,0.25,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 20)

        G=newman_watts_strogatz_graph(10,2,0.0,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 10)

        G=newman_watts_strogatz_graph(10,4,0.25,seed)
        assert_equal(len(G), 10)
        assert_true(G.number_of_edges() >= 20)

        G=barabasi_albert_graph(100,1,seed)
        G=barabasi_albert_graph(100,3,seed)
        assert_equal(G.number_of_edges(),(97*3))

        G = extended_barabasi_albert_graph(100, 1, 0, 0, seed)
        assert_equal(G.number_of_edges(), 99)
        G = extended_barabasi_albert_graph(100, 3, 0, 0, seed)
        assert_equal(G.number_of_edges(), 97 * 3)
        G = extended_barabasi_albert_graph(100, 1, 0, 0.5, seed)
        assert_equal(G.number_of_edges(), 99)
        G = extended_barabasi_albert_graph(100, 2, 0.5, 0, seed)
        assert_greater(G.number_of_edges(), 100 * 3)
        assert_less(G.number_of_edges(), 100 * 4)

        G=extended_barabasi_albert_graph(100, 2, 0.3, 0.3, seed)
        assert_greater(G.number_of_edges(), 100 * 2)
        assert_less(G.number_of_edges(), 100 * 4)

        G=powerlaw_cluster_graph(100,1,1.0,seed)
        G=powerlaw_cluster_graph(100,3,0.0,seed)
        assert_equal(G.number_of_edges(),(97*3))

        G=random_regular_graph(10,20,seed)

        assert_raises(NetworkXError, random_regular_graph, 3, 21)

        constructor=[(10,20,0.8),(20,40,0.8)]
        G=random_shell_graph(constructor,seed)

        G=random_lobster(10,0.1,0.5,seed)
コード例 #2
0
    def smoke_test_random_graph(self):
        seed = 42
        G=gnp_random_graph(100,0.25,seed)
        G=binomial_graph(100,0.25,seed)
        G=erdos_renyi_graph(100,0.25,seed)
        G=fast_gnp_random_graph(100,0.25,seed)
        G=gnm_random_graph(100,20,seed)
        G=dense_gnm_random_graph(100,20,seed)

        G=watts_strogatz_graph(10,2,0.25,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 10)

        G=connected_watts_strogatz_graph(10,2,0.1,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 10)

        G=watts_strogatz_graph(10,4,0.25,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 20)

        G=newman_watts_strogatz_graph(10,2,0.0,seed)
        assert_equal(len(G), 10)
        assert_equal(G.number_of_edges(), 10)

        G=newman_watts_strogatz_graph(10,4,0.25,seed)
        assert_equal(len(G), 10)
        assert_true(G.number_of_edges() >= 20)

        G=barabasi_albert_graph(100,1,seed)
        G=barabasi_albert_graph(100,3,seed)
        assert_equal(G.number_of_edges(),(97*3))

        G = extended_barabasi_albert_graph(100, 1, 0, 0, seed)
        assert_equal(G.number_of_edges(), 99)
        G = extended_barabasi_albert_graph(100, 3, 0, 0, seed)
        assert_equal(G.number_of_edges(), 97 * 3)
        G = extended_barabasi_albert_graph(100, 1, 0, 0.5, seed)
        assert_equal(G.number_of_edges(), 99)
        G = extended_barabasi_albert_graph(100, 2, 0.5, 0, seed)
        assert_greater(G.number_of_edges(), 100 * 3)
        assert_less(G.number_of_edges(), 100 * 4)

        G=extended_barabasi_albert_graph(100, 2, 0.3, 0.3, seed)
        assert_greater(G.number_of_edges(), 100 * 2)
        assert_less(G.number_of_edges(), 100 * 4)

        G=powerlaw_cluster_graph(100,1,1.0,seed)
        G=powerlaw_cluster_graph(100,3,0.0,seed)
        assert_equal(G.number_of_edges(),(97*3))

        G=random_regular_graph(10,20,seed)

        assert_raises(NetworkXError, random_regular_graph, 3, 21)

        constructor=[(10,20,0.8),(20,40,0.8)]
        G=random_shell_graph(constructor,seed)

        G=random_lobster(10,0.1,0.5,seed)
コード例 #3
0
def main(arguments):
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('model',
                        help="Generative model for the random graph",
                        type=str)
    parser.add_argument('node_number', help="Number of nodes", type=int)
    parser.add_argument('-p',
                        '--params',
                        help="Model specific parameter for the graph",
                        type=float,
                        nargs='*')
    parser.add_argument('-s',
                        '--seed',
                        help="Seed for the RNG",
                        type=int,
                        default=42)
    args = parser.parse_args(arguments)

    if args.model == "gnp":
        p = args.params[0]
        g = gg.fast_gnp_random_graph(args.node_number, p, args.seed)
        for e in g.edges():
            print("{0} {1}".format(e[0], e[1]))

    if args.model == "gnm":
        m = args.params[0]
        g = gg.gnm_random_graph(args.node_number, m, args.seed)
        for e in g.edges():
            print("{0} {1}".format(e[0], e[1]))

    elif args.model == "ba":
        m = int(args.params[0])
        g = gg.barabasi_albert_graph(args.node_number, m, args.seed)
        for e in g.edges():
            print("{0} {1}".format(e[0], e[1]))

    elif args.model == "PL":  #random graph with power-law distribution
        kmin = args.params[0]
        exponent = args.params[1]
        kmax = np.sqrt(
            args.node_number) * kmin * (exponent - 1.0) / (exponent - 2.0)
        degree_vector = np.arange(kmin, kmax + 1)
        degree_distribution = degree_vector**(-exponent)
        degree_distribution /= np.sum(degree_distribution)
        degree_distribution = np.concatenate(
            (np.array([0] * int(kmin)), degree_distribution))
        cumulative_degree_distribution = np.array([
            np.sum(degree_distribution[0:i])
            for i in range(len(degree_distribution) + 1)
        ])
        #generate n expected degree from the dist
        u_vec = random(args.node_number)
        expected_degree_sequence = [
            np.searchsorted(cumulative_degree_distribution, u, side='right') -
            1 for u in u_vec
        ]
        output_edge_PL(expected_degree_sequence)
コード例 #4
0
ファイル: test.py プロジェクト: vnetserg/contraction
def generate_graph(n_vert, n_edges):
    '''
        Generate graph that consists of `n_vert` (ing) vertices
        and `n_edges` (int) edges. Return `networkx.classes.graph.Graph`.
    '''
    graph = gnm_random_graph(n_vert, n_edges, random.random(), True)
    for v1, v2 in graph.edges():
        w = random.randrange(1, MAX_WEIGHT)
        graph.edge[v1][v2]["weight"] = w
    return graph
コード例 #5
0
    def test_gnm(self):
        G = gnm_random_graph(10, 3)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 3)

        G = gnm_random_graph(10, 3, seed=42)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 3)

        G = gnm_random_graph(10, 100)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 45)

        G = gnm_random_graph(10, 100, directed=True)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 90)

        G = gnm_random_graph(10, -1.1)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 0)
コード例 #6
0
    def test_gnm(self):
        G = gnm_random_graph(10, 3)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 3)

        G = gnm_random_graph(10, 3, seed=42)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 3)

        G = gnm_random_graph(10, 100)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 45)

        G = gnm_random_graph(10, 100, directed=True)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 90)

        G = gnm_random_graph(10, -1.1)
        assert_equal(len(G), 10)
        assert_equal(sum(1 for _ in G.edges()), 0)
コード例 #7
0
    def test_gnm(self):
        G = gnm_random_graph(10, 3)
        assert len(G) == 10
        assert sum(1 for _ in G.edges()) == 3

        G = gnm_random_graph(10, 3, seed=42)
        assert len(G) == 10
        assert sum(1 for _ in G.edges()) == 3

        G = gnm_random_graph(10, 100)
        assert len(G) == 10
        assert sum(1 for _ in G.edges()) == 45

        G = gnm_random_graph(10, 100, directed=True)
        assert len(G) == 10
        assert sum(1 for _ in G.edges()) == 90

        G = gnm_random_graph(10, -1.1)
        assert len(G) == 10
        assert sum(1 for _ in G.edges()) == 0
コード例 #8
0
def test_scc():
    vertex_count = 8
    edges_count = 14
    tests_count = 5

    for _ in range(tests_count):
        ntx_graph = gnm_random_graph(vertex_count, edges_count, directed=True)
        my_graph = networkx_to_my(ntx_graph, vertex_count)
        scc_networkx = list(strongly_connected_components(ntx_graph))
        scc_my = calc_scc(my_graph)
        res = compare_scc(scc_my, scc_networkx)
        assert res
コード例 #9
0
    def smoke_test_random_graph(self):
        seed = 42
        G = gnp_random_graph(100, 0.25, seed)
        G = gnp_random_graph(100, 0.25, seed, directed=True)
        G = binomial_graph(100, 0.25, seed)
        G = erdos_renyi_graph(100, 0.25, seed)
        G = fast_gnp_random_graph(100, 0.25, seed)
        G = fast_gnp_random_graph(100, 0.25, seed, directed=True)
        G = gnm_random_graph(100, 20, seed)
        G = gnm_random_graph(100, 20, seed, directed=True)
        G = dense_gnm_random_graph(100, 20, seed)

        G = watts_strogatz_graph(10, 2, 0.25, seed)
        assert len(G) == 10
        assert G.number_of_edges() == 10

        G = connected_watts_strogatz_graph(10, 2, 0.1, tries=10, seed=seed)
        assert len(G) == 10
        assert G.number_of_edges() == 10
        pytest.raises(NetworkXError, connected_watts_strogatz_graph, \
                      10, 2, 0.1, tries=0)

        G = watts_strogatz_graph(10, 4, 0.25, seed)
        assert len(G) == 10
        assert G.number_of_edges() == 20

        G = newman_watts_strogatz_graph(10, 2, 0.0, seed)
        assert len(G) == 10
        assert G.number_of_edges() == 10

        G = newman_watts_strogatz_graph(10, 4, 0.25, seed)
        assert len(G) == 10
        assert G.number_of_edges() >= 20

        G = barabasi_albert_graph(100, 1, seed)
        G = barabasi_albert_graph(100, 3, seed)
        assert G.number_of_edges() == (97 * 3)

        G = extended_barabasi_albert_graph(100, 1, 0, 0, seed)
        assert G.number_of_edges() == 99
        G = extended_barabasi_albert_graph(100, 3, 0, 0, seed)
        assert G.number_of_edges() == 97 * 3
        G = extended_barabasi_albert_graph(100, 1, 0, 0.5, seed)
        assert G.number_of_edges() == 99
        G = extended_barabasi_albert_graph(100, 2, 0.5, 0, seed)
        assert G.number_of_edges() > 100 * 3
        assert G.number_of_edges() < 100 * 4

        G = extended_barabasi_albert_graph(100, 2, 0.3, 0.3, seed)
        assert G.number_of_edges() > 100 * 2
        assert G.number_of_edges() < 100 * 4

        G = powerlaw_cluster_graph(100, 1, 1.0, seed)
        G = powerlaw_cluster_graph(100, 3, 0.0, seed)
        assert G.number_of_edges() == (97 * 3)

        G = random_regular_graph(10, 20, seed)

        pytest.raises(NetworkXError, random_regular_graph, 3, 21)
        pytest.raises(NetworkXError, random_regular_graph, 33, 21)

        constructor = [(10, 20, 0.8), (20, 40, 0.8)]
        G = random_shell_graph(constructor, seed)

        G = random_lobster(10, 0.1, 0.5, seed)

        # difficult to find seed that requires few tries
        seq = random_powerlaw_tree_sequence(10, 3, seed=14, tries=1)
        G = random_powerlaw_tree(10, 3, seed=14, tries=1)
コード例 #10
0
    def test_random_graph(self):
        seed = 42
        G = gnp_random_graph(100, 0.25, seed)
        G = gnp_random_graph(100, 0.25, seed, directed=True)
        G = binomial_graph(100, 0.25, seed)
        G = erdos_renyi_graph(100, 0.25, seed)
        G = fast_gnp_random_graph(100, 0.25, seed)
        G = fast_gnp_random_graph(100, 0.25, seed, directed=True)
        G = gnm_random_graph(100, 20, seed)
        G = gnm_random_graph(100, 20, seed, directed=True)
        G = dense_gnm_random_graph(100, 20, seed)

        G = watts_strogatz_graph(10, 2, 0.25, seed)
        assert len(G) == 10
        assert G.number_of_edges() == 10

        G = connected_watts_strogatz_graph(10, 2, 0.1, tries=10, seed=seed)
        assert len(G) == 10
        assert G.number_of_edges() == 10
        pytest.raises(NetworkXError,
                      connected_watts_strogatz_graph,
                      10,
                      2,
                      0.1,
                      tries=0)

        G = watts_strogatz_graph(10, 4, 0.25, seed)
        assert len(G) == 10
        assert G.number_of_edges() == 20

        G = newman_watts_strogatz_graph(10, 2, 0.0, seed)
        assert len(G) == 10
        assert G.number_of_edges() == 10

        G = newman_watts_strogatz_graph(10, 4, 0.25, seed)
        assert len(G) == 10
        assert G.number_of_edges() >= 20

        G = barabasi_albert_graph(100, 1, seed)
        G = barabasi_albert_graph(100, 3, seed)
        assert G.number_of_edges() == (97 * 3)

        G = extended_barabasi_albert_graph(100, 1, 0, 0, seed)
        assert G.number_of_edges() == 99
        G = extended_barabasi_albert_graph(100, 3, 0, 0, seed)
        assert G.number_of_edges() == 97 * 3
        G = extended_barabasi_albert_graph(100, 1, 0, 0.5, seed)
        assert G.number_of_edges() == 99
        G = extended_barabasi_albert_graph(100, 2, 0.5, 0, seed)
        assert G.number_of_edges() > 100 * 3
        assert G.number_of_edges() < 100 * 4

        G = extended_barabasi_albert_graph(100, 2, 0.3, 0.3, seed)
        assert G.number_of_edges() > 100 * 2
        assert G.number_of_edges() < 100 * 4

        G = powerlaw_cluster_graph(100, 1, 1.0, seed)
        G = powerlaw_cluster_graph(100, 3, 0.0, seed)
        assert G.number_of_edges() == (97 * 3)

        G = random_regular_graph(10, 20, seed)

        pytest.raises(NetworkXError, random_regular_graph, 3, 21)
        pytest.raises(NetworkXError, random_regular_graph, 33, 21)

        constructor = [(10, 20, 0.8), (20, 40, 0.8)]
        G = random_shell_graph(constructor, seed)

        def is_caterpillar(g):
            """
            A tree is a caterpillar iff all nodes of degree >=3 are surrounded
            by at most two nodes of degree two or greater.
            ref: http://mathworld.wolfram.com/CaterpillarGraph.html
            """
            deg_over_3 = [n for n in g if g.degree(n) >= 3]
            for n in deg_over_3:
                nbh_deg_over_2 = [
                    nbh for nbh in g.neighbors(n) if g.degree(nbh) >= 2
                ]
                if not len(nbh_deg_over_2) <= 2:
                    return False
            return True

        def is_lobster(g):
            """
            A tree is a lobster if it has the property that the removal of leaf
            nodes leaves a caterpillar graph (Gallian 2007)
            ref: http://mathworld.wolfram.com/LobsterGraph.html
            """
            non_leafs = [n for n in g if g.degree(n) > 1]
            return is_caterpillar(g.subgraph(non_leafs))

        G = random_lobster(10, 0.1, 0.5, seed)
        assert max([G.degree(n) for n in G.nodes()]) > 3
        assert is_lobster(G)
        pytest.raises(NetworkXError, random_lobster, 10, 0.1, 1, seed)
        pytest.raises(NetworkXError, random_lobster, 10, 1, 1, seed)
        pytest.raises(NetworkXError, random_lobster, 10, 1, 0.5, seed)

        # docstring says this should be a caterpillar
        G = random_lobster(10, 0.1, 0.0, seed)
        assert is_caterpillar(G)

        # difficult to find seed that requires few tries
        seq = random_powerlaw_tree_sequence(10, 3, seed=14, tries=1)
        G = random_powerlaw_tree(10, 3, seed=14, tries=1)