Defines a method to find the cycles of a molecule. The distinction between a
cycle and a ring is that cycles are stored as indices (int[]) while rings are
stored as atoms (IAtom[]) in a IRing.

Find the cycles of the provided molecule when an adjacent relation
(graph) is already available. The graph can be obtained through GraphUtil.toAdjList(IAtomContainer), for convenience find(IAtomContainer, int) will automatically create the graph.

Parameters:

molecule - input structure

graph - adjacency list representation for fast traversal

length - maximum length cycle to find (set to
molecule.getAtomCount() for all)

Returns:

an instance for querying the cycles (rings) in the molecule

Throws:

Intractable - thrown if problem could not be solved within some
predefined bounds.