0
|
1 NAME
|
|
2 GraphMatrix
|
|
3
|
|
4 SYNOPSIS
|
|
5 use Graph::GraphMatrix;
|
|
6
|
|
7 use Graph::GraphMatrix qw(:all);
|
|
8
|
|
9 DESCRIPTION
|
|
10 GraphMatrix class provides the following methods:
|
|
11
|
|
12 new, GenerateAdjacencyMatrix, GenerateAdmittanceMatrix,
|
|
13 GenerateDegreeMatrix, GenerateDistanceMatrix, GenerateIncidenceMatrix,
|
|
14 GenerateKirchhoffMatrix, GenerateLaplacianMatrix,
|
|
15 GenerateNormalizedLaplacianMatrix, GenerateSiedelAdjacencyMatrix,
|
|
16 GetColumnIDs, GetMatrix, GetMatrixType, GetRowIDs, StringifyGraphMatrix
|
|
17
|
|
18 METHODS
|
|
19 new
|
|
20 $NewGraphMatrix = new Graph::GraphMatrix($Graph);
|
|
21
|
|
22 Using specified *Graph*, new method creates a new GraphMatrix and
|
|
23 returns newly created GraphMatrix.
|
|
24
|
|
25 GenerateAdjacencyMatrix
|
|
26 $AdjacencyGraphMatrix = $GraphMatrix->GenerateAdjacencyMatrix();
|
|
27
|
|
28 Generates a new *AdjacencyGraphMatrix* for specified Graph and
|
|
29 returns *AdjacencyGraphMatrix*.
|
|
30
|
|
31 For a simple graph G with n vertices, the adjacency matrix for G is
|
|
32 a n x n square matrix and its elements Mij are:
|
|
33
|
|
34 . 0 if i == j
|
|
35 . 1 if i != j and vertex Vi is adjacent to vertex Vj
|
|
36 . 0 if i != j and vertex Vi is not adjacent to vertex Vj
|
|
37
|
|
38 GenerateAdmittanceMatrix
|
|
39 $AdmittanceGraphMatrix = $GraphMatrix->GenerateAdmittanceMatrix();
|
|
40
|
|
41 Generates a new *AdmittanceGraphMatrix* for specified Graph and
|
|
42 returns *AdmittanceGraphMatrix*.
|
|
43
|
|
44 AdmittanceMatrix is another name for LaplacianMatrix.
|
|
45
|
|
46 GenerateDegreeMatrix
|
|
47 $DegreeGraphMatrix = $GraphMatrix->GenerateDegreeMatrix();
|
|
48
|
|
49 Generates a new *DegreeGraphMatrix* for specified Graph and returns
|
|
50 *DegreeGraphMatrix*.
|
|
51
|
|
52 For a simple graph G with n vertices, the degree matrix for G is a n
|
|
53 x n square matrix and its elements Mij are:
|
|
54
|
|
55 . deg(Vi) if i == j and deg(Vi) is the degree of vertex Vi
|
|
56 . 0 otherwise
|
|
57
|
|
58 GenerateDistanceMatrix
|
|
59 $DistanceGraphMatrix = $GraphMatrix->GenerateDistanceMatrix();
|
|
60
|
|
61 Generates a new *DistanceGraphMatrix* for specified Graph using
|
|
62 Floyd-Marshall algorithm [Ref 67] and returns *DistanceGraphMatrix*.
|
|
63
|
|
64 For a simple graph G with n vertices, the distance matrix for G is a
|
|
65 n x n square matrix and its elements Mij are:
|
|
66
|
|
67 . 0 if i == j
|
|
68 . d if i != j and d is the shortest distance between vertex Vi and vertex Vj
|
|
69
|
|
70 In the final matrix, value of constant BigNumber defined in
|
|
71 Constants.pm module corresponds to vertices with no edges.
|
|
72
|
|
73 GenerateIncidenceMatrix
|
|
74 $IncidenceGraphMatrix = $GraphMatrix->GenerateIncidenceMatrix();
|
|
75
|
|
76 Generates a new *IncidenceGraphMatrix* for specified Graph and
|
|
77 returns *IncidenceGraphMatrix*.
|
|
78
|
|
79 For a simple graph G with n vertices and e edges, the incidence
|
|
80 matrix for G is a n x e matrix its elements Mij are:
|
|
81
|
|
82 . 1 if vertex Vi and the edge Ej are incident; in other words, Vi and Ej are related
|
|
83 . 0 otherwise
|
|
84
|
|
85 GenerateKirchhoffMatrix
|
|
86 $KirchhoffGraphMatrix = $GraphMatrix->GenerateKirchhoffMatrix();
|
|
87
|
|
88 Generates a new *KirchhoffGraphMatrix* for specified Graph and
|
|
89 returns *KirchhoffGraphMatrix*.
|
|
90
|
|
91 KirchhoffMatrix is another name for LaplacianMatrix.
|
|
92
|
|
93 GenerateLaplacianMatrix
|
|
94 $LaplacianGraphMatrix = $GraphMatrix->GenerateLaplacianMatrix();
|
|
95
|
|
96 Generates a new *LaplacianGraphMatrix* for specified Graph and
|
|
97 returns *LaplacianGraphMatrix*.
|
|
98
|
|
99 For a simple graph G with n vertices, the Laplacian matrix for G is
|
|
100 a n x n square matrix and its elements Mij are:
|
|
101
|
|
102 . deg(Vi) if i == j and deg(Vi) is the degree of vertex Vi
|
|
103 . -1 if i != j and vertex Vi is adjacent to vertex Vj
|
|
104 . 0 otherwise
|
|
105
|
|
106 The Laplacian matrix is the difference between the degree matrix and
|
|
107 adjacency matrix.
|
|
108
|
|
109 GenerateNormalizedLaplacianMatrix
|
|
110 $NormalizedLaplacianGraphMatrix = $GraphMatrix->GenerateNormalizedLaplacianMatrix();
|
|
111
|
|
112 Generates a new *NormalizedLaplacianGraphMatrix* for specified Graph
|
|
113 and returns *NormalizedLaplacianGraphMatrix*.
|
|
114
|
|
115 For a simple graph G with n vertices, the normalized Laplacian
|
|
116 matrix L for G is a n x n square matrix and its elements Lij are:
|
|
117
|
|
118 . 1 if i == j and deg(Vi) != 0
|
|
119 . -1/SQRT(deg(Vi) * deg(Vj)) if i != j and vertex Vi is adjacent to vertex Vj
|
|
120 . 0 otherwise
|
|
121
|
|
122 GenerateSiedelAdjacencyMatrix
|
|
123 $SiedelAdjacencyGraphMatrix = $GraphMatrix->GenerateSiedelAdjacencyMatrix();
|
|
124
|
|
125 Generates a new *SiedelAdjacencyGraphMatrix* for specified Graph and
|
|
126 returns *SiedelAdjacencyGraphMatrix*.
|
|
127
|
|
128 For a simple graph G with n vertices, the Siedal adjacency matrix
|
|
129 for G is a n x n square matrix and its elements Mij are:
|
|
130
|
|
131 . 0 if i == j
|
|
132 . -1 if i != j and vertex Vi is adjacent to vertex Vj
|
|
133 . 1 if i != j and vertex Vi is not adjacent to vertex Vj
|
|
134
|
|
135 GetColumnIDs
|
|
136 @ColumnIDs = $GraphMatrix->GetColumnIDs();
|
|
137
|
|
138 Returns an array containing any specified column IDs for
|
|
139 *GraphMatrix*.
|
|
140
|
|
141 GetMatrix
|
|
142 $Matrix = $GraphMatrix->GetMatrix();
|
|
143
|
|
144 Returns *Matrix* object corresponding to *GraphMatrix* object.
|
|
145
|
|
146 GetMatrixType
|
|
147 $MatrixType = $GraphMatrix->GetMatrixType();
|
|
148
|
|
149 Returns MatrixType of *GraphMatrix*.
|
|
150
|
|
151 GetRowIDs
|
|
152 @RowIDs = $GraphMatrix->GetRowIDs();
|
|
153
|
|
154 Returns an array containing any specified rowIDs IDs for
|
|
155 *GraphMatrix*.
|
|
156
|
|
157 StringifyGraphMatrix
|
|
158 $String = $GraphMatrix->StringifyGraphMatrix();
|
|
159
|
|
160 Returns a string containing information about *GraphMatrix* object.
|
|
161
|
|
162 AUTHOR
|
|
163 Manish Sud <msud@san.rr.com>
|
|
164
|
|
165 SEE ALSO
|
|
166 Constants.pm, Graph.pm, Matrix.pm
|
|
167
|
|
168 COPYRIGHT
|
|
169 Copyright (C) 2015 Manish Sud. All rights reserved.
|
|
170
|
|
171 This file is part of MayaChemTools.
|
|
172
|
|
173 MayaChemTools is free software; you can redistribute it and/or modify it
|
|
174 under the terms of the GNU Lesser General Public License as published by
|
|
175 the Free Software Foundation; either version 3 of the License, or (at
|
|
176 your option) any later version.
|
|
177
|