This repo contains four things:
|
Every Fer
object has two attributes: a sequence of feasible edge replacements and its corresponding permutation. The length of a sequence can be obtained by len(fer)
. The product *
of two Fer
objects multiplies their permutations and concatenates the edge replacements, updating the labels.
Note that products are written left-to-right, in contrast with traditional algebraic notation.
The algorithm produces a hash map that links every permutation in a generating set of the symmetric group to a Fer
object.
Let Fer
, for short) if Fer
objects. For more details on amoebas and the difference between local and global amoebas, consult [2].
This repo offers a class for Fer
objects to study amoebas. Relevant operations are defined for these objects. This class is extensively used in the algorithms presented below.
In the paper [1], it is proved that a certain recursive family of graphs are all amoebas. In this repo, we give an implementation of the algorithm decribed in Section 5 that will factor any permutation of a stem-symmetric (see Definition 6 of [1]) amoeba into Fer
objects in time
Furthermore, this repo contains a construction of one such type of recursive family, called Fibonacci-type trees in [1], to serve as an illustrative example of the algorithm.
To use the algorithm, we need to provide a stem-symmetric recursive construction similar to the one given in Theorem 8 of [1]. One such example is provided in treebonacci.py.
Here is a minimal working example on how to use the main features of this repo:
- Download the folder and leave all Python scripts in the same working directory.
- Install all dependencies.
- Open main.py in your favorite editor and provide an input for
k
andpermutation
. Default is$k=6$ and random. - Output will be the sought sequence.
- To verify the
Fer
objects, usefer_verifier
in amoebas.py. - To change the family of graphs, change line 8
import treebonacci as trb
and provide a valid stem-symmetric recursive amoeba family. Note you may need to use the methods in amoebas.py to regenerate the basis objects. - To animate the edge-replacements, wait for me to upload the animation module.
|