annotate docs/modules/txt/Path.txt @ 3:90ea638ce878 draft default tip

Uploaded
author deepakjadmin
date Wed, 20 Jan 2016 09:11:59 -0500
parents 2abf0d43254d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
1 NAME
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
2 Path - Path class
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
3
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
4 SYNOPSIS
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
5 use Graph::Path;
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
6
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
7 use Graph::Path qw(:all);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
8
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
9 DESCRIPTION
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
10 Path class provides the following methods:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
11
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
12 new, AddVertex, AddVertices, Copy, GetCommonVertices, GetEdges,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
13 GetEndVertex, GetLength, GetStartVertex, GetTerminalVertices, GetVertex,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
14 GetVertices, IsCycle, IsIndependentCyclicPath, IsIndependentPath,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
15 IsPath, Join, JoinAtVertex, PopVertex, PushVertex, PushVertices,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
16 Reverse, ShiftVertex, StringifyPath, UnshiftVertex, UnshiftVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
17
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
18 Path is a sequential list of vertices with an edge between two
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
19 successive vertices. The path becomes a cycle when start vertex and end
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
20 vertex are the same.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
21
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
22 The following operators are overloaded:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
23
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
24 "" == eq
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
25
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
26 METHODS
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
27 new
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
28 $NewPath = new Path();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
29 $NewPath = new Path(@VertexIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
30
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
31 Using specified *VertexIDs*, new method creates a new Path object
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
32 and returns newly created Path object.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
33
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
34 AddVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
35 $Path->AddVertex($VertexID);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
36
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
37 Adds *VertexID* to *Path* and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
38
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
39 AddVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
40 $Path->AddVertices(@VertexIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
41
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
42 Adds vertices using *VertexIDs* to *Path* and returns *Graph*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
43
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
44 Copy
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
45 $Return = $Path->Copy();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
46
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
47 Copies *Path* and its associated data using Storable::dclone and
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
48 returns a new Path object.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
49
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
50 GetCommonVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
51 @CommonVertices = $Path->GetCommonVertices($OtherPath);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
52 $NumOfCommonVertices = $Path->GetCommonVertices($OtherPath);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
53
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
54 Returns an array containing common vertex IDs between two paths. In
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
55 scalar context, number of common vertices is returned.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
56
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
57 GetEdges
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
58 @EdgesVertexIDs = $Path->GetEdges();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
59 $NumOfEdges = $Path->GetEdges();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
60
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
61 Returns an array containg successive paris of vertex IDs
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
62 corresponding to all edges in *Path*. In scalar context, the number
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
63 of edges is returned.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
64
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
65 GetEndVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
66 $VertexID = $Path->GetEndVertex();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
67
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
68 Returns VertexID of end vertex in *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
69
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
70 GetLength
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
71 $Length = $Path->GetLength();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
72
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
73 Returns Length of *Path* corresponding to number of vertices in
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
74 *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
75
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
76 GetStartVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
77 $VertexID = $Path->GetStartVertex();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
78
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
79 Returns VertexID of start vertex in *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
80
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
81 GetTerminalVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
82 ($StartVertexID, $EndVertexID) = $Path->GetTerminalVertices();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
83
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
84 Returns vertex IDs of start and end vertices in *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
85
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
86 GetVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
87 $VertexID = $Path->GetVertex($Index);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
88
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
89 Returns specific vertex ID from *Path* corresponding to *Index* with
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
90 indicies starting from 0.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
91
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
92 GetVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
93 @Vertices = $Path->GetVertices();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
94 $NumOfVertices = $Path->GetVertices();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
95
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
96 Returns an array containing all vertex IDs in *Path*. In scalar
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
97 context, number of vertices is returned.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
98
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
99 IsCycle
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
100 $Status = $Path->IsCycle();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
101
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
102 Returns 1 or 0 based on whether *Path* is a CyclicPath which has the
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
103 same start and end vertex IDs.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
104
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
105 IsIndependentCyclicPath
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
106 $Status = $Path->IsIndependentCyclicPath();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
107
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
108 Returns 1 or 0 based on whether *Path* is an independent CyclicPath.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
109 For a *Path* to be an independent cyclic path, it must be a cyclic
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
110 path and have unique vertices.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
111
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
112 IsIndependentPath
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
113 $Status = $Path->IsIndependentPath();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
114
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
115 Returns 1 or 0 based on whether *Path* is an independent Path. For a
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
116 *Path* to be an independent path, it must have unique vertices.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
117
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
118 IsPath
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
119 $Status = Graph::Path::IsPath();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
120
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
121 Returns 1 or 0 based on whether *Object* is a Path object
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
122
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
123 Join
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
124 $NewPath = $Path->Join($OtherPath);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
125 $NewPath = $Path->Join(@VertexIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
126
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
127 Joins existing *Path* with a new path specified as a *OtherPath*
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
128 object or an array of *VertexIDs* and returns *NewPath*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
129
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
130 In order to successfully join two paths, terminal vertices must have
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
131 a common vertex. Based on the common terminal vertex found,
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
132 additional path vertices are added to the current *Path* in one of
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
133 the following four ways:
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
134
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
135 . EndVertex = NewStartVertex: New path at end of current path with
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
136 same vertices order
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
137
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
138 . EndVertex = NewEndVertex: New path at end of current path with
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
139 reversed vertices order
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
140
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
141 . StartVertex = NewEndVertex: New path at front of current path
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
142 with same vertices order
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
143
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
144 . StartVertex = NewStartVertex: New path at front of current path
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
145 with reversed vertices order
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
146
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
147 JoinAtVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
148 $NewPath = $Path->JoinAtVertex($OtherPath, $CenterVertexID);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
149
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
150 Joins existing *Path* with *OtherPath* at a specified
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
151 *CeterVertexID* and returns a *NewPath*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
152
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
153 PopVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
154 $Path->PopVertex();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
155
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
156 Removes end vertex from *Path* and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
157
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
158 PushVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
159 $Path->PushVertex($VertexID);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
160
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
161 Adds *VertexID* to *Path* after end vertex and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
162
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
163 PushVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
164 $Path->PushVertices(@VertexIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
165
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
166 Adds *VertexIDs* to *Path* after end vertex and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
167
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
168 Reverse
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
169 $Path->Reverse();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
170
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
171 Reverses order of vertices in *Path* and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
172
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
173 ShiftVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
174 $Path->ShiftVertex();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
175
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
176 Removes start vertex from *Path* and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
177
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
178 StringifyPath
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
179 $String = $Path->StringifyPath();
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
180
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
181 Returns a string containing information about *Path* object.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
182
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
183 UnshiftVertex
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
184 $Path->UnshiftVertex($VertexID);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
185
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
186 Adds *VertexID* to *Path* before start vertex and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
187
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
188 UnshiftVertices
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
189 $Path->UnshiftVertices(@VertexIDs);
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
190
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
191 Adds *VertexIDs* to *Path* before start vertex and returns *Path*.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
192
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
193 AUTHOR
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
194 Manish Sud <msud@san.rr.com>
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
195
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
196 SEE ALSO
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
197 PathGraph.pm, PathsTraversal.pm
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
198
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
199 COPYRIGHT
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
200 Copyright (C) 2015 Manish Sud. All rights reserved.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
201
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
202 This file is part of MayaChemTools.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
203
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
204 MayaChemTools is free software; you can redistribute it and/or modify it
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
205 under the terms of the GNU Lesser General Public License as published by
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
206 the Free Software Foundation; either version 3 of the License, or (at
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
207 your option) any later version.
2abf0d43254d Uploaded
deepakjadmin
parents:
diff changeset
208