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

1.4.2. Способы записи алгоритмов.

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

  • Блок-схемы — графическое изображение алгоритма с помощью нескольких определённых видов геометрических фигур и соединяющих их линий. Существует государственный стандарт, содержащий перечень правил для построения блок-схем. (ГОСТ 19.701-90 или ИСО 5807-85. Дата введения стандарта: 01.01.1992 г.).

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

Основными достоинствами блок-схем являются наглядность и наличие стандарта, достоинство описательного способа — компактность. На практике часто сочетают эти способы.

1.4.3. Введение в анализ алгоритмов Вычислительные модели

Алгоритмы не существуют сами по себе, они создаются для конкретного исполнителя, и при разработке алгоритма разработчик ориентируется на его возможности – доступные ресурсы, операции и стоимости их использования. Все эти факторы учитываются в так называемой вычислительной модели [10].

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

При разработке и анализе "практических" алгоритмов чаще всего в качестве вычислительной модели рассматривается так называемая машина с произвольным доступом, которая, по существу, является моделью современного компьютера. В такой модели имеется оперативная память и один процессор, который последовательно выполняет инструкции программы в оперативной памяти. При этом задан набор инструкций, поддерживаемых процессором – арифметические операции, пересылка данных, управление выполнением программы. Каждая инструкция выполняется за константное время.

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

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

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

Показатели эффективности алгоритма

Под эффективностью алгоритма понимается рациональное использование ресурсов заданной вычислительной модели [10].

Выделим основные показатели эффективности. Практически для любой вычислительной модели важнейшими показателями эффективности работы алгоритма являются время работы и размер используемой памяти.

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

Иногда приходится рассматривать и другие показатели – например, объём сетевого трафика между клиентом и сервером и т.д.

Часто для решения одной и той же задачи могут быть использованы различные алгоритмы. Выбор между ними выполняется в основном по критерию их эффективности. При этом актуальным является вопрос оценки эффективности алгоритма. Конечно, затраты ресурсов можно определить экспериментально, если алгоритм уже реализован. Но реализовывать все альтернативные алгоритмы экономически невыгодно. Кроме того, как правило, мы не в состоянии проверить работу алгоритма на всех возможных вариантах входных данных. По этой причине еще на этапе проектирования выполняется анализ предлагаемых алгоритмов.