Мне не даёт покоя метод точных ортогональных покрытий массива в применении к построению идеального квадрата 9-го порядка.
Метод замечательно работает при построении ассоциативных квадратов, и не только 9-го порядка. Я построила этим методом ассоциативные квадраты из различных простых чисел до порядка 16 включительно.
Но пойти дальше – к идеальным квадратам – у меня пока не получается.
Определение 1. Цепочкой для магического квадрата порядка
с заданной магической константой
называется набор из
различных натуральных чисел, сумма которых равна
.
Определение 2. Цепочка называется нормализованной, если числа в ней расположены в порядке возрастания.
Теперь пусть задан массив, состоящий из 81 простого числа:
Код:
11 23 29 59 89 101 113 131 173 179 191 263 281 311 383 389 449 479 509 569 593 641 653 659 683 719
743 773 809 821 911 1013 1103 1109 1151 1163 1223 1229 1283 1289 1361 1433 1439 1493 1499 1559 1571
1613 1619 1709 1811 1901 1913 1949 1979 2003 2039 2063 2069 2081 2129 2153 2213 2243 2273 2333 2339
2411 2441 2459 2531 2543 2549 2591 2609 2621 2633 2663 2693 2699 2711
Будем рассматривать ассоциативный магический квадрат 9-го порядка, который мы хотим составить из чисел заданного массива.
Определение 3. Точным покрытием массива, состоящего из 81 чисел, называется набор из 9 цепочек таких, что они составлены из чисел данного массива и ни в каких двух цепочках нет одинаковых чисел.
Понятно, что точное покрытие как бы “покрывает” заданный массив, используя все числа массива.
Определение 4. Два точных покрытия массива называются ортогональными, если каждая цепочка первого покрытия имеет точно один общий элемент с каждой цепочкой второго покрытия.
Очевидно, что из пары точных ортогональных покрытий всегда можно построить полумагический квадрат.
А вот магический квадрат не из любой пары точных ортогональных покрытий можно построить.
В случае с ассоциативным квадратом всё проще. В нём суммы в главных диагоналях получаются автоматически (из-за свойства ассоциативности).
Покажу, как метод работает при построении ассоциативного квадрата 9-го порядка из чисел заданного массива.
Первое точное покрытие генерирую случайным образом:
Код:
1289 2213 2039 1163 1571 311 1283 1811 569
383 2243 1619 2693 2063 593 773 653 1229
2003 1499 641 1979 821 809 89 1709 2699
131 263 1613 173 2333 2531 2441 2663 101
11 113 179 449 1361 2273 2543 2609 2711
2621 59 281 191 389 2549 1109 2459 2591
23 1013 2633 1913 1901 743 2081 1223 719
1493 2069 1949 2129 659 29 1103 479 2339
2153 911 1439 2411 1151 1559 683 509 1433
Это цепочки-строки. Генерируется такое покрытие в данном примере мгновенно
(замечу, что цепочки-строки генерируются так, что выполняется свойство ассоциативности будущего квадрата).
Второй этап – получение цепочек-столбцов. Здесь это делается так: переставляем числа в строках до тех пор, пока не получим нужные суммы в столбцах. Этот этап иногда буксует, но, в конце концов, выполняется, если ассоциативный квадрат существует.
И вот готовый ассоциативный квадрат 9-го порядка из чисел заданного массива (кстати, минимальный из различных простых чисел):
Код:
1283 311 1811 2213 1571 569 2039 1163 1289
773 653 2243 1619 2063 593 2693 383 1229
1979 1499 2699 641 821 89 809 2003 1709
1613 2531 101 131 2333 2441 2663 263 173
113 179 2711 449 1361 2273 11 2543 2609
2549 2459 59 281 389 2591 2621 191 1109
1013 719 1913 2633 1901 2081 23 1223 743
1493 2339 29 2129 659 1103 479 2069 1949
1433 1559 683 2153 1151 509 911 2411 1439
,
Это, собственно, и есть второе точное покрытие массива (цепочки-столбцы) ортогональное первому точному покрытию.
Как видите, тут всё очень хорошо работает.
Теперь надо пойти дальше – к идеальному квадрату.
Идеальный квадрат – это одновременно ассоциативный и пандиагональный квадрат.
Ассоциативный квадрат у нас уже есть.
Для построения пандиагонального квадрата необходимо иметь четыре точных попарно ортогональных покрытия массива.
К двум уже имеющимся (цепочки-строки и цепочки-столбцы) надо добавить ещё два точных покрытия массива: цепочки-диагонали прямые и цепочки-диагонали обратные. Эти два точных покрытия должны быть ортогональны между собой, а также ортогональны двум первым покрытиям.
Далее, как было установлено для случая пандиагональных квадратов 7-го порядка, наличие комплекта из 4-х точных попарно ортогональных покрытий массива ещё не гарантирует построение из этих покрытий пандиагонального квадрата. То есть это необходимое условие, но не достаточное.
А как будет в случае с идеальными квадратами
whitefoxтак как вы знакомы с этим методом, вопрос прежде всего к вам.
Посоветуйте, пожалуйста, как действовать дальше, начиная от уже известного ассоциативного квадрата (двух точных ортогональных покрытий массива).
Предполагаю, что нужно построить базу всех цепочек. Да?
Потом выбирать из этой базы нужные цепочки по какой-то методе.
Далее, вот мы, предположим, нашли 4 точных попарно ортогональных покрытия массива.
Нужен теперь точный алгоритм проверки этого комплекта на возможность построения из него идеального квадрата. А может быть, для идеальных квадратов всё сразу получится и проверять ничего не потребуется
Вот с ассоциативным квадратом всё очень просто получилось: два точных ортогональных покрытия - и квадрат уже готов.
Вопрос, конечно, и ко всем форумчанам. Задачка интересная.
К тому же, мне пока не удалось найти минимальный идеальный квадрат 9-го порядка по другому алгоритму. На сегодня имею лучшее решение с магической константой
.