допускают непустое
допускают непустое Sk, и тогда мы пытаемся снова выбрать элемент аk. Если невозможно выбрать а(k-1), мы возвращаемся еще на шаг назад и выбираем новый элемент а(k-2) и так далее.
Графическое изображение - дерево поиска. Корень дерева (0 уровень) есть пустой вектор. Его сыновья суть множество кандидатов для выбора а1, и, в общем случае, узлы k-го уровня являются кандидатами на выбор аk при условии, что а1, а2, ..., а(k-1) выбраны так, как указывают предки этих узлов. Вопрос о том, имеет ли задача решение, равносилен вопросу, являются ли какие-нибудь узлы дерева решениями. Разыскивая все решения, мы хотим получить все такие узлы.
Рекурсивная схема реализации алгоритма.
procedure Backtrack(вектор,i);
begin
if <вектор является решением> then <записать его>
else begin <вычислить Si>;
for a?Si do Backtrack(вектор??a,i+1);
{??- добавление к вектору компоненты}
end;
end;
Оценка временной сложности алгоритма. Данная схема реализации перебора приводит к экспоненциальным
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа