NAME
    CyclesDetection

SYNOPSIS
    use Graph::CyclesDetection;

    use Graph::CyclesDetection qw(:all);

DESCRIPTION
    CyclesDetection class provides the following methods:

    new, Copy, DetectCycles,
    DetectCyclesUsingCollapsingPathGraphMethodology, GetAllCyclicPaths,
    GetIndependentCyclicPaths, StringifyCyclesDetection

    Cycles in a Graph are detected using collapsing path graph [Ref 31]
    methodology.

  METHODS
    new
            $NewCyclesDetection = new Graph::CyclesDetection($Graph);

        Using specified *Graph*, new method creates a new CyclesDetection
        object and returns newly created CyclesDetection object.

    Copy
            $NewCyclesDetection = $CyclesDetection->Copy();

        Copies *CyclesDetection* and its associated data using
        Storable::dclone and returns a new CyclesDetection object.

    DetectCycles
            $CyclesDetection->DetectCycles();

        Detects all cycles in a graph and returns *CyclesDetection*.

    DetectCyclesUsingCollapsingPathGraphMethodology
            $CyclesDetection->DetectCyclesUsingCollapsingPathGraphMethodology();

        Detects all cycles in a graph using collapsing path graph [Ref 31]
        methodology and returns *CyclesDetection*.

    GetAllCyclicPaths
            @AllCyclicPaths = $CyclesDetection->GetAllCyclicPaths();
            $NumOfAllCyclicPaths = $CyclesDetection->GetAllCyclicPaths();

        Returns an array containing references to all cyclic paths
        identified during cycles detection. In scalar text, number of cycles
        is returned.

    GetIndependentCyclicPaths
            @IndependentCyclicPaths = $CyclesDetection->GetAllCyclicPaths();
            $NumOfIndependentCyclicPaths = $CyclesDetection->GetAllCyclicPaths();

        Returns an array containing references to independent cyclic paths
        identified during cycles detection. In scalar text, number of cycles
        is returned.

        A set of independent cycles identified during cycles detection
        doesn't correspond to the basis set of rings or smallest set of
        smallest rings (SSSR) [ Refs 29-30 ]; instead, set of cycles
        indentified as independent cycles simply correpond to cycles which
        contain no other cycle as their subcycles and can't be described as
        a linear combination of smaller cycles. And it also happens to
        contain all the rings in basis set of rings and SSSR. In other
        words, it's a superset of a basis set of cycles and SSSR. For
        example, six four membered cycles are indentified for cubane, which
        is one more than the basis set of cycles.

    StringifyCyclesDetection
            $String = $CyclesDetection->StringifyCyclesDetection();

        Returns a string containing information about *CyclesDetection*
        object.

AUTHOR
    Manish Sud <msud@san.rr.com>

SEE ALSO
    Graph.pm, Path.pm, PathGraph.pm

COPYRIGHT
    Copyright (C) 2018 Manish Sud. All rights reserved.

    This file is part of MayaChemTools.

    MayaChemTools is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation; either version 3 of the License, or (at
    your option) any later version.

