|
template<class TaskProcessingModel = concurrency::serial<void>, traversal_flavour F, network G, disconnected_discovery_mode Mode, class NBEF = null_func_obj, class NAEF = null_func_obj, class EFTF = null_func_obj, class ESTF = null_func_obj>
requires (!is_directed(G::flavour)) && (std::invocable<NBEF, typename G::edge_index_type>) && (std::invocable<NAEF, typename G::edge_index_type>) && (std::invocable<EFTF, typename G::const_edge_iterator>) && (std::invocable<ESTF, typename G::const_edge_iterator>) |
constexpr auto | sequoia::maths::traverse (traversal_constant< F > tc, const G &graph, const traversal_conditions< Mode > conditions, NBEF &&nodeBeforeEdgesFn={}, NAEF &&nodeAfterEdgesFn={}, EFTF &&edgeFirstTraversalFn={}, ESTF &&edgeSecondTraversalFn={}, TaskProcessingModel &&taskProcessingModel={}) |
|
template<class TaskProcessingModel = concurrency::serial<void>, traversal_flavour F, network G, disconnected_discovery_mode Mode, class NBEF = null_func_obj, class NAEF = null_func_obj, class EFTF = null_func_obj>
requires (is_directed(G::flavour)) && (std::invocable<NBEF, typename G::edge_index_type>) && (std::invocable<NAEF, typename G::edge_index_type>) && (std::invocable<EFTF, typename G::const_edge_iterator>) |
constexpr auto | sequoia::maths::traverse (traversal_constant< F > tc, const G &graph, const traversal_conditions< Mode > conditions, NBEF &&nodeBeforeEdgesFn={}, NAEF &&nodeAfterEdgesFn={}, EFTF &&edgeFirstTraversalFn={}, TaskProcessingModel &&taskProcessingModel={}) |
|
template<class TaskProcessingModel = concurrency::serial<void>, network G, disconnected_discovery_mode Mode, class NBEF = null_func_obj, class NAEF = null_func_obj, class ETUN = null_func_obj>
requires (std::invocable<NBEF, typename G::edge_index_type>) && (std::invocable<NAEF, typename G::edge_index_type>) && (std::invocable<ETUN, typename G::const_edge_iterator>) |
constexpr auto | sequoia::maths::traverse (depth_first_search_type, const G &graph, const traversal_conditions< Mode > conditions, NBEF &&nodeBeforeEdgesFn={}, NAEF &&nodeAfterEdgesFn={}, ETUN &&edgeToUndiscoveredNodeFn={}, TaskProcessingModel &&taskProcessingModel={}) |
|
template<class TaskProcessingModel = concurrency::serial<void>, network G, disconnected_discovery_mode Mode, class NBEF = null_func_obj, class NAEF = null_func_obj, class EFTF = null_func_obj, class ESTF = null_func_obj, class QCompare = graph_impl::node_comparer<G, std::ranges::less>>
requires (!is_directed(G::flavour)) && (std::invocable<NBEF, typename G::edge_index_type>) && (std::invocable<NAEF, typename G::edge_index_type>) && (std::invocable<EFTF, typename G::const_edge_iterator>) && (std::invocable<ESTF, typename G::const_edge_iterator>) |
constexpr auto | sequoia::maths::traverse (priority_first_search_type, const G &graph, const traversal_conditions< Mode > conditions, NBEF &&nodeBeforeEdgesFn={}, NAEF &&nodeAfterEdgesFn={}, EFTF &&edgeFirstTraversalFn={}, ESTF &&edgeSecondTraversalFn={}, TaskProcessingModel &&taskProcessingModel={}) |
|
template<class TaskProcessingModel = concurrency::serial<void>, network G, disconnected_discovery_mode Mode, class NBEF = null_func_obj, class NAEF = null_func_obj, class EFTF = null_func_obj, class QCompare = graph_impl::node_comparer<G, std::ranges::less>>
requires (is_directed(G::flavour)) && (std::invocable<NBEF, typename G::edge_index_type>) && (std::invocable<NAEF, typename G::edge_index_type>) && (std::invocable<EFTF, typename G::const_edge_iterator>) |
constexpr auto | sequoia::maths::traverse (priority_first_search_type, const G &graph, const traversal_conditions< Mode > conditions, NBEF &&nodeBeforeEdgesFn={}, NAEF &&nodeAfterEdgesFn={}, EFTF &&edgeFirstTraversalFn={}, TaskProcessingModel &&taskProcessingModel={}) |
|
Breadth first, depth first and priority searches.