Добавил:
github.com Кофедра ВТ-помойка Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Колинько 4 семестр 2018 / АиСД Курсовая.docx
Скачиваний:
39
Добавлен:
17.11.2018
Размер:
140.72 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра вычислительной техники

Пояснительная записка к курсовой работе

по дисциплине «Алгоритмы и структуры данных»

Тема: «Измерение временной сложности алгоритма»

Вариант №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

ЦЕЛЬ

Получить экспериментальную оценку временной сложности алгоритма.

Задание

Необходимо реализовать и исследовать алгоритм выполнения операций из следующего набора:

  1. Пересечение setAND

  2. Вычитание setDif

  3. XOR setSymDif

  4. CONCAT concat

  5. EXCL excl

  6. 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). Таким образом, тестовая цепочка операций выполняется за линейное время, что соответствует теоретическим предположениям.

Соседние файлы в папке Колинько 4 семестр 2018