МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра вычислительной техники
Пояснительная записка к курсовой работе
по дисциплине «Алгоритмы и структуры данных»
Тема: «Измерение временной сложности алгоритма»
Вариант №42
Студенты гр. 6307 |
|
Лазарев С.О. Медведев Е.Р. |
Преподаватель |
|
Колинько П.Г. |
Санкт-Петербург
2018
Y
ЦЕЛЬ 3
ЗАДАНИЕ 3
ОПИСАНИЕ СТРУКТУРЫ ДАННЫХ И ТЕОРЕТИЧЕСКАЯ ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ 4
ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТА 5
ВЫВОДЫ 6
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 7
ПРИЛОЖЕНИЕ 8
Содержание
YЦЕ
ЗАДАНИЕ 3
ОПИСАНИЕ СТРУКТУРЫ ДАННЫХ И ТЕОРЕТИЧЕСКАЯ ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ 4
ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТА 5
ВЫВОДЫ 6
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 7
ПРИЛОЖЕНИЕ 8
ЦЕЛЬ 3
ЗАДАНИЕ 3
ОПИСАНИЕ СТРУКТУРЫ ДАННЫХ И ТЕОРЕТИЧЕСКАЯ ОЦЕНКА ВРЕМЕННОЙ СЛОЖНОСТИ 4
ПРОВЕДЕНИЕ ЭКСПЕРИМЕНТА 5
ВЫВОДЫ 6
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 7
ПРИЛОЖЕНИЕ 8
ЦЕЛЬ
Получить экспериментальную оценку временной сложности алгоритма.
Задание
Необходимо реализовать и исследовать алгоритм выполнения операций из следующего набора:
-
Пересечение setAND
-
Вычитание setDif
-
XOR setSymDif
-
CONCAT concat
-
EXCL excl
-
SUBST 3 subst(3)
Необходимо разработать оптимальную структуру данных, используя в качестве базовой заданную структуру дерева двоичного поиска и дать предварительную оценку временной сложности алгоритмов для каждой из заданных операций и для цепочки в целом.
Для измерения временной сложности алгоритма применить метод статистических испытаний и построить функцию регрессии (зависимости выборочного среднего времени решения задачи от размера входа).
Описание структуры данных и теоретическая оценка временной сложности
Принцип организации данных с помощью дерева двоичного поиска основан на использовании двоичного дерева. Данные при этом хранятся так, что значение каждого правого сына больше, чем значение корня, а значение левого сына - меньше. При такой организации уменьшается время на поиск элемента.
При обходе такого дерева методом в глубину получается упорядоченный список элементов. Использование дубликатов при этом возможно и не создаёт особого труда при реализации данного способа.
Для сохранения структуры последовательности был использован дополнительный массив указателей, ссылающихся на каждый узел дерева
Оценки сложности операций, сделанные на основе анализа текста программы, представлены в таблице 1.
Таблица. 1. Временная сложность функций программы
Функция |
Сложность |
setAnd |
O(n) |
setDif |
O(n) |
setSymDif |
O(n) |
Excl |
O(n) |
Subst |
O(n) |
Concat |
O(n) |
Ожидается регрессия никак не хуже O(n). Предварительная оценка – O(n).
Проведение эксперимента
Цикл от 100 до 20000 с шагом 105, 190 опытов. В эксперимент включены следующие операции над структурами данных:
setAND
setDif
setSymDif
concat
excl
subst(3)
Экспериментальные данные (таблица регрессий), полученные в результате эксперимента, сведены в табл. 2.
Таблица 2. Регрессии
|
|
|
|
(1) |
(ln N) |
(N) |
(N ln N) |
(N^2) |
(N^3) |
(N^4) |
|
Вариант |
D |
S |
K |
c0 |
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
|
1 |
0,000486 |
0,022042 |
1 |
0,036305 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
2 |
0,000119 |
0,01093 |
2 |
-0,143816 |
0,020062 |
0 |
0 |
0 |
0 |
0 |
105 |
3 |
2,15E-06 |
0,001465 |
2 |
-0,00199 |
0 |
3,60E-06 |
0 |
0 |
0 |
0 |
148 |
4 |
1,67E-06 |
0,001291 |
3 |
0,00983 |
-0,00157 |
3,82E-06 |
0 |
0 |
0 |
0 |
359 |
5 |
0,000986 |
0,031395 |
3 |
-0,06124 |
0 |
3,45E-06 |
4,25E-07 |
0 |
0 |
0 |
123 |
6 |
7,47E-06 |
0,002733 |
4 |
-0,080034 |
0,013039 |
-2,69E-05 |
2,83E-06 |
0 |
0 |
0 |
376 |
7 |
0,010158 |
0,100787 |
3 |
-0,061237 |
0 |
0 |
0 |
0 |
0 |
0 |
135 |
8 |
0,000109 |
0,010434 |
4 |
-0,063426 |
0 |
0,000164 |
-1,77E-05 |
9,50E-10 |
0 |
0 |
301 |
9 |
3,91E-06 |
0,001978 |
5 |
-0,083428 |
0,015494 |
-7,19E-05 |
7,82E-06 |
-2,75E-10 |
0 |
0 |
542 |
10 |
0,000251 |
0,015859 |
4 |
-0,063279 |
0 |
2,59E-05 |
0 |
-2,18E-09 |
6,20E-14 |
0 |
325 |
11 |
7,01E-06 |
0,002647 |
5 |
-0,0803 |
0,012867 |
-5,35E-06 |
0 |
6,17E-10 |
-1,46E-14 |
0 |
583 |
12 |
5,88E-05 |
0,007666 |
5 |
-0,064855 |
0 |
0,000294 |
-3,49E-05 |
4,48E-09 |
-7,75E-14 |
0 |
530 |
13 |
3,03E-06 |
0,001742 |
6 |
-0,085698 |
0,017228 |
-0,00012 |
1,40E-05 |
-1,11E-09 |
1,55E-14 |
0 |
937 |
14 |
0,000161 |
0,012702 |
5 |
-0,064599 |
0 |
4,04E-05 |
0 |
-6,24E-09 |
3,99E-13 |
-8,56E-18 |
544 |
15 |
0,000478 |
0,021858 |
6 |
-0,065449 |
0 |
-1,98E-05 |
4,94E-06 |
-9,26E-10 |
-9,02E-14 |
4,08E-18 |
500 |
16 |
1,96E-06 |
0,001399 |
7 |
-0,088621 |
0,019696 |
-0,00023 |
2,74E-05 |
-4,31E-09 |
1,53E-13 |
-2,50E-18 |
1522 |
Исследуются уравнения вида
X[0]+ X[1]*log(Ni) + X[2]*Ni + X[3]*Ni*log(Ni)+X[4]*Ni^2 + X[5]*Ni^3 + X[6]*Ni^4
ВЫВОДЫ
По заданному измерению времени выполнения программы мы получили разные функции регрессии, т. е. зависимости выборочного среднего времени решения задачи от размера входа. Самой подходящей, с точки зрения минимума выборочной дисперсии, оказалась функция линейной регрессии (3). Таким образом, тестовая цепочка операций выполняется за линейное время, что соответствует теоретическим предположениям.