cbegin_pstilo

inline const_pstilo_iterator libsemigroups::ActionDigraph::cbegin_pstilo(node_type const source, node_type const target, size_t const min = 0, size_t const max = POSITIVE_INFINITY) const

Returns a forward iterator pointing to the edge labels of the first path (in lexicographical order) starting at the node source and ending at the node target with length in the range \([min, max)\).

PSTILO = Path Source Target In Lexicographical Order

If incremented, the iterator will point to the next least edge labelling of a path (in lexicographical order). Iterators of the type returned by this function are equal whenever they point to equal objects.

See

cend_pstilo

Warning

Copying iterators of this type is expensive. As a consequence, prefix incrementing ++it the returned iterator it significantly cheaper than postfix incrementing it++.

Warning

If the action digraph represented by this contains a cycle that is reachable from source, then there may be infinitely many paths starting at source, and so max should be chosen with some care.

Parameters
  • source – the first node

  • target – the last node

  • min – the minimum length of a path to enumerate (defaults to 0)

  • max – the maximum length of a path to enumerate (defaults to libsemigroups::POSITIVE_INFINITY).

Throws

LibsemigroupsException – if target or source is not a node in the digraph.

Returns

An iterator it of type const_pstilo_iterator pointing to a libsemigroups::word_type consisting of the edge labels of the first path (in lexicographical order) from the node source to the node target with length in the range \([min, max)\) (if any).