Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовой проект алгоритм прима.docx
Скачиваний:
124
Добавлен:
07.06.2018
Размер:
254.82 Кб
Скачать

3. Анализ трудоемкости

Анализ алгоритма Прима

Время выполнения программы, имеет порядок O(n).

Асимптотика алгоритма зависит от способа хранения графа и способа хранения вершин, не входящих в дерево. Если приоритетная очередь Q реализована как обычный массив d, то Extract.Min(Q) выполняется за O(n), а стоимость операции d[u] ← w(v, u) составляет O(1). Если Q  представляет собой бинарную пирамиду, то стоимость Extract.Min(Q) снижается до O(logn), а стоимость d[u] ← w(v, u) возрастает до O(logn). При использовании фибоначчиевых пирамид операция Extract.Min(Q)  выполняется за O(logn)d[u] ← w(v, u) за O(1). Что наглядно продемонстрированно в таблице 1.

Таблица 1 зависимость асимптотики от способа реализации алгоритма

Способ представления графа и приоритетной очереди

Асимптотика

Массив d, списки смежности (матрица смежности)

O(V2)

Бинарная пирамида, списки смежности

O((V+E) log V) = O(E log V)

Фибоначчиева пирамида, списки смежности

O(E+V log V)

4.Тестирование программ реализации алгоритмов

4.1 Тестирование правильности

В таблице 2 приведён протокол тестирования правильности работы программы, по алгоритму Прима. В входных данных вводится матрица смежности, в выходных данных ожидается получить суммарный вес контура и минимальное остовное дерево.

Таблица 2 протокол тестирования правильности

п/п

Входные данные

Выходные данные

Тест

Ожидаемый результат

Действительный результат

Cost[4][4]

_mincost

МОД

_mincost

МОД

1

0 5 9 12

11 0 4 0

1 0 0 11

14 9 0 0

20

Ребро 1:(1 2) вес:5

Ребро 2:(2 3) вес:4

Ребро 3:(3 4) вес:11

20

Ребро 1:(1 2) вес:5

Ребро 2:(2 3) вес:4

Ребро 3:(3 4) вес:11

+

2

0 14 12 12

6 0 2 12

10 11 0 8

12 1 5 0

21

Ребро 1:(1 3) вес:12

Ребро 2:(3 4) вес:8

Ребро 3:(4 2) вес:1

21

Ребро 1:(1 3) вес:12

Ребро 2:(3 4) вес:8

Ребро 3:(4 2) вес:1

+

В таблице 3 приведён протокол тестирования правильности работы программы по алгоритму Крускала. В входных данных вводится матрица смежности, в выходных данных ожидается получить минимальное остовное дерево.

Таблица 3 протокол тестирования правильности

п/п

Входные данные

Выходные данные

Тест

Ожидаемый результат

Действительный результат

Cost[4][4]

МОД

МОД

1

0 5 9 12

11 0 4 0

1 0 0 11

14 9 0 0

Ребро 1 –> 2

Ребро2–> 3

Ребро 3–> 4

Ребро 1 –> 2

Ребро2–> 3

Ребро 3–> 4

+

2

0 14 12 12

6 0 2 12

10 11 0 8

12 1 5 0

Ребро 1 –> 3

Ребро3–> 4

Ребро 4–> 2

Ребро 1 –> 3

Ребро3–> 4

Ребро 4–> 2

+