11.3. ПЕРЕБОРНЫЕ АЛГОРИТМЫ И РЕКУРСИЯ
647
возврат к тому варианту, из которого он получен. Таким образом обеспечи-
вается рекурсивный просмотр всех вариантов.
Все задачи,для которых оправдано практическое применение метода,мож-
но разделить на два вида, в зависимости от того, подготовлены или нет про-
сматриваемые варианты до выполнения алгоритма, реализующего метод. В
первом случае метод становится переборным,а во втором — генерационным.
Однако для применения метода это не очень существенно, поскольку в лю-
бом случае можно говорить о подпрограмме-поставщике просматриваемых
вариантов, осуществляющей доступ либо к готовым, либо к генерируемым
вариантам. Именно это обстоятельство отражено в названии метода
Выделяются четыре ситуации использования метода перебора/генерации
вариантов с возвратами:
1. требуемое решение является результатом вычислений, связанных с од-
ним из вариантов, для нахождения которого применяется перебор;
2. требуемое решение есть совокупность результатов, получаемых как в
предыдущем случае, для всех не отвергаемых при переборе вариантов;
3. требуемое решение накапливается в процессе перехода от начального
варианта к следующим — каждый элемент последовательности не от-
вергаемых вариантов вносит свой вклад в результат, а при отказе от
варианта нужно восстанавливать предыдущее состояние решения;
4. требуемое решение есть совокупность результатов, получаемых как в
предыдущем случае, для всех возможных последовательностей не от-
вергаемых вариантов.
Теоретически все эти ситуации можно свести к последней с помощью
надлежащей конкретизации понятий варианта, решения и упорядоченности,
но для практических целей (как обычно) полезнее разграничивать случаи
применения метода, а не сводить их к единой схеме. Более важно задать хо-
рошие алгоритмы построения походящего множества возможных вариантов
и вычисления порядка перебора его элементов. Так, в первой ситуации для
упрощения алгоритмов возможно дублирование вариантов, а во второй оно
не допускается, иногда полезно рассматривать более широкое множество ва-
риантов, чем это определяется постановкой задачи. Важно помнить, что и
тогда, когда решение не зависит от порядка перебора вариантов, конкретный
порядок может существенно влиять на время получения результата
3
.
3
Для тех, кто изучал достаточно продвинутый курс логики. Семантические (аналитиче-