КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Методы анализа графа. Поиск в ширину. Нахождение кратчайших путей в графе
Связные графы Отношение связности между вершинами в графе обладает тремя свойствами: 1. Рефлексивность (отражение). Любая вершина связана сама с собой. 2. Симметричность. Если вершина 3. Транзитивность. Если вершина
Путь, который связывает Отношение связности разбивает все вершины графа на компоненты связанности:
Любая пара вершин, входящая в одну компоненту связности связана. Любые вершины из разных компонент связности между собой не связаны. Пример. Представленный граф состоит из двух компонент связности. В первой компоненте находятся вершины Вход алгоритма: граф Выход алгоритма: компонента связности графа, в которую входит вершина Описание алгоритма: на этапах алгоритма строится последовательность расширяющихся множеств вершин
по следующему рекуррентному принципу:
Таким образом,
Как только два соседних множества совпадут, алгоритм завершает свою работу. Пусть начальная вершина –
Поиск в ширину позволяет находить длины кратчайших путей и сами пути. Из фиксированной вершины Определение. Кратчайший путь между вершиной Утверждение. Вершины, впервые помеченные на k-ом этапе алгоритма поиска в ширину есть те вершины графа, кратчайший путь от которых до начальной вершины
Доказательство: Проведем доказательство методом индукции по номеру этапа алгоритма. Для начального нулевого этапа утверждение очевидно. Начальная вершина множества Пусть утверждение справедливо для k-ого этапа алгоритма. Докажем справедливость утверждения для Более короткого пути, чем из k+1-ого ребра в вновь помеченные вершины на k+1 этапе бытьть не может. В последнем случае эти вершины были бы отмечены на более раннем этапе (по предположению индукции). Утверждение доказано.
Рассмотрим более общую задачу поиска кратчайшего пути в графе, в котором каждому ребру предписано положительное число – его длина (расстояние между соответствующей парой вершин). Считаем, что это число положительное целое. Таким образом, на вход алгоритма подается сеть
На выходе алгоритма должны быть получены значения кратчайших путей Сведем рассматриваемую задачу к предыдущей задаче поиска кратчайших путей для графа, в котором функция длины единичная. Для этого совершим следующее преобразование: Рассмотрим произвольное ребро
В данное ребро добавим
Данное преобразование применим к каждому ребру графа. При этом длины кратчайших путей между вершинами исходного графа не изменятся, а функция длины в полученном графе единичная. Исходя из этого, можно применить алгоритм поиска в ширину для полученного графа. Примечание. Данный алгоритм будет неэффективным в силу того, что числа в компонентах связности хранятся в двоичной системе исчисления, поэтому целое число длины
Дата добавления: 2017-01-13; Просмотров: 689; Нарушение авторских прав?; Мы поможем в написании вашей работы! |