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.