Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тезисы_лек_30.doc
Скачиваний:
55
Добавлен:
06.11.2018
Размер:
3.42 Mб
Скачать

Тема 4. Алгоритмические решение задач. Лекция №10. Алгоритмы. Способы записи алгоритма. (1час) Понятие алгоритма. Свойства алгоритмов. Возможность автоматизации деятельности человека

 

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

 

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

 

Понятие “алгоритм” многозначное и единого общепринятого определения для него не существует. Возможны следующие определения.

 

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

 

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

 

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

 

Понятия “способ”, “правило”, “метод”, “рекомендации”, “инструкция”, “технологическая карта”, “схема” являются частными случаями понятия “алгоритм”.

 

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

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

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

 

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

Отказы исполнителя.

Отказ “не понимаю” возникает тогда, когда исполнителю задаётся команда, не входящая в его СКИ.

Отказ “не могу” возникает тогда, когда по какой-либо причине исполнитель находится не в среде исполнения алгоритма.

Отказ “не хочу” интересен тем, что как только исполнитель позволяет себе его, то его действия становятся непредсказуемыми, и говорить об исполнении алгоритма в этом случае не имеет смысла.

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

 

 

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

 

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

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

 

1. Дискретность. Алгоритм состоит из последовательности отдельных законченных действий - шагов. Переход к следующему шагу возможен лишь после завершения предыдущего.

2. Детерминированность. Свойство детерминированности включает в себя два аспекта. С одной стороны, каждый шаг алгоритма должен пониматься исполнителем однозначно (единственным образом, не допуская множественности толкований). С другой стороны, после выполнения каждого очередного шага должно быть точно определено, завершено ли исполнение алгоритма или же какой шаг будет выполняться следующим в зависимости от результата выполнения предыдущих шагов. То есть каждый шаг и порядок его выполнения должны быть точно и однозначно определены.

 

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

Программа, написанная на одном из языков программирования (например, Basic) не будет являться алгоритмом для транслятора с другого языка (например, Pascal).

 

4 Результативность. Исполнение алгоритма должно приводить к какому-либо результату за конечное число шагов.

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

5. Правильность. Для каждого алгоритма должно быть более или менее строго доказано, что его выполнение действительно приведет к решению той задачи, для которой он был разработан.

Для того, чтобы убедиться в правильности алгоритма, используют два основных метода:

- анализ и доказательство правильности алгоритма, то есть более или менее строгие рассуждения, доказывающие, что алгоритм действительно решает поставленную задачу;

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

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

 

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

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

 

7. Массовость. Свойство массовости также включает в себя два аспекта. С одной стороны, алгоритм целесообразно разрабатывать в случае, если его можно будет применять для решения класса (множества) однотипных задач или для точной и безошибочной обработки большого массива данных.