22#ifndef LIBSEMIGROUPS_PATHS_COUNT_HPP_
23#define LIBSEMIGROUPS_PATHS_COUNT_HPP_
32#include "detail/containers.hpp"
33#include "detail/eigen.hpp"
36#include "constants.hpp"
38#include "exception.hpp"
39#include "word-graph-helpers.hpp"
40#include "word-graph.hpp"
41#include "word-range.hpp"
44#ifndef LIBSEMIGROUPS_PARSED_BY_DOXYGEN
45namespace libsemigroups::v4 {
54 enum class algorithm {
81 template <
typename Node1,
typename Node2>
82 [[nodiscard]] algorithm count_algorithm(WordGraph<Node1>
const& wg,
83 Node2 source)
noexcept {
86 return algorithm::acyclic;
111 template <
typename Node1,
typename Node2>
112 [[nodiscard]] uint64_t
count(WordGraph<Node1>
const& wg, Node2 source);
135 template <
typename Node1,
typename Node2>
136 [[nodiscard]] algorithm count_algorithm(WordGraph<Node1>
const& wg,
191 template <
typename Node1,
typename Node2>
192 [[nodiscard]] uint64_t
count(WordGraph<Node1>
const& wg,
196 algorithm lgrthm = algorithm::automatic);
221 template <
typename Node1,
typename Node2>
222 [[nodiscard]] algorithm count_algorithm(WordGraph<Node1>
const& wg,
273 template <
typename Node1,
typename Node2>
274 [[nodiscard]] uint64_t
count(WordGraph<Node1>
const& wg,
279 algorithm lgrthm = algorithm::automatic);
284#include "paths-count.tpp"
auto dfs(Ukkonen const &u, T &helper)
Perform a depth first search in a suffix tree.