Решение контрольных задач по теме «Теория графов».

Задание 1. Компоненты сильной связности ориентированного графа.

С помощью матрицы смежности найти компоненты сильной связности ориентированного графа D.

Cоставляем матрицу смежности A(D) размерности Решение контрольных задач по теме «Теория графов». - student2.ru (n− количество вершин) для данного ориентированного графа: она состоит из нулей и единиц, номера строк – индексы вершин , из которых исходят дуги, номера столбцов – индексы вершин, в которые дуги входят (если есть дуга, исходящая из вершины vi и входящая в vj, то элемент матрицы смежности, стоящий на пересечении i-той строки и j-того столбца равен 1, иначе – 0.).

Для того, чтобы выделить компоненты сильной связности, необходимо сначала найти матрицу достижимости T(D) ориентированного графа по первой формуле утверждения 3, затем находим матрицу сильной связности S(D) ориентированного графа (она должна быть симметрической) по второй формуле из того же утверждения.

Алгоритм выделения компонент сильной связности

1. Присваиваем p=1 (p − количество компонент связности), Решение контрольных задач по теме «Теория графов». - student2.ru .

2. Включаем в множество вершин Vp компоненты сильной связности Dp вершины, соответствующие единицам первой строки матрицы Sp. В качестве матрицы A(Dp) возьмем подматрицу матрицы A(D), состоящую из элементов матрицы A, находящихся на пересечении строк и столбцов, соответствующих вершинам из Vp.

3. Вычеркиваем из Sp строки и столбцы, соответствующие вершинам из Vp. Если не остается ни одной строки (и столбца), то p- количество компонент сильной связности. В противном случае обозначим оставшуюся после вычеркивания срок и столбцов матрицу как Sp+1, присваиваем p=p+1 и переходим к п. 2.

Пример

Выделим компоненты связности ориентированного графа, изображенного на рис. 6. В данной задаче количество вершин n=5.

Решение контрольных задач по теме «Теория графов». - student2.ru

Рис. 6.

Значит, для данного ориентированного графа матрица смежности будет иметь размерность 5×5 и будет выглядеть следующим образом

Решение контрольных задач по теме «Теория графов». - student2.ru .

Найдем матрицу достижимости для данного ориентированного графа по формуле 1) из утверждения 3:

Решение контрольных задач по теме «Теория графов». - student2.ru , Решение контрольных задач по теме «Теория графов». - student2.ru ,

Решение контрольных задач по теме «Теория графов». - student2.ru ,

Следовательно,

Решение контрольных задач по теме «Теория графов». - student2.ru

Решение контрольных задач по теме «Теория графов». - student2.ru .

Таким образом, матрица сильной связности, полученная по формуле 2) утверждения 3, будет следующей:

Решение контрольных задач по теме «Теория графов». - student2.ru .

Присваиваем p=1 Решение контрольных задач по теме «Теория графов». - student2.ru и составляем множество вершин первой компоненты сильной связности D1: это те вершины, которым соответствуют единицы в первой строке матрицы S(D). Таким образом, первая компонента сильной связности состоит из одной вершины Решение контрольных задач по теме «Теория графов». - student2.ru .

Вычеркиваем из матрицы S1(D) строку и столбец, соответствующие вершине v1, чтобы получить матрицу S2(D):

Решение контрольных задач по теме «Теория графов». - student2.ru .

Присваиваем p=2. Множество вершин второй компоненты связности составят те вершины, которым соответствуют единицы в первой строке матрицы S2(D), то есть Решение контрольных задач по теме «Теория графов». - student2.ru . Составляем матрицу смежности для компоненты сильной связности Решение контрольных задач по теме «Теория графов». - student2.ru исходного графа D − в ее качестве возьмем подматрицу матрицы A(D), состоящую из элементов матрицы A, находящихся на пересечении строк и столбцов, соответствующих вершинам из V2:

Решение контрольных задач по теме «Теория графов». - student2.ru .

Вычеркиваем из матрицы S2(D) строки и столбцы, соответствующие вершинам из V2 ,чтобы получить матрицу S3(D), которая состоит из одного элемента:

Решение контрольных задач по теме «Теория графов». - student2.ru

и присваиваем p=3. Таким образом, третья компонента сильной связности исходного графа, как и первая, состоит из одной вершины Решение контрольных задач по теме «Теория графов». - student2.ru .

Таким образом, выделены 3 компоненты сильной связности ориентированного графа D:

D1: Решение контрольных задач по теме «Теория графов». - student2.ru D2: Решение контрольных задач по теме «Теория графов». - student2.ru   D3: Решение контрольных задач по теме «Теория графов». - student2.ru

