@@ -14,10 +14,10 @@ namespace hgl::algorithm {
1414
1515template <
1616 result_discriminator Result = ret,
17- hgl:: traits::c_bf_directed_hypergraph H,
17+ traits::c_bf_directed_hypergraph H,
1818 traits::c_forward_range_of<typename H::id_type> RootRange = std::vector<typename H::id_type>,
19- gl:: traits::c_optional_callback<void , const search_node<H>&> PreVisitCallback = empty_callback,
20- gl:: traits::c_optional_callback<void , const search_node<H>&> PostVisitCallback = empty_callback>
19+ traits::c_optional_callback<void , const search_node<H>&> PreVisitCallback = empty_callback,
20+ traits::c_optional_callback<void , const search_node<H>&> PostVisitCallback = empty_callback>
2121return_type<Result, search_tree<H>> backward_bfs (
2222 const H& hypergraph,
2323 const RootRange& root_vertices,
@@ -34,18 +34,14 @@ return_type<Result, search_tree<H>> backward_bfs(
3434 root_vertices
3535 | std::views::transform ([](const id_type root_id) { return search_node<H>{root_id}; });
3636
37- const auto traverse_hyperedge_pred = [&tail_unvisited](id_type he_id, id_type) {
38- return static_cast <decision>(--tail_unvisited[gl::to_idx (he_id)] == 0uz);
39- };
40-
4137 // clang-format off
4238
4339 bfs<traversal_direction::forward>(
4440 hypergraph,
4541 root_queue,
4642 default_visit_vertex_predicate<H>(visited_vertices),
4743 default_visit_callback<H, Result>(visited_vertices, stree),
48- traverse_hyperedge_pred ,
44+ blocking_traverse_hyperedge_predicate (tail_unvisited) ,
4945 default_enqueue_vertex_predicate<H, true >(visited_vertices),
5046 pre_visit,
5147 post_visit
@@ -59,10 +55,10 @@ return_type<Result, search_tree<H>> backward_bfs(
5955
6056template <
6157 result_discriminator Result = ret,
62- hgl:: traits::c_bf_directed_hypergraph H,
58+ traits::c_bf_directed_hypergraph H,
6359 traits::c_forward_range_of<typename H::id_type> RootRange = std::vector<typename H::id_type>,
64- gl:: traits::c_optional_callback<void , const search_node<H>&> PreVisitCallback = empty_callback,
65- gl:: traits::c_optional_callback<void , const search_node<H>&> PostVisitCallback = empty_callback>
60+ traits::c_optional_callback<void , const search_node<H>&> PreVisitCallback = empty_callback,
61+ traits::c_optional_callback<void , const search_node<H>&> PostVisitCallback = empty_callback>
6662return_type<Result, search_tree<H>> backward_dfs (
6763 const H& hypergraph,
6864 const RootRange& root_vertices,
@@ -79,18 +75,14 @@ return_type<Result, search_tree<H>> backward_dfs(
7975 root_vertices
8076 | std::views::transform ([](const id_type root_id) { return search_node<H>{root_id}; });
8177
82- const auto traverse_hyperedge_pred = [&tail_unvisited](id_type he_id, id_type) {
83- return static_cast <decision>(--tail_unvisited[gl::to_idx (he_id)] == 0uz);
84- };
85-
8678 // clang-format off
8779
8880 dfs<traversal_direction::forward>(
8981 hypergraph,
9082 root_queue,
9183 default_visit_vertex_predicate<H>(visited_vertices),
9284 default_visit_callback<H, Result>(visited_vertices, stree),
93- traverse_hyperedge_pred ,
85+ blocking_traverse_hyperedge_predicate (tail_unvisited) ,
9486 default_enqueue_vertex_predicate<H, true >(visited_vertices),
9587 pre_visit,
9688 post_visit
0 commit comments