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())
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')
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')
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)
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)
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)