- •Часть 1
- •Часть 1
- •Введение
- •1. Основные понятия теории графов
- •Задачи теории графов
- •1.2. Основные определения
- •1.3. Степени вершин графа
- •1.4. Изоморфизм графов
- •2. Представление графов в эвм и операции над ними
- •2.1. Матричные способы задания графов
- •2.2. Список ребер (луг) и структура смежности графа
- •2.3. Части графов
- •2.4. Основные операции над графами
- •3. Маршруты в графах
- •3.1. Понятие маршрута
- •Маршруты в неориентированных графах
- •Маршруты в ориентированных графах
- •3.2. Связность в графах.
- •В примере 3 граф имеет две сильно связных компоненты.
- •3.3. Связность и матрица смежности графа
- •3.4. Матрица взаимодостижимости
- •4. Деревья
- •4.1. Свободные деревья
- •4.2. Ориентированные, упорядоченные и бинарные деревья
- •Эквивалентное определение ориентированного дерева
- •5. Эйлеровы и гамильтоновы графы.
- •5.1. Эйлеровы графы.
- •5. 2. Алгоритм построения эйлерова цикла в эйлеровом графе
- •5.3. Гамильтоновы графы
- •5.4. Оценки числа эйлеровых и гамильтоновых графов
- •6. Фундаментальные циклы и разрезы
- •6.1. Фундаментальные циклы
- •6.2. Разрезы
- •7. Связь теории графов с бинарными отношениями и векторными пространствами
- •7.1. Отношения на множествах и графы
- •7.2. Векторные пространства, связанные с графами
- •8. Планарность и раскраска графов
- •8.1. Планарные графы
- •8.2. Раскраска графов
- •8.3. Алгоритм последовательной раскраски
- •9. Покрытия и независимость
- •9.1. Покрывающие множества вершин и ребер
- •9.2. Независимые множества вершин и ребер
- •9.3. Доминирующие множества
- •10. Кратчайшие маршруты в графах
- •10.1. Расстояния в графах
- •10.2. Алгоритм Форда-Беллмана
- •11. Задача коммивояжера
- •11.1. Постановка задачи
- •11.2. Обходы вершин графа по глубине и ширине
- •11.3. Решение задачи коммивояжера
- •12. Потоки в сетях
- •12.1. Основные определения
- •12.2. Теорема Форда и Фалкерсона
- •12.3. Алгоритм построения максимального потока
- •13. Сетевое планирование и управление
- •13.1. Элементы сетевого графика
- •13.2. Временные параметры сетевого графика
- •13.3. Распределение ограниченных ресурсов
- •14. Анализ технических систем (на примере электрической цепи)
- •14.1 Закон Кирхгофа
- •14.2. Основные уравнения
- •15. Сигнальные графы
- •15.1. Общие представления о сигнальных графах
- •15.2. Преобразования сигнальных графов
- •15.3. Формула Мэзона
- •16. Переключательные сети (схемы)
- •17. Математические машины и цепи маркова
- •Библиографический список
- •Оглавление
- •Часть 1
- •394026 Воронеж, Московский просп., 14
10. Кратчайшие маршруты в графах
10.1. Расстояния в графах
Пусть G=(V, E) – связный неориентированный граф, u,v – две несовпадающие вершины. Длина кратчайшего (u, v) – маршрута называется расстоянием между вершинами u и v и обозначается (u, v).
Полагается, что (u, u)=0. Расстояние удовлетворяет аксиомам метрики:
(u, v)0
(u, v)=0 тогда и только тогда, когда u=v
(u, v)= (v, u) (свойство симметричности)
(u, v) (u, t)+ (t, v) (неравенство треугольника)
Матрица P=pi,j , где pi,j =(vi, vj), называется матрицей расстояний. Заметим, что матрица расстояний симметрична (PT=P).
Величина E(v)=max{(u,v)|uV} называется эксцентриситетом вершины v. Эксцентриситет вершины равен расстоянию от данной точки до наиболее удаленной от нее.
Эксцентриситет e(vj) равен наибольшему из чисел стоящему в j-ой строке матрицы расстояний.
Максимальный среди всех эксцентриситетов вершин называется диаметром графа G и обозначается D(G). D(G)=max e(vj)
Вершина v называется периферийной, если ее эксцентриситет e(v)=D(G).
Минимальный из эксцентриситетов графа G называется его радиусом и обозначается R(G). R(G)=min{e(v)|vV}
Вершина v графа G называется центральной, если e(v)=R(G).
Множество всех центральных вершин графа называются его центром.
П ример: Рассмотрим граф 4 5
2
1 3
Рис. 33
Матрица расстояний: P=
Отсюда e(1)=2; e(2)=1; e(3)=2 e(4)=2; e(5)=2, следовательно, D(G)=2 , а вершины {1, 3, 4, 5} являются периферийными. R(G)=1. Центр графа - {2}.
В полном графе D(Kn)=R(Kn)=1
Задача нахождения центральных вершин возникает в практической деятельности людей. Например, пусть в графе вершины соответствуют населенным пунктам, а ребра - дорогам между ними. Требуется оптимально разместить больницы, пункты обслуживания и другие объекты. Местами их размещения должны быть центральные вершины графа. Реальные задачи отличаются от идеальных тем, что приходиться учитывать расстояния между населенными пунктами, время проезда, стоимость и т.д. Для учетов этих параметров используются взвешенные графы.
Пусть G=(V, E) – взвешенный граф, в котором вес каждой дуги (u,v) есть некоторое вещественное число (u,v).
Весом маршрута v1, v2, …, vn, vn+1 называется число = .
Взвешенным расстоянием ( расстояние) (u,v) между вершинами u и v называется минимальный из весов (u,v) – маршрутов.
(u,v) – маршрут, вес которого равен (u,v) называется кратчайшим (u,v) маршрутом графа G.
Взвешенным эксцентриситетом e(v) вершины v называются числа max{(u,v)|uV}.
Взвешенной центральной вершиной графа G называется вершина v, для которой e(v)=min{ e(u)|uV}.
Взвешенный эксцентриситет центральной вершины называется взвешенным радиусом графа G, и обозначается как R(G).
10.2. Алгоритм Форда-Беллмана
Пусть G=(V, E) – взвешенный граф, имеющий n вершин и матрицу весов W=(ij). Требуется найти взвешенное расстояние от фиксированной вершины viV называемой источником, до всех вершин графа G.
Предполагается, что в G отсутствуют контуры с отрицательным весом т.к. двигаясь по такому контуру достаточное число раз можно получить маршрут меньший любого, наперед заданного, числа. В этом случае задача нахождения расстояния становиться бессмысленной.
Алгоритм Форда-Беллмана заключается в том, что задается строка Д(1)=(d(1)1, d(1)2, d(1)3, …, d(1)n), в которой d(1)i=0, d(1)j=ij, если ij.
Предполагается, что все дуги ij=, если (vi, vj)E
Далее определяется строка Д(2)=(d(2)1, d(2)2, d(2)3, …, d(2)n), где d(2)j=min{d(1)j, d(1)k+kj}
Заметим, что d(2)j – минимальный из весов (vi, vj) маршрутов состоящих не более чем из двух дуг.
Рис. 34
П родолжая этот процесс на шаге s определяется строка Д(3)=(d(3)1, d(3)2, d(3)3, …, d(3)n), в которой d(3)j=min{d(3-1)j, d(3-1)k+kj}, k=1,2,…,n
Искомая строка - расстояний получается при s=n-1, т.е. d(n-1)j=(vi vj).
Действительно, на этом шаге из весов всех (vi, vj) маршрутов выбирается наименьший, а каждый маршрут с более чем n-1 дугами содержит контур, добавление которого к маршруту не уменьшает - расстояния т.к. по условию в графе отсутствуют контуры отрицательного веса.
Работу алгоритма можно завершить на k-ом шаге (k<n-1), если Д(к)=Д(к+1).