dln001
.pdfÅñëè (n; n¡1)-граф является деревом, то модуль любо-
го минора n¡1 порядка матрицы инцидентности соответствующего орграфа равен 1 и равен 0, если граф не является деревом.
Под соответствующим орграфом для некоторого неориентированного графа будем понимать орграф, полученный путем придания произвольной ориентации ребрам этого графа (достаточно в каждом столбце матрицы инцидентности одной из единиц приписать знак " "). Первая часть приведенного утверждения, касающаяся дерева, фактически была доказана в разд. 3.2 (см. стр. 48.). Докажем вторую часть.
¤ Пусть (n; n¡1)-граф не является деревом и, значит, несвязен. Тогда его матрица инцидентности состоит из нескольких независимых блоков, представляющих собой матрицы инцидентности компонент связности. То же самое относится и к матрице инцидентности соответствующего орграфа. Кроме того, строки этой матрицы линейно зависимы, причем, поскольку граф несвязный, такая зависимость существует в каждой группе строк, описывающей ту или иную компоненту связности. Удалив некоторую строку матрицы, получим квадратную подматрицу порядка n¡1; определитель которой равен 0. Действительно, удаление одной строки может устранить линейную зависимость только для строк, относящихся лишь к одной компоненте связности. Строки, определяющие остальные компоненты оcтаются по-прежнему линейно зависимыми. Поэтому любой минор n¡1 порядка в рассматриваемом слу-
чае равен 0, что и требовалось доказать. ¢
В соответствии с изложенным процесс получения (пере- числения) всех остовов графа G(n; m); представленного матрицей инцидентности, можно организовать следующим образом. Последовательно формируются сочетания из m ïî n¡1 столбцов заданной матрицы, которые образуют матрицы инцидентности (n¡1)-реберных остовных подграфов графа G: Для каждой такой матрицы после обработки всех ее столбцов (одной из двух единиц столбца приписывается знак " ") подсчитывается значение любого минора n¡1 порядка. Если получается +1 или 1, то соответствующий остовный подграф
51
является остовом графа G(n; m) и его матрица запоминает-
ся, в противном случае подграф не остов и его матрица не учитывается. Процесс завершается после перебора всех Cmn¡1 сочетаний столбцов матрицы инцидентности.
Вместо матрицы инцидентности можно сразу взять матрицу B¡i размера (n¡1)£m , представляющую собой матрицу инцидентности соответствующего орграфа с удаленной i-é
строкой, и вычислять все ее миноры порядка n¡1 .
В качестве примера получим все остовы графа G; изображенного на рис. 3.8 и имеющего матрицу инцидентности B:
v1 |
|
|
|
e1 |
|
|
v2 |
|
|
|
e1 e2 e3 e4 e5 |
|
||||
|
|
|
|
|
|
|
v1 |
|
1 |
1 |
0 |
0 |
0 |
|
||
|
|
s |
e3 |
|
se4 |
|
2 |
3 |
||||||||
G e2 |
|
|
B = |
v2 |
1 |
0 |
1 |
1 |
0 |
|||||||
|
|
|
|
|
|
|
|
v3 |
6 |
0 |
0 |
0 |
1 |
1 |
7 |
|
v4 |
|
|
|
|
v3 |
|
v4 |
0 |
1 |
1 |
0 |
1 |
||||
|
|
|
||||||||||||||
s |
e5 |
|
|
|
||||||||||||
|
|
s |
Ðèñ. 3.8 |
|
4 |
|
|
|
|
|
5 |
|||||
|
Ниже приведена матрица |
B |
¡1 |
и все ее миноры третьего |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
порядка (их число равно C5 |
=10 ): |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
v4 |
|
e1 e2 e3 e4 e5 |
|
|
|
|
¯ |
|
e1 e2 e3 |
¯ |
|
|
|
¯ |
e1 e2 e4 |
¯ |
|
|
||||||||||
|
|
|
|
0 1 1 0 1 |
|
|
|
|
¡1 0 1 |
|
|
|
¡1 0 1 |
|
|
||||||||||||||||
|
|
|
v2 |
|
¡1 0 1 1 0 |
|
|
|
|
¯ |
¯ |
|
|
|
¯ |
¯ |
|
|
|||||||||||||
|
|
|
|
|
¡ ¡ |
|
¡ |
|
|
|
|
|
|
M¡ ¡ |
|
|
|
|
|
¡M |
|
|
|
||||||||
B¡1= v3 " |
0 0 0 ¡1 1 #; |
|
|
¯ |
|
0 |
|
0 |
0 |
¯ |
=0 |
, |
|
¯ |
0 |
|
0 |
1 |
¯ |
=1 |
, |
||||||||||
|
|
|
0 1 1 |
|
|
0 1¡0 |
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¯ |
|
|
|
1 |
|
¯ |
|
|
|
¯ |
|
|
2 |
|
¯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¯ |
|
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
|
¯ |
|
|
|
e1 e2 e5 |
|
|
e1 e3 e4 |
|
|
|
e1 e3 e5 |
|
|
|
|
e1 e4 e5 |
|
|
|
|||||||||||||||
¯¡0 |
0 1 |
¯ |
= ¡ 1; |
¯¡0 |
0¡1 |
¯ |
=1; |
|
¯¡0 0 1 |
¯ |
= ¡ 1; |
¯¡0¡1 1 |
¯ |
= ¡ 1; |
|||||||||||||||||
¯ |
0 |
1 1 |
¯ |
|
¯ |
0 |
1 0 |
¯ |
|
|
¯ |
|
|
0 1 1 |
¯ |
|
|
|
¯ |
|
0 0 1 |
¯ |
|
|
|
||||||
¯ |
1 |
0 |
0 |
¯ |
|
¯ |
1 |
1 |
1 |
¯ |
|
|
¯ |
|
|
1 |
1 |
0 |
¯ |
|
|
|
¯ |
|
1 |
1 |
0 |
¯ |
|
|
|
|
¡M¡3 |
|
¡M4 |
|
|
|
|
¡M¡5 |
|
|
|
|
M¡6 |
|
|
|
|||||||||||||||
¯ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
¯ |
|
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
¯ |
|
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
|
¯ |
|
|
|
¯ |
e2 e3 e4 |
|
¯ |
e2 e3 e5 |
|
|
¯ |
e2 e4 e5 |
|
|
|
¯ |
e3 e4 e5 |
|
|
|
|||||||||||||||
0 |
0¡1 |
¯ |
=1; |
0 |
0 1 |
¯ |
= ¡ 1; |
|
|
0¡1 1 |
¯ |
= ¡ 1; |
|
0¡1 1 |
¯ |
=0: |
|
||||||||||||||
¯ |
1 |
1 0 |
¯ |
|
¯ |
1 |
1 1 |
¯ |
|
|
¯ |
|
|
1 0 1 |
¯ |
|
|
|
¯ |
|
1 0 1 |
¯ |
|
|
|
||||||
|
0 |
1 |
1 |
¯ |
|
|
0 |
1 |
0 |
¯ |
|
|
¯¡ |
0 |
1 |
0 |
¯ |
|
|
|
¯¡ |
1 |
1 |
0 |
¯ |
|
|
|
|||
¯¡ ¡M7 |
|
¯¡ ¡M¡8 |
|
|
|
M¡9 |
|
|
|
M¡10 |
|
|
|
||||||||||||||||||
¯ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
¯ |
|
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
¯ |
|
|
|
|
|
¯ |
|
|
|
¯ |
|
|
|
|
¯ |
|
|
|
Миноры M1 и M10 равны 0, значит, остовные подграфы, образованные множествами ребер fe1; e2; e3g è fe3; e4; e5g; остовами не являются, тогда как подграфы, определяемые ми-
52
норами M2 M9; остовы. Это наглядно подтверждает и рис. 3.9, где представлены все трехреберные остовные подграфы рассматриваемого графа и значения соответствующих им
e1 |
|
s |
e1 |
|
sv2 |
e1 |
|
s |
e1 |
|
|
se |
|
2 |
e1 |
|
s |
|
|
e1 |
s |
2 |
v |
1 |
s |
e1 |
|
|
se |
|
2 |
v |
1 |
s |
|
e1 |
s |
|
2 |
||||||||||
|
e |
|
|
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
e |
|
||||||||||||||||||||||||||||||
v |
|
|
|
|
|
|
|
|
v |
|
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
|
v |
|
|
|
|
|
|
|
v |
|
|
|
|
|
|
|
v |
|
|||||
|
2 |
|
|
|
3 |
|
|
|
|
2 |
|
|
|
|
|
|
|
4 |
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
|
4 |
|
|
|
|
|
3 |
|
|
|
|||||
v |
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
v |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
4 |
|
|
3 |
4 |
|
|
|
|
|
|
3 |
4 |
|
|
|
|
|
e |
3 |
4 |
|
3 |
4 |
|
e |
3 |
|||||||||||||||||||||||
|
sM1=0 s |
|
sM2=1 s |
|
|
|
|
|
3 |
|
1s |
|
sM4=1 s |
|
|
Ms |
5 |
s1 |
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
Ms |
=5 |
|
|
|
|
|
|
|
=5 |
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¡ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¡ |
|
|
|
v |
1 |
s |
e1 |
|
se |
2 |
e1 |
|
s |
|
e |
|
se |
|
2 |
e1 |
|
s |
|
|
e sv2 |
e1 |
s |
|
|
|
se |
|
2 |
v |
1 s |
|
e |
se |
|
2 |
|||||||||||||
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
|
|
|
v |
|
|
|
|
|
|
v |
|
|
|
|
|
|
|
v |
|
|||||
|
Ms 6= |
4 |
|
2 |
|
|
3 |
|
|
s |
4 |
|
2 |
Ms |
|
|
3 |
1s |
|
|
2 |
Ms 9= |
|
1s |
4 |
|
|
|
|
|
3 |
s |
4 |
||||||||||||||||
|
1s |
|
|
|
|
sM7 |
=1 |
|
|
|
|
|
8 |
=5 |
|
|
|
|
|
|
|
|
sM10=0 |
|
|
||||||||||||||||||||||||
v |
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
v |
|
v |
|
|
|
|
|
|
v |
|
v |
|
|
|
|
|
v |
|
||||||
4 |
|
|
|
e5 |
|
3 |
4 |
|
|
|
|
|
3 |
4 |
|
|
e |
3 |
4 |
|
|
e5 |
|
|
3 |
4 |
|
|
|
e5 |
3 |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
¡ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¡ |
|
|
|
|
|
|
¡ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ðèñ. 3.9
миноров третьего порядка матрицы B¡1: Только восемь из десяти подграфов являются остовами, и именно для них абсолютная величина минора равна 1.
3.3.2. Пересчет остовных деревьев
Задача определения числа остовных деревьев графа естественным образом решается в процессе перечисления остовов. Однако, если требуется знать только количество остовов, а получать сами остовы нет необходимости, изложенный выше подход не рационален.
Эффективное решение рассматриваемой задачи можно получить на основе теоремы Бине Коши для определителя произведения двух матриц, которая формулируется так.
Теорема 3.1 Åñëè P матрица порядка n£m; à Q матрица порядка m£n; ãäå n·m; то определитель матрицы PQ равен сумме произведений каждого минора порядка n матрицы P на соответствующий минор матрицы Q:
Соответствующим для минора порядка n матрицы P; образованного ее столбцами i1; i2; : : : ; in; является минор того
53
же порядка матрицы Q; образованный строками i1; i2; : : : ; in |
||||||||||||||||||||
этой матрицы. |
|
|
P = h ¡2 |
0 |
¡1 i |
è |
Q = · ¡1 |
0 |
¸; |
|
|
|||||||||
Пусть, например, |
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
1 |
3 |
|
1 |
|
|
|
|
2 ¡1 |
|
òî- |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
||
гда в соответствии с теоремой Бине-Коши имеем: |
¡1 |
0 |
¯=22: |
|||||||||||||||||
jPQj = ¯ |
¡2 |
0 |
¯¢ ¯ |
1 |
¡1 |
¯+¯ |
¡2 |
¡1 |
¯¢ ¯¡1 |
¡0 |
¯+¯ |
0 |
¡1 |
¯¢ ¯ |
||||||
¯ |
1 |
3 |
¯ ¯ |
2 |
1 |
¯ ¯ |
1 |
1 |
¯ ¯ |
2 |
1 |
¯ ¯ |
3 |
1 |
¯ ¯ |
1 |
1 |
¯ |
|
|
Перемножив¯ ¯ ¯матрицы¯ ¯ непосредственно,¯ ¯ ¯ ¯ получим:¯ ¯ |
|
¯ |
|
|
||||||||||||||||
|
1 |
3 |
1 |
|
|
2 |
¡1 |
|
|
6 |
2 |
|
|
|
|
jPQj=22 |
|
|||
PQ= h ¡2 |
0 |
¡1 i¢ · |
¡1 |
0 |
¸= h¡5 |
2 i |
и, значит, |
. |
||||||||||||
|
|
|
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
|||||
Åñëè Q=PT ; то в силу равенства соответствующих миноров матриц-сомножителей имеем:
jPPT j=M2+M2+ : : : +M2 n ;
1 2 Cm
где справа от знака равенства стоит сумма квадратов всех миноров порядка n матрицы P. Это позволяет утверждать,
что определитель квадрата матрицы порядка n£m; ãäå n·m; равен сумме квадратов всех ее миноров порядка n: Следовательно, в том случае, когда любой минор порядка n в матрице
принимает одно из трех значений: 1, 0 или 1, определитель |
||||||||||||||||||||||||||||||
квадрата матрицы оказывается равным числу ненулевых ми- |
||||||||||||||||||||||||||||||
норов. Из этого, в |
свою очередь, следует, что вместо перебора |
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|||||||||||||||||||||||||
миноров матрицы B¡i |
для получения числа остовов графа |
|||||||||||||||||||||||||||||
достаточно подсчитать определитель j |
B |
¡i£ |
B |
¡T ij: |
|
|
|
|
|
|
||||||||||||||||||||
|
|
Например, для графа, изображенного на рис. 3.8, имеем: |
||||||||||||||||||||||||||||
¯ |
|
|
|
|
¯ ¯ |
1 |
¡ ¡ |
1 |
1 |
¡ |
|
¡1 |
0 |
|
|
0 |
¯ |
|
¯¡ ¡ |
1 |
1 |
¯ |
|
|||||||
|
|
|
|
|
0 |
¡1 1 |
|
|
||||||||||||||||||||||
¯ |
B |
1 |
B |
T 1 |
¯ |
=¯ |
¡0 0 0 1 1 |
2 |
1 |
0 |
¡1 |
3¯= |
¯ |
1 |
¡2 |
¡1 |
¯ |
=8 , |
||||||||||||
|
¡ £ |
|
|
¯ |
|
|
|
|
|
|
|
6 |
|
|
|
¡ |
|
7¯ |
|
|
|
|
|
|
||||||
¯ |
|
¡ |
¯ |
¯ |
0 1 1 |
¡0 1 |
4 |
1 |
1 ¡0 |
5¯ |
|
¯ |
|
|
|
|
¯ |
|
||||||||||||
|
|
|
¯· |
¸£ |
¯ |
|
¯¡1 1 |
¡3 ¯ |
|
|||||||||||||||||||||
|
|
|
|
|
|
¯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¯ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¯ |
|
|
|
|
|
|
|
|
|
что совпадает с количеством остовов, найденным ранее.
54
Поскольку определитель jB¡i£BT¡ij равен алгебраическому дополнению элемента ki;i матрицы Кирхгофа, то в силу свойства последней9 решение задачи о числе остовов в оконча- тельном виде может быть сформулировано в виде следующей теоремы, известной как матричная теорема о деревьях, или теорема Кирхгофа.
Теорема 3.2 Число остовных деревьев связного графа порядка n¸2 равно алгебраическому дополнению любого элемента матрицы Кирхгофа.
Воспользуемся теоремой для определения числа остовов полного графа Kn: В этом случае матрица Кирхгофа (порядка n) и алгебраическое дополнение любого ее диагонального
элемента (порядка n¡1) выглядят так:
|
2 |
n 1 |
|
1 |
: : : 1 |
3 |
|
|
¯ |
n 1 1 |
: : : 1 |
¯ |
|
|
|||||
K(Kn)= |
¡¡1 |
n¡¡1 |
:.: : ¡¡1 |
; |
Ai;i= |
|
¡¡1 |
n¡¡1 |
:.: : ¡¡1 |
: |
|
||||||||
|
|
. |
|
. .. . |
|
|
|
¯ |
|
. . .. . |
¯ |
|
|
||||||
|
6 |
|
1 |
|
1 |
: : : n 1 |
7 |
|
|
¯ |
|
|
1 |
|
1 |
: : : n 1 |
¯ |
|
|
|
¡ |
¡ |
|
|
¯ |
|
¡ |
¡ |
¯ |
|
|
||||||||
|
4 |
|
|
¡ |
5 |
|
|
¯ |
|
|
|
¡ |
¯ |
|
|
||||
|
|
|
|
|
|
|
|
|
|
¯ |
|
|
|
|
|
|
¯ |
|
|
Вычтя первую строчку определителя¯ |
из всех нижележа¯ |
- |
|||||||||||||||||
щих и прибавив к первому столбцу остальные n¡2; получим:
|
¯ |
. . .. . |
¯ |
|
¯ . . .. |
. |
¯ |
|
|||||
Ai;i= |
¯ |
n 1 |
1 : : : |
1 |
¯ |
= |
¯ |
1 |
1 : : : |
1 |
¯ |
=nn¡2: |
|
¡¡n |
¡n :.: : |
¡0 |
0 |
¡n :.: : |
¡0 |
||||||||
|
¯ |
¡ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
¯ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
|
¯ |
|
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
|
¯ |
|
n |
0 : : : |
n |
¯ |
|
¯ |
0 |
0 : : : |
n |
¯ |
|
|
¯ |
|
¯ |
|
¯ |
¯ |
|
||||||
Таким образом, число остовов полного графа Kn равно nn¡2; а поскольку остовы полного помеченного графа состав-
ляют все множество помеченных деревьев с n вершинами, то справедлива следующая теорема Кэли.
Теорема 3.3 Число различных помеченных деревьев с n вершинами равно nn¡2:
Этот результат может быть легко получен на основе кода Прюфера. Действительно, поскольку любое дерево, имеющее n вершин, помеченных числами от 1 до n , однозначно
9Равенство алгебраических дополнений элементов матрицы.
55
описывается (n¡2) -разрядным кодом, каждый разряд которого может принимать некоторое, вполне определенное значе- ние из множества f1; 2; : : :; ng; и наоборот, каждому (n¡2) - разрядному коду, составленному на основе чисел из указанного множества, соответствует конкретное дерево, то общее число деревьев должно быть равно nn¡2:
3.4. Задача о кратчайшем остове графа
Пусть G связный неориентированный граф, каждому
ребру которого приписан некоторый вес ci;j > 0 . Требуется среди всех остовов графа найти по крайней мере один с минимальной суммой весов ребер. Хотя в реальной системе, которая описывается графом, вес ребра может соответствовать стоимости, трудоемкости, пропускной способности и т. п., в теории графов чаще используют термин "длина ребра", а сама задача трактуется как задача отыcкания остова с наименьшей суммой длин составляющих его ребер, или кратко, остова наименьшей длины (кратчайшего остова). Это одна из наиболее простых классических оптимизационных задач теории графов, которая считается полностью решенной. В настоящем разделе рассмотрим два наиболее известных алгоритма отыскания кратчайшего остова.
3.4.1. Алгоритм Краскала
Описание алгоритма. В основу алгоритма положена простая и интуитивно ясная идея: строить остов из наиболее "коротких" ребер, не допуская при этом образования циклов.
При выполнении алгоритма формируется последовательность графов G1; G2; : : : ; Gi; : : : ; Gn¡1; ãäå G1 остовный под- граф, содержащий одно (самое короткое) ребро графа; G2 остовный подграф, содержащий два (самых коротких) ребра графа; Gi лес, содержащий i самых коротких ребер, не образующих циклов; Gn¡1 искомый кратчайший остов.
Пусть граф представлен списком ребер, предварительно упорядоченным по возрастанию их весов.
56
Процесс начинается с самого короткого ребра eêð; которое обязательно должно войти в кратчайший остов. Предположив обратное, мы сразу приходим к протворечию. Действительно, пусть T кратчайший остов, не содержащий eêð: ßñíî, ÷òî â
графе T +eêð
ребро, отличное от eêð; получаем остов, более короткий чем T
и содержащий eêð: Следовательно первое ребро списка всегда включается в остов, образуя начальный фрагмент будущего остова под номером 1.
Поскольку в графе нет параллельных ребер, присоединение к остову второго ребра не может привести к появлению цикла. Поэтому второе по длине ребро также должно входить в остов. Оно может либо "примкнуть" к уже существующему фрагменту либо даст начало новому (пока однореберному) фрагменту под номером 2.
Для остальных ребер необходим анализ на предмет вклю- чения или невключения в остов. При этом возможны следующие четыре варианта:
а) концы ребра не принадлежат ни одному фрагменту. Ребро должно быть включено в остов, образуя при этом новый фрагмент, которому следует присвоить очередной номер;
б) только один из концов ребра принадлежит некоторому фрагменту. Ребро включается в остов, присоединясь к этому фрагменту;
в) концы ребра принадлежат разным фрагментам. При включении ребра в остов происходит объединение этих фрагментов. "Новый" фрагмент получает меньший из номеров объединяемых фрагментов;
г) концы ребра принадлежат одному фрагменту. Ребро нельзя включать в остов, так как это приводит к появлению цикла.
Построение остова завершится после присоединения к нему n¡1 ребер. К этому моменту все фрагменты объединятся в
один. Если же этого не происходит, хотя все m ребер графа
просмотрены, а остов содержит менее чем n¡1 ребер, то это значит, что граф несвязный.
57
Рассмотрим пример. Пусть требуется найти кратчайший остов графа G с матрицей весов C; показанных на рис. 3.10.
Элемент ci;j=1; если вершины vi è vj не связаны ребром.
|
|
|
|
|
G |
|
|
|
|
||
|
|
|
|
v1 |
v2 |
|
v3 |
||||
|
|
|
@s |
@s |
|
|
|
s |
|||
|
|
|
|
|
|||||||
|
|
|
|
@@ @@ |
|
|
|||||
v4 |
|
s@ |
vs5 |
|
|
sv6 |
|
sv7 |
|||
|
|
|
|||||||||
|
|
@@ |
|
|
|
|
|
|
|
||
|
vs8 |
|
vs9 |
|
vs10 |
|
|
|
|
||
|
v3 |
2 |
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 |
|||||||||||
|
|
15 |
|
1 |
|
251 |
17 |
1 1 1 |
3 |
|||||
|
v1 |
|
1 34 1 7 |
2 |
38 1 1 1 1 |
|
||||||||
|
v2 |
6 |
34 |
|
5 |
|
30 |
|
22 |
|
|
|
7 |
|
|
v4 |
17 |
1 11 11 13 |
1 1 131 231 11 |
||||||||||
C= |
v5 |
6 |
2 |
30 |
1 |
3 |
1 |
20 |
1 |
10 |
1 1 |
7 |
||
|
7 |
6 |
|
|
|
|
|
7 |
||||||
|
|
6 |
38 |
|
25 |
|
20 |
|
|
|
14 14 |
7 |
||
|
v6 |
6 |
221 |
1 |
1 1 1 |
7 |
||||||||
|
v |
|
6 |
1 |
17 |
|
|
35 |
7 |
|||||
|
v8 |
6 |
1 1 |
|
|
1 1 |
1 |
231 |
1 |
7 |
||||
|
6 |
1 |
1 1 |
131 101 1 1 1 |
|
7 |
||||||||
|
v10 |
6 |
1 |
|
1 |
|
1 |
|
1 |
|
7 |
|||
|
6 |
1 |
1 1 |
1 1 |
14 35 |
1 |
8 |
1 |
7 |
|||||
|
v9 |
4 |
14 |
|
|
5 |
||||||||
|
6 |
|
|
|
23 |
|
|
23 |
|
8 |
7 |
|||
Ðèñ. 3.10
Создаем упорядоченный список ребер в виде табл. 3.3, где столбцы e , a , b , lab содержат соответственно номера, метки концов и длины ребер. Два последних столбца заполняются в процессе построения кратчайшего остова. В столбце Ti îòðà- жается процесс создания, изменения и объединения фрагментов остова, а в столбце V Ti фиксируются множества вершин, принадлежащих различным фрагментам остова.
В соответствии с алгоритмом формируем первый фрагмент T1 из ребра e1=fv1; v5g (см. столбец Ti ). Множество вер- шин, относящихся к T1; фиксируем в первой строке столбца V Ti . Ребро e2=fv4; v5g имеет общий элемент с множеством V T1: Поэтому присоединим его к фрагменту T1; корректируя множество V T1; которое теперь содержит v1; v4; v5: Концы третьего ребра не принадлежат множеству V T1 , поэтому создаем второй фрагмент T2 на основе третьего ребра. Для него V T2 = fv2; v3g: Четвертое ребро пропускаем, так как обе его вершины являются элементами V T1; а пятое ребро дает начало третьему фрагменту, и т. д. Процесс построения остова завершается на пятнадцатом ребре, которое объединяет два оставшиеся фрагмента. На рис. 3.11 представлены шесть из пятнадцати этапов построения остова. Число в верхнем левом углу каждой "картинки" соответствует табличному номеру анализируемого ребра (номеру итерации).
58
|
|
|
|
|
|
Таблица 3.3 |
|
e |
a |
b |
lab |
Ti |
|
V Ti |
|
1 |
v1 |
v5 |
2 |
T1 := fv1; v5g |
|
fv1; v5g |
|
2 |
v4 |
v5 |
3 |
T1 := T1 + fv4; v5g |
|
fv1; v4; v5g |
|
3 |
v2 |
v3 |
5 |
T2 := fv2; v3g |
|
fv2; v3g |
|
4 |
v1 |
v4 |
7 |
|
|
|
|
5 |
v9 |
v10 |
8 |
T3 := fv9; v10g |
|
fv9; v10g |
|
6 |
v5 |
v8 |
10 |
T1 := T1 + fv5; v8g |
fv1; v4; v5; v8g |
|
|
7 |
v4 |
v8 |
13 |
|
|
|
|
8 |
v6 |
v10 |
14 |
T3 := T3 + fv6; v10g |
|
fv6; v9; v10g |
|
9 |
v6 |
v9 |
14 |
|
|
|
|
10 |
v3 |
v7 |
17 |
T2 := T2 + fv3; v7g |
|
fv2; v3; v7g |
|
11 |
v5 |
v6 |
20 |
T1 := T1 + T3; Tn3 |
fv1; v4; v5; v6;8 ; v9; v10g |
||
12 |
v2 |
v7 |
22 |
|
|
|
|
13 |
v8 |
v9 |
23 |
|
|
|
|
14 |
v4 |
v9 |
23 |
|
|
|
|
15 |
v6 |
v3 |
25 |
T1 := T1 + T2; T2 |
fv1; v2; v3; v4; v5; |
||
|
|
|
|
n |
v6 |
; v7; v8; v9; v10 |
g |
|
|
|
|
|
|
|
|
: : : |
: : : |
: : : |
: : : |
: : : |
|
: : : |
|
|
|
|
|
|
v1 |
|
v2 |
|
v3 |
|
|
|
|
|
|
v1 |
|
|
v2 |
|
v3 |
|
|
|
|
|
|
v1 |
|
|
v2 |
|
v3 |
||||
3 |
|
|
T |
|
r |
|
r T2 |
|
r |
6 |
|
|
T |
|
r |
|
|
r T2 |
|
r |
8 |
|
|
T |
|
r |
|
|
r T2 |
|
r |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
À1 |
|
|
|
|
|
|
|
|
À1 |
|
|
|
|
|
|
|
|
|
|
À1 |
|
|
|
|
|
|
|
|
||||||||
v4 |
r |
|
|
|
vr5 |
|
rv6 rv7 |
v4 |
r |
|
|
|
|
vr5T |
3 |
|
rv6 rv7 |
v4 |
r |
|
|
|
|
vr5T |
3 |
|
rv6 rv7 |
||||||||||
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
vr8 |
|
|
vr9 |
|
vr10 |
|
|
|
vr8 |
|
|
vr9 |
|
vr10 |
|
|
|
vr8 |
|
|
vr9 |
|
vr10 |
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
10 |
|
|
|
|
v1 |
|
v2 |
|
v3 |
11 |
|
|
|
|
|
v1 |
|
|
v2 |
|
v3 |
15 |
|
|
|
|
|
v1 |
|
|
v2 |
|
v3 |
||||
|
À |
|
|
|
r |
|
À |
|
|
|
|
|
r |
|
À |
|
|
|
r |
||||||||||||||||||
|
|
T2 |
|
|
|
|
|
T2 |
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
T1 |
r |
|
r |
|
|
|
|
T1 r |
|
|
r |
|
|
|
|
T1 r |
|
|
r |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v4 |
r |
|
vr5T |
|
rv6 rv7 |
v4 |
r |
|
|
|
vr5 |
|
|
|
rv6 rv7 |
v4 |
r |
|
|
|
vr5 |
|
|
rv6 |
|
rv7 |
|||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
vr8 |
vr9 |
3 |
vr10 |
|
|
|
vr8 |
|
|
vr9 |
|
|
|
vr10 |
|
|
|
vr8 |
|
|
vr9 |
|
|
vr10 |
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||
Ðèñ. 3.11
59
Обоснование алгоритма. Пусть TK остовное дере- во, полученное с помощью алгоритма Краскала, а TS êðàò- чайший остов. Составим упорядоченный список ребер графа, отобразив вхождение или невхождение ребра в TK è TS çíà- êîì + èëè ¡ , как показано на рис. 3.12. Предположим, что
у ребер с e1 ïî ei¡1 включительно знаки для TK è TS èäåí-
TK |
|
+ |
|
+ |
|
+ |
|
¡ |
|
+ |
|
: : : |
|
+ |
|
: : : |
|
¡ |
|
: : : |
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
e1 |
|
e2 |
|
e3 |
|
e4 |
|
e5 |
|
: : : |
|
ei |
|
: : : |
|
ek |
|
: : : |
TS |
|
+ |
|
+ |
|
+ |
|
¡ |
|
+ |
|
: : : |
|
¡ |
|
: : : |
|
+ |
|
: : : |
|
|
|
|
|
|
|
|
|
|
Ðèñ. 3.12
тичны, а первое несовпадение имеет место для ei: Характер несовпадения может быть §ei èëè ¨ei: Верхний знак соответствует вхождению (или невхождению) ребра ei â TK; а нижний в TS: Допустим, что сочетание знаков имеет вид ¨ei: Это значит, что ребро ei входит в TS и не входит в TK: Поскольку в соответствии с алгоритмом Краскала оче- редное ребро пропускается, если оно образует цикл с предшествующими ребрами, среди ребер TS его также быть не может. Таким образом, единственно возможным сочетанием знаков (при первом несовпадении) может быть §ei; т. е. ребро ei присутствует в TK и отсутствует в TS: Пусть концами этого ребра являются вершины a è b: Поскольку TS ÿâëÿ- ется деревом, в нем должна существовать единственная цепь, соединяющая a è b: Среди звеньев этой цепи имеется, по
крайней мере, одно ребро, не входящее в TK (в противном случае в TK есть цикл, что невозможно). Обозначим это ребро ek: В последовательности упорядоченных ребер ek может находиться только "справа" от ei; а это значит, что длина ei не больше, чем длина ek: Перестроим TS; удалив из него ek и включив ei: В силу порядка следования ребер эта перестройка не может удлинить остов, а более короткий чем TS остов получить невозможно. Это значит, что ei è ek имеют одинаковую длину. В результате перестройки вместо TS ïî- лучен остов TS0 ; также являющийся кратчайшим, в котором
60
