Практическая работа №5 «Построение графов алгоритмов, определение сложности алгоритмов» — КиберПедия 

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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Практическая работа №5 «Построение графов алгоритмов, определение сложности алгоритмов»

2017-11-16 653
Практическая работа №5 «Построение графов алгоритмов, определение сложности алгоритмов» 0.00 из 5.00 0 оценок
Заказать работу

Цель: Формирование умений и навыков по представлению алгоритмов в виде управляющего графа.

 

Задачи:

5. научиться строить управляющие графы

6. научиться определять сложность алгоритма по управляющему графу.

 

Оснащение урока:

· Техническое: ПК, сканер, принтер, интерактивная доска

· Методическое: инструкционная карта, задание для самостоятельного выполнения

· Программное: Windows XP, Microsoft Office 2007.

Теоретические сведения: С целью анализа алгоритм (программу) удобно представлять управляющим графом (родственное понятие - схема алгоритма).

Рисунок 8 – граф

 

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

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

Для определения средней сложности необходимо оценить частоты выбора ветвей.

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

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

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

 

Ход работы

1. В рабочей тетрадке запишите тему, цель и задачи работы.

2. Приступите к выполнению упражнений.

3. Выполните задание в соответствии с вариантом.

4. Ответьте на контрольные вопросы.

5. Оформите отчет основные определения, рассуждения по решению задач, ответ; вывод по работе

6. Сделайте вывод по работе.

 

Упражнение1 – Управляющий граф содержит 10 вершин с весом {3, 5, 1,4, 3, 4, 6, 8, 5, 3}. Вершина 3 (вес равен 1) соответствует вычислению условия в операторе if; вершины 4, 5, 6 входят в часть then, вершины 7, 8 входят в часть else (рис. 9)

4 3 4 Then 3 5 1   Else 5 3 6 8
 
 
 
 
 
 
 
 
 
 
 

 


Рисунок 9 – Управляющий граф к упражнению 1

 

Решение: имеется две ветви с весом 3+5+1+4+3+4+5+3 = 28 и 3+5+1+6+8+5+3 = 31; сложность равна 31.

Упражнение 2 – Тот же граф, что и в примере 1, но вершина 8 соответствует вызову процедуры, имеющей сложность 2V + 1.

В этом случае функция сложности равна max (28, 2V+24) = 24+max(4, 2V) = 24 + 2 max (2, V).

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

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

 

Упражнение 3 - Процедура содержит цикл

for i:= 1 to x do

<тело цикла>,

где x - входная переменная, x [1, 100].

 

Решение: Тело цикла выполняется x раз, худший случай реализуется при x =100.

Если предположить равновероятность различных значений x, то среднее количество выполнений тела цикла равно (1/100)(1+2+3+...+100) = 50,5.

 

Упражнение 4 - Процедура содержит вложенные циклы:

for i:= 1 to x do

for j:= i to x do

<тело цикла>;

входная переменная xÎ[1, 5].

 

Решение: Тело цикла выполняется x + (x-1)+(х-2)+...+ 1 = x (х+1)/2 раз.

Верхняя граница сложности = max = (x (х+1)/2) = 13.

Среднее значение сложности подсчитать несколько труднее.

Снова положим, что все 5 возможных значений x равновероятны.

Тогда среднее значение сложности равно:

 

Задания для самостоятельного выполнения

Построить управляющий граф и определить сложность алгоритма.

1. Управляющий граф содержит 9 вершин с весом {4, 3, 6, 8, 2, 2, 1, 5, 6}.

Вершина 2 (вес равен 3) соответствует вычислению условия в операторе if; вершины 3, 4, 5 входят в часть then, вершина 6 входят в часть else.

Вершина 8 (вес равен 5) соответствует вычислению условия в операторе if; вершины 9 входят в часть then.

2. Тот же граф, что и в задании 1, но вершина 5 соответствует вызову процедуры, имеющей сложность 3V, а вершина 8 имеет сложность 2V-1.

3. Процедура содержит цикл

for i:= 1 to x do a:= a*(a+1);

 

 

Контрольные вопросы

1. Что называется сложность графа?

2. Что называется управляющим графом?

3. Какие управляющие графы вы знаете?



Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.013 с.