Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1714

.pdf
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
1.86 Mб
Скачать

dнов. (υ3 )= min{dстар. (υ3 ), d (υ)+ w(υ,υ3 )}= min{11, 5* +8}= min{11, 13}=11.

Шаг 3

Одна из временных меток превращается в постоянную:

min{d (υ3 ), d (υ5 ), d (υ6 )}= min{11, 9, 23} =9 = d (υ5 ),

принимаем за υ =υ5 .

Шаг 4

υ =υ5 t =υ6 ,

происходит возвращение на второй шаг. Результаты вычислений приведем в табл. 4.

Таблица 4

Вершины графа

υ1

υ2

υ3

υ4

υ5

υ6

Метки вершин после первого шага

0*

Метки вершин после первой итерации

5

11

3*

15

Метки вершин после второй итерации

5*

11

9

23

Метки вершин после третьей итерации

11

9*

23

4-я итерация

Шаг 2

Множество вершин, непосредственно следующих за υ =υ5 с временными метками V ={υ3,υ6}. Пересчитываем временные метки этих вершин:

dнов. (υ3 )= min{dстар. (υ3 ), d (υ)+ w(υ,υ3 )}= min{11, 9* +1}= min{11, 10}=10.

dнов. (υ6 )= min{dстар. (υ6 ), d (υ)+ w(υ,υ6 )}= min{23, 9* +17}= min{23, 26}= 23.

Шаг 3

Одна из временных меток превращается в постоянную: min{d (υ3 ), d (υ6 )}= min{10, 23} =10 = d (υ3 ),

принимаем за υ =υ3 .

Шаг 4

υ =υ3 t =υ6 ,

происходит возвращение на второй шаг.

51

Результаты вычислений приведем в табл. 5.

Таблица 5

Вершины графа

υ1

υ2

υ3

υ4

υ5

υ6

Метки вершин после первого шага

0*

Метки вершин после первой итерации

5

11

3*

15

Метки вершин после второй итерации

5*

11

9

23

Метки вершин после третьей итерации

11

9*

23

Метки вершин после четвертой итерации

10*

23

5-я итерация

Шаг 2

Множество вершин, непосредственно следующих за υ =υ3 с временными метками V ={υ6} (у вершины υ4 есть постоянная метка). Пересчитываем временную метку этой вершины:

dнов. (υ6 )= min{dстар. (υ6 ), d (υ)+ w(υ,υ6 )}= min{23, 10* +9}= min{23, 19}=19 .

Шаг 3

Одна из временных меток превращается в постоянную: min{d (υ6 )}= min{19} =19 = d (υ6 ),

принимаем за υ =υ6 .

Шаг 4

υ =υ6 =t ,

конец первого этапа.

Результаты вычислений приведем в табл. 6.

Таблица 6

Вершины графа

υ1

υ2

υ3

υ4

υ5

υ6

Метки вершин после первого шага

0*

Метки вершин после первой итерации

5

11

3*

15

Метки вершин после второй итерации

5*

11

9

23

Метки вершин после третьей итерации

11

9*

23

Метки вершин после четвертой итерации

10*

23

Метки вершин после пятой итерации

19*

52

Этап 2. Построение кратчайшего пути

1-я итерация

Шаг 5. Последовательный поиск дуг кратчайшего пути

Составим множество вершин, непосредственно предшествующих υ =υ6 =t с постоянными метками V ={υ3,υ4,υ5}. Проверим для этих вершин выполнение равенства (8.3):

d (υ)= d (υ

5

)

+ w(υ ,υ)=9* +17 = 26 19 ,

 

 

5

d (υ)= d (υ4 ) + w(υ4,υ)=3* + 20 = 23 19,

d (υ)= d (υ3 ) + w(υ3,υ)=10* +9 =19.

Включаем дугу, соединяющую вершины υ3 и υ6 , в искомый путь и полагаем υ =υ3 .

Шаг 6. Проверка на завершение второго этапа

υ =υ3 s =υ1,

возвращение на пятый шаг.

2-я итерация

Шаг 5

Составим множество вершин, непосредственно предшествующих υ =υ3 с постоянными метками V ={υ1,υ2,υ5}. Проверим для этих вершин выполнение

равенства (8.3):

d (υ)= d (υ5 ) + w(υ5,υ)=9* +1 =10 ,

d (υ)= d (υ2 )

+ w(υ2,υ)=5* +8 =13 10 ,

d (υ)= d (υ )

+ w(υ ,υ)= 0* +11 =11 10.

1

1

Включаем дугу, соединяющую вершины υ5 и υ3 , в искомый путь и пола-

гаем υ =υ5 .

