Здавалка
Главная | Обратная связь

Элементы теории графов



Изучаемые вопросы: Основные определения. Типы задач. Задача о построении кратчайшего пути. Алгоритм Дейкстры. Остовное дерево. Алгоритм ближайшего соседа.

 

3.1.1.Основные понятия

Приводим основные понятия теории графов, которые потребуются нам. Строгие формулировками в полном объёме вы можете найти в любой книге, из приведённых в списке литературы.

1. Пусть на плоскости даны n точек S1, S2,…,Snвершины. И пусть они соединены линиями (прямыми или нет), и необязательно каждая пара. Эти линии – рёбра. Полученная фигура называется графом.

2. Если на рёбрах выбраны направления, граф называется ориентированным или орграфом, а рёбра – дугами (рис. 1).

3. Граф называется полным, если любая пара вершин соединена дугой, в противном случае – неполным.

4. Совокупность дуг, соединяющих две вершины Sk и Sm называется путем из Sk в Sm.

Если начало и конец пути совпадают, то такой путь называется циклом.

Т.е. S1S2S3 – путь, а S1S2S3S1 – цикл.

5. Граф наз. связанным, если существует хотя бы один путь, соединяющий любые две его вершины. В противном случае – несвязанный.

 

Рис.1. Примеры графов

 

6. Связный граф, не содержащий циклов наз. деревом. Если у дерева выделена одна вершина, она называется корнем дерева, а сам граф в этом случае будет корневым деревом (рис.2).

7. Связный подграф исходного графа, который не содержит циклов, и в котором путь от корня до каждой из вершин является наименьшим из всех возможных, называется остовным деревом.

 

 

Рис.2. Деревья на графах

 

3.1.2. Задачи на графах

 

Типичными задачами, решаемыми с помощью графов являются

1. О нанесении проводников на плату: нанести на печатную плату некоторую схему проводников так, чтобы любые два из них не пересекались между собой ни в каких точках, кроме заданных.

2. Об обеспечении максимального транспортного потока между двумя заданными пунктами.

3. Задача о построении кратчайшего пути. Рассмотрим ее подробно.

Пусть задан граф G (рис. 3) и задана таблица расстояний между его вершинами. Эта таблица наз. матрицей весов. Если все расстояния в графе равны 1, то полученная матрица наз. матрицей смежностей.

 

  X1 X2 X3 X4 X5 X6
X1
X2
X3
X4
X5
X6

Матрица весов:

 

Рис. 3. К задаче о построении кратчайшего пути

 

Задача ставится так: найти кратчайшее расстояние Х1→Х6.

Используем для решения т.н. алгоритм Дейкстры, в котором по определенному правилу вершинам присваивают временные и постоянные метки и также по определенному правилу заменяют временные метки на постоянные. Процесс состоит из шагов, каждый из которых включает в себя три действия и заканчивается, когда все метки станут постоянными. Действия на каждом шаге:

1. Первой из выделенных вершин присваивают постоянную метку l*(x1) = 0, где символ * означает, что это значение относится к постоянной метке, а всем остальным вершинам – временные метки l(xi) = ∞, i = 2, 3, 4, 5, 6.

2. Рассматривают множество вершин Г(xi) = {xj, …, xk}, соседних с той, которая имеет постоянную метку, и вычисляют для них новые временные метки по правилу (для xj):

L (xj) = min {l(xj), l*(xi) + rij}, где l(xj) – старая временная метка вершины xj, а rij – расстояние от xi до xj.

3. Выбирают min из всех временных меток, которая становится постоянной, и делают следующий шаг.

 

Рассмотрим наш пример.

 

Требуется определить кратчайший путь из вершины Х1 до вершины Х6.

Применим алгоритм Дейкстры.

Шаг 1. 1. Для Х1 постоянная метка l*(X1) = 0. Для остальных вершин временные метки l(Xi) = ∞, i = 2, 3, 4, 5, 6.

