The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Graph::Undirected::Hamiltonicity::Transforms - subroutines that apply transformations to undirected graphs.

SUBROUTINES

get_required_graph

For each vertex in the graph that has degree == 2, mark the edges adjacent to the vertex as "required".

Create a graph that has the same vertices as the input graph, but only the edges marked "required".

Return the "required" graph, and also a copy of the original graph, with the required edges marked.

     use Graph::Undirected::Hamiltonicity::Transforms qw(&get_required_graph);

     my ( $required_graph, $g1 ) = get_required_graph( $g );

delete_non_required_neighbors

Delete all non-required edges adjacent to vertices adjacent to 2 required edges.

Return the graph with the edges deleted, and also the number of edges deleted.

     use Graph::Undirected::Hamiltonicity::Transforms qw(&delete_non_required_neighbors);

     my ($deleted_edges, $g1) = delete_non_required_neighbors( $g );

swap_vertices

For a given graph, and two specified vertices, modify the graph so that the neighbors of vertex1 become the neighbors of vertex2 and vice versa.

     use Graph::Undirected::Hamiltonicity::Transforms qw(&swap_vertices);

     my $g1 = swap_vertices( $g, 3, 7 );

     # $g1 is like $g, with vertices 3 and 7 swapped.

get_common_neighbors

For a given graph, and two specified vertices, return a reference to a hash whose keys are all the vertices that vertex1 and vertex2 share as common neighbors.

     use Graph::Undirected::Hamiltonicity::Transforms qw(&get_common_neighbors);

     my %common_neighbors = %{ get_common_neighbors( $g, 3, 7 ) };

string_to_graph

Take a string and convert it to an undirected graph. The string should be in the same format as the output of Graph::Undirected::stringify()

     use Graph::Undirected::Hamiltonicity::Transforms qw(&string_to_graph);

     my $g = string_to_graph('0=1,0=2,0=6,1=3,1=7,2=3,2=4,3=5,4=5,4=6,5=7,6=7');

get_random_isomorph

Takes an input graph, and swaps its vertices randomly, so that the resultant graph is an isomorph of the input graph, but probably not identical to the original graph.

     use Graph::Undirected::Hamiltonicity::Transforms qw(&get_random_isomorph);

     my $g1 = get_random_isomorph( $g );

add_random_edges

Add random edges to a given graph.

     use Graph::Undirected::Hamiltonicity::Transforms qw(&add_random_edges);

     my $g1 = add_random_edges( $g, 7 );

     # $g1 is like $g, but with 7 extra edges.

SUPPORT

Please report issues on GitHub.

AUTHOR

Ashwin Dixit, <ashwin at ownlifeful dot com>