# Minimal Structure Reduction

### Description

Reduce a polygonal link to its minimal structure by applying Generalized Reidemeister Moves.

### Usage

1 |

### Arguments

`points3D` |
an |

`ends` |
a vector of positive integers defining the separators of the polygonal link |

`n` |
the number of iterations |

### Details

A minimal structure for a polygonal link *L* is a nested sequence of subsets of *L*:

*L \supset L_1 \supset … \supset L_N*

that cannot be extended. Each inclusion corresponds to a Generalized Reidemeister Move.

### Value

Returns a list of three elements

`points3D` |
an |

`ends` |
a vector of positive integers (if a non empty |

`M` |
the intersection matrix of the reduced structure |

### Note

This is a low-level function.

### Note

The default number of iterations is 100. This value almost always allows to reach the minimal structure.
If wished, a partial reduction can be achieved with `n`

between 2 and 5. This is particularly suitable for
graphical representations of the reduction process.

### Author(s)

Federico Comoglio, federico.comoglio@bsse.ethz.ch

### References

Comoglio F. and Rinaldi M. A Topological Framework for the Computation of the HOMFLY Polynomial and Its Application to Proteins (2011) PLoS ONE 6(4): e18693, doi:10.1371/journal.pone.0018693 ArXiv:1104.3405

### Examples

1 2 3 4 5 6 7 8 9 | ```
## Not run:
knot <- makeExampleKnot()
reduced <- msr(points3D = knot)
## 3D plot of both the trefoil and its reduced structure
plotKnot3D(knot, ends = c(), radius = 0.01, lwd = 2.5)
plotKnot3D(reduced$points3D, reduced$ends, colors = 'red', radius = 0.1, lwd = 2.5)
## End(Not run)
``` |