Graph::UnionFind - union-find data structures

NAME  SYNOPSIS  DESCRIPTION  API  AUTHOR AND COPYRIGHT  LICENSE 

NAME

Graph::UnionFind − union−find data structures

SYNOPSIS

use Graph::UnionFind;
my $uf = Graph::UnionFind−>new;
# Add the vertices to the data structure.
$uf−>add($u);
$uf−>add($v);
# Join the partitions of the vertices.
$uf−>union( $u, $v );
# Find the partitions the vertices belong to
# in the union−find data structure. If they
# are equal, they are in the same partition.
# If the vertex has not been seen,
# undef is returned.
my $pu = $uf−>find( $u );
my $pv = $uf−>find( $v );
$uf−>same($u, $v) # Equal to $pu eq $pv.
# Has the union−find seen this vertex?
$uf−>has( $v )

DESCRIPTION

Union-find is a special data structure that can be used to track the partitioning of a set into subsets (a problem also known as disjoint sets).

"Graph::UnionFind" is used for "connected_components" in Graph, "connected_component" in Graph, and "same_connected_components" in Graph if you specify a true "unionfind" parameter when you create an undirected graph.

Union-find is one way: you cannot (easily) ’ununion’ vertices once you have ’unioned’ them. This is why Graph throws an exception if you try to delete edges from a union-find graph.

API

add

$uf−>add(@v)

Add the vertices to the union-find.

union

$uf−>union([$u, $v], [$w, $x], ...)

Add the edge u−v to the union-find. Also implicitly adds the vertices.

find

@partitions = $uf−>find(@v)

For each given vertex, return the union-find partition it belongs to, or "undef" if it has not been added.

new

$uf = Graph::UnionFind−>new()

The constructor.

same

$uf−>same($u, $v)

Return true of the vertices belong to the same union-find partition the vertex v belongs to, false otherwise.

AUTHOR AND COPYRIGHT

Jarkko Hietaniemi [email protected]

LICENSE

This module is licensed under the same terms as Perl itself.


Updated 2024-01-29 - jenkler.se | uex.se