2. Г(X1) = {X2, X3, X4}. Новые временные метки: L(Xj) = min{l(Xj), l*(Xпред.) + rпред.,j}. Тогда L(X2) = min{∞, 0 + 3} = 3; L(X3) = min{∞, 0 + 4} = 4; L(X4) = min{∞, 0 + 6} = 6. Наименьшая из всех временных меток:

3. Min{L(X2), L(X3), L(X4), L(X5), L(X6)} = min{3, 4, 4, ∞, ∞} = 3. Следовательно, получаем постоянную метку для вершины Х2: l*(X2) = 3.

Шаг 2. 1. Г(X2) = {X6};

2. L(X6) = min{∞, 3 + 10} = 13;

3. Min{L(X3), L(X4), L(X5), L(X6)} = min{4, 6, ∞, 13} =4. → l*(X3) = 4.

Шаг3. 1. Г(X3) = {X5};

2. L(X5) =min {∞, 4 + 5} =9;

3. Min{L(X4), L(X5), L(X6)} = min{6, 9, 13} = 6. → l*(X4) = 6.

Шаг 4. 1. Г(X4) = {X5, X6};

2. L(X5) = min {9, 6 + 4} = 9; L(X6) = min {13, 6 + 8} = 13; (остались теми же);

3. Min {L(X5), L(X6)} = min {9, 13} = 9. → l*(X5) = 9.

Шаг 5. 1. Г(X5) = {X6};

2. L(X6) = min {13, 9 + 1} = 10. →→ l*(X6) = 10.

На этом процесс расстановки меток закончен. Значение постоянной метки вершины Х6 даёт кратчайшее расстояние между Х1 и Х6, которое равно 10.

Кратчайший путь между Х1 и Х6 определяется с помощью соотношения

l*(Xj) =l*(Xi) + rij,

в котором вершина i предшествует j, тогда можем найти вершину, предшествующую Х6:

l*(X6) = l*(Xпредш.) + rпредш. 6.

На графе видим, что Х6 предшествуют Х2, Х4 и Х5. Составим следующую таблицу:

  l*(Xi) ri6 +
X2
X4
X5

Видим, что сумма в последней строке таблицы совпадает со значением постоянной метки для вершины Х6, следовательно, этой вершине предшествует вершина Х5.

Повторяем эту процедуру для вершины Х5, т.е. находим вершину ей предшествующую.

Этой вершине предшествуют Х3 и Х4. Тогда получаем таблицу.

 
 
Здесь видим, что сумма совпадает с постоянной меткой вершины Х3, а для Х3, очевидно, предшествующей вершиной будет Х1. Таким образом, кратчайший путь оказывается таким:

  l*(Xi) ri5 +
X3
X4


 

Х1Х3Х5Х6 = 10.

4) Задача о минимальном остовном дереве. В этой задаче надо найти связный подграф исходного графа, который не содержал бы циклов, и в котором путь от корня (вершины Х1) до каждой из вершин был бы наименьшим из всех возможных.

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

На первом шаге получили постоянную метку и .

Здесь вершина – дочка , следовательно, получаем ребро остовного

дерева. На втором шаге вычислили и – дочка , получаем ребро .

Следующий шаг даёт , – дочка и в остовное дерево добавляем ребро .

На четвёртом шаге находим и на третьем шаге видим, что – дочка , значит, получаем ребро . Наконец, и – дочка , т.е. последнее ребро остовного дерева – .

Таким образом, остовное дерево имеет вид, как на рис.4. Там же вы- делен кратчайший путь из в .

Заметим, что значения постоянных меток для каждой вершины равны расстояниям из до этих вершин по остовному дереву.

 

Рис. 4. Остовное дерево. Выделен найденный выше кратчайший путь .

Вопросы для самопроверки по теме 3.1.

 

1. Что такое граф, орграф, дуги и рёбра?

2. 2. Является ли граф (рис.1) полным и связанным?







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.