Graph::AdjacencyMatrix - create and query the adjacency matrix of graph G
use Graph::AdjacencyMatrix; use Graph::Directed; # or Undirected my $g = Graph::Directed->new; $g->add_...(); # build $g my $am = Graph::AdjacencyMatrix->new($g); $am->is_adjacent($u, $v) my $am = Graph::AdjacencyMatrix->new($g, distance_matrix => 1); $am->distance($u, $v) my $am = Graph::AdjacencyMatrix->new($g, attribute_name => 'length'); $am->distance($u, $v) my $am = Graph::AdjacencyMatrix->new($g, ...); my @V = $am->vertices(); $g = Graph->new(multiedged => 1); $g->add_...(); # build $g $am = Graph::AdjacencyMatrix->new($g, distance_matrix => 1); $am->distance($u, $v) # returns hash-ref of ID => distance
You can use Graph::AdjacencyMatrix to compute the adjacency matrix and optionally also the distance matrix of a graph, and after that query the adjacencyness between vertices by using the is_adjacent() method, or query the distance between vertices by using the distance() method.
Graph::AdjacencyMatrix
is_adjacent()
distance()
By default the edge attribute used for distance is w, but you can change that in new(), see below.
w
If you modify the graph after creating the adjacency matrix of it, the adjacency matrix and the distance matrix may become invalid.
Construct the adjacency matrix of the graph $g.
Construct the adjacency matrix of the graph $g with options as a hash. The known options are
By default only the adjacency matrix is computed. To compute also the distance matrix, use the attribute distance_matrix with a true value to the new() constructor.
distance_matrix
By default the edge attribute used for distance is w. You can change that by giving another attribute name with the attribute_name attribute to new() constructor. Using this attribute also implicitly causes the distance matrix to be computed.
attribute_name
Return true if the vertex $v is adjacent to vertex $u, or false if not.
Return the distance between the vertices $u and $v, or undef if the vertices are not adjacent.
undef
If the underlying graph is multiedged, returns hash-ref of ID mapped to distance. If a given edge ID does not have the attribute defined, it will not be represented. If no edge IDs have the attribute, undef will be returned.
Return the adjacency matrix itself (a list of bitvector scalars).
Return the list of vertices (useful for indexing the adjacency matrix).
The algorithm used to create the matrix is two nested loops, which is O(V**2) in time, and the returned matrices are O(V**2) in space.
Graph::TransitiveClosure, Graph::BitMatrix
Jarkko Hietaniemi jhi@iki.fi
This module is licensed under the same terms as Perl itself.
To install Graph, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Graph
CPAN shell
perl -MCPAN -e shell install Graph
For more information on module installation, please visit the detailed CPAN module installation guide.