Previous TOC Next | Graph::Path.pm | Code | PDF | PDFGreen | PDFA4 | PDFA4Green

## NAME

Path - Path class

## SYNOPSIS

use Graph::Path;

use Graph::Path qw(:all);

## DESCRIPTION

Path class provides the following methods:

new, AddVertex, AddVertices, Copy, GetCommonVertices, GetEdges, GetEndVertex , GetLength, GetStartVertex, GetTerminalVertices, GetVertex, GetVertices, IsCycle , IsIndependentCyclicPath, IsIndependentPath, IsPath, Join, JoinAtVertex, PopVertex , PushVertex, PushVertices, Reverse, ShiftVertex, StringifyPath, UnshiftVertex , UnshiftVertices

Path is a sequential list of vertices with an edge between two successive vertices. The path becomes a cycle when start vertex and end vertex are the same.

The following operators are overloaded:

"" == eq

## METHODS

new
  $NewPath = new Path();
  $NewPath = new Path(@VertexIDs);

  Using specified VertexIDs, new method creates a new Path object and returns newly created Path object.

AddVertex
  $Path->AddVertex($VertexID);

  Adds VertexID to Path and returns Path.

AddVertices
  $Path->AddVertices(@VertexIDs);

  Adds vertices using VertexIDs to Path and returns Graph.

Copy
  $Return = $Path->Copy();

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

GetCommonVertices
  @CommonVertices = $Path->GetCommonVertices($OtherPath);
  $NumOfCommonVertices = $Path->GetCommonVertices($OtherPath);

  Returns an array containing common vertex IDs between two paths. In scalar context, number of common vertices is returned.

GetEdges
  @EdgesVertexIDs = $Path->GetEdges();
  $NumOfEdges = $Path->GetEdges();

  Returns an array containg successive paris of vertex IDs corresponding to all edges in Path. In scalar context, the number of edges is returned.

GetEndVertex
  $VertexID = $Path->GetEndVertex();

  Returns VertexID of end vertex in Path.

GetLength
  $Length = $Path->GetLength();

  Returns Length of Path corresponding to number of vertices in Path.

GetStartVertex
  $VertexID = $Path->GetStartVertex();

  Returns VertexID of start vertex in Path.

GetTerminalVertices
  ($StartVertexID, $EndVertexID) = $Path->GetTerminalVertices();

  Returns vertex IDs of start and end vertices in Path.

GetVertex
  $VertexID = $Path->GetVertex($Index);

  Returns specific vertex ID from Path corresponding to Index with indicies starting from 0.

GetVertices
  @Vertices = $Path->GetVertices();
  $NumOfVertices = $Path->GetVertices();

  Returns an array containing all vertex IDs in Path. In scalar context, number of vertices is returned.

IsCycle
  $Status = $Path->IsCycle();

  Returns 1 or 0 based on whether Path is a CyclicPath which has the same start and end vertex IDs.

IsIndependentCyclicPath
  $Status = $Path->IsIndependentCyclicPath();

  Returns 1 or 0 based on whether Path is an independent CyclicPath. For a Path to be an independent cyclic path, it must be a cyclic path and have unique vertices.

IsIndependentPath
  $Status = $Path->IsIndependentPath();

  Returns 1 or 0 based on whether Path is an independent Path. For a Path to be an independent path, it must have unique vertices.

IsPath
  $Status = Graph::Path::IsPath();

  Returns 1 or 0 based on whether Object is a Path object

Join
  $NewPath = $Path->Join($OtherPath);
  $NewPath = $Path->Join(@VertexIDs);

  Joins existing Path with a new path specified as a OtherPath object or an array of VertexIDs and returns NewPath.

  In order to successfully join two paths, terminal vertices must have a common vertex. Based on the common terminal vertex found, additional path vertices are added to the current Path in one of the following four ways:

  . EndVertex = NewStartVertex: New path at end of current path with same vertices order
  . EndVertex = NewEndVertex: New path at end of current path with reversed vertices order
  . StartVertex = NewEndVertex: New path at front of current path with same vertices order
  . StartVertex = NewStartVertex: New path at front of current path with reversed vertices order
JoinAtVertex
  $NewPath = $Path->JoinAtVertex($OtherPath, $CenterVertexID);

  Joins existing Path with OtherPath at a specified CeterVertexID and returns a NewPath.

PopVertex
  $Path->PopVertex();

  Removes end vertex from Path and returns Path.

PushVertex
  $Path->PushVertex($VertexID);

  Adds VertexID to Path after end vertex and returns Path.

PushVertices
  $Path->PushVertices(@VertexIDs);

  Adds VertexIDs to Path after end vertex and returns Path.

Reverse
  $Path->Reverse();

  Reverses order of vertices in Path and returns Path.

ShiftVertex
  $Path->ShiftVertex();

  Removes start vertex from Path and returns Path.

StringifyPath
  $String = $Path->StringifyPath();

  Returns a string containing information about Path object.

UnshiftVertex
  $Path->UnshiftVertex($VertexID);

  Adds VertexID to Path before start vertex and returns Path.

UnshiftVertices
  $Path->UnshiftVertices(@VertexIDs);

  Adds VertexIDs to Path before start vertex and returns Path.

## AUTHOR

Manish Sud

## SEE ALSO

PathGraph.pm, PathsTraversal.pm

## COPYRIGHT

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

Previous TOC Next | March 29, 2015 | Graph::Path.pm