Задача о N ферзях¶
Задача о N ферзях — это комбинаторная задача, заключающаяся в размещении N ферзей на шахматной доске размером N×N таким образом, чтобы ни один ферзь не атаковал другого. В шахматах ферзь может ходить по вертикали, горизонтали и диагоналям на любое количество клеток, поэтому условие задачи требует, чтобы на каждой вертикали, горизонтали и диагонали находился не более одного ферзя. Задача является классическим примером для изучения алгоритмов поиска с возвратом (backtracking) и часто используется в учебных курсах по информатике и комбинаторике.
¶История
Задача о восьми ферзях (N=8) впервые была сформулирована в 1848 году немецким шахматистом Максом Беззелем. В 1850 году Франц Наук опубликовал первые 40 решений. В последующие годы задача привлекла внимание многих математиков, включая Карла Фридриха Гаусса, который нашёл 72 решения (позднее выяснилось, что их 92). В 1874 году английский математик Джеймс Уитбред Ли Глейшер доказал, что общее число решений для доски 8×8 равно 92, с учётом симметрий — 12 уникальных.
В 1960-х годах задача стала популярной в программировании как тестовый пример для алгоритмов поиска. В 1972 году Эдсгер Дейкстра использовал её для иллюстрации метода поиска с возвратом в своей статье «Notes on Structured Programming». С развитием вычислительной техники задача о N ферзях была решена для больших N: в 2009 году было найдено решение для N=26, а в 2021 году — для N=27.
¶Классификация
¶По размеру доски
- Классическая задача: N=8 (доска 8×8).
- Обобщённая задача: N может быть любым натуральным числом, обычно N≥4 (для N=1,2,3 решений нет).
- Задача с дополнительными условиями: например, размещение ферзей на доске с препятствиями или на торе (склеенной в кольцо доске).
¶По типу решений
- Фундаментальные решения: не сводятся друг к другу симметриями (поворотами и отражениями доски).
- Все решения: включают все возможные расстановки, включая симметричные.
¶Математические свойства
¶Количество решений
Число решений задачи о N ферзях растёт экспоненциально. Для N от 1 до 27 известны следующие значения (последовательность A000170 в OEIS):
| N | Фундаментальные решения | Все решения |
|---|---|---|
| 1 | 1 | 1 |
| 2 | 0 | 0 |
| 3 | 0 | 0 |
| 4 | 1 | 2 |
| 5 | 2 | 10 |
| 6 | 1 | 4 |
| 7 | 6 | 40 |
| 8 | 12 | 92 |
| 9 | 46 | 352 |
| 10 | 92 | 724 |
| 11 | 341 | 2680 |
| 12 | 1787 | 14200 |
| 13 | 9233 | 73712 |
| 14 | 45752 | 365596 |
| 15 | 285053 | 2279184 |
| 16 | 1846955 | 14772512 |
| 17 | 11977939 | 95815104 |
| 18 | 83263591 | 666090624 |
| 19 | 621012754 | 4968057848 |
| 20 | 4878666808 | 39029188884 |
| 21 | 39333324973 | 314666222712 |
| 22 | 336376244042 | 2691008701644 |
| 23 | 3019248928210 | 24233937684440 |
| 24 | 28419244863892 | 227514171973736 |
| 25 | 278610562462558 | 2207893435808352 |
| 26 | 2831939034809466 | 22317699616364044 |
| 27 | 29715597228780976 | 234907967154122528 |
¶Симметрии
Каждое решение может быть преобразовано с помощью восьми симметрий квадрата: четыре поворота (0°, 90°, 180°, 270°) и четыре отражения (относительно вертикальной, горизонтальной и двух диагональных осей). Некоторые решения обладают внутренней симметрией (например, центральная симметрия), что уменьшает количество фундаментальных решений.
¶Алгоритмы решения
¶Поиск с возвратом (backtracking)
Наиболее распространённый метод — рекурсивный перебор с отсечением. Алгоритм размещает ферзей по строкам (или столбцам), проверяя на каждом шаге, не атакует ли новый ферзь уже поставленных. Для ускорения проверки атак используются массивы занятых столбцов и диагоналей. Временная сложность алгоритма в худшем случае — O(N!), но на практике отсечение ветвей существенно сокращает перебор.
¶Эвристические методы
Для больших N (например, N>1000) применяются эвристические алгоритмы, такие как:
- Алгоритм имитации отжига.
- Генетические алгоритмы.
- Метод минимальных конфликтов: начинается с случайной расстановки, затем итеративно перемещает ферзей, уменьшающих число конфликтов.
¶Аналитические решения
Для некоторых N существуют явные формулы, дающие одно решение. Например, для N, не кратного 2 или 3, можно использовать конструкцию, основанную на последовательности: для чётных N — расстановка по схеме (2,4,6,...,N,1,3,5,...,N-1) с модификациями для N mod 6 = 2 или 3.
¶Применение
¶В обучении программированию
Задача о N ферзях является стандартным упражнением для освоения рекурсии, поиска с возвратом и оптимизации алгоритмов. Она используется в курсах по алгоритмам и структурам данных, а также в олимпиадном программировании.
¶В комбинаторике
Задача служит примером для изучения перестановок и комбинаторных конфигураций. Она связана с латинскими квадратами и матрицами перестановок.
¶В тестировании вычислительных систем
Решение задачи для больших N (например, N=1000) используется для тестирования производительности параллельных и распределённых вычислительных систем, так как задача хорошо распараллеливается.
¶Интересные факты
- Первое решение для N=8 было опубликовано в 1850 году в журнале «Schachzeitung».
- В 1990 году была доказана гипотеза о том, что для любого N≥4 существует хотя бы одно решение.
- Задача о N ферзях является NP-полной в общем случае, если рассматривать её как задачу поиска всех решений.
- В 2017 году с помощью суперкомпьютера было найдено решение для N=27, что потребовало более 10^15 операций.
¶Критика
Некоторые исследователи отмечают, что задача о N ферзях, несмотря на свою популярность, имеет ограниченное практическое применение. Основная ценность задачи — педагогическая и теоретическая, как пример комбинаторной оптимизации. Также критикуется чрезмерное внимание к нахождению всех решений для больших N, так как это не ведёт к новым математическим открытиям, а лишь демонстрирует вычислительные мощности.
¶Источники
- Bell, J., & Stevens, B. (2009). «A survey of known results and research areas for n-queens». Discrete Mathematics, 309(1), 1-31.
- Наук, Ф. (1850). «Schachzeitung». Berlin.
- Дейкстра, Э. (1972). «Notes on Structured Programming». Academic Press.
- OEIS Foundation Inc. (2024). «Sequence A000170: Number of ways to place n nonattacking queens on an n X n board». The On-Line Encyclopedia of Integer Sequences.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


