
- Иногда требуется найти не результат работы алгоритма по входным данным, а наоборот, определить входные данные, при которых алгоритм выдаёт определённые значения.
- Задача обратного анализа гораздо сложнее, чем прямая задача, решаемая простой трассировкой программы. В сложных алгоритмах единственным способом решения часто бывает перебор значений параметров.
- В простых алгоритмах нужно вычленить основную конструкцию, на которой основан алгоритм (ветвление, цикл и т. п.), и попытаться записать формулу, которая определяет эту конструкцию (то есть выполнить обратный перевод из программного кода в математическую модель).
Пример. При каких начальных данных результат выполнения программы будет числом 8?
Решение. Суть алгоритма – цикл, где промежуточная переменная n раз умножается на введённую пользователем натуральную переменную a. Математическая модель алгоритма: rez = an. Число 8 является степенью чисел 2 и 8 (и не является степенью других натуральных чисел). Таким образом, возможными исходными параметрами являются два набора чисел (a = 2; n = 3) и (a = 8, n = 1).