Алгоритм поиска минимального остовного дерева
Пусть G=(V,Е) – связный взвешенный граф. Алгоритм строит МОД в графе G, последовательно выбирая ребра наименьшего возможного веса до образования остовного дерева. МОД в памяти компьютера хранится в виде множестваТребер.
begin
е:=ребро графа G с наименьшим весом;
Т:={е};
Е':=Е\{е}
whileE' do
begin
е':=ребро наименьшего веса из Е';
Т:= T{е'};
Е':=множество ребер из Е'\{Т}, чье добавление к Т неведет к образованию циклов; Endend
№33
Деревом с корнем называется дерево с одной выделенной вершиной, которая и является корнем дерева.
Область применения деревьев с корнем обширна – это и информатика, и биология, и менеджмент, и т.п. Для приложения к информатике наиболее важны так называемые двоичные или бинарные деревья с корнем. Двоичное дерево отличает от остальных то, что каждая его вершина имеет не более двух сыновей. В двоичном дереве с корнем вниз от каждой вершины идет не более двух ребер.
Таким образом, можно сказать, что каждой вершине двоичного дерева с корнем соответствует не более чем два поддерева, которые называют левым и правым поддеревьями этой вершины. Если оказалось, что у какой-то вершины дерева отсутствует потомок слева, то ее левое поддерево называют нулевым деревом (т.е. нулевое дерево – это дерево без единой вершины). Аналогично, если у вершины отсутствует правый потомок, то ее правое поддерево будет нулевым.
Пример 7.10. ПустьТ – двоичное дерево с корнем, изображенное на рис. 7.18.
Рисунок.18. Двоичное дерево с корнемТ
В этом примере корнемТявляется вершина A. Корнем левого поддерева вершины Bявляется вершина D. Листьями Tявляются вершины G,H,I,J. Сыном вершины Cявляется вершина F.
Сейчас нарисуем двоичное дерево с корнемТ’, полученное из Т перестановкой левых и правых поддеревьев у каждой вершины (рис. 7.19).
Рисунок19. Двоичное дерево с корнемТ’
Двоичные деревья с корнем широко используются при решении задач о выборе, в частности, когда нужно классифицировать упорядоченные данные или вести в них поиск.
Дерево данных, удовлетворяющее указанному условию, называют двоичным деревом поиска.
Алгоритм поискаопределяет, является ли данная запись (ключ поиска) вершиной в двоичном дереве поиска, сравнивая ключ поиска с ключом корня дерева, и, при необходимости, осуществляет аналогичные сравнения в левом или правом поддеревьях.
Поиск (дерево)
begin
ifдерево нулевоеthen
поиск:=ложь;
else
ifключ поиска = ключ корняthen
поиск := истина;
else
ifключ поиска < ключ корняthen
поиск:= поиск (левое поддерево);
else
поиск:= поиск (правое поддерево);
end
Алгоритм вставкивставляет новые вершины (ключи вставок) в двоичное дерево поиска, создавая при этом новую вершину слева или справа от уже существующей. Это делается таким образом, чтобы все ключи вершин в получившемся дереве подчинялись установившемуся порядку.
Вставка (запись, дерево)
begin
ifдерево нулевоеthen
добавить новую вершину;
else
ifключ вставки= ключ корняthen
вывести на печать: «запись содержится в дереве»;
else
ifключ вставки < ключ корняthen
вставка:= вставка (запись, левое поддерево);
else
вставка:= вставка(запись, правое поддерево);
end
№34
Ориентированный графили орграф представляет собой пару G=(V,Е), где V– конечное множество вершин, а Е – множество ориентированных ребер, которые называются дугами.Дугу, соединяющую пару вершин и иvорграфа Gбудем обозначать через uv. В простом орграфе отсутствуют петли и кратные дуги. Следовательно, для любой пары вершин u и v в орграфе найдется не более одной дуги uvиз вершины u в v, и не боле одной дуги vu из vв и. Если uv– дуга орграфа, то вершину и называют антецедентом вершины v.
Множество E – это отношение на V. Графическое изображение графа состоит из множества помеченных вершин с дугами.
На рис. 8.1 приведен пример простого орграфа с множеством вершин V={a,b,c,d}и множеством дугЕ={ab, bd, cb, db, dc}. Вершины а, с и dздесь – антецеденты b.
Рисунок.20. Пример ориентированного графа
Матрицей смежности данного графа является несимметричная матрица
Путем длины kв орграфе называют последовательность различных вершин v0, v1, ..., vk, каждая пара vi-1viкоторой образует дугу (i = 1,2,...,k).
Контуром в орграфе Gпринято называть последовательность вершин v0, v1, ..., vk, образующую путь, в которой первая вершина v0совпадает с последней vk, а других повторяющихся вершин в ней нет. Орграф Gназывают бесконтурным, если в нем нет контуров.В задаче о планировании заданий соответствующий бесконтурный орграф называют «система ПЕРТ».
ПЕРТ – это система планирования и руководства разработками. На английском языке аббревиатура PERT – это сокращение от «ProgramEvaluationandReviewTechnique».
Пример 8.1. Для получения степени магистра биологии студенту университета необходимо прослушать восемь курсов, которые некоторым образом зависят друг от друга. Эта зависимость представлена в табл. 8.1. Изобразите систему ПЕРТ, иллюстрирующую приоритетную структуру курсов.
Таблица.15.
|
Название курсов |
Предварительные |
A |
Биотехнология |
B |
B |
Начальный курс биотехнологии |
C |
C |
Цитология |
H |
D |
Структура ДНК |
C |
E |
Энзимология |
D, G |
F |
Диетология |
E |
G |
Генная инженерия |
C |
H |
Биология человека |
Никаких требований |
Решение. Система ПЕРТ (см. рис. 8.2) – это орграф, представляющий данную приоритетную структуру. Вершины орграфа – это восемь курсов. Для краткости обозначим курсы буквами латинского алфавита от А до Н. Дуги орграфа отражают представленные в таблице требования, необходимые для усвоения данного курса.
Рисунок.21. Система ПЕРТ: приорететная структура курсов