Решение методом перебора с возвратом
Решение методом перебора с возвратом — это последовательный выбор элементов допустимого варианта с отменой последнего выбора, если продолжить построение невозможно или нарушено условие задачи.
Как работает метод
- Выбрать очередной элемент или действие.
- Проверить, не нарушены ли ограничения.
- Если частичный вариант допустим, перейти к следующему шагу.
- Если решение построено, сохранить или вывести его.
- Если продолжение невозможно, отменить последний выбор и попробовать другой.
Частичные варианты образуют дерево: вершина соответствует состоянию, а ветви — возможным выборам. Поэтому метод тесно связан с построением дерева вариантов. Часто перебор записывают как бэктрекинг, обычно с помощью рекурсивной функции.
Нужно составить двузначное число из цифр 1, 2 и 3 без повторений. Сначала выбираем 1, затем 2 и получаем 12. После возврата к выбору второй цифры пробуем 3 и получаем 13. Затем возвращаемся к первой цифре, выбираем 2 и продолжаем построение. Если цифра уже использована, такая ветвь сразу отбрасывается.
Возврат с отменой выбора — не то же самое, что обычный перебор всех готовых вариантов. При методе с возвратом проверка выполняется во время построения, поэтому явно невозможные ветви можно не достраивать.
Что нужно сделать, если добавление элемента нарушило условие задачи?
Главное
- Метод строит вариант поэтапно и проверяет ограничения на каждом шаге.
- При ошибке последний выбор отменяется, после чего пробуется другая ветвь.
- Возврат позволяет не достраивать заведомо невозможные варианты.