SlideShare a Scribd company logo
1 of 10
Практическое занятие 3
Оценка трудоемкости алгоритмов
1.
2.
3.
4.

Теоретические сведения
Контрольные вопросы
Указания по выполнению заданий
Задания
Теоретические сведения
При оценке трудоемкости алгоритмов, представленных
операторными
схемами,
каждому
оператору
сопоставляется трудоемкость (время) его исполнения.
Задаются также правила, частоты или вероятности
перехода от одного оператора к другому. При этом
соответствующая частота (или вероятность) перехода
отлична от нуля только в том случае, когда этот переход
возможен. Требуется определить время исполнения всего
алгоритма или математическое ожидание этого времени.
При этом множество переменных и отношения «быть
аргументом» и «иметь результатом» операторной схемы не
принимаются во внимание.
Одна из простейших схем оценки трудоемкости алгоритма
получается, если рассматривать операторную схему, как
цепь Маркова, приписывая каждой паре операторов (Sj, Sk)
вероятность перехода pjk (pjk = 0 если Sj и Sk не являются
предшественником и преемником соответственно).
Теоретические сведения
Вероятности pjk должны удовлетворять условию
m

∑ p jk

k =1

= 1, j = 1,..., m.

Если в схеме есть хотя бы один выход Sout, то вводят
дополнительный (поглощающий) оператор останова Sm + 1:
pm + 1, k = 0 для k = 1, …, m, pm + 1, m + 1 = 1.
Для любого выхода Sout операторной схемы следует принять
pout, m + 1 = 1, для остальных операторов pj, m + 1 = 0.
Для оценки средних значений времени от начала исполнения
любого оператора до завершения работы программы
можно воспользоваться уравнением
W = (E – Q)–1t,
где W – вектор средних значений времени от исполнения
операторов до завершения программы, t – вектор значений
времени исполнения каждого оператора, E – единичная
Теоретические сведения
Пример 1. Определить трудоемкость алгоритма отыскания
минимума m функции f для целых значений аргумента от 1
до n.
1. Выполнить начальные присваивания: m = f(1), i = 2.
(S1)
2. Если i > n, то перейти к шагу 7.
(S2)
3. Выполнить присваивание u = f(i).
(S3)
4. Если u ≥ m, то перейти к шагу 6.
(S4)
5. Выполнить присваивание m = u.
(S5)
6. Выполнить присваивание i = i + 1 и перейти к шагу 2. (S6)
7. Вывести на экран m.
(S7)
Теоретические сведения

Оператор S2 исполняется первый раз при i = 2, затем – при i =
3, 4, … . Последний раз он исполняется при i = n + 1, и
после перехода на оператор S7 работа алгоритма
завершается. Таким образом, оператор S2 исполнится
ровно n раз, операторы S1 и S7 – по одному разу, а
операторы S3, S4 и S6 – по n – 1 разу. Число исполнений
оператора S5 однозначно определить нельзя, если ничего
не знать о свойствах последовательности значений f(1),
f(2), …, f(n). Предположим, что эти значения случайны и
независимы. Заметим, что в операторе S5 значение u равно
f(i), а m – это наименьшее значение среди f(1), f(2), …, f(i –
1). Неравенство u < m означает, что среди чисел f(1), f(2),
…,
f(i)
наименьшим является
f(i). При нашем
предположении
вероятность
этого
равна
1/i.
Следовательно,
математическое
ожидание
числа
исполнений оператора S5 равно 1/2 + 1/3 + ..+ 1/n . Если tj –
время исполнения оператора Sj, то средняя трудоемкость
n 1
всего алгоритма + t + nt + (n − 1)(t + t + t ) + t
t равна
1

7

2

3

4

6

5

∑i

i=2
Теоретические сведения
Еще один метод оценки трудоемкости алгоритма основан на
решении уравнений Кирхгофа, составляемых по графу
переходов. Здесь общее время работы алгоритма
определяется по формуле

t0 =

m

∑n jt j
j =1

где tj – время исполнения оператора Sj, nj – число исполнений
оператора Sj. Решение уравнений Кирхгофа позволяет
найти nj, j = 1, …, m.
Для составления уравнений требуется, чтобы в схеме были
указаны один начальный оператор, с которого начинается
исполнение алгоритма, и один заключительный оператор,
на котором оно заканчивается.
Теоретические сведения
Добавим к графу переходов еще одну дугу a0, исходящую из
заключительного оператора и заходящую в начальный, и
припишем ей число переходов, равное 1. Дуги исходного
графа обозначим a1, a2, …, as, а число переходов по дуге
ai – gi. Тогда для каждого оператора Sj число nj его
исполнений за время работы программы может быть
подсчитано суммированием либо чисел переходов на
оператор Sj, либо чисел переходов от Sj:

∑ gi = ∑ gi = n j

ai → S j

ai ← S j

при j = 1, …, m (закон Кирхгофа), где ai → Sj означает, что дуга
ai заходит в вершину Sj, а ai ← Sj – что дуга ai исходит из
вершины Sj.
Контрольные вопросы
1.
2.
3.
4.
5.

Трудоемкость алгоритма.
Операторная схема как цепь Маркова.
Условия вероятностей переходов.
Поглощающий оператор.
Формула оценки средних значений от исполнения
операторов до завершения работы программы.
6. Уравнение для определения числа переходов.
7. Составление графа переходов.
8. Составление системы уравнений Кирхгофа по графу
переходов.
9. Число уравнений Кирхгофа.
10.Число зависимых и независимых переменных в системе
уравнений Кирхгофа.
Указания по выполнению заданий
1. Получить задание
2. Разработать алгоритм решения задачи.
3. Определить формулу для расчета трудоемкости
алгоритма.
4. Построить граф переходов.
5. Составить систему уравнений Кирхгофа.
6. Решить систему уравнений Кирхгофа.
7. Подготовить отчет по выполнению задания. Отчет
должен включать задание и описание этапов
выполнения задания.
8. Ответить на вопросы по выполнению задания и
контрольные вопросы
Задания
1. Определить длину наибольшей невозрастающей подпоследовательности
последовательности чисел, заканчивающейся 0.
2. Определить длину наименьшей невозрастающей подпоследовательности
последовательности из 25 чисел.
3. Определить длину наибольшей неубывающей подпоследовательности
последовательности из 25 чисел.
4. Отсортировать по убыванию массив из 10 положительных чисел методом
последовательного нахождения максимума.
5. Отсортировать по возрастанию массив из 10 целых чисел, не
превосходящих по абсолютному значению 100, методом
последовательного нахождения минимума.
6. Отсортировать массив из 10 чисел методом пузырька.
7. Определить наибольшую десятичную цифру целого числа.
8. Определить число десятичных цифр целого числа.
9. Переставить элементы массива из 20 чисел в обратном порядке.
10. Найти количество различных чисел среди элементов целочисленного
массива из 25 элементов.
11. Выполнить умножение многочленов, степень, которых не выше 10, а
целочисленные коэффициенты записаны в двух массивах.
12. Выполнить двоичный поиск в массиве из 30 чисел заданного числа.
13. Найти наибольший общий делитель двух натуральных чисел, используя
алгоритм Евклида.

More Related Content

What's hot

Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКАВведение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКАIgor Kleiner
 
лабораторная работа 4
лабораторная работа 4лабораторная работа 4
лабораторная работа 4Gulnaz Shakirova
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировкиkogoga
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
ветвление.условный оператор.циклы
ветвление.условный оператор.циклыветвление.условный оператор.циклы
ветвление.условный оператор.циклыdasha2012
 
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Mikhail Kurnosov
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Mikhail Kurnosov
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛАПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛАITMO University
 
20090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-0720090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-07Computer Science Club
 
A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsIosif Itkin
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Alexey Paznikov
 

What's hot (15)

Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКАВведение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
Введение в теорию автоматов и вычислений. 1.12 дорожная карта 2 - ДКА
 
лабораторная работа 4
лабораторная работа 4лабораторная работа 4
лабораторная работа 4
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
Алгоритмы сортировки
Алгоритмы сортировкиАлгоритмы сортировки
Алгоритмы сортировки
 
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
ветвление.условный оператор.циклы
ветвление.условный оператор.циклыветвление.условный оператор.циклы
ветвление.условный оператор.циклы
 
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
Лекция 12. Вероятностный анализ и рандомизированные алгоритмы (Randomized al...
 
Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)Лекция 1. Амортизационный анализ (amortized analysis)
Лекция 1. Амортизационный анализ (amortized analysis)
 
Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)Лекция 1. Амортизационный анализ (Amortized analysis)
Лекция 1. Амортизационный анализ (Amortized analysis)
 
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛАПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
ПСЕВДОРЕГУЛЯРНЫЕ КОДОВЫЕ ШКАЛЫ ДЛЯ ЦИФРОВЫХ ПРЕОБРАЗОВАТЕЛЕЙ УГЛА
 
20090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-0720090222 parallel programming_lecture01-07
20090222 parallel programming_lecture01-07
 
A System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate ProgramsA System of Deductive Verification of Predicate Programs
A System of Deductive Verification of Predicate Programs
 
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
Лекция 5. Метод конечных разностей (параллельные алгоритмы в стандарте MPI)
 

Viewers also liked

физика горения16
физика горения16физика горения16
физика горения16student_kai
 
лекция № 2
лекция № 2лекция № 2
лекция № 2student_kai
 
сопряжение бумажного и электронного документооборота
сопряжение бумажного и электронного документооборотасопряжение бумажного и электронного документооборота
сопряжение бумажного и электронного документооборотаstudent_kai
 
слайды клекции №7
слайды клекции №7слайды клекции №7
слайды клекции №7student_kai
 
слайд к лекции 16
слайд к лекции 16слайд к лекции 16
слайд к лекции 16student_kai
 
практика 13
практика 13практика 13
практика 13student_kai
 
презентация писэх лабы
презентация писэх лабыпрезентация писэх лабы
презентация писэх лабыstudent_kai
 
практика 10
практика 10практика 10
практика 10student_kai
 
презентация 7
презентация 7презентация 7
презентация 7student_kai
 
презентация 9
презентация 9презентация 9
презентация 9student_kai
 
лекция №7
лекция №7лекция №7
лекция №7student_kai
 
тема 4.2.14.введение в динамику
тема 4.2.14.введение в динамикутема 4.2.14.введение в динамику
тема 4.2.14.введение в динамикуstudent_kai
 
физика горения17
физика горения17физика горения17
физика горения17student_kai
 
практика 14
практика 14практика 14
практика 14student_kai
 
презентация
презентацияпрезентация
презентацияstudent_kai
 

Viewers also liked (19)

физика горения16
физика горения16физика горения16
физика горения16
 
лекция 3
лекция 3лекция 3
лекция 3
 
лекция № 2
лекция № 2лекция № 2
лекция № 2
 
L10 sld
L10 sldL10 sld
L10 sld
 
сопряжение бумажного и электронного документооборота
сопряжение бумажного и электронного документооборотасопряжение бумажного и электронного документооборота
сопряжение бумажного и электронного документооборота
 
слайды клекции №7
слайды клекции №7слайды клекции №7
слайды клекции №7
 
слайд к лекции 16
слайд к лекции 16слайд к лекции 16
слайд к лекции 16
 
L8 sld
L8 sldL8 sld
L8 sld
 
практика 13
практика 13практика 13
практика 13
 
презентация писэх лабы
презентация писэх лабыпрезентация писэх лабы
презентация писэх лабы
 
практика 10
практика 10практика 10
практика 10
 
презентация 7
презентация 7презентация 7
презентация 7
 
презентация 9
презентация 9презентация 9
презентация 9
 
лекция №7
лекция №7лекция №7
лекция №7
 
тема 4.2.14.введение в динамику
тема 4.2.14.введение в динамикутема 4.2.14.введение в динамику
тема 4.2.14.введение в динамику
 
лекция 12
лекция 12лекция 12
лекция 12
 
физика горения17
физика горения17физика горения17
физика горения17
 
практика 14
практика 14практика 14
практика 14
 
презентация
презентацияпрезентация
презентация
 

Similar to практика 3

практика 1
практика 1практика 1
практика 1student_kai
 
практика 2
практика 2практика 2
практика 2student_kai
 
практика 4
практика 4практика 4
практика 4student_kai
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Alexander Borzunov
 
Борзунов Александр, Cpmoptimize
Борзунов Александр, CpmoptimizeБорзунов Александр, Cpmoptimize
Борзунов Александр, CpmoptimizeDarya Zubova
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Javametaform
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыMikhail Kurnosov
 
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДАПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДАITMO University
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3etyumentcev
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Mikhail Kurnosov
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовMikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времениTatyanazaxarova
 
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклическийKhydosilova
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 

Similar to практика 3 (20)

практика 1
практика 1практика 1
практика 1
 
лекция 2
лекция 2лекция 2
лекция 2
 
практика 2
практика 2практика 2
практика 2
 
практика 4
практика 4практика 4
практика 4
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в ...
 
Борзунов Александр, Cpmoptimize
Борзунов Александр, CpmoptimizeБорзунов Александр, Cpmoptimize
Борзунов Александр, Cpmoptimize
 
Базовые операторы Java
Базовые операторы JavaБазовые операторы Java
Базовые операторы Java
 
Лекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмыЛекция 1: Введение в алгоритмы
Лекция 1: Введение в алгоритмы
 
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДАПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
ПРОГРАММИРУЕМЫЙ ФОРМИРОВАТЕЛЬ ТРАЕКТОРИИ ДВИЖЕНИЯ СЛЕДЯЩЕГО ЭЛЕКТРОПРИВОДА
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)Лекция 1: Амортизационный анализ (Amortized analysis)
Лекция 1: Амортизационный анализ (Amortized analysis)
 
4 algoritm
4 algoritm4 algoritm
4 algoritm
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
 
Лекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмовЛекция 1. Анализ эффективности алгоритмов
Лекция 1. Анализ эффективности алгоритмов
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
 
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклический
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 

More from student_kai

презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкетаstudent_kai
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке Cstudent_kai
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работыstudent_kai
 
лекция№34
лекция№34лекция№34
лекция№34student_kai
 
лекция№32
лекция№32лекция№32
лекция№32student_kai
 
лекция№33
лекция№33лекция№33
лекция№33student_kai
 
лекция№31
лекция№31лекция№31
лекция№31student_kai
 
лекция№30
лекция№30лекция№30
лекция№30student_kai
 
лекция№29
лекция№29лекция№29
лекция№29student_kai
 
лекция№28
лекция№28лекция№28
лекция№28student_kai
 
лекция№27
лекция№27лекция№27
лекция№27student_kai
 
лекция№26
лекция№26лекция№26
лекция№26student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№25
лекция№25лекция№25
лекция№25student_kai
 
лекция№24
лекция№24лекция№24
лекция№24student_kai
 
лекция№23
лекция№23лекция№23
лекция№23student_kai
 
лекция№22
лекция№22лекция№22
лекция№22student_kai
 
лекция№21
лекция№21лекция№21
лекция№21student_kai
 
лекция№20
лекция№20лекция№20
лекция№20student_kai
 
лекция№19
лекция№19лекция№19
лекция№19student_kai
 

More from student_kai (20)

презентации продолжение банкета
презентации продолжение банкетапрезентации продолжение банкета
презентации продолжение банкета
 
основы программирования на языке C
основы программирования на языке Cосновы программирования на языке C
основы программирования на языке C
 
презентация курсовой работы
презентация курсовой работыпрезентация курсовой работы
презентация курсовой работы
 
лекция№34
лекция№34лекция№34
лекция№34
 
лекция№32
лекция№32лекция№32
лекция№32
 
лекция№33
лекция№33лекция№33
лекция№33
 
лекция№31
лекция№31лекция№31
лекция№31
 
лекция№30
лекция№30лекция№30
лекция№30
 
лекция№29
лекция№29лекция№29
лекция№29
 
лекция№28
лекция№28лекция№28
лекция№28
 
лекция№27
лекция№27лекция№27
лекция№27
 
лекция№26
лекция№26лекция№26
лекция№26
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№25
лекция№25лекция№25
лекция№25
 
лекция№24
лекция№24лекция№24
лекция№24
 
лекция№23
лекция№23лекция№23
лекция№23
 
лекция№22
лекция№22лекция№22
лекция№22
 
лекция№21
лекция№21лекция№21
лекция№21
 
лекция№20
лекция№20лекция№20
лекция№20
 
лекция№19
лекция№19лекция№19
лекция№19
 

практика 3

  • 1. Практическое занятие 3 Оценка трудоемкости алгоритмов 1. 2. 3. 4. Теоретические сведения Контрольные вопросы Указания по выполнению заданий Задания
  • 2. Теоретические сведения При оценке трудоемкости алгоритмов, представленных операторными схемами, каждому оператору сопоставляется трудоемкость (время) его исполнения. Задаются также правила, частоты или вероятности перехода от одного оператора к другому. При этом соответствующая частота (или вероятность) перехода отлична от нуля только в том случае, когда этот переход возможен. Требуется определить время исполнения всего алгоритма или математическое ожидание этого времени. При этом множество переменных и отношения «быть аргументом» и «иметь результатом» операторной схемы не принимаются во внимание. Одна из простейших схем оценки трудоемкости алгоритма получается, если рассматривать операторную схему, как цепь Маркова, приписывая каждой паре операторов (Sj, Sk) вероятность перехода pjk (pjk = 0 если Sj и Sk не являются предшественником и преемником соответственно).
  • 3. Теоретические сведения Вероятности pjk должны удовлетворять условию m ∑ p jk k =1 = 1, j = 1,..., m. Если в схеме есть хотя бы один выход Sout, то вводят дополнительный (поглощающий) оператор останова Sm + 1: pm + 1, k = 0 для k = 1, …, m, pm + 1, m + 1 = 1. Для любого выхода Sout операторной схемы следует принять pout, m + 1 = 1, для остальных операторов pj, m + 1 = 0. Для оценки средних значений времени от начала исполнения любого оператора до завершения работы программы можно воспользоваться уравнением W = (E – Q)–1t, где W – вектор средних значений времени от исполнения операторов до завершения программы, t – вектор значений времени исполнения каждого оператора, E – единичная
  • 4. Теоретические сведения Пример 1. Определить трудоемкость алгоритма отыскания минимума m функции f для целых значений аргумента от 1 до n. 1. Выполнить начальные присваивания: m = f(1), i = 2. (S1) 2. Если i > n, то перейти к шагу 7. (S2) 3. Выполнить присваивание u = f(i). (S3) 4. Если u ≥ m, то перейти к шагу 6. (S4) 5. Выполнить присваивание m = u. (S5) 6. Выполнить присваивание i = i + 1 и перейти к шагу 2. (S6) 7. Вывести на экран m. (S7)
  • 5. Теоретические сведения Оператор S2 исполняется первый раз при i = 2, затем – при i = 3, 4, … . Последний раз он исполняется при i = n + 1, и после перехода на оператор S7 работа алгоритма завершается. Таким образом, оператор S2 исполнится ровно n раз, операторы S1 и S7 – по одному разу, а операторы S3, S4 и S6 – по n – 1 разу. Число исполнений оператора S5 однозначно определить нельзя, если ничего не знать о свойствах последовательности значений f(1), f(2), …, f(n). Предположим, что эти значения случайны и независимы. Заметим, что в операторе S5 значение u равно f(i), а m – это наименьшее значение среди f(1), f(2), …, f(i – 1). Неравенство u < m означает, что среди чисел f(1), f(2), …, f(i) наименьшим является f(i). При нашем предположении вероятность этого равна 1/i. Следовательно, математическое ожидание числа исполнений оператора S5 равно 1/2 + 1/3 + ..+ 1/n . Если tj – время исполнения оператора Sj, то средняя трудоемкость n 1 всего алгоритма + t + nt + (n − 1)(t + t + t ) + t t равна 1 7 2 3 4 6 5 ∑i i=2
  • 6. Теоретические сведения Еще один метод оценки трудоемкости алгоритма основан на решении уравнений Кирхгофа, составляемых по графу переходов. Здесь общее время работы алгоритма определяется по формуле t0 = m ∑n jt j j =1 где tj – время исполнения оператора Sj, nj – число исполнений оператора Sj. Решение уравнений Кирхгофа позволяет найти nj, j = 1, …, m. Для составления уравнений требуется, чтобы в схеме были указаны один начальный оператор, с которого начинается исполнение алгоритма, и один заключительный оператор, на котором оно заканчивается.
  • 7. Теоретические сведения Добавим к графу переходов еще одну дугу a0, исходящую из заключительного оператора и заходящую в начальный, и припишем ей число переходов, равное 1. Дуги исходного графа обозначим a1, a2, …, as, а число переходов по дуге ai – gi. Тогда для каждого оператора Sj число nj его исполнений за время работы программы может быть подсчитано суммированием либо чисел переходов на оператор Sj, либо чисел переходов от Sj: ∑ gi = ∑ gi = n j ai → S j ai ← S j при j = 1, …, m (закон Кирхгофа), где ai → Sj означает, что дуга ai заходит в вершину Sj, а ai ← Sj – что дуга ai исходит из вершины Sj.
  • 8. Контрольные вопросы 1. 2. 3. 4. 5. Трудоемкость алгоритма. Операторная схема как цепь Маркова. Условия вероятностей переходов. Поглощающий оператор. Формула оценки средних значений от исполнения операторов до завершения работы программы. 6. Уравнение для определения числа переходов. 7. Составление графа переходов. 8. Составление системы уравнений Кирхгофа по графу переходов. 9. Число уравнений Кирхгофа. 10.Число зависимых и независимых переменных в системе уравнений Кирхгофа.
  • 9. Указания по выполнению заданий 1. Получить задание 2. Разработать алгоритм решения задачи. 3. Определить формулу для расчета трудоемкости алгоритма. 4. Построить граф переходов. 5. Составить систему уравнений Кирхгофа. 6. Решить систему уравнений Кирхгофа. 7. Подготовить отчет по выполнению задания. Отчет должен включать задание и описание этапов выполнения задания. 8. Ответить на вопросы по выполнению задания и контрольные вопросы
  • 10. Задания 1. Определить длину наибольшей невозрастающей подпоследовательности последовательности чисел, заканчивающейся 0. 2. Определить длину наименьшей невозрастающей подпоследовательности последовательности из 25 чисел. 3. Определить длину наибольшей неубывающей подпоследовательности последовательности из 25 чисел. 4. Отсортировать по убыванию массив из 10 положительных чисел методом последовательного нахождения максимума. 5. Отсортировать по возрастанию массив из 10 целых чисел, не превосходящих по абсолютному значению 100, методом последовательного нахождения минимума. 6. Отсортировать массив из 10 чисел методом пузырька. 7. Определить наибольшую десятичную цифру целого числа. 8. Определить число десятичных цифр целого числа. 9. Переставить элементы массива из 20 чисел в обратном порядке. 10. Найти количество различных чисел среди элементов целочисленного массива из 25 элементов. 11. Выполнить умножение многочленов, степень, которых не выше 10, а целочисленные коэффициенты записаны в двух массивах. 12. Выполнить двоичный поиск в массиве из 30 чисел заданного числа. 13. Найти наибольший общий делитель двух натуральных чисел, используя алгоритм Евклида.