Определение и свойства алгоритма (9 класс)

Понятие алгоритма так же фундаментально для информатики, как и понятие информации. Поэтому в нем очень важно как следует разобраться.

Происхождение понятия «алгоритм».
Само слово «алгоритм» происходит от имени выдающегося математика средневекового Востока Мухаммеда ибн Мусы аль-Хорезми (787-850). Им были предложены приемы выполнения арифметических вычислений с многозначными числами (вам они хорошо знакомы из школьной математики). Позже в Европе эти приемы назвали алгоритмами, от Algorithmi — латинского написания имени аль-Хорезми. В наше время понятие алгоритма понимается шире, не ограничивается только арифметическими вычислениями.

Исполнитель алгоритма.
Из предыдущего параграфа вы узнали, что алгоритм — это последовательность команд управления каким-либо объектом. Мы назвали такой объект объектом управления или исполнителем алгоритма. Им может быть как техническое устройство, так и живое существо.

Рассмотрим исполнителя — человека. Для него можно сформулировать множество алгоритмов, например алгоритмы арифметических вычислений. С таким же успехом можно назвать алгоритмами множество различных инструкций, предписывающих последовательность действий человека для выполнения какой-либо работы. Например, кулинарный рецепт — это алгоритм работы повара с целью приготовления блюда; инструкция по сборке машинки из деталей детского конструктора — алгоритм для ребенка; инструкция по использованию кухонного комбайна — алгоритм для домохозяйки.

Вы, наверное, никогда не задумывались над тем, какое количество алгоритмов вам известно. Жизненный опыт человека растет с увеличением числа освоенных им алгоритмов. Например, чтобы ребенок научился покупать в магазине хлеб, ему нужно сначала рассказать (а лучше показать), как это делается. Освоив «алгоритм покупки хлеба», он в дальнейшем будет успешно выполнять эту работу.

Поиск выигрышной тактики, а следовательно, и алгоритма несложной игры — интересная и полезная задача. Рассмотрим одну из таких игр, которая называется игрой Баше.

Играют двое. Перед ними 21 предмет, допустим, камни (также может быть 11, 16, 26 и т. д.). Игроки берут камни по очереди. За один ход можно взять 1, 2, 3, 4 камня. Проигрывает тот, кто забирает последний камень.

Имеется выигрышная тактика для игрока, берущего камни вторым. Она заключается в том, чтобы брать такое количество камней, которое дополняет число камней, взятых соперником на предыдущем ходе, до пяти. Этот алгоритм можно описать в виде последовательности команд:

алr Игра Баше
нач

  1. Предоставить ход сопернику.
  2. Взять столько камней, чтобы в сумме с предыдущим ходом соперника получилось 5.
  3. Если остался один камень, то объявить о своем выигрыше, иначе вернуться к выполнению команды 1.

кон

Игрок, строго следующий этому алгоритму, будет всегда выигрывать, даже если он не понимает, почему так происходит.

Алгоритмический язык.
В приведенном примере записи алгоритма используется символика учебного Алгоритмического языка (АЯ).

Из примера видно, что при записи алгоритма на АЯ вначале пишется заголовок, начинающийся со служебного слова алr (сокращенное слово «алгоритм»). Затем указывается название алгоритма, которое составитель алгоритма придумывает сам. Следующая часть называется телом алгоритма. Она начинается со служебного слова нач (начало) и заканчивается словом кон (конец). Тело алгоритма представляет собой последовательность команд для исполнителя.

Здесь и в дальнейшем служебные слова в алгоритмах на алгоритмическом языке будут записываться жирным шрифтом. В языках программирования (как и в АЯ) служебными называются слова, которые всегда употребляются в одном и том же смысле.

Свойства алгоритма.

Процесс решения задачи должен быть разбит на последовательность отдельно выполняемых шагов.

Это свойство алгоритма называется дискретностью.

Всякий алгоритм составляется в расчете на конкретного исполнителя с учетом его возможностей. Для того чтобы алгоритм был выполним, нельзя включать в него команды, которые исполнитель не в состоянии выполнить. Нельзя повару поручать работу токаря, какая бы подробная инструкция ему ни давалась. У каждого исполнителя имеется свой перечень команд, которые он может исполнить. Такой перечень называется системой команд исполнителя алгоритмов (СКН).

Алгоритм, составленный для конкретного исполнителя, должен включать только те команды, которые входят в систему команд исполнителя.

Это свойство алгоритма называется понятностью.

Алгоритм не должен быть рассчитан на принятие каких-либо самостоятельных решений исполнителем, не предусмотренных составителем алгоритма.

Каждая команда алгоритма должна определять однозначное действие исполнителя.

Это свойство алгоритма называется точностью.

Исполнение алгоритма должно завершиться за конечное число шагов.

Это свойство алгоритма называется конечностью.

Для успешного выполнения любой работы мало иметь ее алгоритм. Всегда требуются еще какие-то исходные данные, с которыми будет работать исполнитель (продукты для приготовления блюда, детали для сбора технического устройства и т. п.). Исполнителю, решающему :математическую задачу, требуется исходная числовая информация. Задача всегда формулируется так: дана исходная информация, требуется получить какой-то результат. В математике вы привыкли в таком: виде записывать условия задач. Например:

Дано: катеты прямоугольного треугольника а= З см; Ь = 4 см.
Найти: гипотенузу с

Алгоритм: решения этой задачи можно представить в таком виде:

алr Гипотенуза
нач

  1. Возвести а в квадрат.
  2. Возвести Ь в квадрат.
  3. Сложить результаты действий 1 и 2.
  4. Вычислить квадратный корень результата действия 3 и принять его за значение с.

кон.

Каждую из этих команд может выполнить любой человек, знающий основы математики, следовательно, они входят в его систему команд.

Еще пример: для поиска номера телефона нужного вам человека исходными данными являются: фамилия, инициалы человека и телефонная книга (точнее, информация, заключенная в телефонную книгу). Однако этого может оказаться недостаточно. Например, вы ищете номер телефона Смирнова А. И. и обнаруживаете, что в книге пять строк с фамилией «Смирнов А. И». Ваши исходные данные оказались неполными для точного решения задачи (вместо одного номера телефона вы получили пять). Оказалось, что нужно знать еще домашний адрес.

Набор: «Фамилия — инициалы — телефонный справочник – адрес» является полным набором данных в этой ситуации.

Только имея полный набор данных, можно точно решить задачу.

Если исходные данные неполные, то задачу, либо совсем нельзя решить (ничего нельзя узнать про гипотенузу по одному катету), либо получается неоднозначное решение (пять номеров телефонов).

В задачах управления физическими объектами (автомобиль, самолет, станок и т. п.) исходными данными является информация о состоянии объекта управления, об обстановке, его окружающей.

Определение алгоритма.
Обобщая все сказанное, сформулируем определение алгоритма.

Алгоритм — понятное и точное предписание исполнителю выполнить конечную последовательность команд, приводящую от исходных данных к искомому результату.

Формальное исполнение алгоритма.
Если алгоритм обладает перечисленными выше свойствами, то работа по нему будет производиться исполнителем формально (т. е. без всяких элементов творчества со стороны исполнителя). На этом основана работа программно управляемых исполнителей-автоматов, например промышленных роботов. Робот-манипулятор может выполнять работу токаря, если он умеет выполнять все операции токаря (включать станок, закреплять резец, перемещать резец, замерять изделие). От исполнителя не требуется понимания сущности алгоритма, он должен лишь точно выполнять команды, не нарушая их последовательности.

Что такое программа.
А что такое программа? Отличается ли чем-то программа от алгоритма?

Программа — это алгоритм, записанный на языке исполнителя.

Иначе можно сказать так: алгоритм и программа не отличаются по содержанию, но могут отличаться по форме.

Для алгоритма строго не определяется форма его представления. Алгоритм можно изобразить графически, можно — словесно, можно — какими-нибудь специальными
значками, попятными только его автору. Но программа должна быть записана на языке исполнителя.

Коротко о главном:

  • Слово «алгоритм» происходит от имени Мухаммеда ибн Мусы аль-Хорезми, первым предложившего приемы выполнения арифметических операций с многозначными числами.
  • Исполнитель алгоритма — это тот объект, для управления которым составлен алгоритм.
  • Процесс решения задачи должен быть разбит на последовательность отдельных шагов (свойство дискретности алгоритма).
  • Система команд исполнителя (СКИ) — это вся совокупность команд, которые исполнитель умеет выполнять (понимает). Алгоритм можно строить только из команд, входящих.
  • в СКИ исполнителя (свойство понятности алгоритма).
  • Каждая команда алгоритма управления должна определять однозначное действие исполнителя (свойство точности алгоритма).
  • Выполнение алгоритма должно приводить к результату за конечное число шагов (свойство конечности алгоритма).
  • Для успешного выполнения работы, решения задачи необходимо сообщить (передать) исполнителю полный набор исходных данных.
  • Выполнение алгоритма исполнителем производится формально.
  • Программа от алгоритма может отличаться по форме, но не по содержанию. Программа — это алгоритм, представленный на языке исполнителя.

Вопросы и задания:

  1. Что такое алгоритм? Откуда произошло это слово?
  2. Что такое исполнитель алгоритма?
  3. Каковы основные свойства алгоритма?
  4. Назовите исполнителей следующих видов работы: уборки мусора во дворе; перевозки пассажиров; выдачи заработной платы; приема экзаменов; сдачи экзаменов; обучения детей в школе. Попробуйте сформулировать СКИ для каждого из этих исполнителей.
  5. Определите полный набор данных для решения следующих задач обработки информации:
    • вычисления стоимости покупок в магазине;
    • вычисления суммы сдачи от данных вами продавцу денег;
    • определения времени показа по телевизору интересующего вас фильма;
    • вычисления площади треугольника;
    • определения времени падения кирпича с крыши дома;
    • определения месячной платы за расход электроэнергии;
    • перевода русского текста на итальянский язык;
    • перевода итальянского текста на русский язык.
  6. Попробуйте сформулировать алгоритмы обработки информации для заданий, если исполнителем являетесь вы сами. Какие команды при этом вы должны уметь выполнять?

Содержание