# Word problem for braid group using a representation

**Input:** w is a word of length l from the presentation \langle \sigma_1,\sigma_2,\ldots,\sigma_{n-1} \mid \sigma_{i+1}\sigma_i\sigma_{i+1} = \sigma_i\sigma_{i+1}\sigma_i, \sigma_i\sigma_j = \sigma_j\sigma_i \rangle where |i-j|\neq 1.

**Output:** Return `true`

if w is the identity, else return `false`

.

The word problem for braid group was solved a long time ago with Artin combing. It requires one to express pure braid group P_n as a semidirect product of free groups F_1,\ldots,F_{n-1}. It is slow and quite difficult, at least I wasn't able to come up with an explicit algorithm for it.

Another way was to create a faithful homomorphism ^*: B_n \to \mathop{\mathrm{Aut}}(F_n). This is what I implemented in Haskell.

If B_n \to \mathop{\mathrm{Aut}}(F_n) is faithful and it sends w to w^*, then w is I iff w^*(a) = a for every generator a of F_n.

In the a survey by Jonathan Boiser, there is one explicate map. Defined as \displaystyle \sigma_i^*(t_j) = \begin{cases} t_j & \text{if } j\neq i, i+1 \\ t_{i+1} & \text{if } j=i \\ t_{i+1}t_it^{-1}_{i+1} & \text{if } j=i+1\\ \end{cases}

Where t_i are generators of F_n, and \sigma_i are the generators of the braid group. The inverse can easily be found.

Using a recursive definition. Let any word of the form (\sigma_i w)^* be \sigma_i^* \circ w^*. The algorithm is obvious. Test if w^*(t_i) = t_i for every generator in F_n is applying a list of \sigma_i to elements in F_n.

I wrote the program in Haskell, and posted it on github.The analysis: Given a word with length l in B_n, how long does it take to solve the problem with this algorithm? Each application of \sigma_i^*(u) to some word u takes O(|u|) time. One then free reduce. \sigma_i is applied l times.

An application of \sigma_i^* can potentially triple the length of the word. If one shows that it can only increase the length of the word by a constant term(given one started from a generator), then we have a O(l^2 n) algorithm.

Braid groups are automatic. If this natural algorithm solves the problem in O(l^2 n) time, it is not a surprise. However, it is likely not true. The running time is more likely to be O(c^l n) for some constant c. Although I can prove neither \sigma_i^* and increase the length by a constant factor or by a constant. The best known algorithm in 2000 was provided by a paper of Hessam Hamidi-Tehrani. It runs in O(l^2 n + l n \log n) time, and was proved with advanced techniques.

**Update 06/24/2011**: Siegel provided a example in B_3 where the algorithm run in exponential time. ((\sigma_2\sigma_1^{-1})^n)^*(t_1).

If we define a_n,b_n,c_n to be the amount of t_1,t_2,t_3 (include it's inverses) at step n, ignoring the possibility of cancellation. We have the following recurrence relation.

\displaystyle \begin{aligned} a_{n+1} &= 2a_n + b_n\\ b_{n+1} &= c_n\\ c_{n+1} &= a_n+2c_n\\ \end{aligned}

One can show a_n+b_n+c_n = 2F_{2n+1}-1. It is also true that cancellations are not possible.