Как решить задачу с 8 королевами на шахматной доске?

Уже несколько дней пытаюсь разобраться, как расставить 8 ферзей на шахматной доске так, чтобы они не атаковали друг друга. Увидела эту задачу на уроке логики и зациклилась на ней, но не могу представить себе решение и не совсем понимаю стратегию. Кто-нибудь объясните мне пошагово?

2 ответа

★ Лучший ответ

Главное - думать о одном ферзе на колонку, а не пытаться расставить их все сразу. Если гарантировать, что ферзь есть в каждой колонке доски, половина проблемы решается сама по себе, потому что они уже не могут быть в одной колонке. Дальше остаётся только избежать, чтобы они атаковали друг друга по диагоналям и рядам.

Лучше всего работает метод - идти колонка за колонкой слева направо, а в каждой колонке пробовать сверху вниз. Ставишь ферзя в ряд, проверяешь, что он не атакует ни одного из уже поставленных (ни по диагонали, ни в ряду), и если не подходит, откатываешься и пробуешь следующий ряд. Например, в колонке 1 можно начать с ферзя в ряду 1. В колонке 2 не можешь ставить в ряд 1 и на диагонали, поэтому пробуешь ряд 3, ряд 4 и так далее. Если в какой-то колонке не найдёшь валидное место, откатываешься в предыдущую колонку и перемещаешь того ферзя в другой ряд, и продолжаешь отсюда.

Есть несколько валидных решений, поэтому нет единственного правильного пути. Первое решение, которое ты обычно найдёшь, имеет ферзей на позициях типа (1,1), (2,3), (3,5), (4,2), (5,8), (6,6), (7,4), (8,7) или что-то вроде того, в зависимости от того, где начнёшь. Тут всё зависит от терпения. Некоторые говорят, что нарисовать реальную доску или использовать интерактивное приложение здорово помогает визуализировать, потому что только в голове это довольно утомительно.

В принципе нужно думать об ограничениях, а не о позициях: один ферзь на колонку (как уже упоминали), один на строку и никаких на диагоналях. Трюк, который помог мне, - пробовать карандашом и ластиком вместо того, чтобы визуализировать всё в голове. Начни с первой колонки в самом верху, потом пробуй вторую колонку во второй строке, и когда столкнёшься с конфликтом (новый ферзь атакует какого-то предыдущего), просто отступи назад и переставь последнего ферзя на другую строку, не начиная с нуля.

Решений много, поэтому не существует одного «правильного» ответа - главное понять, что это задача систематического подбора, а не озарения. Если застрянешь, клетчатая бумага и визуальные пометки (вроде стрелочек или крестиков на диагоналях) помогут не свихнуться, глядя на всё сразу.

Ваш ответ

Войдите, чтобы ответить.