コード例 #1
0
def test_greedy(cascades_on_grid):
    for g, infection_times, source, obs_nodes, true_tree, model, q, i in cascades_on_grid:
        print(model, q, i)
        root = earliest_obs_node(obs_nodes, infection_times)
        tree = find_tree_greedy(g,
                                root,
                                infection_times,
                                source,
                                obs_nodes,
                                debug=False,
                                verbose=True)
        assert is_feasible(tree, root, obs_nodes, infection_times)
コード例 #2
0
def test_temporal_bfs(cascades_on_grid):
    for g, infection_times, source, obs_nodes, true_tree, model, q, i in cascades_on_grid:
        print(model, q, i)
        root = earliest_obs_node(obs_nodes, infection_times)
        tree = temporal_bfs(
            g,
            root,
            infection_times,
            source,
            obs_nodes,
            debug=False,
            verbose=False,
        )
        assert is_feasible(tree, root, obs_nodes, infection_times)
コード例 #3
0
def test_closure(cascades_on_grid):
    for g, infection_times, source, obs_nodes, true_tree, model, q, i in cascades_on_grid:
        print(model, q, i)
        root = earliest_obs_node(obs_nodes, infection_times)
        tree = find_tree_by_closure(
            g,
            root,
            infection_times,
            obs_nodes,
            strictly_smaller=False,
            debug=False,
            verbose=False,
        )
        assert is_feasible(tree, root, obs_nodes, infection_times)
コード例 #4
0
def test_vanilla_steiner_tree(cascades_on_grid):
    for g, infection_times, source, obs_nodes, true_tree, model, q, i in cascades_on_grid:
        print(model, q, i)
        root = earliest_obs_node(obs_nodes, infection_times)
        pred_tree = get_steiner_tree(
            g,
            root,
            obs_nodes,
            debug=False,
            verbose=False,
        )
        # it's undirected, so test is a bit different
        assert is_arborescence(pred_tree)

        for o in obs_nodes:
            assert pred_tree.vertex(o) is not None
コード例 #5
0
def test_mst(cascades_on_tree):
    for g, infection_times, source, obs_nodes, true_tree, model, q, i in cascades_on_tree:
        print(model, q, i)
        root = earliest_obs_node(obs_nodes, infection_times)
        tree = steiner_tree_mst(
            g,
            root,
            infection_times,
            source,
            obs_nodes,
            closure_builder=build_closure,
            strictly_smaller=False,
            debug=False,
            verbose=False,
        )
        assert is_feasible(tree, root, obs_nodes, infection_times)
コード例 #6
0
def get_tree(g,
             infection_times,
             source,
             obs_nodes,
             method,
             verbose=False,
             debug=False):
    root = earliest_obs_node(obs_nodes, infection_times)
    if method == 'closure':
        tree = find_tree_by_closure(g,
                                    root,
                                    infection_times,
                                    obs_nodes,
                                    debug=debug,
                                    strictly_smaller=False,
                                    verbose=verbose)
    elif method == 'greedy':
        tree = find_tree_greedy(g,
                                root,
                                infection_times,
                                source,
                                obs_nodes,
                                debug=debug,
                                verbose=verbose)
    elif method == 'no-order':
        tree = get_steiner_tree(
            g,
            root,
            obs_nodes,
            debug=False,
            verbose=False,
        )
    elif method == 'tbfs':
        tree = temporal_bfs(g,
                            root,
                            infection_times,
                            source,
                            obs_nodes,
                            debug=debug,
                            verbose=verbose)
    else:
        raise ValueError('unknown method ', method)

    return tree
コード例 #7
0
def get_tree(g,
             infection_times,
             source,
             obs_nodes,
             method,
             verbose=False,
             debug=False):
    root = earliest_obs_node(obs_nodes, infection_times)
    if method == 'mst':
        tree = steiner_tree_mst(g,
                                root,
                                infection_times,
                                source,
                                obs_nodes,
                                debug=debug,
                                closure_builder=build_closure,
                                strictly_smaller=False,
                                verbose=verbose)
    elif method == 'greedy':
        tree = steiner_tree_greedy(g,
                                   root,
                                   infection_times,
                                   source,
                                   obs_nodes,
                                   debug=debug,
                                   verbose=verbose)
    elif method == 'no-order':
        tree = get_steiner_tree(
            g,
            root,
            obs_nodes,
            debug=False,
            verbose=False,
        )
    elif method == 'tbfs':
        tree = temporal_bfs(g,
                            root,
                            infection_times,
                            source,
                            obs_nodes,
                            debug=debug,
                            verbose=verbose)
    return tree
コード例 #8
0
def get_tree(g, infection_times, source, obs_nodes, method, verbose=False, debug=False):
    root = earliest_obs_node(obs_nodes, infection_times)
    if method == 'mst':
        tree = steiner_tree_mst(g, root, infection_times, source, obs_nodes, debug=debug,
                                closure_builder=build_closure,
                                strictly_smaller=False,
                                verbose=verbose)
    elif method == 'greedy':
        tree = steiner_tree_greedy(g, root, infection_times, source, obs_nodes,
                                   debug=debug,
                                   verbose=verbose)
    elif method == 'no-order':
        tree = get_steiner_tree(
            g, root, obs_nodes,
            debug=False,
            verbose=False,
        )
    elif method == 'tbfs':
        tree = temporal_bfs(g, root, infection_times, source, obs_nodes,
                            debug=debug,
                            verbose=verbose)
    return tree