Задача о восьми ферзях

Задача о восьми ферзях требует расставить на шахматной доске восемь ферзей так, чтобы никакие два не били друг друга. Шахматный композитор Макс Беццель опубликовал её в 1848 году, и она стала классическим первым примером поиска с возвратом.

Три ферзя на деревянной шахматной доске, расставленные так, что ни один не бьёт другого
Три ферзя на деревянной шахматной доске, расставленные так, что ни один не бьёт другого

Шахматная головоломка 1848 года

Макс Беццель, немецкий шахматный композитор, предложил задачу в берлинском шахматном журнале в 1848 году. Франц Наук опубликовал все 92 решения в 1850 году и задал тот же вопрос для досок большего размера. Карл Фридрих Гаусс с интересом следил за задачей и обсуждал её в своих письмах.

Один ферзь в каждом ряду и столбце

Восемь ферзей, которые не бьют друг друга, должны стоять в восьми разных рядах и восьми разных столбцах. Поэтому решение — это числа от 1 до 8 в перемешанном порядке, то есть перестановка, с одним дополнительным правилом: никакие два ферзя не могут стоять на одной диагонали. Из 40 320 перестановок подходят только 92.

Поиск с возвратом

Поиск с возвратом строит решение по частям и отступает назад, как только заходит в тупик. Для ферзей это так: поставьте ферзя на первую безопасную клетку следующего ряда, а когда в ряду нет безопасной клетки, вернитесь к ряду выше и сдвиньте того ферзя дальше. В 1972 году Эдсгер Дейкстра объяснял на этой задаче структурное программирование именно с помощью такого поиска.

Симметрия

Поверните доску на четверть оборота или отразите её, и решение останется решением. Так у каждого решения получается до восьми вариантов. 92 решения распадаются на 12 таких семейств: в одиннадцати по 8 решений, а в одном только 4, потому что это решение выглядит так же после поворота на пол-оборота.

Задача об n ферзях

На доске n×n вопрос тот же, только ферзей n. Решения есть для любого n начиная с 4, и их число быстро растёт: 2 для 4×4, 92 для 8×8 и 14 200 для 12×12. Формула для их числа неизвестна; рекордные значения получены большими компьютерными переборами.

Попробуйте в PictorX

Откройте «Восемь ферзей» и щёлкните клетку, чтобы поставить ферзя; щёлкните её ещё раз, чтобы убрать. «Показать битые клетки» отмечает точкой клетки, которые бьют ваши ферзи, а красные ферзи бьют друг друга. «Решить» шаг за шагом выполняет поиск с возвратом и оставляет на месте поставленных вами ферзей. «Следующее решение» перебирает все решения по порядку, а «Размер» меняет доску от 4×4 до 12×12.

Часто задаваемые вопросы

Кто придумал задачу о восьми ферзях?

Макс Беццель, немецкий шахматный композитор, в 1848 году. Франц Наук опубликовал первый полный набор решений в 1850 году.

Сколько всего решений?

92 на стандартной доске. Если повороты и отражения считать за одно, их 12.

Почему у доски 6×6 так мало решений?

Их всего 4, и все из одного семейства. У меньшей доски 5×5 их 10. У больших досок их всё больше: 40 на 7×7 и 92 на 8×8.

PictorX что-нибудь загружает?

Нет. Доска рисуется на холсте в браузере. Кнопка «Сохранить» скачивает PNG, а кнопка «Редактировать» открывает это изображение в редакторе PictorX.

Готовы попробовать?

Откройте PictorX в своем браузере — установка не требуется, для запуска не требуется кредитная карта.

Попробовать «Восемь ферзей»