Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические задания и программы / Методичка с материалом и заданиями (все вместе).doc
Скачиваний:
81
Добавлен:
11.02.2016
Размер:
2.19 Mб
Скачать

Волновой алгоритм построения длиннейшего пути во взвешенном графе

Используется волновой алгоритм построения кратчайшего пути для взвешенного графа со следующими отличиями.

1. В п. 1 волнового алгоритма построения кратчайшего пути присваиваем всем вершинам вес 0, тогда автоматически будут строиться длиннейшие пути.

2. В п. 2 алгоритма полагаем .

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

ш

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

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

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

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

Таблица 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}