"Информатика", Горячев А.В., Суворова Н.И.
Обратный алгоритм помогает восстановить исходное значение, если известен результат последовательности действий. Для этого каждую команду заменяют действием, которое её отменяет, а затем выполняют команды с конца к началу. Например, после прибавления числа его нужно вычесть, а после умножения — разделить на то же число. Такой способ используют, чтобы решать задачи на восстановление числа и проверять вычисления.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Обратный алгоритм — алгоритм, который по результату выполнения исходного алгоритма восстанавливает исходные данные. Например, если число сначала изменили по заданным командам, обратный алгоритм помогает пройти этот путь назад. Он нужен в задачах, где известен итог, но требуется узнать, с чего начинали.
Обратное действие — действие, отменяющее результат другого действия. Так, вычитание отменяет прибавление, если вычитают то же число. Понятие нужно, чтобы для каждой команды исходного алгоритма подобрать способ вернуть значение к прежнему.
Обратный порядок действий — порядок выполнения команд, при котором последняя команда исходного алгоритма выполняется первой. Например, если сначала число умножили, а потом прибавили, отменять нужно сначала прибавление. Это правило помогает не спутать последовательность и восстановить исходное значение правильно.
Представим, что число 6 умножили на 2, а затем прибавили 3, и получили 15. Чтобы восстановить исходное значение, недостаточно знать только итог: нужно также знать, какие действия выполнялись и с какими числами. Без этой информации результату могли бы соответствовать разные исходные числа и разные способы вычисления. Когда команды известны, можно пройти их влияние назад.
Каждой команде исходного алгоритма сопоставляют действие, которое отменяет её результат. После прибавления 5 вычитают 5, а после умножения на 3 делят на 3. Число в обратной команде должно быть тем же, потому что именно оно изменило исходное значение. Если подобрать другое число, команда уже не отменит прежнее действие.
Обратные команды выполняют не в исходной, а в противоположной последовательности. Причина в том, что последняя команда изменила результат самым последним шагом, поэтому её влияние нужно убрать первым. Пока это изменение не отменено, нельзя получить значение, которое существовало перед ним. Затем таким же образом отменяют предыдущие команды, пока не вернутся к началу цепочки.
Построение обратного алгоритма удобно выполнять по шагам. Сначала запиши все команды исходного алгоритма в том порядке, в котором они выполняются. Затем замени каждую команду обратным действием, не меняя числа, и переставь команды так, чтобы последняя стала первой. Например, для «прибавить 2, затем умножить на 4» получится «разделить на 4, затем вычесть 2».
Проверить построение можно, выполнив исходный алгоритм, а сразу после него — обратный. Если в конце получилось начальное значение, действия и их порядок выбраны верно. Например, число 7 после прибавления 2 и умножения на 4 станет 36; обратные команды дадут 36 ÷ 4 = 9 и 9 − 2 = 7. Такая проверка обнаруживает и неверную операцию, и ошибку в порядке команд.
| Действие в исходном алгоритме | Обратное действие | Пример проверки |
|---|---|---|
| Прибавить число | Вычесть то же число | 8 + 3 = 11; 11 − 3 = 8 |
| Вычесть число | Прибавить то же число | 8 − 3 = 5; 5 + 3 = 8 |
| Умножить на число | Разделить на то же число | 4 × 3 = 12; 12 ÷ 3 = 4 |
| Разделить на число | Умножить на то же число | 12 ÷ 3 = 4; 4 × 3 = 12 |
Сначала найди в таблице действие исходной команды, затем возьми соответствующую обратную операцию. Число, на которое действовали, сохраняется: например, умножение на 3 отменяет деление на 3. Примеры в последнем столбце показывают, что после двух действий получается исходное значение.
Задача 1. Алгоритм: прибавить 5. Получен результат 12. Нужно составить обратный алгоритм и найти исходное число. Здесь была всего одна команда, поэтому менять порядок не требуется, но действие необходимо заменить обратным. Прибавление 5 отменяет вычитание 5.
Ответ: обратный алгоритм — вычесть 5; исходное число — 7. Проверка подтверждает, что новая команда отменяет исходную. Если бы при проверке не получилось 12, следовало бы перепроверить вычисление или выбранное действие.
Задача 2. Число умножили на 3, затем прибавили 4 и получили 19. Чтобы восстановить число, нужно сначала отменить последнюю команду, то есть прибавление. После этого останется результат умножения, который можно отменить делением на 3.
Ответ: исходное число — 5. Проверим цепочку вперёд: 5 × 3 = 15, затем 15 + 4 = 19. Получился заданный результат, значит, восстановление выполнено верно.
Задача 3. Из числа вычли 6, результат умножили на 2, затем прибавили 5 и получили 17. В цепочке три команды, поэтому важно обратить каждую из них и не забыть поменять порядок. Начинаем с последнего прибавления, потому что именно оно последним повлияло на результат.
Ответ: обратный алгоритм — вычесть 5, разделить на 2, прибавить 6; исходное число — 12. Проверка: 12 − 6 = 6, 6 × 2 = 12, 12 + 5 = 17. Исходный алгоритм возвращает заданный результат, значит, обратные команды составлены правильно.
Первая ошибка — заменить действия на обратные, но оставить их в исходном порядке. Так делают, когда помнят, какие операции нужно поменять, но не учитывают последовательность изменений. Проверь себя: выпиши команды от последней к первой и только затем выполняй их.
Вторая ошибка — принять сложение за обратное умножение или умножение за обратное сложение. Операция должна отменять именно тот результат, который создала исходная команда. Проверь пару действий на простом числе: если после них исходное значение не вернулось, пара выбрана неверно.
Третья ошибка — изменить число, на которое действовали: например, после умножения на 3 разделить на 2. Такое действие не отменяет исходную команду, потому что использовано другое число. Сверь числа в исходной и обратной командах: они должны совпадать, а проверка должна возвращать исходное значение.
Четвёртая ошибка — считать, что обратный алгоритм можно построить для любой цепочки команд. Не всякое действие можно отменить: например, делить на ноль нельзя, а иногда результат не позволяет однозначно узнать исходные данные. Проверь, определено ли каждое обратное действие и достаточно ли сведений для восстановления.
Для работы с обратным алгоритмом нужно знать, в каком порядке выполняются команды, и уверенно выполнять арифметические действия. Обратные действия знакомы по проверке вычислений: сложение проверяют вычитанием, а умножение — делением на то же число. Умение строить обратную цепочку пригодится в задачах на восстановление исходного числа и при анализе последовательностей команд. Оно также помогает замечать, на каком шаге вычислений могла возникнуть ошибка.
Что называют обратным алгоритмом?
Это алгоритм, который по результату исходного алгоритма восстанавливает исходные данные. Он состоит из действий, отменяющих команды исходного алгоритма, выполненных в обратном порядке.
Почему команды обратного алгоритма выполняют в обратном порядке?
Последняя команда исходного алгоритма первой изменила итоговое значение, поэтому её результат нужно отменить прежде всего. Если начать с первой команды, последующие изменения не позволят правильно восстановить исходное число.
Какое действие обратно сложению?
Обратное действие к сложению — вычитание того же числа. Например, после 8 + 3 = 11 вычитаем 3 и получаем 8.
Как составить обратный алгоритм для нескольких команд?
Запишите исходные команды, замените каждую действием, которое её отменяет, и расположите полученные команды в обратном порядке. Затем выполните новый алгоритм от известного результата.
Как проверить, что обратный алгоритм составлен правильно?
Выполните исходный алгоритм, а затем составленный обратный. Если в конце получилось исходное значение, а все действия допустимы, алгоритм составлен правильно.
§ 20. Обратный алгоритм