# NAME

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

# VERSION

Version 0.013

# 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>`