Задание 2. Расстояния в ориентированном графе

С помощью алгоритма фронта волны найти расстояния в ориентированном графе D: диаметр, радиус и центры.

Пусть Решение контрольных задач по теме «Теория графов». - student2.ru ориентированный граф с n³2 вершинами и v,w (v¹w) – заданные вершины из V.

Алгоритм поиска минимального пути из Решение контрольных задач по теме «Теория графов». - student2.ru в Решение контрольных задач по теме «Теория графов». - student2.ru в ориентированном графе

(алгоритм фронта волны).

1) Помечаем вершину Решение контрольных задач по теме «Теория графов». - student2.ru индексом 0, затем помечаем вершины Î образу вершины Решение контрольных задач по теме «Теория графов». - student2.ru индексом 1. Обозначаем их FW1 (v). Полагаем k=1.

2) Если Решение контрольных задач по теме «Теория графов». - student2.ru или k=n-1, и одновременно Решение контрольных задач по теме «Теория графов». - student2.ru то вершина Решение контрольных задач по теме «Теория графов». - student2.ru не достижима из Решение контрольных задач по теме «Теория графов». - student2.ru . Работа алгоритма заканчивается.

В противном случае продолжаем:

3) Если Решение контрольных задач по теме «Теория графов». - student2.ru , то переходим к шагу 4.

В противном случае мы нашли минимальный путь из Решение контрольных задач по теме «Теория графов». - student2.ru в Решение контрольных задач по теме «Теория графов». - student2.ru и его длина равна k. Последовательность вершин

Решение контрольных задач по теме «Теория графов». - student2.ru

есть этот минимальный путь. Работа завершается.

4) Помечаем индексом k+1 все непомеченные вершины, которые принадлежат образу множества вершин c индексом k. Множество вершин с индексом k+1 обозначаем Решение контрольных задач по теме «Теория графов». - student2.ru . Присваиваем k:=k+1 и переходим к 2).

Замечания

· Множество Решение контрольных задач по теме «Теория графов». - student2.ru называется фронтом волны kго уровня.

· Вершины Решение контрольных задач по теме «Теория графов». - student2.ru могут быть выделены неоднозначно, что соответствует случаю, если Решение контрольных задач по теме «Теория графов». - student2.ru несколько минимальных путей из Решение контрольных задач по теме «Теория графов». - student2.ru в Решение контрольных задач по теме «Теория графов». - student2.ru .

Чтобы найти расстояния в ориентированном графе, необходимо составить матрицу минимальных расстояний R(D)между его вершинами. Это квадратная матрица размерности Решение контрольных задач по теме «Теория графов». - student2.ru , элементы главной диагонали которой равны нулю ( Решение контрольных задач по теме «Теория графов». - student2.ru , i=1,..,n).

Сначала составляем матрицу смежности. Затем переносим единицы из матрицы смежности в матрицу минимальных расстояний ( Решение контрольных задач по теме «Теория графов». - student2.ru , если Решение контрольных задач по теме «Теория графов». - student2.ru ). Далее построчно заполняем матрицу следующим образом.

Рассматриваем первую строку, в которой есть единицы. Пусть это строка − i-тая и на пересечении с j-тым столбцом стоит единица (то есть Решение контрольных задач по теме «Теория графов». - student2.ru ). Это значит, что из вершины Решение контрольных задач по теме «Теория графов». - student2.ru можно попасть в вершину Решение контрольных задач по теме «Теория графов». - student2.ru за один шаг. Рассматриваем j-тую сроку (строку стоит вводить в рассмотрение, если она содержит хотя бы одну единицу). Пусть элемент Решение контрольных задач по теме «Теория графов». - student2.ru . Тогда из вершины Решение контрольных задач по теме «Теория графов». - student2.ru в вершину Решение контрольных задач по теме «Теория графов». - student2.ru можно попасть за два шага. Таким образом, можно записать Решение контрольных задач по теме «Теория графов». - student2.ru . Следует заметить, что если в рассматриваемых строках две или более единиц, то следует прорабатывать все возможные варианты попадания из одной вершины в другую, записывая в матрицу длину наикратчайшего из них.

Примечание: В контрольной работе самый длинный путь найти при помощи алгоритма фронта волны.

Пример

Найдем расстояния в ориентированном графе D, изображенном на рис. 7. В данной задаче количество вершин n=7, следовательно, матрицы смежности и минимальных расстояний между вершинами ориентированного графа D будут иметь размерность 7×7.

Решение контрольных задач по теме «Теория графов». - student2.ru

Рис.7.

Матрица смежности:

Решение контрольных задач по теме «Теория графов». - student2.ru .

