Graph::AdjacencyMatrix(3pm) | User Contributed Perl Documentation | Graph::AdjacencyMatrix(3pm) |
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.
By default the edge attribute used for distance is "w", but you can change that in new(), see below.
If you modify the graph after creating the adjacency matrix of it, the adjacency matrix and the distance matrix may become invalid.
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.
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.
2023-02-13 | perl v5.36.0 |