def test_generate_cover_coverage():
    for graph_size in range(1, 40):
        g = generate_weighted_connected_graph(graph_size)
        for requested_cover_size in range(1, graph_size):
            cover = generate_cover(g, requested_cover_size)
            check_cover_size(cover, requested_cover_size)
            check_cover_correctness(cover, g.nodes())
示例#2
0
def cover_size_experiment(experiment_type='normal'):
    sampled_graphs = EXPERIMENTS_PARAMS['sampled graphs'][experiment_type]
    k_integers = EXPERIMENTS_PARAMS['k integers'][experiment_type]

    cover_types = [(5, 30, 0), (10, 20, 0), (20, 10, 30), (30, 5, 20),
                   (40, 5, 15), (50, 0, 10)]

    results = np.zeros((len(cover_types), NUM_OF_RESULTS_PARAMS))

    for _ in range(sampled_graphs):
        g = generate_weighted_connected_graph(NUM_OF_NODES, p=0.5)
        for i, (cover_size, min_cluster_size,
                max_cluster_size) in enumerate(cover_types):
            cover = generate_cover(g,
                                   cover_size,
                                   min_cluster_size=min_cluster_size,
                                   max_cluster_size=max_cluster_size)

            cover_radius, cover_degree = get_collection_data(g, cover)

            for k in k_integers:
                coarsening_cover = max_cover(cover, k)
                coarsening_radius, coarsening_degree = get_collection_data(
                    g, coarsening_cover)

                results[
                    i] += cover_radius, coarsening_radius, cover_degree, coarsening_degree

    results /= (sampled_graphs * len(k_integers))

    x_axis = [cover_type[0] for cover_type in cover_types]
    plot_experiment_results(results,
                            x_axis,
                            'cover size',
                            title='Cover Size Experiment')
示例#3
0
def k_integer_experiment(experiment_type='normal'):
    sampled_graphs = EXPERIMENTS_PARAMS['sampled graphs'][experiment_type]
    sampled_covers = EXPERIMENTS_PARAMS['sampled covers'][experiment_type]
    k_limit = EXPERIMENTS_PARAMS['k limit'][experiment_type]

    cover_size = 20
    max_cluster_size = 15

    results = np.zeros((k_limit, NUM_OF_RESULTS_PARAMS))

    for _ in range(sampled_graphs):
        g = generate_weighted_connected_graph(NUM_OF_NODES)

        for _ in range(sampled_covers):

            cover = generate_cover(g,
                                   cover_size,
                                   max_cluster_size=max_cluster_size)
            cover_radius, cover_degree = get_collection_data(g, cover)

            for k in range(1, k_limit + 1):
                coarsening_cover = max_cover(cover, k)
                coarsening_radius, coarsening_degree = get_collection_data(
                    g, coarsening_cover)

                results[
                    k -
                    1] += cover_radius, coarsening_radius, cover_degree, coarsening_degree

    results /= (sampled_graphs * sampled_covers)

    x_axis = [k for k in range(1, k_limit + 1)]
    plot_experiment_results(results, x_axis, 'k', title='K Integer Experiment')
示例#4
0
def test_max_cover():
    for size in range(1, 101, 20):
        g = generate_weighted_connected_graph(size)
        cover = generate_cover(g, 1)
        for k in range(1, 10):
            t = max_cover(cover, k)
            check_t_radius(g, cover, t, k)
            check_t_degree(cover, t, k)
            check_coarsening(cover, t)
def test_generate_random_cluster_min_max_size():
    for size in range(1, 30):
        g = generate_weighted_connected_graph(size)
        for i in range(1, size):
            for j in range(i, size):
                c = generate_random_cluster(g,
                                            min_cluster_size=i,
                                            max_cluster_size=j)
                check_cluster_connectivity(g, c)
示例#6
0
def test_procedure_cover():
    for size in range(1, 101, 20):
        g = generate_weighted_connected_graph(size)
        cover = generate_cover(g, 1)
        for k in range(1, 10):
            dr, dt = procedure_cover(cover, k)
            check_coarsening(dr, dt)
            check_dt_disjointness(dt)
            check_dr_bound(dr, cover, k)
            check_dt_radius(g, dt, cover, k)
def test_generate_cover_min_max_cluster_size():
    for graph_size in range(1, 20):
        g = generate_weighted_connected_graph(graph_size)
        for i in range(1, graph_size):
            for j in range(i, graph_size):
                cover = generate_cover(g,
                                       1,
                                       min_cluster_size=i,
                                       max_cluster_size=j)
                check_cover_size(cover, 1)
                check_cover_correctness(cover, g.nodes())
                check_cover_clusters_size(cover, i, j)
示例#8
0
def graph_density_experiment(experiment_type='normal'):
    sampled_graphs = EXPERIMENTS_PARAMS['sampled graphs'][experiment_type]
    sampled_covers = EXPERIMENTS_PARAMS['sampled covers'][experiment_type]
    k_integers = EXPERIMENTS_PARAMS['k integers'][experiment_type]
    probability_step = EXPERIMENTS_PARAMS['probability step'][experiment_type]

    cover_size = 20
    max_cluster_size = 15

    probabilities = [
        0.01 + probability_step * i for i in range(int(1 / probability_step))
    ]
    if DEBUG:
        print(probabilities)

    results = np.zeros((len(probabilities), NUM_OF_RESULTS_PARAMS))

    for i, p in enumerate(probabilities):

        for _ in range(sampled_graphs):
            g = generate_weighted_connected_graph(NUM_OF_NODES, p=p)
            for _ in range(sampled_covers):

                cover = generate_cover(g,
                                       cover_size,
                                       max_cluster_size=max_cluster_size)
                cover_radius, cover_degree = get_collection_data(g, cover)

                for k in k_integers:
                    coarsening_cover = max_cover(cover, k)
                    coarsening_radius, coarsening_degree = get_collection_data(
                        g, coarsening_cover)

                    results[
                        i] += cover_radius, coarsening_radius, cover_degree, coarsening_degree

        results[i] /= (sampled_graphs * sampled_covers * len(k_integers))

    plot_experiment_results(results,
                            probabilities,
                            'edge probability',
                            title='Graph Density Experiment')
def test_generate_random_cluster_connectivity():
    for size in range(1, 100):
        g = generate_weighted_connected_graph(size)
        for _ in range(10):
            c = generate_random_cluster(g)
            check_cluster_connectivity(g, c)
def test_generate_weighted_connected_graph_weights():
    for size in range(1, 101, 20):
        for max_weight in range(50):
            g = generate_weighted_connected_graph(size, max_weight=max_weight)
            check_graph_weights(g, max_weight)
def test_generate_weighted_connected_graph_connectivity():
    for size in range(1, 100):
        g = generate_weighted_connected_graph(size)
        check_graph_connectivity(g)