Начинаем заполнять матрицу R(D) минимальных расстояний: сначала ставим нули по главной диагоналии rij=aij, если aij=1, (т.е. переносим единицы из матрицы смежности). Рассматриваем первую строку. Здесь есть две единицы, то есть из первой вершины за один шаг можно попасть во вторую и шестую. Из второй вершины можно попасть за один шаг в третью (путь в первую вершину нас не интересует), следовательно, можно записать Решение контрольных задач по теме «Теория графов». - student2.ru . Из шестой вершины можем добраться за один шаг в пятую и седьмую, а значит, Решение контрольных задач по теме «Теория графов». - student2.ru , Решение контрольных задач по теме «Теория графов». - student2.ru . Теперь ищем маршруты, исходящие из первой вершины, состоящие из 3 шагов: за 2 шага идем в третью вершину, оттуда за один шаг попадаем в четвертую, поэтому Решение контрольных задач по теме «Теория графов». - student2.ru . В итоге получаем следующую матрицу:

Решение контрольных задач по теме «Теория графов». - student2.ru

Таким образом, диаметром исследуемого ориентированного графа будет Решение контрольных задач по теме «Теория графов». - student2.ru .

Для каждой вершины заданного ориентированного графа найдем максимальное удаление (эксцентриситет) в графе G от вершины нее по формуле, которая была приведена выше Решение контрольных задач по теме «Теория графов». - student2.ru : r(vi) − максимальное из расстояний, стоящих в i-той строке. Таким образом,

r(v1)=3, r(v2)=3, r(v3)=5, r(v4)=4, r(v5)=2, r(v6)=2, r(v7)=3.

Значит, радиусомграфа G будет Решение контрольных задач по теме «Теория графов». - student2.ru

Соответственно, центрами графа G будут вершины v5 и v6 , так как величины их эксцентриситетов совпадают с величиной радиуса Решение контрольных задач по теме «Теория графов». - student2.ru .

Опишем теперь нахождение минимального пути из вершины v3 в вершину v6 по алгоритму фронта волны. Обозначим вершину v3 как V0, а вершину v6 - как W (см. рис. 8). Множество вершин, принадлежащих образу V0, состоит из одного элемента - это вершина v4, которую, согласно алгоритму, обозначаем как V1: FW1(v3)={v4}. Поскольку искомая вершина не принадлежит фронту волны первого уровня Решение контрольных задач по теме «Теория графов». - student2.ru , продолжаем работу алгоритма. Строим фронт волны второго уровня - это множество вершин, принадлежащих образу вершины V1: FW2(v3)={v7}, обозначаем v7≡V2. В образ вершины V2 входят две вершины - v5 и v4, но, так как v4 уже была помечена как V0, то фронт волны третьего уровня состоит из одного элемента: FW3(v3)={v5}, v5≡V3. Из непомеченных вершин в образ вершины V3 входят v1 и v2, соответственно, FW4(v3)={v1, v2}, v1≡V4, v2≡V4. Теперь помечены все вершины, кроме v6, которая входит в образ вершины Решение контрольных задач по теме «Теория графов». - student2.ru , то есть FW5(v3)={v6≡W}, работа алгоритма закончена. Минимальный путь (5 шагов) из вершины v3 в вершину v6 выглядит так: v3 v4 v7 v5 v1 v6.

Решение контрольных задач по теме «Теория графов». - student2.ru

Рис.8.

Задание 3. Минимальный путь в нагруженном ориентированном графе

Найти минимальный путь в нагруженном ориентированном графе из вершины Решение контрольных задач по теме «Теория графов». - student2.ru в вершину Решение контрольных задач по теме «Теория графов». - student2.ru по методу Форда-Беллмана.

Рассмотрим сначала общую задачу – нахождения минимального пути из вершины vнач в vкон.

Пусть D=(V,X) – нагруженный ориентированный граф, V={v1,…,vn}, n>1. Введем величины Решение контрольных задач по теме «Теория графов». - student2.ru , где i=1,…,n, k=0,1,2,…,n–1.

Для каждого фиксированного i и k величина Решение контрольных задач по теме «Теория графов». - student2.ru равна длине минимального пути среди путей из vнач в vi содержащих не более k дуг. Если путей нет, то Решение контрольных задач по теме «Теория графов». - student2.ru .

Положим также Решение контрольных задач по теме «Теория графов». - student2.ru .

Составляем матрицу длин дуг C(D)=[cij] порядка n:

Решение контрольных задач по теме «Теория графов». - student2.ru

Утверждение. При i=2,…,n, k³0 выполняется равенство

Решение контрольных задач по теме «Теория графов». - student2.ru . (3.1)