Шаг 6

υ =υ5 s =υ1,

возвращение на пятый шаг.

53

3-я итерация

Шаг 5

Составим множество вершин, непосредственно предшествующих υ =υ5 с постоянными метками V ={υ1,υ4}. Проверим для этих вершин выполнение ра-

венства (8.3):

d (υ)= d (υ4 ) + w(υ4,υ)=3* +6 =9 ,

d (υ)= d (υ1 ) + w(υ1,υ)= 0* +15 =15 9 .

Включаем дугу, соединяющую вершины υ4 и υ5 , в искомый путь и полагаем υ =υ4 .

Шаг 6

υ =υ4 s =υ1 ,

возвращение на пятый шаг.

4-я итерация

Шаг 5

Составим множество вершин, непосредственно предшествующих υ =υ4 с постоянными метками V ={υ1,υ2,υ3}. Проверим для этих вершин выполнение

равенства (8.3):

d (υ)= d (υ3 ) + w(υ3,υ)=10* +1 =11 3,

d (υ)= d (υ2 ) + w(υ2,υ)=5* + 2 = 7 3 , d (υ)= d (υ1 ) + w(υ1,υ)= 0* +3 =3 .

Включаем дугу, соединяющую вершины υ1 и υ4 , в искомый путь и полагаем υ =υ1.

Шаг 6

υ =υ1 = s ,

завершение второго этапа.

Итак, кратчайший путь от вершины s =υ1 до вершины t =υ6 построен.

Его длина (вес) равна 19, сам путь образует следующая последовательность вершин: υ1 υ4 υ5 υ3 υ6 .

54

9.Связность графов

9.1.Связность неориентированных графов

Неориентированный граф называется связным, если любые две вершины соединены маршрутом, т.е. являются взаимно достижимыми.

Связный неорграф образует компоненту связности (рис. 56). В общем случае неорграф может иметь несколько компонент связности (рис. 57).

υ2 υ4

υ1

υ6

υ3 υ5

Рис. 56. Связный неорграф

υ2

υ4

 

υ2

υ4

υ1

υ6

υ1

υ7

υ6

 

 

υ7

 

 

υ3

υ5

 

υ3

υ5

а)

 

 

б)

 

Рис. 57. Несвязный неорграф:

а) с 2 компонентами связности, б) с 3 компонентами связности

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

9.2. Связность ориентированных графов

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

55

Полупуть – это путь, который проходится без учета ориентации ребер. Вершина υj достижима из вершины υi , если существует путь с началом

в υi и концом в υj . Вершина орграфа называется источником, если из неё дос-

тижима любая вершина орграфа.

Достижимость между вершинами в орграфах несимметрична: если υj достижима из υi , то υi необязательно достижима из υj . Однако полупуть из υj в υi в этом случае существует всегда. Возможен случай, когда между вершина-

ми нет пути ни в одну, ни в другую сторону, но есть полупуть.

Таким образом, в орграфах существуют различные виды связности, которые описываются следующими определениями.

Орграф называется сильно связным (сильным), если любые две его вершины достижимы друг из друга (т.е. если между ними существуют пути в обе стороны) (рис. 58).

Орграф называется односторонне связным (односторонним), если для любой пары его вершин, по меньшей мере, одна из них достижима из другой (т.е. если между ними существует путь хотя бы в одну сторону) (рис. 59).

На рис 59. орграф является односторонним потому, что, например, вершина υ2 не достижима из вершины υ4 , а сама вершины υ4 достижима из лю-

бой вершины орграфа.

Орграф называется слабо связным (слабым), если связным графом является его основание (т.е. если между любой парой вершин существует полупуть) (рис. 60).

Орграф называется несвязным, если его основание не является связным графом (т.е. если между некоторой парой вершин нет полупути) (рис. 61).

υ1υ2 υ1υ2

υ4 υ3 υ4 υ3

Рис. 58. Сильный орграф Рис. 59. Односторонний орграф

υ1

υ2

υ1

υ2 υ

 

 

 

5

υ4

υ3

υ4

υ3 υ6

 

Рис. 60. Слабый орграф

 

Рис. 61. Несвязный орграф

56

На рис 60 орграф является слабым потому, что вершины υ2 и υ4 не достижимы друг из друга ни в одном направлении.

9.3. Матрицы достижимости и контрдостижимости

Пусть В – матрица смежности графа G =<V ,U > n–го порядка. Составим матрицу D = E + B + B2 +…+ Bn1. Образуем из матрицы D =(dij ) матрицу C =(cij ) порядка п по следующему правилу:

● если dij 0

, то cij =1;

● если dij = 0

