Практическое задание — Математические модели алгоритмов программного обеспечения
Задание
Провести анализ и оценку временной сложности заданного алгоритма. Варианты заданий представлены в таблице (выбор варианта задания осуществляется по первой букве фамилии). Блок схемы алгоритмов – на рис. 1.1–1.6. В блок-схемах символ div обозначает операцию целочисленного деления, mod – остаток от целочисленного деления.
Таблица 1.1
Варианты заданий
| Первая буква фамилии студента | Вариант | Алгоритм |
| А, Б, В, Г, Д | 1 | Тривиальный алгоритм возведения в степень (рисунок 1.1) |
| Е, Ж, З, И, К | 2 | Рекурсивный алгоритм возведения в степень (рис.1.2) |
| Й, Ё, Ъ, Ы, Ь | 3 | Алгоритм быстрого возведения в степень (рис. 1.3, а) |
| Л, М, Н, О, П | 4 | Алгоритм быстрого возведения в степень (рис. 1.3, б) |
| Р, С, Т, У, Ф, Х, Ц | 5 | Алгоритм вычисления значения многочлена (рис. 1.5) |
| Ч, Ш, Щ, Э, Ю, Я | 6 | Алгоритм вычисления значения многочлена по схеме Горнера (рис. 1.4) |

Рис. 1.1. Тривиальный алгоритм возведения x в степень n

Рис. 1.2. Рекурсивный алгоритм возведения x в степень n

а) б)
Рис. 1.3. Алгоритмы быстрого возведения x в степень n

Рис.1.4. Алгоритм вычисления значения многочлена степени n, заданного массивом своих коэффициентов A = {A[0], A[1], …, A[n]} при некотором значении переменной x по схеме Горнера

Рис. 1.5. Алгоритм вычисления значения многочлена степени n, заданного массивом своих коэффициентов A = {A[0], A[1], …, A[n]} при некотором значении переменной x
Рекомендации по выполнению задания
Практическое определение времени выполнения основано на следующих правилах.
- За функцию берется количество операций, возрастающее быстрее всего.
- Константы не учитываются, в том числе и основания логарифма.
- Для времени выполнения программы в целом допустимым параметром может быть только n, размер входных данных.
- Время выполнения операторов присваивания обычно имеет порядок О(1).
- Время выполнения операторов ввода – вывода обычно имеет порядок О(1).
- Время выполнения последовательности операторов определяется суммированием.
- Время выполнения цикла является суммой времени всех исполняемых итераций цикла. Время выполнения каждого цикла, если в программе их несколько, должно определяться отдельно.
- Для программ, содержащих несколько процедур или функций, общее время выполнения программы равно сумме времен выполнения подпрограмм.
- В случае когда имеют место рекурсивные процедуры или функции, необходимо с каждой рекурсивной процедурой (функцией) связать временною функцию Т(n), где n определяет объем ее аргументов, и получить рекуррентное соотношение для T(n), представляющее собой уравнение (или неравенство) для Т(п), где участвуют значения T(k) для различных значений k < n. Решение таких рекуррентных соотношений состоит в последовательном раскрытии выражений Т(к) в правой части уравнения путем подстановки в исходное соотношение k вместо n до тех пор, пока не получится формула, у которой в правой части отсутствует Т.
Образец выполнения задания 1
Цель работы: получить практические навыки анализа сложности алгоритмов.
- Задание. Провести анализ и оценку временной сложности алгоритма быстрого возведения в степень (рис. 1.6).
- Анализ алгоритма. Степень, в которую возводится число, может служить мерой объема входных данных, и все операторы присваивания и сравнения имеют некоторое постоянное время выполнения, не зависящее от размера входных данных.
Рис. 1.6. Блок-схема алгоритма
Наибольшее влияние на временную сложность алгоритма оказывают циклические конструкции. Группа блоков (6)–(10) алгоритма представляет собой цикл с постусловием. Тело цикла (блоки (6)–(9)) имеет временную сложность порядка О(1). Кроме этого, в цикле выполняется проверка условия завершения цикла (блок (10)), которая также имеет время выполнения порядка О(1).
Определим количество повторений тела цикла в зависимости от n. Табл. 1.2 содержит динамику изменения параметра цикла k в зависимости от номера итерации и параметра n.
Анализируя данные, приведенные в табл. 1.2, можно отметить, что на 1-й итерации k1 = n div 20 = n, на этой и каждой последующей итерации k уменьшается в два раза по сравнению с предыдущем значением до тех пор, пока k не станет равно 1 (пусть это будет итерация m + 1).
Таблица 1.2
Изменение параметра цикла
| № итерации | Значение параметра цикла k | ||||||||||||||
| n = 0 | n = 1 | n = 2 | n = 3 | n = 4 | … | n = 7 | n = 8 | … | n = 15 | n = 16 | … | n = 31 | n = 32 | … | |
| 1 | 0 | 1 | 2 | 3 | 4 | … | 7 | 8 | … | 15 | 16 | … | 31 | 32 | … |
| 2 | 0 | 1 | 1 | 2 | … | 3 | 4 | … | 7 | 8 | … | 15 | 16 | … | |
| 3 | 0 | 0 | 1 | … | 1 | 2 | … | 3 | 4 | … | 7 | 8 | … | ||
| 4 | 0 | … | 0 | 1 | … | 1 | 2 | … | 3 | 4 | … | ||||
| 5 | 0 | … | 0 | 1 | … | 1 | 2 | … | |||||||
| 6 | 0 | … | 0 | 1 | … | ||||||||||
| 7 | 0 | … | |||||||||||||
На следующей итерации: km + 2 = km + 1 div 2 = 0, что обеспечивает условие завершения цикла. Таким образом, для произвольного n > 0 имеем:
Всего получается m + 2 итераций, где m определяется соотношением . Из последнего соотношения следует: – ближайшее целое, не превосходящее log2 n. Итого: количество повторений цикла равняется , а временная сложность группы блоков (6)–(10) составляет O(log n).
Время выполнения конструкции ветвления (блоки (3), (4) и (5)) состоит из времени вычисления логического выражения (блок (3)) и наибольшего из времени, необходимого для выполнения операторов, исполняемых при значении логического выражения true (блок (4)) и при значении false (блок (5)). Каждый из этих блоков имеет время выполнения порядка 0(1), соответственно вся конструкция в целом имеет временную сложность порядка О(1). Группа блоков (1) – (2), так же как и блок (11), имеет время выполнения порядка О(1). Группы блоков (1)–(2), (3)– 5), (6)–(10) и (11) выполняются последовательно. Согласно правилу сумм, общая временная сложность алгоритма T(n) = О(max(1,1,log n,1)) = О(log n).
Следует отметить, что в этом алгоритме имеет место ситуация: T(n) = W (log n), и, следовательно, T(n) = Q (log n).
Вывод. В лабораторной работе проведен анализ алгоритма быстрого возведения в степень. Его временная сложность имеет верхнюю оценку О(log n). Нижняя оценка составляет W (log n), следовательно, имеет место оценка Q (log n).
или напишите нам прямо сейчас:
Здравствуйте. Скажите пожалуйста, планирую поступать в магистратуру на факультет Психологии « Психология личности»в РГГУ скажите пожалуйста, есть ли у вас, ответы на вступительные экзамены? так как, планирую, сделать акцент на бюджет. Спасибо.
Арсений, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Дистанционная помощь в защите ВКР
Анастасия, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте. Нужна срочно практическая часть вкр, третья глава. Скину похожие работы, на которые можно ориентироваться
Александр, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
вкр по теме: экологический туризм России : анализ состояния, проблемы и перспективы
Людмила, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте вы защищаете ВКР?
Ольга, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать магистерскую ВКР на тему «Совершенствование логистических бизнес-процессов на примере торговой компании». Не менее 100 страниц.
Миша, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Здравствуйте нужна работа Вкр
Лена, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.
Написать ВКР 3 раздела Тема строительство строительство жилого дома с применением каркасно-монолитных технологий Антиплагиат от 75% ПЗ и чертежи
Владимир, здравствуйте! Прошу Вас прислать всю необходимую информацию на почту info@otlichnici.ru и написать что необходимо выполнить. Я посмотрю описание к заданиям и подскажу вам по стоимости и срокам выполнения.