annotate mayachemtools/docs/modules/txt/Path.txt @ 9:ab29fa5c8c1f draft default tip

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