Si no está familiarizado con Braid-Theory, le recomiendo que lea esto primero. Esta pregunta supone que al menos está familiarizado con los conceptos en cuestión y supone que está bien familiarizado con la teoría de grupos.
Definamos σ n ser la trenza en la que el n º hebra (Una indexado) a partir de los mejores cruza sobre el n + 1 º hebra, y σ n - ser la inversa de σ n (que es el n + 1 º cadena cruza el n º hebra).
El grupo trenza B n es entonces generada por <σ 1 , σ 2 , σ 3 ,. . . , σ n-1 > . Por lo tanto, cada trenza en B n se puede escribir como el producto de las trenzas σ. 1
Determinar si dos trenzas en un grupo son iguales no es una tarea simple. Puede ser bastante obvio que σ 1 σ 3 = σ 3 σ 1 , pero es un poco menos obvio que, por ejemplo, σ 2 σ 1 σ 2 = σ 1 σ 2 σ 1 . 2
Entonces la pregunta es "¿Cómo podemos determinar si dos trenzas son iguales?". Bueno, los dos ejemplos anteriores representan un poco de esto. En general, las siguientes relaciones, llamadas relaciones de Artin, son ciertas:
σ i σ j = σ j σ i ; i - j> 1
σ i σ i + 1 σ i = σ i + 1 σ i σ i + 1
Podemos usar estas dos relaciones junto con los axiomas de grupo para demostrar que cualquier trenza igual es igual. Por lo tanto, dos trenzas son iguales si la aplicación repetida de estas relaciones y los axiomas grupales pueden demostrarlo.
Tarea
Escribirás un programa o función para tomar dos trenzas y determinar si son iguales o no. Opcionalmente, también puede tomar un número entero positivo que represente el orden del grupo.
Esta es una pregunta de código de golf , por lo que las respuestas se puntuarán en bytes, con menos bytes mejor.
Entrada y salida
Debe representar una trenza como una lista ordenada de generadores (o cualquier estructura equivalente, por ejemplo, vector). Puede representar los generadores en cualquier forma razonable (por ejemplo, un número entero, dos tuplas de un número entero positivo y un booleano).
A la par con las reglas estándar de problemas de decisión, debe generar uno de dos valores distintos, aceptar y rechazar.
Casos de prueba
[], [] -> 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: Tenga en cuenta que mientras B n satisface todas las propiedades de un grupo, la operación en nuestro grupo de trenzas no es conmutativa y, por lo tanto, nuestro grupo no es abeliano.
2: Si desea verificar esto por sí mismo Sugiero aplicar σ 1 - a ambos lados, si dibuja los dos fuera en el papel, o ellos modelar con cadenas reales que debería ser evidente por qué este es el caso.
[],[]
[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE