13
0
If you are not familiar with Braid-Theory I recommend that you read this first. This question assumes that you are at least familiar with the concepts at hand and assumes you are well familiar with group-theory
Let us define σn to be the braid in which the nth strand (One indexed) from the top crosses over the n+1th strand, and σn- to be the inverse of σn (That is the n+1th strand crosses the nth strand).
The braid group Bn is then generated by <σ1,σ2,σ3, . . . , σn-1>. Thus every braid on Bn can be written as the product of the σ-braids.1
Determining if two braids on a group are equal is not a simple task. It may be pretty obvious that σ1σ3 = σ3σ1, but it is a little less obvious that for example σ2σ1σ2 = σ1σ2σ1.2
So the question is "How can we determine if two braids are the same?". Well the two examples above each represent a bit of this. In general the following relations, called Artin's relations, are true:
σiσj = σjσi; i - j > 1
σiσi+1σi = σi+1σiσi+1
We can use these two relations in conjunction with the group axioms to prove that any equal braids are equal. Thus two braids are equal iff the repeated application of these relations and the group axioms can demonstrate so.
Task
You will write a program or function to take two braids and determine whether or not they are equal. You may also optionally take a positive integer representing the order of the group.
This is a code-golf question so answers will be scored in bytes, with less bytes being better.
Input and Output
You should represent a Braid as an ordered list of generators, (or any equivalent structure, e.g. vector). You may represent the generators in any reasonable form (e.g. an integer, a two tuple of a positive integer and a boolean).
On par with standard descision-problem rules you should output one of two distinct values, an accept an reject.
Test Cases
[], [] -> True
[1,-1], [] -> True
[1,2,1], [2,1,2] -> True
[1,3], [3,1] -> True
[1,3,2,1],[3,2,1,2] -> True
[1,4,-4,3,2,1], [3,2,1,2] -> True
[2,2,1], [2,1,2] -> False
[1,2,-1], [-1,2,1] -> False
[1,1,1,2],[1,1,2] -> False
1: Note that while Bn satisfies all the properties of a group the operation on our braid group is not commutative, and thus our group is not abelian.
2: If you would like to verify this for yourself I suggest applying σ1- to both sides, If you draw the two out on paper, or model them with actual strings it should become apparent why this is the case.
I am unfamiliar with braid theory, therefore I am VTCing as utter gibberish (just kidding) – caird coinheringaahing – 2017-07-17T01:32:23.330
2Can we have some test cases please? – HyperNeutrino – 2017-07-17T01:47:14.923
@HyperNeutrino Sorry forgot to add them. Added now. Feel free to suggest more. – Post Rock Garf Hunter – 2017-07-17T01:51:43.963
@WheatWizard test case suggestion:
[],[]
– Pavel – 2017-07-17T01:54:55.533Proposed Test Case:
[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE
– HyperNeutrino – 2017-07-17T02:19:37.383