Если вы не знакомы с теорией кос, я рекомендую вам сначала прочитать это . Этот вопрос предполагает, что вы по крайней мере знакомы с имеющимися понятиями, и предполагает, что вы хорошо знакомы с теорией групп
Определим σ n как косу, в которой n- я нить (индексированная) сверху пересекает n + 1- ю прядь, а σ n - как противоположность σ n (то есть n + 1- й нить пересекает н- ную нить).
Группа кос В п затем генерируется <сг 1 , σ 2 , σ 3 ,. , , , n-1 > . Таким образом, каждая коса на B n может быть записана как произведение σ-кос. 1
Определить, равны ли две косы в группе, - непростая задача. Может быть довольно очевидно, что σ 1 σ 3 = σ 3 σ 1 , но немного менее очевидно, что, например, σ 2 σ 1 σ 2 = σ 1 σ 2 σ 1 . 2
Таким образом, вопрос «Как мы можем определить, являются ли две косы одинаковыми?». Хорошо два примера выше представляют немного этого. В общем случае справедливы следующие отношения, называемые отношениями Артина:
σ i σ j = σ j σ i ; я -> 1
σ i σ i + 1 σ i = σ i + 1 σ i σ i + 1
Мы можем использовать эти два отношения в сочетании с аксиомами группы, чтобы доказать, что любые равные косы равны. Таким образом, две косы равны, если повторное применение этих соотношений и групповые аксиомы могут продемонстрировать это.
задача
Вы напишете программу или функцию для двух кос и определите, равны они или нет. При желании вы также можете взять положительное целое число, представляющее порядок группы.
Это вопрос кода игры в гольф, поэтому ответы будут оцениваться в байтах, причем меньше байтов будет лучше.
Вход и выход
Вы должны представлять Braid как упорядоченный список генераторов (или любой эквивалентной структуры, например, вектора). Вы можете представлять генераторы в любой разумной форме (например, целое число, два набора положительного целого числа и логическое значение).
В соответствии со стандартными правилами задачи решения вы должны вывести одно из двух различных значений: принять или отклонить.
Тестовые случаи
[], [] -> 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 - к обеим сторонам. Если вы нарисуете два на бумаге или смоделируете их с реальными строками, должно стать понятно, почему это так.
[],[]
[1, 4, -4, 3, 2, 1], [3, 2, 1, 2] => TRUE