Практическое занятие № 1
Расчет трудоемкости выполнения алгоритма
1.1 Цель работы
Изучение методов оценки трудоемкости алгоритмов на основе теории марковских цепей и сетевого подхода, а также определение максимального и минимального времени выполнения алгоритма.
1.2 Методические указания по организации самостоятельной работы студентов
При подготовке к практическому занятию необходимо изучить методические указания, соответствующие разделы конспекта лекций и раздел, приведенный в [1, с. 40 - 49].
Трудоемкость алгоритма – количество вычислительной работы, требуемой для реализации алгоритма.
В задачах оценки трудоемкости операторы алгоритма разделяют на функциональные, перехода и ввода-вывода.
Функциональный оператор задает преобразование на множестве данных, т.е. задает некоторую совокупность вычислительных операций. Оператор перехода задает порядок вычисления функциональных операторов и правило выбора одного из возможных путей развития вычислительного процесса, соответствующего текущим значениям данных. Оператор ввода-вывода задает обращение к определенному файлу с целью передачи некоторого количества информации. Функциональные операторы и операторы перехода называют основными операторами.
Совокупность операторов и связей между ними наиболее наглядно представляется графом алгоритма, где вершины соответствуют основным операторам алгоритма, а дуги отображают связи между операторами.
Вершины графа бывают трех типов: начальная, конечная и операторная. Начальная вершина определяет начало алгоритма. Эта вершина не имеет ни одного входа и имеет только один выход. Конечная вершина определяет конец алгоритма и имеет не менее одного входа и ни одного выхода. Операторная вершина соответствует основному оператору или оператору ввода-вывода. Если она представляет функциональный оператор или ввода-вывода, то может иметь не меньше одного входа и только один выход. Если она представляет оператор перехода, то может иметь не меньше одного входа и не меньше двух выходов.
Граф алгоритма является корректным, если выполняются условия:
- имеется только одна начальная и только одна конечная вершина;
- для каждой вершины кроме начальной существует по крайней мере один путь, ведущий в эту вершину из начальной;
- из каждой вершины кроме конечной существует по крайней мере один путь, ведущий из этой вершины в конечную;
- выход из любой вершины должен вести только к одной вершине графа;
- при любых значениях логических условий существует путь из начальной вершины в конечную, причем любому фиксированному набору значений условий соответствует только один такой путь.
Пример графа алгоритма приведен на рис. 1.1.
Рис. 1.1. Пример представления графа алгоритма
Вершины графа обозначены номерами ; (0 - начальная вершина, K - конечная; 1,...,K-1 идентифицируют операторы алгоритма). Граф выявляет структуру алгоритма, определяя множество операторов и дуг , и , связывающих операторы.
Для оценки трудоемкости алгоритма необходимо:
1 разбить множество операторов на классы:
основных операторов , ,
операторов ввода-вывода
2 для каждого основного оператора определить количество операций , составляющих оператор и для каждого оператора ввода-вывода - среднее количество информации , передаваемой при выполнении оператора;
3 переходы между операторами и следует рассматривать как случайные события и характеризовать их вероятностями , т.е. каждая дуга графа алгоритма отмечается вероятностью перехода , с которой переход из вершины к выполняется именно по этой дуге.
Так как вычислительный процесс не может приостановиться в вершине , то с вероятностью 1 произойдет переход к какой-либо вершине графа алгоритма. Поэтому вероятности переходов должны отвечать условию:
, (); (1.1)
Значения зависят от вероятностей выполнения условия, проверяемого оператором с целью выбора пути перехода.
Пусть - среднее число обращений к операторам за один прогон алгоритма. Тогда характеристика трудоемкости может быть вычислена следующим образом:
среднее число операций, выполняемых при одном прогоне алгоритма
(1.2)
где - множество операторных вершин рассматриваемого графа алгоритма; -количество операций, порождаемых оператором .
В связи с тем, что вероятности переходов постоянны и после выполнения оператора () переход к следующему оператору определяется только распределением вероятностей , т.е. не зависит от хода вычислительного процесса в прошлом, то процесс выполнения алгоритма является марковским процессом с состояниями , соответствующими пребыванию процесса в вершинах графа алгоритма.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.