PathsTraversal

use Graph::PathsTraversal;

use Graph::PathsTraversal qw(:all);

**PathsTraversal** class provides the following methods:

new, Copy, GetConnectedComponentsVertices, GetPaths, GetVertices, GetVerticesDepth, GetVerticesNeighborhoods, GetVerticesNeighborhoodsWithSuccessors, GetVerticesPredecessors, GetVerticesRoots, PerformAllPathsSearch, PerformAllPathsSearchWithLength, PerformAllPathsSearchWithLengthUpto, PerformBreadthFirstSearch, PerformBreadthFirstSearchWithLimit, PerformDepthFirstSearch, PerformDepthFirstSearchWithLimit, PerformNeighborhoodVerticesSearch, PerformNeighborhoodVerticesSearchWithRadiusUpto, PerformNeighborhoodVerticesSearchWithSuccessors, PerformNeighborhoodVerticesSearchWithSuccessorsAndRadiusUpto, PerformPathsSearch, PerformPathsSearchBetween, PerformPathsSearchWithLength, PerformPathsSearchWithLengthUpto, StringifyPaths, StringifyPathsTraversal, StringifyVerticesDepth, StringifyVerticesNeighborhoods, StringifyVerticesNeighborhoodsWithSuccessors, StringifyVerticesPredecessors, StringifyVerticesRoots, StringifyVerticesSuccessors

**new**-
$PathsTraversal = new Graph::PathsTraversal($Graph);
Using specified

*Graph*,**new**method creates a new**PathsTraversal**object and returns newly created**PathsTraversal**object. **Copy**-
$PathsTraversal = $PathsTraversal->Copy();
Copies

*PathsTraversal*and its associated data using**Storable::dclone**and returns a new**PathsTraversal**object. **GetConnectedComponentsVertices**-
@Components = $PathsTraversal->GetConnectedComponentsVertices();

$NumOfComponents = $PathsTraversal->GetConnectedComponentsVertices();Returns an array of

**Components**containing references to arrays of vertex IDs corresponding to connected components of graph after a search. In scalar context, the number of connected components is returned.Connected

**Components**is sorted in descending order of number of vertices in each connected component. **GetPaths**-
@Paths = $PathsTraversal->GetPaths();

$NumOfPaths = $PathsTraversal->GetPaths();Returns an array of

**Paths**containing references to arrays of vertex IDs corresponding to to paths traversed in a graph after a search. In scalar context, number of paths is returned.**Paths**array is sorted in ascending order of path lengths. **GetVertices**-
@Vertices = $PathsTraversal->GetVertices();

$NumOfVertices = $PathsTraversal->GetVertices();Returns an array containing an ordered list of vertex IDs traversed during a search. In scalar context, the number of vertices is returned.

**GetVerticesDepth**-
%VerticesDepth = $PathsTraversal->GetVerticesDepth();
Returns a hash

*VerticesDepth*containing vertex ID and depth from root vertex as a key and value pair for all vertices traversed during a search. **GetVerticesNeighborhoods**-
@VerticesNeighborhoods = $PathsTraversal->GetVerticesNeighborhoods();

$NumOfVerticesNeighborhoods = $PathsTraversal->GetVerticesNeighborhoods();Returns an array

*VerticesNeighborhoods*containing references to arrays corresponding to vertices collected at various neighborhood radii around a specified vertex during a vertex neighborhood search. In scalar context, the number of neighborhoods is returned. **GetVerticesNeighborhoodsWithSuccessors**-
@VerticesNeighborhoodsWithSucceessors = $PathsTraversal->GetVerticesNeighborhoodsWithSuccessors();

$NumOfVerticesNeighborhoodsWithSucceessors = $PathsTraversal->GetVerticesNeighborhoodsWithSuccessors();Returns an array

*VerticesNeighborhoodsWithSucceessors*containing references to arrays with first value corresponding to vertex IDs corresponding to a vertex at a specific neighborhood radius level and second value a reference to an arraty containing its successors. **GetVerticesPredecessors**-
%VerticesPredecessors = $PathsTraversal->GetVerticesPredecessors();
Returns a hash

*VerticesPredecessors*containing vertex ID and predecessor vertex ID as key and value pair for all vertices traversed during a search. **GetVerticesRoots**-
%VerticesRoots = $PathsTraversal->GetVerticesRoots();
Returns a hash

*VerticesPredecessors*containing vertex ID and root vertex ID as a key and value pair for all vertices traversed during a search. **PerformAllPathsSearch**-
$PathsTraversal->PerformAllPathsSearch($StartVertexID, [$AllowCycles]);
Searches all paths starting from a

*StartVertexID*with sharing of edges in paths traversed and returns*PathsTraversal*.By default, cycles are included in paths. A path containing a cycle is terminated at a vertex completing the cycle.

**PerformAllPathsSearchWithLength**-
$PathsTraversal->PerformAllPathsSearchWithLength($StartVertexID, $Length, [$AllowCycles]);
Searches all paths starting from

*StartVertexID*of specific*Length*with sharing of edges in paths traversed and returns*PathsTraversal*.By default, cycles are included in paths. A path containing a cycle is terminated at a vertex completing the cycle.

