Латинский квадрат — табличка, заполненная буквами так, что в каждой строке и в каждом столбце никакая не повторяется дважды.
Такую таблицу называют еще таблицей умножения.Таким образом мы определили операцию умножения на упорядоченном множестве
Латинский квадрат будем называть группой, если операция
свойством ассоциативности не обладает (неассоциативный латинский квадрат будем называть квазигруппой). Действительно,
И совсем мало практики
Дальше изложение ведется с огромными пробелами, т.к. хочется показать нечто, не отвлекаясь пока на технические подробности. Внимание ко всем деталям потребует не одной статьи.
Рассмотрим множество перестановок на трех символах
Выпишем таблицу умножения (это всем хорошо известная группа
A B C D E F
B C A F D E
C A B E F D
D E F A B C
E F D C A B
F D E B C A
Напомню лишь как получить, например, элемент
0>0 0>1 0>0>1
1>2 1>2 1>2>0
2>1 2>0 2>1>2
Множество
то мы получим квазигруппу
D E F
F D E
E F D
Ура! Маленькая удача: у нас в кармане вполне конкретная квазигруппа, элементы которой составляют подмножество группы
F=[] A=[] B=[] C=[] for i in range(720): A=list(G[i]) B=list(Q[i]) for k in range(6): C.append(A[B[k]]) if C==[0, 1, 2, 3, 4, 5]: F.append(list(A)) C=[] else: C=[] d=len(F) for j in range(d): print(str(F[j]))
Здесь G и Q — одинаковые списки, содержащие все 720 перестановок на 6 символах. Программа выдает следующий список перестановок (перестановки со свойством
[3, 4, 5, 0, 1, 2]
[5, 1, 2, 3, 4, 0]
[0, 1, 2, 3, 4, 5]
[1, 0, 2, 3, 4, 5]
[0, 4, 5, 3, 1, 2]
[3, 1, 2, 0, 4, 5]
[2, 5, 0, 3, 4, 1]
[5, 3, 4, 1, 2, 0]
[0, 3, 4, 1, 2, 5]
[4, 1, 2, 5, 0, 3]
[0, 1, 4, 5, 2, 3]
[1, 0, 4, 5, 2, 3]
[4, 5, 2, 3, 0, 1]
[2, 3, 0, 1, 4, 5]
[0, 5, 2, 4, 3, 1]
[2, 4, 0, 3, 1, 5]
[0, 3, 5, 1, 4, 2]
[0, 4, 2, 5, 1, 3]
[0, 5, 3, 2, 4, 1]
[4, 1, 5, 3, 0, 2]
[4, 1, 3, 2, 0, 5]
[0, 1, 3, 2, 5, 4]
[1, 0, 3, 2, 5, 4]
[5, 2, 1, 4, 3, 0]
[0, 2, 1, 4, 3, 5]
[2, 1, 0, 4, 3, 5]
[0, 5, 4, 3, 2, 1]
[5, 4, 3, 2, 1, 0]
[0, 4, 3, 2, 1, 5]
[4, 3, 2, 1, 0, 5]
[0, 3, 2, 1, 5, 4]
[3, 2, 1, 0, 5, 4]
[0, 2, 1, 5, 4, 3]
[2, 1, 0, 5, 4, 3]
[0, 1, 5, 4, 3, 2]
[1, 0, 5, 4, 3, 2]
[4, 2, 1, 3, 0, 5]
[0, 2, 1, 3, 5, 4]
[2, 1, 0, 3, 5, 4]
[3, 5, 4, 0, 2, 1]
[5, 2, 1, 3, 4, 0]
[0, 2, 1, 3, 4, 5]
[2, 1, 0, 3, 4, 5]
[4, 5, 3, 2, 0, 1]
[5, 3, 2, 1, 4, 0]
[0, 3, 2, 1, 4, 5]
[3, 2, 1, 0, 4, 5]
[0, 1, 5, 3, 4, 2]
[1, 0, 5, 3, 4, 2]
[3, 4, 2, 0, 1, 5]
[4, 2, 1, 5, 0, 3]
[2, 4, 0, 5, 1, 3]
[5, 1, 3, 2, 4, 0]
[0, 1, 3, 2, 4, 5]
[1, 0, 3, 2, 4, 5]
[5, 1, 4, 3, 2, 0]
[0, 1, 4, 3, 2, 5]
[1, 0, 4, 3, 2, 5]
[3, 5, 2, 0, 4, 1]
[0, 5, 2, 3, 4, 1]
[3, 1, 4, 0, 2, 5]
[5, 4, 2, 3, 1, 0]
[0, 4, 2, 3, 1, 5]
[2, 3, 0, 1, 5, 4]
[3, 1, 5, 0, 4, 2]
[5, 1, 2, 4, 3, 0]
[0, 1, 2, 4, 3, 5]
[1, 0, 2, 4, 3, 5]
[4, 3, 5, 1, 0, 2]
[3, 1, 2, 0, 5, 4]
[0, 1, 2, 5, 4, 3]
[1, 0, 2, 5, 4, 3]
[2, 5, 0, 4, 3, 1]
[4, 1, 2, 3, 0, 5]
[0, 1, 2, 3, 5, 4]
[1, 0, 2, 3, 5, 4]
На этом мой программистский запал почти иссякает и я продолжаю работу в полуручном режиме. Из 76 инволюций я оставил только 36 (на то были свои причины). Перемножил их
#G*Q Q=[[5, 2, 1, 3, 4, 0], [0, 2, 1, 3, 4, 5], [2, 1, 0, 3, 4, 5], [4, 5, 3, 2, 0, 1], [5, 3, 2, 1, 4, 0], [0, 3, 2, 1, 4, 5], [3, 2, 1, 0, 4, 5], [0, 1, 5, 3, 4, 2], [1, 0, 5, 3, 4, 2], [3, 4, 2, 0, 1, 5], [4, 2, 1, 5, 0, 3], [2, 4, 0, 5, 1, 3], [5, 1, 3, 2, 4, 0], [0, 1, 3, 2, 4, 5], [1, 0, 3, 2, 4, 5], [5, 1, 4, 3, 2, 0], [0, 1, 4, 3, 2, 5], [1, 0, 4, 3, 2, 5], [3, 5, 2, 0, 4, 1], [0, 5, 2, 3, 4, 1], [3, 1, 4, 0, 2, 5], [5, 4, 2, 3, 1, 0], [0, 4, 2, 3, 1, 5], [2, 3, 0, 1, 5, 4], [3, 1, 5, 0, 4, 2], [5, 1, 2, 4, 3, 0], [0, 1, 2, 4, 3, 5], [1, 0, 2, 4, 3, 5], [4, 3, 5, 1, 0, 2], [3, 1, 2, 0, 5, 4], [0, 1, 2, 5, 4, 3], [1, 0, 2, 5, 4, 3], [2, 5, 0, 4, 3, 1], [4, 1, 2, 3, 0, 5], [0, 1, 2, 3, 5, 4], [1, 0, 2, 3, 5, 4]] # G=[[5, 2, 1, 3, 4, 0], [0, 2, 1, 3, 4, 5], [2, 1, 0, 3, 4, 5], [4, 5, 3, 2, 0, 1], [5, 3, 2, 1, 4, 0], [0, 3, 2, 1, 4, 5], [3, 2, 1, 0, 4, 5], [0, 1, 5, 3, 4, 2], [1, 0, 5, 3, 4, 2], [3, 4, 2, 0, 1, 5], [4, 2, 1, 5, 0, 3], [2, 4, 0, 5, 1, 3], [5, 1, 3, 2, 4, 0], [0, 1, 3, 2, 4, 5], [1, 0, 3, 2, 4, 5], [5, 1, 4, 3, 2, 0], [0, 1, 4, 3, 2, 5], [1, 0, 4, 3, 2, 5], [3, 5, 2, 0, 4, 1], [0, 5, 2, 3, 4, 1], [3, 1, 4, 0, 2, 5], [5, 4, 2, 3, 1, 0], [0, 4, 2, 3, 1, 5], [2, 3, 0, 1, 5, 4], [3, 1, 5, 0, 4, 2], [5, 1, 2, 4, 3, 0], [0, 1, 2, 4, 3, 5], [1, 0, 2, 4, 3, 5], [4, 3, 5, 1, 0, 2], [3, 1, 2, 0, 5, 4], [0, 1, 2, 5, 4, 3], [1, 0, 2, 5, 4, 3], [2, 5, 0, 4, 3, 1], [4, 1, 2, 3, 0, 5], [0, 1, 2, 3, 5, 4], [1, 0, 2, 3, 5, 4]] # F=[] H=[] A=[] B=[] C=[] q=len(Q) for i in range(36): A=list(G[i]) for j in range(q): B=list(Q[j]) for k in range(6): C.append(A[B[k]]) F.append(list(C)) C=[] H.append(list(F)) F=[] #for i in range(36): for j in range(36): print(str(H[j])) #print('New line')
Самым сложным было запихать все в электронную таблицу. И вот! Он! Долгожданный результат!

Цветом отмечены квазигруппы. Я не комментирую более результат, т.к. получен он на коленке, по принципу «Пойди туда, не зная куда. Принеси то, не зная что (ну т.е. квазигруппу)». Далее можно брать группы
Кое-что еще я рассказываю здесь и здесь.