, то и cij = 0 .

Вэтом случае матрица С называется матрицей связности, если G – не-

орграф, и матрицей достижимости, если G – орграф.

Вграфе G тогда и только тогда существует маршрут из вершины υi в

вершину υj , когда cij =1. Таким образом, в матрице С содержится информация

о существовании связей между различными элементами графа посредством маршрутов. Если G – связный неорграф, то все элементы матрицы связности С равны единице.

Определим следующим образом матрицу контрдостижимости Q =(qij ): ● если вершина υi достижима из вершины υj или i = j , то qij =1;

● в противном случае qij = 0 .

Нетрудно заметить, что если C =(cij ) – матрица достижимости, то

Q =CT .

Матрицы достижимости C =(cij ) и контрдостижимости Q =(qij )

можно использовать для нахождения сильных компонент графа.

Как известно, понятие сильной связности относится только к орграфам. Поэтому далее в этом параграфе речь будет идти об орграфах.

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

Рассмотрим матрицу S =C Q , где операция « » означает поэлементное произведение матриц С и Q, т.е. sij = cij qij . Элемент sij матрицы S равен 1 тогда и только тогда, когда i = j или вершины υi и υj взаимно достижимы, т.е. υi достижима из υj , а υj достижима из υi . Таким образом, вершины υi и υj

находятся в одной сильной компоненте. Следовательно, сильная компонента, содержащая вершину υi , состоит из элементов υj , для которых sij =1.

57

Пример 9.1. Найти компоненты сильной связности орграфа, изображенного на рис. 62.

υ6 υ1

υ5

υ2

υ4 υ3

Рис. 62. Орграф

Решение. Матрица смежности данного орграфа имеет вид

 

 

υ1

υ2 υ3 υ4 υ5 υ6

 

υ1

 

0

0

1

0

0

0

 

 

υ2 0 0 0 0 0 1

B =

υ3

 

0

0

0

0

1

0

 

υ4

 

0

1

0

0

0

0

.

 

 

 

 

υ5

1

0

0

0

0

0

 

 

υ6

 

0

0

0

1

1

0

 

 

 

 

Так как орграф имеет шесть вершин, то матрица D будет равна

D = E + B + B2 + B3 + B4 + B5 .

Найдем B2, B3, B4, B5 .

0 0 1 0 0

0

0 0 1 0 0

0

0 0 0 0 1

0

0 0 0

0

0

1

 

0 0 0 0 0

1

 

0

0

0

1 1

0

 

 

0

0

0

0

1

0

 

 

0

0

0

0

1

0

 

 

1

0

0

0

0

0

 

B2=

 

 

 

=

.

 

0

1

0

0

0

0

 

 

0

1 0

0

0

0

 

 

0

0

0

0

0

1

 

1 0

0

0

0

0

 

1 0

0

0

0 0

 

0 0

1 0

0

0

 

 

0

0

0 1 1

 

0

 

 

0

0

0

1 1

0

 

 

 

 

 

0

0

0

 

 

 

 

 

 

1 1 0

 

58

 

 

0 0 0 0 1 0

 

0 0 1 0 0 0

 

1 0 0 0 0

0

 

 

0 0 0 1 1 0

 

0 0 0 0 0

1

 

1 1 0 0 0

0

B3=

 

1 0 0 0

0 0

 

 

0

0 0

0 1

0

 

 

0

0

1 0

0

0

 

0 0 0 0

0

1

 

0

1 0

0 0

0

=

 

0

0

0 1 1 0 .

 

 

 

0 0

1 0

0 0

 

 

1 0 0 0 0 0

 

 

 

0

0

0 0

1 0

 

 

 

 

 

 

 

 

 

 

 

0

0 0

1 1 0

 

 

 

0

0

1 0

0

1

 

 

 

1 1 0 0 0 0

 

 

 

 

 

 

 

 

 

1 0 0 0 0 0

 

0 0 1 0 0 0

 

0 0 1 0 0 0

 

 

1 1 0 0 0 0

 

0 0 0 0 0 1

 

 

0 0 1 0 0 1

B4=

 

0 0 1 0 0 0

 

 

 

0

0 0

0 1 0

 

=

 

0

0

0 0

1

0

 

 

 

 

 

 

.

 

 

 

0 0 0 1 1 0

 

 

 

0

1 0

0 0 0

 

 

1 1 0 0 0 0

 

 

 

 

0 0 0 0 1 0

 

1 0 0 0 0 0

 

1 0 0 0 0 0

 

 

 

0 0 1 0 0 1

 

 

0

0 0

1 1 0

 

 

0

0

0 1 2

0

 

 

0 0 1 0 0 0

 