**PerformAllPathsSearchWithLengthUpto**-
$PathsTraversal->PerformAllPathsSearchWithLengthUpto($StartVertexID, $Length, [$AllowCycles]);
Searches all paths starting from

*StartVertexID*of length upto a*Length*with sharing of edges in paths traversed and returns*PathsTraversal*.By default, cycles are included in paths. A path containing a cycle is terminated at a vertex completing the cycle.

**PerformBreadthFirstSearch**-
$PathsTraversal->PerformBreadthFirstSearch();
Performs Breadth First Search (BFS) and returns

*PathsTraversal*. **PerformBreadthFirstSearchWithLimit**-
$PathsTraversal->PerformBreadthFirstSearchWithLimit($DepthLimit, [$RootVertexID]);
Performs BFS with depth up to

*DepthLimit*starting at*RootVertexID*and returns*PathsTraversal*. By default, root vertex ID corresponds to an arbitrary vertex. **PerformDepthFirstSearch**-
$Return = $PathsTraversal->PerformDepthFirstSearch();
Performs Depth First Search (DFS) and returns

*PathsTraversal*. **PerformDepthFirstSearchWithLimit**-
$PathsTraversal->PerformDepthFirstSearchWithLimit($DepthLimit, [$RootVertexID]);
Performs DFS with depth up to

*DepthLimit*starting at*RootVertexID*and returns*PathsTraversal*. By default, root vertex ID corresponds to an arbitrary vertex. **PerformNeighborhoodVerticesSearch**-
$PathsTraversal->PerformNeighborhoodVerticesSearch($StartVertexID);
Searches vertices around

*StartVertexID*at all neighborhood radii and returns*PathsTraversal*object. **PerformNeighborhoodVerticesSearchWithRadiusUpto**-
$PathsTraversal->PerformNeighborhoodVerticesSearchWithRadiusUpto( $StartVertexID, $Radius);
Searches vertices around

*StartVertexID*with neighborhood radius up to*Radius*and returns*PathsTraversal*object. **PerformNeighborhoodVerticesSearchWithSuccessors**-
$PathsTraversal->PerformNeighborhoodVerticesSearchWithSuccessors( $StartVertexID);
Searches vertices around

*StartVertexID*at all neighborhood radii along with identification of successor vertices for each vertex found during the traversal and returns*PathsTraversal*. **PerformNeighborhoodVerticesSearchWithSuccessorsAndRadiusUpto**-
$PathsTraversal->

PerformNeighborhoodVerticesSearchWithSuccessorsAndRadiusUpto( $StartVertexID, $Radius);Searches vertices around

*StartVertexID*with neighborhood radius upto*Radius*along with identification of successor vertices for each vertex found during the traversal and returns*PathsTraversal*. **PerformPathsSearch**-
$PathsTraversal->PerformPathsSearch($StartVertexID, [$AllowCycles]);
Searches paths starting from

*StartVertexID*with no sharing of edges in paths traversed and returns*PathsTraversal*. **PerformPathsSearchBetween**-
$PathsTraversal->PerformPathsSearchBetween($StartVertexID, $EndVertexID);
Searches paths between

*StartVertexID*and*EndVertexID*and returns*PathsTraversal* **PerformPathsSearchWithLength**-
$PathsTraversal->PerformPathsSearchWithLength($StartVertexID, $Length, [$AllowCycles]);
Searches paths starting from

*StartVertexID*with length*Length*with no sharing of edges in paths traversed and returns*PathsTraversal*. **PerformPathsSearchWithLengthUpto**-
$PathsTraversal->PerformPathsSearchWithLengthUpto($StartVertexID, $Length, [$AllowCycles]);
Searches paths starting from

*StartVertexID*with length upto*Length*with no sharing of edges in paths traversed and returns*PathsTraversal*. **StringifyPaths**-
$String = $PathsTraversal->StringifyPaths();
Returns a string containing information about traversed paths in

*PathsTraversal*object **StringifyPathsTraversal**-
$String = $PathsTraversal->StringifyPathsTraversal();
Returns a string containing information about

*PathsTraversal*object. **StringifyVerticesDepth**-
$String = $PathsTraversal->StringifyVerticesDepth();
Returns a string containing information about depth of vertices found during search by

*PathsTraversal*object. **StringifyVerticesNeighborhoods**-
$String = $PathsTraversal->StringifyVerticesNeighborhoods();
Returns a string containing information about neighborhoods of vertices found during search by

*PathsTraversal*object. **StringifyVerticesNeighborhoodsWithSuccessors**-
$String = $PathsTraversal->StringifyVerticesNeighborhoodsWithSuccessors();
Returns a string containing information about neighborhoods of vertices along with their successors found during search by

*PathsTraversal*object. **StringifyVerticesPredecessors**-
$String = $PathsTraversal->StringifyVerticesPredecessors();
Returns a string containing information about predecessors of vertices found during search by

*PathsTraversal*object. **StringifyVerticesRoots**-
$String = $PathsTraversal->StringifyVerticesRoots();
Returns a string containing information about roots of vertices found during search by

*PathsTraversal*object. **StringifyVerticesSuccessors**-
$String = $PathsTraversal->StringifyVerticesSuccessors();
Returns a string containing information about successors of vertices found during search by

*PathsTraversal*object.

Copyright (C) 2023 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.