Wenn Sie nicht mit der Braid-Theorie vertraut sind, empfehle ich Ihnen, diese zuerst zu lesen . Diese Frage setzt voraus, dass Sie zumindest mit den vorliegenden Konzepten vertraut sind und dass Sie mit der Gruppentheorie gut vertraut sind
Definieren wir σ n als das Geflecht, in dem der n- te Strang (One indexed) von oben den n + 1- ten Strang kreuzt , und σ n - als das Inverse von σ n (das ist das n + 1- te) Strang kreuzt den n- ten Strang).
Der Zopfgruppe B n wird dann durch <σ 1 , σ 2 , σ 3 ,. . . , Σ n-1 > . Somit kann jedes Geflecht auf B n als Produkt der σ-Geflechte geschrieben werden. 1
Es ist keine einfache Aufgabe, festzustellen, ob zwei Zöpfe einer Gruppe gleich sind. Es mag ziemlich offensichtlich sein, dass σ 1 σ 3 = σ 3 σ 1 ist , aber es ist etwas weniger offensichtlich, dass zum Beispiel σ 2 σ 1 σ 2 = σ 1 σ 2 σ 1 ist . 2
Die Frage lautet also "Wie können wir feststellen, ob zwei Zöpfe gleich sind?". Nun, die beiden obigen Beispiele zeigen jeweils ein bisschen davon. Im Allgemeinen sind die folgenden Beziehungen, die als Artins Beziehungen bezeichnet werden, wahr:
σ i σ j = σ j σ i ; i - j> 1
σ i σ i + 1 σ i = σ i + 1 σ i σ i + 1
Wir können diese beiden Beziehungen in Verbindung mit den Gruppenaxiomen verwenden, um zu beweisen, dass gleiche Zöpfe gleich sind. Somit sind zwei Zöpfe gleich, wenn die wiederholte Anwendung dieser Beziehungen und die Gruppenaxiome dies beweisen können.
Aufgabe
Sie schreiben ein Programm oder eine Funktion, um zwei Zöpfe zu nehmen und festzustellen, ob sie gleich sind oder nicht. Optional können Sie auch eine positive Ganzzahl verwenden, die die Reihenfolge der Gruppe darstellt.
Dies ist eine Code-Golf- Frage, daher werden die Antworten in Bytes bewertet, wobei weniger Bytes besser sind.
Ein- und Ausgang
Sie sollten ein Braid als eine geordnete Liste von Generatoren darstellen (oder eine äquivalente Struktur, z. B. einen Vektor). Sie können die Generatoren in jeder vernünftigen Form darstellen (z. B. eine Ganzzahl, ein Zweifach-Tupel einer positiven Ganzzahl und ein Boolescher Wert).
Gleichauf mit Standard - Urteil entschiedenen-Problem Regeln Sie die Ausgabe einer von zwei unterschiedlichen Werten sollten, akzeptieren eine eines ablehnen.
Testfälle
[], [] -> 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: Beachten Sie, dass, während B n alle Eigenschaften einer Gruppe erfüllt, die Operation für unsere Geflechtgruppe nicht kommutativ ist und daher unsere Gruppe nicht abelisch ist.
2: Wenn Sie dies selbst überprüfen möchten, empfehle ich, σ 1 - auf beide Seiten anzuwenden. Wenn Sie die beiden auf Papier zeichnen oder sie mit tatsächlichen Zeichenfolgen modellieren, sollte sich herausstellen, warum dies der Fall ist.
[],[]
[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE