Self-intersection number of paths in compact surface.
Join work with Lorena Armas Sanabria and Francisco González Acuña.
Abstract
We give an algorithm to calculate the self-intersection number of a path in a compact surface with boundary. In particular, this algorithm says whether or not a word in x1, x2, · · · ,xn, is representable by a simple path. In the case of a disk with n holes the problem is equivalent to the problem of deciding which relators can appear in an Artin n-presentation.
The program
The implementation of the algorithm described on the abstract was written in python. The zip file can be downloaded here: The Program.
In order to run the program you need python installed.
Execution
To run the program you need to create a file with the word you want to test. The file with the word should have one positive integer per line, followed by one of the simbols "+" or "-". Each of this integers denotes the subindex of the letter used in the word.
For example, the word x1x2 x1-1x2x3-1 is represented by the next file:
1+
2+
1-
2+
3-
Once the file that represent the word have been written, we can execute the program. For that, we have two options:
- Calculate the self-intersection number
- or only determine if the word has a simple representation i.e. determine if the self-intersecion number is 0.
To execute the first you can run the command:
> python paths_find_linking.py <file with a word> [g={integer}] [o={True|False}] [p={number}] [q={number}]
To execute the second you can run the command:
> python algorithmPathsEn_ver3.py <file with a word> [g={integer}] [o={True|False}] [p={number}] [q={number}]
In both cases, the parameter g and o are used to define the surface where the path lives: g, for genus; and o, for orientability.