Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GRAFi.doc
Скачиваний:
5
Добавлен:
02.11.2018
Размер:
544.26 Кб
Скачать

П

шинами xн и xк, используя волновой алгоритм.

Рассмотрим краткое решение этой задачи.

1. Результаты прямого прохода алгоритма приведены в табл. 3.4.

2. Обратный ход:

ример 3.3.
Найти длиннейший путь в графе (рис. 3.3) между вер-

Таблица 3.4

x1

x2

x3

x4

x5

x6

M

0

0

0

0

0

0

1

0

1

4

0

0

0

2,3

0

1

4

6

0

0

3,4

0

1

4

6

8

0

4,5

0

1

4

6

8

10

5,6

0

1

4

6

8

10

6

0

1

4

6

8

10

Дуги-претенденты: (x1 x2), (x1 x3), (x2 x4), (x3 x4), (x3 x5), (x4 x6), (x5 x6).

3. Построены три длиннейшие пути:

L1: (x1 x2),(x2 x4), (x4 x6); L2: (x1 x3), (x3 x4), (x4 x6); L3: (x1 x3), (x3 x5), (x5 x6).

3.3. Нахождение компонент связности

Вершины xi и xj слабо связны, если в графе существует путь (xi, xj).

Вершины xi и xj сильно связны, если существуют пути (xi, xj) и (xj, xi).

Если в графе нет путей из xi в xj и нет обратного пути из xj в xi, то вершины xi и xj несвязны. Для неориентированного графа имеет смысл только понятие сильной связности.

Компонентой связности называется максимальное подмножество сильно связанных между собой вершин.

Отношение связности рефлексивно, симметрично, транзитивно, т. е. является отношением эквивалентности, и однозначно разбивает множество вершин графа на компоненты связности.

Пример 3.4: Задан граф (рис.3.4). Найти его компоненты связности.

Данный граф может быть разбит на следующие компоненты связности:

1){x1,x2,x3,x4}; 2){x5,x6,x7}; 3){x8}

Между компонентами - только слабая связность: есть пути из вершин 1-й компоненты в вершины 2-й и 3-ей компоненты, а также из вершин 2-й компоненты в вершину 3-ей.

Рис. 3.4

Алгоритм построения компонент связности в неориентированном графе

1. i=0. Все вершины графа не отмечены.

2. i=i+1. Выбираем очередную неотмеченную вершину, отмечаем её и все связанные с нею вершины значением индекса i с помощью распространения волны отметок по ребрам, идущих от уже отмеченных индексом i вершин. Таким образом выделяется i компонента связности. Если есть ещё неотмеченные вершины, то выполняется п.2, иначе выделение компонент связности закончено.

Пример 3.5

Рис. 3.5

Решение:

1. i=0

2. i=1. Отмечаем индексом i=1 вершину x1 и связанные с ней вершины x3, x7 и x9. Получена первая компонента связности: k1 {x1,x3,x7,x9 }

2. i=2. Отметим индексом i=2 вершину x2 и вершины x6,x10. Построена вторая компонента связности: k2 {x2,x6,x10}

2. i=3. Отмечаются индексом i=3 вершины x4 и x8 . Построена третья компонента связности: k3 {x4, x8 }.

2. i=4. Отмечаются индексом i=4 вершину x5, которая формирует четвертую компоненту связности – k4 {x5}

3.4. Алгоритмы нахождения подграфов

Циклом называется замкнутый маршрут в неориентированном графе. Для ориентированного графа определяется аналогично понятие контур - замкнутый путь.

Пример 3.6. В графе (рис.3.6) каждому ребру присвоен свой номер. Выделим соответствующее ему число циклов. Для нашего примера циклами Ci являются замкнутые маршруты, образованные ребрами : C1={1, 2, 5, 4}, C2={5, 6, 7}, C3={3, 6, 2}, C4={1, 2, 6, 7, 4} и т. д. Среди этих циклов найдутся такие, которые включают в себя другие циклы. Так, цикл C4 состоит из циклов C1 и C2 , у которых имеется общее ребро 5, не вошедшее в цикл 4.

Говорят, что цикл 4 получен линейной комбинацией циклов 1 и 2, т. е. является линейно зависимым от них.

Рис. 3.6

Линейнозависимым от некоторой совокупности других циклов называется цикл, который можно построить линейной комбинацией циклов в этой совокупности.

Присвоим каждому ребру графа номер j, j=1,m и сопоставим каждому циклу Сi двоичный m-разрядный вектор Vi , компоненты vij которого определяются следующим образом: vij = 0, если ребро j не входит в цикл Ci , vij = 1 - в противном случае.

Тогда линейной комбинацией векторов Vi является результат векторной операции сложения по модулю два этих векторов.

Поскольку Vi - отношение принадлежности рёбер графа циклу Ci , а Ci - это множество рёбер, то в результате применения векторной операции мы получаем совокупность рёбер, входящих в циклы, составляющих линейную комбинацию за исключением общих для этих циклов рёбер.

На языке теории множеств это означает объединение множеств Ci без их пересечения, что соответствует операции «симметрическая разность» двух множеств.

j

1

2

3

4

5

6

7

V1

1

1

0

1

1

0

0

V2

0

0

0

0

1

1

1

V4

1

1

0

1

0

1

1

В нашем примере общим является ребро 5, которое исключено из цикла 4.

Линейно-независимым от совокупности других циклов называется цикл, который не может быть построен линейной комбинацией этих циклов.

Максимальное множество линейно-независимых циклов образует систему независимых циклов; мощность этого множества называется цикломатическим числом. Это число определяется по формуле Эйлера

=m-n+p (3.2)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]