0 0 1 0 0 0

 

0 0 0 0 1 0

 

 

0 0 1 0 0 1

 

0 0 0 0 0 1

 

 

0 0 0 1 2 0

B5=

 

0 0 0 0 1 0

 

 

 

0

0 0

0 1 0

 

=

 

1

0

0 0

0

0

 

 

 

 

 

 

.

 

 

1 1 0 0 0 0

 

 

 

0

1 0

0 0 0

 

 

 

0

0

1 0

0

1

 

 

 

1 0 0 0 0 0

 

1

0 0

0 0 0

 

 

0

0

1 0

0

0

 

 

 

0 0 0 1 2 0

 

 

0

0 0

1 1 0

 

 

2

1 0 0

0

0

 

 

 

 

 

 

 

1 0 0 0 0 0 0 0 1 0 0 0

 

 

 

 

 

 

 

 

0 1 0 0 0 0

 

0 0 0 0 0 1

 

 

 

 

 

 

 

 

 

0 0 1 0 0 0

 

 

 

0 0 0 0 1 0

 

+

D = E +B +B2+B3+B4+B5=

 

+

 

 

 

 

 

 

 

 

 

0 0 0 1 0 0

 

0 1 0 0 0 0

 

 

 

 

 

 

 

 

 

 

0 0 0 0 1 0

1 0 0 0 0 0

 

 

 

 

 

 

 

 

 

 

0 0 0 0 0 1

 

 

 

0 0 0 1 1 0

 

 

 

 

 

 

 

 

 

 

 

 

 

0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0

 

0 0 0 1 1 0

1 1 0 0 0 0

 

0 0 1 0 0 1

 

 

1 0 0 0 0 0

 

 

0 0 1 0 0 0

 

 

 

 

 

 

 

 

 

 

+

+

+ 0 0 0 0 1 0

+

 

0 0 0 0 0 1

 

0 0 0 1 1 0

1 1 0 0 0 0

 

 

 

0 0 1 0 0 0

 

0 0 0 0 1 0

1 0 0 0 0 0

 

 

 

 

 

 

 

 

 

 

0 0 1 0 0 1

 

 

 

 

 

 

 

 

 

 

1 1 0 0 0 0

 

0 0 0 1 2 0

 

 

59

 

0 0 0 0 1

0

 

2 0

2 0 2 0

 

0

0

0 1 2 0

 

1

2 1

2

3

2

 

 

1

0

0

0

0

0

 

 

2 0

2 0 2 0

+

 

0

0

1

0

0

1

=

1 2

1

2

1

2 .

 

 

0

0

1

0

0

0

 

 

 

2 0

2 0

2

0

 

 

 

2 1

0

0

0

0

 

 

 

3

3

1

2

3

2

 

 

 

 

 

 

 

Используя полученную матрицу D, составим матрицу достижимости С. Для этого заменим в матрице D все не нулевые элементы на единицы:

1

0

1

0

1

0

 

1

1

1

1

1

1

 

 

 

1

0

1

0

 

C = 1 0

.

1

1

1

1

1

1

 

1

0

1

0

1

0

 

 

1

1

1

1

1

 

1

 

Транспонируя матрицу достижимости С, получим матрицу контрдости-

жимости Q:

 

 

 

1

1

1

1 1

 

1

 

 

 

 

 

 

 

 

 

 

0

1

0

1 0

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Q =CT =

1 1 1 1 1 1 .

 

 

 

 

 

0

1

0

1 0

 

1

 

 

 

 

1

1

1

1 1

 

1

 

 

 

 

 

0

1

0

1 0

 

 

 

 

 

 

 

 

 

1

 

Наконец, составим матрицу S =C Q :

 

 

 

 

 

 

1 0 1 0 1 0

1 1 1 1 1

1

 

1 0 1 0 1 0

1 1 1 1 1 1

 

0 1 0 1 0

1

 

0 1 0 1 0 1

 

 

 

 

1 1 1 1 1

 

=

 

1 0 1 0 1 0

 

S = 1 0 1 0 1 0

 

 

1

 

.

1 1 1 1 1 1

 

 

0 1 0 1 0

1

 

 

0 1 0 1 0 1

 

1 0 1 0 1 0

 

1 1 1 1 1

1

 

1 0 1 0 1 0

 

 

 

 

0 1 0 1 0

 

 

 

0 1 0 1 0 1

 

1 1 1 1 1 1

 

 

1

 

 

 

Рассматриваем матрицу S по строкам. Из первой, третьей и пятой строк

видно, что вершины

υ1 ,

υ3

и

υ5

взаимно

 

достижимы (элементы

60