"Информатика (углублённый уровень)", Калинин И.А., Самылкина Н.Н.
Алгоритм — это точное конечное предписание, которое задаёт действия для решения задачи. Он нужен, чтобы исполнитель мог пройти от исходных данных к результату, не угадывая, что делать дальше. Алгоритм всегда рассчитан на конкретного исполнителя и его систему команд. Его качество проверяют по свойствам: действия должны быть пошаговыми, понятными и однозначными, выполнение — завершаться, а способ решения — подходить для целого класса задач.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Алгоритм — точное конечное предписание, которое задаёт последовательность действий для решения задачи. Это не просто рассказ о том, что обычно делают: предписание должно быть достаточно полным и однозначным для выполнения. Благодаря алгоритму можно перейти от исходных данных к результату по установленным правилам.
Исполнитель алгоритма — тот, кто выполняет команды: например, человек, компьютер или автоматическое устройство. У каждого исполнителя есть ограничения: он способен выполнять не любые действия, а лишь те, которые ему доступны и понятны. Поэтому алгоритм нужно составлять с учётом возможностей выбранного исполнителя.
Система команд исполнителя — набор команд, которые исполнитель понимает и может выполнить. Например, для простого вычислителя это могут быть ввод чисел, сложение и вывод ответа. Если включить команду, которой в его системе нет, исполнитель не сможет следовать алгоритму, даже если человеку смысл команды очевиден.
Свойства алгоритма — требования, которым должен соответствовать способ решения, чтобы его можно было выполнить и получить решение. К ним относят дискретность, определённость, понятность, результативность и массовость. Проверка этих свойств помогает обнаружить пропуски, неоднозначности и случаи, в которых алгоритм не работает.
Представим задачу: найти сумму двух чисел. Для исполнителя-компьютера можно задать команды: ввести первое число a, ввести второе число b, вычислить s = a + b и вывести s. Если введены 4 и 7, компьютер выполняет заданные действия и выводит 11. Исходная задача превращается в набор команд, доступных этому исполнителю.
Дискретность означает, что алгоритм складывается из отдельных шагов, а не требует выполнить всё сразу. Исполнитель завершает один шаг и только затем переходит к следующему либо следует заданному правилу перехода. Благодаря этому можно проследить ход решения и понять, на каком этапе возникла ошибка.
Определённость и понятность нужны, чтобы команды не оставляли исполнителю выбора, которого алгоритм не предусмотрел. Указание «прибавь 2» однозначно для вычислителя, а выражение «увеличь немного» допускает разные толкования. Команда также должна быть доступна исполнителю: компьютер не сможет выполнить действие, которого нет в его системе команд.
Результативность требует, чтобы выполнение заканчивалось за конечное число шагов и приводило к результату или сообщению о невозможности решения. Это важно, потому что бесконечное выполнение не отвечает на поставленный вопрос. Проверяя алгоритм, нужно выяснить, может ли исполнитель застрять, бесконечно повторять действия или дойти до конца без ответа.
Массовость означает, что алгоритм подходит не только для одного конкретного набора данных, но и для целого класса однотипных задач. Алгоритм сложения двух чисел работает для разных пар чисел, если они допустимы для исполнителя. Это свойство позволяет применять найденный способ снова с другими исходными данными, не составляя новый алгоритм каждый раз.
| Свойство | Что означает | Как проверить на примере |
|---|---|---|
| Дискретность | Алгоритм состоит из отдельных шагов. | Проверить, можно ли перечислить действия по порядку. |
| Определённость | Каждая команда и переход имеют однозначный смысл. | Убедиться, что указание не допускает разных толкований. |
| Понятность | Команды доступны выбранному исполнителю. | Сверить каждую команду с его системой команд. |
| Результативность | Выполнение завершается за конечное число шагов. | Проследить, доходит ли исполнитель до результата или сообщения. |
| Массовость | Алгоритм решает класс однотипных задач. | Проверить его на разных допустимых исходных данных. |
Используй таблицу как список проверок: мысленно выполни алгоритм и последовательно проверь каждое свойство. Один и тот же пример можно оценивать с разных сторон: например, команда бывает понятна человеку, но недоступна компьютеру. Для массовости подставь несколько разных исходных данных, а для результативности проверь, что выполнение обязательно заканчивается.
Условие. Дан алгоритм: ввести a и b, вычислить s = a + b, вывести s. Требуется определить исполнителя, его систему команд и результат при a = 8, b = 5. Проследим выполнение по порядку.
Ответ. Исполнитель — компьютер; используются команды ввода, сложения и вывода. Результат выполнения — 13.
Условие. В алгоритме приготовления напитка команда «добавить немного сахара» заменена указанием «добавить одну чайную ложку сахара». Нужно определить, какое свойство улучшилось. Рассмотрим, что именно изменилось для исполнителя.
Ответ. В первую очередь улучшилась определённость: неоднозначную команду заменили точным указанием. Понятность также зависит от того, доступна ли исполнителю такая мера.
Условие. Алгоритм сравнивает три числа, но в одной ветви сравнения действие не указано. Нужно найти проблему и назвать нарушенные свойства. Для поиска проверим, что произойдёт при каждом возможном результате сравнения.
Ответ. Нарушены определённость и результативность: для одного случая нет однозначного действия, поэтому алгоритм может не выдать ответ. Проверка всех ветвей позволяет обнаружить пропуск.
Считать алгоритмом любое описание действий — ошибка: описание может быть неполным, двусмысленным или не рассчитанным на конкретного исполнителя. Её допускают, когда ориентируются на общий смысл текста, а не проверяют, можно ли выполнить каждое указание. Проверь себя: способен ли исполнитель пройти все шаги без догадок и дополнительных вопросов?
Понятность часто путают с определённостью. Команда может быть знакома человеку, но допускать несколько вариантов выполнения, например «добавь немного». Чтобы проверить себя, отдельно спроси: понимает ли исполнитель команду и задаёт ли она ровно одно действие? Ответы на эти вопросы проверяют разные свойства.
Если алгоритм однажды остановился, это ещё не доказывает его результативность для всех допустимых данных. Можно не заметить, что при другом входе выполнение зацикливается или не доходит до вывода. Проверь несколько возможных случаев и убедись, что каждый из них завершается за конечное число шагов с результатом или сообщением о невозможности решения.
Массовость иногда принимают за повторный запуск алгоритма на тех же данных. На самом деле свойство означает, что один способ подходит для класса однотипных задач. Самопроверка проста: подставь разные допустимые исходные данные и выясни, решает ли алгоритм каждую задачу этого класса.
Для работы с алгоритмами нужны понятия задачи, исходных данных и результата, а также умение выполнять команды по порядку. Дальше свойства алгоритма помогают разбираться в способах его записи, ветвлениях и циклах: особенно важно проверить все пути выполнения и условия остановки. Понятие исполнителя связано с устройством компьютера: программа управляет вычислениями через команды, которые компьютер способен выполнить.
Чем алгоритм отличается от обычной инструкции?
Алгоритм задаёт точные действия и порядок их выполнения так, чтобы конкретный исполнитель мог выполнить их и получить результат. Обычная инструкция может быть неполной, двусмысленной или содержать указания, которые исполнитель не умеет выполнять.
Может ли один алгоритм быть понятным одному исполнителю и непонятным другому?
Да, потому что исполнители обладают разными возможностями и системами команд. Например, человек понимает команду «возьми чашку», а компьютер не сможет выполнить её без точного описания доступных действий.
Чем определённость отличается от понятности?
Определённость означает, что команда задаёт одно конкретное действие, а не допускает разные толкования. Понятность означает, что исполнитель вообще способен разобраться в команде и выполнить её.
Почему алгоритм должен завершаться за конечное число шагов?
Иначе исполнитель не получит ответ и не сможет перейти к решению задачи. Результативный алгоритм для допустимых исходных данных заканчивает работу и выдаёт результат либо сообщает, что решения нет.
Что означает массовость алгоритма?
Алгоритм массовый, если подходит для целого класса однотипных задач, а не только для одного набора исходных данных. Например, способ сложения двух чисел применим к разным парам чисел.
§ 16. Алгоритм и его свойства