Graph::TransitiveClosure(3pm) | User Contributed Perl Documentation | Graph::TransitiveClosure(3pm) |
Graph::TransitiveClosure - create and query transitive closure of graph
use Graph::TransitiveClosure; use Graph::Directed; # or Undirected my $g = Graph::Directed->new; $g->add_...(); # build $g # Compute the transitive closure graph. my $tcg = Graph::TransitiveClosure->new($g); $tcg->is_reachable($u, $v) # Identical to $tcg->has_edge($u, $v) # Being reflexive is the default, meaning that null transitions # (transitions from a vertex to the same vertex) are included. my $tcg = Graph::TransitiveClosure->new($g, reflexive => 1); my $tcg = Graph::TransitiveClosure->new($g, reflexive => 0); # is_reachable(u, v) is always reflexive. $tcg->is_reachable($u, $v) # You can check any graph for transitivity. $g->is_transitive() my $tcg = Graph::TransitiveClosure->new($g, path_length => 1); $tcg->path_length($u, $v) # path_vertices is on by default so this is a no-op. my $tcg = Graph::TransitiveClosure->new($g, path_vertices => 1); $tcg->path_vertices($u, $v) # see how many paths exist from $u to $v my $tcg = Graph::TransitiveClosure->new($g, path_count => 1); $tcg->path_length($u, $v) # Both path_length and path_vertices. my $tcg = Graph::TransitiveClosure->new($g, path => 1); $tcg->path_vertices($u, $v) $tcg->length($u, $v) my $tcg = Graph::TransitiveClosure->new($g, attribute_name => 'length'); $tcg->path_length($u, $v)
You can use "Graph::TransitiveClosure" to compute the transitive closure graph of a graph and optionally also the minimum paths (lengths and vertices) between vertices, and after that query the transitiveness between vertices by using the "is_reachable()" and "is_transitive()" methods, and the paths by using the "path_length()" and "path_vertices()" methods.
For further documentation, see the Graph::TransitiveClosure::Matrix.
These are only the methods 'native' to the class: see Graph::TransitiveClosure::Matrix for more.
2023-02-13 | perl v5.36.0 |