Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8_Теория алгоритмов..doc
Скачиваний:
89
Добавлен:
14.03.2016
Размер:
492.54 Кб
Скачать

Общие свойства алгоритмов.

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

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

  2. Массовость алгоритма: алгоритм служит для решения не какой-то одной задачи, а целого класса однотипных задач. В этом аспекте таблица умножения не является алгоритмом, а умножение столбиком многозначных чисел – алгоритм. Например, в алгоритме Евклида числа aиb выбираются из бесконечного (счетного) множества целых чисел.

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

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

  5. Результативность алгоритма: алгоритм через конечное число шагов должен привести к остановке, которая свидетельствует о достижении требуемого результата. Так при поиске пути в лабиринте остановка наступает либо на достижимой площадке, либо при возвращении на исходную площадку, если указанная цель не достижима. В частности, всякий, кто предъявляет алгоритм решения некоторой задачи, обязан показать, что алгоритм останавливается после конечного числа шагов (как говорят, сходится) для любого xиз области заданияf. Однако проверить результативность (сходимость алгоритма) гораздо труднее, чем другие его свойства.

Способы задания алгоритмов

Алгоритм может быть задан в следующем виде:

  1. в вербальной (словесной) форме;

  2. в виде ЛГСА (логически графическая схема алгоритма) – в графической форме в виде блок-схемы;

  3. в виде структурограммы Насси-Шнейдермана;

  4. в виде программы для ЭВМ.

Блок-схема это графическое изображение алгоритма. При её построении содержимое каждого шага алгоритма записывается в произвольной форме внутри блока, представленного геометрической фигурой. Порядок выполнения шагов указывается с помощью стрелок, соединяющих блоки. Использование различных геометрических фигур отражает различный характер выполняемых действий. Размеры фигур и их вид регламентированы ГОСТ 19.003-80 или ISO1028-73.

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

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

Параллелограмм(блок ввода-вывода) содержит информацию о входных и выходных данных.

Овал означает начало или окончание вычислительного процесса.

Наиболее часто употребляемые символы ЛГСА

Начало, конец обработки данных

Вычислительный процесс

Ввод-вывод информации

Проверка условия (принятие решения)

Подпрограмма (стандартная процедура)

Блок модификации (цикл)

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]