Я говорю именно о составлении пар ОЛК, а не о максимальном количестве взаимно ортогональных ОЛК.
В том-то и дело, а мапл строит максимальные наборы из попарно ортогональных квадратов. И команда MOLS (что есть сокращение от mutually orthogonal Latin squares) по умолчанию для заданного
строит именно максимальный набор попарно ортогональных квадратов. Причем такие наборы известны как строить только для
являющихся степенями простых. Поэтому глупо обвинять мапл, что он не содержит каких-то там частных алгоритмов. Тем более, что MOLS - это вообще единственная команда в мапле, имеющая хоть какое-то отношение к латинским квадратам.
Вам надо искать специализированную программу для построения и анализа латинских квадратов, а если такой нет - то писать самой. Увы, но не всякий изобретенный алгоритм реализован в виде программы, и то, что вам нужно не существует, может банально не существовать.
Ну, вот, например, мне сейчас очень нужны пары ОЛК порядка 14 и 20
По поводу построения пар ортогональных квадратов я вам уже советовал GAP'овский
пакет GUAVA и его самостоятельную визуальную версию
VisualGUAVA под винду. Например, он строит вот такие ОЛК порядка 20:
Код:
gap> MOLS(20);
[ [
[ 0, 4, 8, 12, 16, 1, 5, 9, 13, 17, 2, 6, 10, 14, 18, 3, 7, 11, 15, 19 ],
[ 4, 8, 12, 16, 0, 5, 9, 13, 17, 1, 6, 10, 14, 18, 2, 7, 11, 15, 19, 3 ],
[ 8, 12, 16, 0, 4, 9, 13, 17, 1, 5, 10, 14, 18, 2, 6, 11, 15, 19, 3, 7 ],
[ 12, 16, 0, 4, 8, 13, 17, 1, 5, 9, 14, 18, 2, 6, 10, 15, 19, 3, 7, 11 ],
[ 16, 0, 4, 8, 12, 17, 1, 5, 9, 13, 18, 2, 6, 10, 14, 19, 3, 7, 11, 15 ],
[ 1, 5, 9, 13, 17, 0, 4, 8, 12, 16, 3, 7, 11, 15, 19, 2, 6, 10, 14, 18 ],
[ 5, 9, 13, 17, 1, 4, 8, 12, 16, 0, 7, 11, 15, 19, 3, 6, 10, 14, 18, 2 ],
[ 9, 13, 17, 1, 5, 8, 12, 16, 0, 4, 11, 15, 19, 3, 7, 10, 14, 18, 2, 6 ],
[ 13, 17, 1, 5, 9, 12, 16, 0, 4, 8, 15, 19, 3, 7, 11, 14, 18, 2, 6, 10 ],
[ 17, 1, 5, 9, 13, 16, 0, 4, 8, 12, 19, 3, 7, 11, 15, 18, 2, 6, 10, 14 ],
[ 2, 6, 10, 14, 18, 3, 7, 11, 15, 19, 0, 4, 8, 12, 16, 1, 5, 9, 13, 17 ],
[ 6, 10, 14, 18, 2, 7, 11, 15, 19, 3, 4, 8, 12, 16, 0, 5, 9, 13, 17, 1 ],
[ 10, 14, 18, 2, 6, 11, 15, 19, 3, 7, 8, 12, 16, 0, 4, 9, 13, 17, 1, 5 ],
[ 14, 18, 2, 6, 10, 15, 19, 3, 7, 11, 12, 16, 0, 4, 8, 13, 17, 1, 5, 9 ],
[ 18, 2, 6, 10, 14, 19, 3, 7, 11, 15, 16, 0, 4, 8, 12, 17, 1, 5, 9, 13 ],
[ 3, 7, 11, 15, 19, 2, 6, 10, 14, 18, 1, 5, 9, 13, 17, 0, 4, 8, 12, 16 ],
[ 7, 11, 15, 19, 3, 6, 10, 14, 18, 2, 5, 9, 13, 17, 1, 4, 8, 12, 16, 0 ],
[ 11, 15, 19, 3, 7, 10, 14, 18, 2, 6, 9, 13, 17, 1, 5, 8, 12, 16, 0, 4 ],
[ 15, 19, 3, 7, 11, 14, 18, 2, 6, 10, 13, 17, 1, 5, 9, 12, 16, 0, 4, 8 ],
[ 19, 3, 7, 11, 15, 18, 2, 6, 10, 14, 17, 1, 5, 9, 13, 16, 0, 4, 8, 12 ] ],
[ [ 0, 4, 8, 12, 16, 2, 6, 10, 14, 18, 3, 7, 11, 15, 19, 1, 5, 9, 13, 17 ],
[ 8, 12, 16, 0, 4, 10, 14, 18, 2, 6, 11, 15, 19, 3, 7, 9, 13, 17, 1, 5 ],
[ 16, 0, 4, 8, 12, 18, 2, 6, 10, 14, 19, 3, 7, 11, 15, 17, 1, 5, 9, 13 ],
[ 4, 8, 12, 16, 0, 6, 10, 14, 18, 2, 7, 11, 15, 19, 3, 5, 9, 13, 17, 1 ],
[ 12, 16, 0, 4, 8, 14, 18, 2, 6, 10, 15, 19, 3, 7, 11, 13, 17, 1, 5, 9 ],
[ 1, 5, 9, 13, 17, 3, 7, 11, 15, 19, 2, 6, 10, 14, 18, 0, 4, 8, 12, 16 ],
[ 9, 13, 17, 1, 5, 11, 15, 19, 3, 7, 10, 14, 18, 2, 6, 8, 12, 16, 0, 4 ],
[ 17, 1, 5, 9, 13, 19, 3, 7, 11, 15, 18, 2, 6, 10, 14, 16, 0, 4, 8, 12 ],
[ 5, 9, 13, 17, 1, 7, 11, 15, 19, 3, 6, 10, 14, 18, 2, 4, 8, 12, 16, 0 ],
[ 13, 17, 1, 5, 9, 15, 19, 3, 7, 11, 14, 18, 2, 6, 10, 12, 16, 0, 4, 8 ],
[ 2, 6, 10, 14, 18, 0, 4, 8, 12, 16, 1, 5, 9, 13, 17, 3, 7, 11, 15, 19 ],
[ 10, 14, 18, 2, 6, 8, 12, 16, 0, 4, 9, 13, 17, 1, 5, 11, 15, 19, 3, 7 ],
[ 18, 2, 6, 10, 14, 16, 0, 4, 8, 12, 17, 1, 5, 9, 13, 19, 3, 7, 11, 15 ],
[ 6, 10, 14, 18, 2, 4, 8, 12, 16, 0, 5, 9, 13, 17, 1, 7, 11, 15, 19, 3 ],
[ 14, 18, 2, 6, 10, 12, 16, 0, 4, 8, 13, 17, 1, 5, 9, 15, 19, 3, 7, 11 ],
[ 3, 7, 11, 15, 19, 1, 5, 9, 13, 17, 0, 4, 8, 12, 16, 2, 6, 10, 14, 18 ],
[ 11, 15, 19, 3, 7, 9, 13, 17, 1, 5, 8, 12, 16, 0, 4, 10, 14, 18, 2, 6 ],
[ 19, 3, 7, 11, 15, 17, 1, 5, 9, 13, 16, 0, 4, 8, 12, 18, 2, 6, 10, 14 ],
[ 7, 11, 15, 19, 3, 5, 9, 13, 17, 1, 4, 8, 12, 16, 0, 6, 10, 14, 18, 2 ],
[ 15, 19, 3, 7, 11, 13, 17, 1, 5, 9, 12, 16, 0, 4, 8, 14, 18, 2, 6, 10 ]
] ]
Но вот порядки
(и
в их числе) он, согласно
документации, пока не поддерживает.
Добавлено спустя 7 минут 47 секунд:Возвращаясь к вашей цитате: порядок 20 относится к той группе порядков, для которой пара ОЛК элементарно составляется методом составных квадратов. А это тоже общий алгоритм! И Maple, кстати он хорошо известен. Например, мне построили четыре первых MOLS 27-го порядка в Maple.Первый квадрат этой группы построен методом составных квадратов.
Это, скорее всего, простое совпадение. Мапл наверняка строит ортогональные квадраты с помощью проективных геометрий над конечными полями. И это универсальный способ, работающий для всех порядков, являющихся степенями простых. Поэтому ему незачем привлекать какие-либо сторонние методы.
Добавлено спустя 8 минут 54 секунды:По-прежнему считаю, что все достижения математики должны быть отражены в пакете математических программ.
Замечательно, только почему вы считаете, что кто-то был обязан "отразить все достижения математики" специально для вас?
Возьмите и реализуйте еще нереализованные алгоритмы, а потом пошлите свои наработки авторам различных мат.пакетов, чтобы они включили их в следующую версию. Тогда ваша логика будет понятна. А ныть здесь по поводу того, что "ай какие плохие пакеты, забыли для меня реализовать такой-то замечательный алгоритм", по крайней мере бессмысленно.