Алгоритм Форда-Беллмана нахождения минимального пути в нагруженном ориентированном графе D из vнач в vкон.( vнач ≠ vкон).

( Решение контрольных задач по теме «Теория графов». - student2.ru записываем в виде матрицы, i- строка, k-столбец).

1) Составляем таблицу Решение контрольных задач по теме «Теория графов». - student2.ru , i=1,…,n, k=0,…,n-1. Если Решение контрольных задач по теме «Теория графов». - student2.ru , то пути из vнач в vкон нет. Конец алгоритма.

2) Если Решение контрольных задач по теме «Теория графов». - student2.ru то это число выражает длину любого минимального пути из vнач в vкон. Найдем минимальное k1³1, при котором Решение контрольных задач по теме «Теория графов». - student2.ru . По определению Решение контрольных задач по теме «Теория графов». - student2.ru получим, что k1- минимальное число дуг в пути среди всех минимальных путей из vнач в vкон.

3) Затем определяем номера i2,…, Решение контрольных задач по теме «Теория графов». - student2.ru такие, что

Решение контрольных задач по теме «Теория графов». - student2.ru ,

Решение контрольных задач по теме «Теория графов». - student2.ru ,

Решение контрольных задач по теме «Теория графов». - student2.ru Решение контрольных задач по теме «Теория графов». - student2.ru

Решение контрольных задач по теме «Теория графов». - student2.ru ,

то есть восстанавливаем по составленной таблице и матрице стоимости искомый минимальный путь из vнач в vкон.

Пример

Найдем минимальный путь из вершины v2 в v6 в ориентированном нагруженном графе D, изображенном на рис. 9. В рассматриваемом графе количество вершин n=7, следовательно, матрица длин дуг ориентированного графа D будет иметь размерность 7×7.

Решение контрольных задач по теме «Теория графов». - student2.ru

Рис. 9.

Матрица длин дуг для рассматриваемого графа будет выглядеть следующим образом:

Решение контрольных задач по теме «Теория графов». - student2.ru .

Согласно алгоритму, составляем таблицу стоимости минимальных путей из вершины v2 в вершину vi не более, чем за k шагов, k=0,…n-1 (n=7, следовательно, k=0,…6). Как было определено выше, Решение контрольных задач по теме «Теория графов». - student2.ru , и Решение контрольных задач по теме «Теория графов». - student2.ru для всех остальных вершин vi ≠ v2, то есть первый столбец таблицы состоит из элементов, равных Решение контрольных задач по теме «Теория графов». - student2.ru , кроме элемента Решение контрольных задач по теме «Теория графов». - student2.ru . Второй столбец таблицы повторяет вторую строку матрицы стоимости, поскольку представляет собой стоимость возможных путей из вершины v2 за один шаг. Далее по формуле (3.1) находим по столбцам все оставшиеся элементы таблицы. Например, чтобы найти элемент Решение контрольных задач по теме «Теория графов». - student2.ru , складываем элементы столбца Решение контрольных задач по теме «Теория графов». - student2.ru и первого столбца матрицы стоимости и выбираем минимальное из получившихся чисел: Решение контрольных задач по теме «Теория графов». - student2.ru .

В конечном итоге получаем следующую таблицу:

Решение контрольных задач по теме «Теория графов». - student2.ru

Теперь необходимо по построенной таблице и по матрице C(D) восстановить минимальный путь из вершины v2 в v6, который будет строиться с конца, то есть, начиная с вершины v6. Для этого выбираем минимальное из чисел, стоящих в строке, соответствующей v6 в таблице. Это число – 21 – длина минимального искомого пути. В первый раз такая длина была получена при количестве шагов, равном 4. В вершину v6 мы можем попасть за один шаг из вершин v1 и v7 (длина соответствующих дуг 8 и 5 соответственно – данные из матрицы C(D)). Выбираем минимальную по длине из этих дуг. Далее, в вершину v7 можно попасть из v4 и v5(длина соответствующих дуг 7 и 3 соответственно). Продолжая аналогичным образом, найдем искомый путь за 4 шага минимальной длины из вершины v2 в v6: v2 v3 v5 v7 v6.

Задание 4. Эйлеровы циклы и цепи

Найти Эйлерову цепь в неориентированном графе.

Исходя из утверждений 1 и 2, чтобы найти Эйлерову цепь, нужно соединить две вершины с нечетными степенями фиктивным ребром. Тогда задача сводится к нахождению Эйлерова цикла по приведенному ниже алгоритму. Из найденного цикла удаляется фиктивное ребро, тем самым находится искомая Эйлерова цепь.

Наши рекомендации