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