Алгоритм. Свойства алгоритмов. МБОУ Лицей №7. Немтинова О.Е.

advertisement
Алгоритм.
Свойства алгоритмов.
МБОУ Лицей №7.
Немтинова О.Е.
История «Алгоритма»
• Термин «Алгоритм» впервые употреблен в современном
значении Лейбницем (1646-1716), является латинизированной
формой имени великого персидского математика Абу-Джафара
Муххамада ибн-Мусы ал-Хорезми (родился в городе Хорезме,
входящем сейчас в состав Узбекистана, а большую часть своей
жизни провёл при дворе калифов), который еще в IX в. в
основополагающих трудах по арифметике и алгебре разработал
правила выполнения четырех арифметических действий над
многозначными десятичными числами.
• Имя автора произносили как Алгорúтми (Algorithmi) , и со
временем так стали называть в Европе всю систему десятичной
арифметики. Научное определение алгоритма дал Алонзо Чёрч
(выдающийся американский математик и логик, внесший
значительный вклад в основы информатики) в 1930 году. В наше
время понятие алгоритма является одним из основополагающих
понятий вычислительной математики и информатики.
Понятие «Алгоритм»
Алгоритм - это точное и полное
описание последовательности
действий над заданными объектами,
позволяющее получить конечный
результат
Алгоритм решения какой-либо задачи – это
последовательность шагов реализации этого
решения, а процесс построения алгоритма
(алгоритмизация) – разложение задачи на
элементарные действия или операции
Применение алгоритмов
Область математики, известная как теория
алгоритмов, посвящена исследованию свойств, способов
записи, области применения различных алгоритмов, а
также созданию новых алгоритмов. Теория алгоритмов
находит применение в различных областях деятельности
человека – в технике, производстве, медицине,
образовании и т.д.
Появление компьютера позволило решать
чрезвычайно трудные и сложные и трудоемкие задачи.
Применение алгоритмов
Определение алгоритма для применения в области
информатики требует некоторого уточнения:
1. Решение задач в информатики всегда связано с
преобразованием информации, а значит, исходными
данными и результатом работы алгоритма должна быть
информация
Исходные
данные
Алгоритм
Выходные
данные
2. Алгоритмы предназначены для реализации в виде
компьютерных программ или для создания некоторой
компьютерной технологии
Следовательно, при построении алгоритма необходимо
учитывать объем оперативной памяти и конечное
время выполнения алгоритма
Исполнитель алгоритмов
Исполнитель алгоритма — это
некоторая абстрактная или
реальная (техническая,
биологическая или
биотехническая) система,
способная выполнить действия,
предписываемые алгоритмом.
Характеристики исполнителя
Исполнителя характеризуют:
•
•
•
•
среда;
элементарные действия;
система команд;
отказы.
Характеристики исполнителя
• Среда (или обстановка) — это "место
обитания" исполнителя.
Например, для исполнителя Робота среда — это
бесконечное клеточное поле. Стены и
закрашенные клетки тоже часть среды. А их
расположение и положение самого Робота
задают конкретное состояние среды.
Характеристики исполнителя
• Система команд (СКИ). Каждый исполнитель
может выполнять команды только из
некоторого строго заданного списка — системы
команд исполнителя. Для каждой команды
должны быть заданы условия применимости (в
каких состояниях среды может быть выполнена
команда) и описаны результаты выполнения
команды.
Например, команда Робота "вверх" может быть
выполнена, если выше Робота нет стены. Ее
результат — смещение Робота на одну клетку вверх.
Характеристики исполнителя
• Соответствующее элементарное
действие исполнитель совершает после
вызова команды.
• Отказы исполнителя возникают, если
команда вызывается при недопустимом
для нее состоянии среды.
Свойства алгоритма
1. Дискретность (прерывность,
раздельность)
2. Детерминированность
(Определенность)
3. Результативность
4. Массовость
5. Конечность
6. Эффективность
Свойства алгоритма
• Дискретность (прерывность, раздельность) —
т.е. алгоритм должен представлять процесс
решения задачи как последовательное
выполнение простых (или ранее
определенных) шагов (этапов). Каждый шаг
алгоритма формулируется в виде инструкций
(команд).
Свойства алгоритма
• Детерминированность (Определенность) — т.е.
каждое правило алгоритма должно быть четким,
однозначным и быть понятным исполнителю. Такие
указания, как, например, “…и так далее”, многоточие,
“Взять две-три ложки песка” не являются командами и не
могут использоваться в алгоритмах. Будучи понятным,
алгоритм не должен содержать команды, смысл которых
может восприниматься неоднозначно. Кроме того,
недопустимы ситуации, когда после выполнения
очередной команды исполнителю не ясно, какую команду
выполнять на следующем шаге.
Это свойство указывает на то, что любое действие в
алгоритме должно быть строго определено и описано
для каждого случая.
Свойства алгоритма
• Результативность (или конечность) –
алгоритм должен давать конкретный , т.е.
должны быть рассмотрены все возможные
ситуации и для каждой из них получен
результат. Под результатом может
пониматься и сообщение о том, что задача
решения не имеет.
Свойства алгоритма
• Массовость. Это означает, что алгоритм
решения задачи разрабатывается в общем
виде, т.е. он должен быть применим для
некоторого класса задач, различающихся лишь
исходными данными. При этом исходные
данные могут выбираться из некоторой
области, которая называется областью
применимости алгоритма. Это свойство
подразумевает использование переменных в
качестве исходных данных
Свойства алгоритма
• Конечность – количество шагов алгоритма
должно быть конечным
Свойства алгоритма
• Эффективность – количество шагов и сами
шаги алгоритма должны быть такими, чтобы
решение могло быть найдено за конечное и
приемлемое время.
• Для оценки и сравнения алгоритмов
существует много критериев. Чаще всего
анализ алгоритма состоит в оценке временных
затрат на решение задачи в зависимости от от
объема исходных данных.
Способы записи алгоритмов
На практике наиболее распространены следующие
формы представления алгоритмов:
• словесная (записи на естественном языке);
• графическая (изображения из графических
символов);
• псевдокоды (полуформализованные описания
алгоритмов на условном алгоритмическом языке,
включающие в себя как элементы языка
программирования, так и фразы естественного языка,
общепринятые математические обозначения и др.);
• программная (тексты на языках программирования).
Способы записи алгоритмов
• Словесный способ записи алгоритмов представляет
собой описание последовательных этапов обработки
данных. Алгоритм задается в произвольном
изложении на естественном языке.
Данная форма очень удобна, если нужно приближенно описать
суть алгоритма. Однако при словесном описании не всегда
удается ясно и точно выразить идею.
Словесный способ не имеет широкого распространения по
следующим причинам:
• такие описания строго не формализуемы;
• страдают многословностью записей;
• допускают неоднозначность толкования отдельных
предписаний.
Способы записи алгоритмов
• Графический способ представления алгоритмов
является более компактным и наглядным по
сравнению со словесным.
При графическом представлении алгоритм
изображается
в
виде
последовательности
связанных между собой функциональных блоков,
каждый из которых соответствует выполнению
одного или нескольких действий.
Такое графическое представление называется схемой
алгоритма или блок-схемой.
Способы записи алгоритмов. Графический способ
Название символа
Обозначение и пример
заполнения
Пояснение
Процесс
Вычислительное действие или
последовательность действий
Решение
Проверка условий
Модификация
Начало цикла
Предопределенный
процесс
Вычисления по подпрограмме,
стандартной программе
Ввод-вывод
Ввод-вывод в общем виде
Пуск-останов
Начало, конец алгоритма,
вход и выход в подпрограмму
Документ
Вывод результатов на печать
Способы записи алгоритмов.
Псевдокод представляет собой систему обозначений
и правил, предназначенную для единообразной
записи алгоритмов.
Псевдокод занимает промежуточное место между естественным и
формальным языками.
В псевдокоде не приняты строгие синтаксические правила для записи
команд, присущие формальным языкам, что облегчает запись алгоритма
на стадии его проектирования и дает возможность использовать более
широкий набор команд, рассчитанный на абстрактного исполнителя.
Однако в псевдокоде обычно имеются некоторые конструкции,
присущие формальным языкам, что облегчает переход от записи на
псевдокоде к записи алгоритма на формальном языке. В частности, в
псевдокоде, так же, как и в формальных языках, есть служебные слова,
смысл которых определен раз и навсегда. Они выделяются в печатном
тексте жирным шрифтом, а в рукописном тексте подчеркиваются.
Примером псевдокода является школьный алгоритмический язык в
русской нотации (школьный АЯ)
Базовые алгоритмические структуры.
Логическая структура любого алгоритма может быть
представлена комбинацией трех базовых структур:
следование, ветвление, цикл.
Базовые алгоритмические структуры.
1. Базовая структура "следование".
Образуется последовательностью действий,
следующих одно за другим:
Базовые алгоритмические структуры.
2. Базовая структура "ветвление".
Обеспечивает в зависимости от результата проверки
условия (да или нет) выбор одного из
альтернативных путей работы алгоритма. Каждый из
путей ведет к общему выходу, так что работа
алгоритма будет продолжаться независимо от того,
какой путь будет выбран. Структура ветвление
существует в четырех основных вариантах:
• если—то;
• если—то—иначе;
• выбор;
• выбор—иначе.
Базовые алгоритмические структуры.
2. Базовая структура "ветвление".
•
•
если—то
•
если—то—иначе
выбор
•
выбор—иначе
Базовые алгоритмические структуры.
3. Базовая структура "цикл". Обеспечивает
многократное выполнение некоторой совокупности
действий, которая называется телом цикла.
Цикл типа пока.
Предписывает выполнять тело цикла до
тех пор, пока выполняется условие,
записанное после слова пока.
Цикл типа для.
Предписывает выполнять тело цикла для
всех значений некоторой переменной
(параметра цикла) в заданном диапазоне.
Download