Ежедневно каждый из нас решает задачи различной сложности. Некоторые
задачи решаются просто, так как они встречаются каждый день, другие
задачи требуют длительных размышлений для нахождения решения. Причём
зачастую решение найти не удаётся. Но в любом случае решение каждой
задачи можно подразделить на простые этапы.
Например,
вас отправили вечером за хлебом. Решение данной задачи можно разбить
на следующие шаги:
-
Пойти в магазин.
-
Если магазин уже закрыт (других магазинов рядом нет), то идти домой
(конец задачи с отрицательным результатом).
-
Если магазин открыт, перейти к п. 4.
-
Зайти в магазин.
-
Если есть хлеб, то перейти к п. 6, иначе идти домой (конец задачи
с отрицательным результатом).
-
Оплатить стоимость хлеба.
-
Получить хлеб.
-
Конец решения задачи с положительным результатом.
Приведённая
последовательность шагов является алгоритмом решения задачи «Купить
хлеб».
Для
решения задачи надо знать, что дано и что следует получить, т. е.
у задачи есть исходные данные и искомые результаты. Для получения
результатов необходимо знать способ решения задачи, то есть располагать
алгоритмом, в котором указано, какие действия и в каком порядке следует
выполнить, чтобы решить задачу.
Алгоритм
– это точная конечная система правил, определяющая содержание
и порядок действий исполнителя над некоторыми объектами (исходными
и промежуточными данными) для получения после конечного числа
шагов искомого результата [1]. |
Любой алгоритм обладает следующими свойствами.
-
Выполнение алгоритма разбивается на последовательность законченных
действий. Каждое действие должно быть закончено исполнителем прежде,
чем он приступит к исполнению следующего действия. Это свойство
называется дискретностью. Произвести каждое отдельное действие исполнителю
предписывает специальное указание в записи алгоритма, называемое
командой.
-
Детерминированность – на каждом шаге однозначно определено преобразование
объектов среды исполнителя, полученной на предыдущих шагах алгоритма.
Если алгоритм многократно применяется к одному и тому же набору
исходных данных, то на выходе он получает каждый раз один и тот
же результат.
Понятие «детерминированность» объединяет в себе выполнение двух
свойств – точности и понятности.
-
Точность – запись алгоритма должна быть такой, чтобы на каждом шаге
его выполнения было известно, какую команду надо выполнять следующей.
-
Понятность – алгоритм не должен содержать предписаний, смысл которых
может восприниматься неоднозначно, т. е. одно и то же предписание
после исполнения должно давать один и тот же результат. Алгоритм
всегда рассчитан на выполнение «не размышляющего» исполнителя.
-
Результативность – каждый шаг после своего завершения создаёт среду,
в которой все объекты однозначно определены. Если это по каким-то
причинам невозможно, алгоритм должен сообщать, что решение задачи
невозможно. При точном исполнении команд алгоритма процесс должен
завершиться за точное количество шагов, и при этом должен быть получен
ответ на вопрос задачи.
-
Массовость – алгоритм работает правильно на некотором множестве
исходных данных, которое называется областью применения алгоритма,
т. е. алгоритм пригоден для решения любой задачи из некоторого класса
задач [2].
Алгоритм
может быть описан одним из трёх способов:
-
словесным (пример в начале раздела);
-
графическим (в виде специальной блок-схемы);
-
с помощью специальных языков программирования.
Блок-схема
– распространённый тип схем, описывающий алгоритмы или процессы изображением
шагов в виде блоков различной формы, соединённых между собой стрелками.
Основные
элементы схем алгоритма представлены в табл. 1.1.
Таблица 1.1
Основные
элементы блок-схем

Пример
алгоритма, записанного в виде блок-схемы, представлен на рис. 1.1.

|