cbegin_panislo

inline const_panislo_iterator libsemigroups::ActionDigraph::cbegin_panislo(node_type const source, size_t const min = 0, size_t const max = POSITIVE_INFINITY) const

Returns a forward iterator pointing to a pair consisting of the edge labels of the first path (in short-lex order) starting at source with length in the range \([min, max)\) and the last node of that path.

PANISLO = Path And Node In Short-Lex Order

If incremented, the iterator will point to the next least edge labelling of a path (in short-lex order), and its last node, with length in the range \([min, max)\). Iterators of the type returned by this function are equal whenever they point to equal objects.

See

cend_panislo

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 are infinitely many paths starting at source, and so max should be chosen with some care.

Parameters
  • source – the source 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 source is not a node in the digraph.

Returns

An iterator it of type const_panislo_iterator pointing to a std::pair where:

  • it->first is a libsemigroups::word_type consisting of the edge labels of the first path (in short-lex order) from source of length in the range \([min, max)\); and

  • it->second is the last node on the path from source labelled by it->first, a value of ActionDigraph::node_type.