- •Реферат
- •Содержание
- •Введение
- •1 Графы
- •1.1Основные характеристики графов
- •1.2 Пути и маршруты
- •1.3 Каркас неориентированного графа
- •1.4 Задача об оптимальном каркасе
- •2. Алгоритм Прима
- •2.1 Краткое описание алгоритма
- •2.2Разработка псевдокода
- •2.3 Визуализация алгоритма
- •3. Анализ трудоемкости
- •4.Тестирование программ реализации алгоритмов
- •4.1 Тестирование правильности
- •4.2 Анализ по времени
- •Заключение
- •Список используемых источников.
- •Приложение а.
- •Текст основной программы.
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
|
+ |