組紐理論に慣れていない場合は、まずこれを読むことをお勧めします。この質問は、少なくとも手元の概念に精通していること、およびグループ理論に精通していることを前提としています。
私たちは定義できσ nはここで編組あるとN番目のオーバートップ交雑からストランド(インデックス付きつ)+ 1からn番目の鎖、及びσ N -の逆であるとσ Nすなわち(N + 1番目ストランドはn番目のストランドと交差します)。
編組グループB N次いでによって生成された<σ 1、σ 2、σ 3、。。。、σn -1 >。したがって、B nのすべてのブレードは、σ ブレードの積として書くことができます。1
グループの2つのブレードが等しいかどうかを判断するのは簡単な作業ではありません。そのかなり明白であってもよいσ 1 σ 3 =σ 3 σ 1は、それが少し明らかである例えばσ 2 σ 1 σ 2 =σ 1 σ 2 σ 1。2
したがって、質問は「2つのブレードが同じであるかどうかをどのように判断できますか?」です。さて、上記の2つの例はそれぞれこれを少し表しています。一般に、Artinの関係と呼ばれる以下の関係は真です。
σ I σ J =σ jを σ I ; i-j> 1
σ I σ I + 1 σ I =σ I + 1 σ I σ I + 1
これらの2つの関係をグループ公理と組み合わせて使用して、等しい三つ編みが等しいことを証明できます。したがって、これらの関係とグループ公理が繰り返し適用されることを示すことができれば、2つの三つ編みは等しくなります。
仕事
2つの三つ編みを取り、それらが等しいかどうかを判断するプログラムまたは関数を作成します。オプションで、グループの順序を表す正の整数を取ることもできます。
これはコードゴルフの質問なので、回答はバイト単位でスコア付けされ、バイト数は少ない方が良いでしょう。
入出力
Braidは、ジェネレーターの順序付きリスト(またはベクターなどの同等の構造)として表す必要があります。ジェネレータは、任意の合理的な形式(整数、正の整数の2つのタプル、およびブール)で表すことができます。
標準の決定問題のルールと同様に、2つの異なる値のいずれかを出力する必要があります。拒否を受け入れます。
テストケース
[], [] -> 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:B nはグループのすべてのプロパティを満たしますが、組グループの操作は可換ではないため、グループはアーベルではないことに。
2:あなたは、私が適用することをお勧め自分のためにこれを確認したい場合σ 1 -あなたが紙の上の2つのアウトを描く場合は、両側に、または実際の文字列でそれらをモデル化し、このような場合は、なぜそれが明らかになるはずです。
[],[]
[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE