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

Системотехника

.pdf
Скачиваний:
63
Добавлен:
06.02.2016
Размер:
775.3 Кб
Скачать

эквивалентного преобразования вершинного графа в реберный. Основанием такого преобразования служит теорема об условиях эквивалентности матриц смежности вершинного и реберного графов1.

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

1-й этап. Построение квазиканонической матрицы смежности реберного графа

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

n

Пусть R[n] = rij n – матрица смежности вершин ориентированного

вершинного графа без кратных дуг. Введем обозначение

 

 

 

 

 

 

(0)

 

 

 

 

 

 

 

R[n] = R[n] .

 

 

1-я итерация.

 

 

 

 

 

 

 

 

 

 

 

(0)

 

 

(1)

 

1-й шаг. По матрице

R[n]

строят матрицу

S[n] , элементы которой

определяются по формуле

 

 

 

 

s(1)

= r(0)

n

r(0) +

n

r(0) , i = 1(1)n, j = 1(1)n.

(2.2.1)

ij

ij

kj

 

ik

 

 

 

 

k =1

 

k =1

 

 

 

 

 

 

 

(1)

 

 

(1)

 

2-й шаг. По матрице

S[n]

строят матрицу

C[n] , элементы которой

вычисляются по формуле

1 Нечипоренко В. И. Структурный анализ систем (эффективность и надежность). М.: Сов. радио, 1977. 216 с.

81

 

1

 

(

0

 

 

1

 

 

1

 

 

1

 

 

 

 

1

 

 

 

( )

 

 

)

 

( )

 

 

( )

 

( )

 

 

 

( )

 

c

 

= r

 

 

 

 

min s

 

s

 

 

min s

 

 

,

 

 

 

 

s

 

 

+

 

 

 

 

ij

ij

 

 

 

 

 

ik

 

ij

 

 

 

 

kj

 

 

 

 

ij

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1(1)n

 

 

 

 

 

k

1(1)n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s(1)

 

 

 

 

 

 

s(1)

 

 

 

 

 

 

 

 

 

 

 

> 0

 

 

 

 

 

 

> 0

 

 

 

 

 

 

 

 

 

ik

 

 

 

 

 

 

 

kj

 

 

 

 

 

 

 

 

 

 

 

i = 1(1)n ,

j = 1(1)n.

 

 

 

 

(2.2.2)

 

 

 

 

 

 

 

 

(1)

 

 

 

( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

Если все элементы cij

матрицы C[n]

 

равны нулю, то матрица R[n]

является квазиканонической матрицей смежности. Поэтому принимают Rq = R[n], и на этом выполнение первого этапа заканчивают. Если

(1)

хотя бы один элемент матрицы C[n] не равен нулю, то переходят к следующему шагу. Из выражения (2.2.2) следует, что для любого элемен-

 

(1)

 

(1)

та

cij

матрицы

C[n] , не равного нулю, соответствующий элемент rij

матрицы R[n] также не равен нулю.

(1)

3-й шаг. Определяют число элементов матрицы C[n] , не равных нулю.

(0)

Пусть оно равно l1. Расширяют матрицу R[n] путем добавления к ней справа и снизу по l1 столбцов и строк соответственно. Элементы rij(1)

(1)

расширяемой матрицы R[n+l1] вычисляют следующим образом.

Каждый элемент r(1) , i

 

1(1)n ,

j

 

1(1)n

матрицы

1

 

, для

 

 

R( )

]

ij

 

 

 

 

 

 

 

[n+l1

 

 

 

 

 

 

 

 

(1)

 

 

 

 

( )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

которого существует не равный нулю элемент cij

матрицы C[n] , прирав-

нивают нулю, а соответствующие элементы

r(1) и r(1)

, k

 

n+

1(1)n+

l

 

 

 

 

 

 

ik

kj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

(0)

 

 

 

 

 

 

 

столбца и строки из числа дополненных к матрице

R[n]

приравнивают

единице. При этом для каждого приравненного нулю элемента r(1)

вы-

 

 

 

 

 

 

 

 

 

 

ij

 

 

 

 

бирают разные k, а следовательно, и разные столбцы и строки из числа

82

дополнительных. Так как число не равных нулю элементов cij(1) матрицы

C[(1n)] совпадает с числом дополнительных строк и столбцов матрицы

(1)

R[n+l1] , то в результате в каждом дополнительном столбце и в каж-

дой дополнительной строке оказывается ровно по одному единичному элементу.

Все остальные элементы дополнительных строк и столбцов приравниваем к нулю.

Все оставшиеся после выполнения указанных выше операций эле-

 

(1)

 

(1)

 

 

менты

rij

матрицы R[n+l1] принимают равными соответствующим эле-

 

(0)

 

(0)

 

ментам rij

 

матрицы R[n] .

 

2-я итерация.

 

 

 

 

 

(1)

 

 

Для матрицы R[n+l ]

способом, описанным выше, строят матрицы

(2)

(2)

1

(2)

(2)

 

S[n+l1]

, C[n+l1] , и в случае, если не все элементы cij

матрицы C[n+l1]

 

 

 

 

(2)

 

равны нулю, – матрицу

R[n+l1+l2 ] , где l2 – число элементов матрицы

(2)

 

 

 

 

 

C[n+l1] , не равных нулю.

(2)

Если все элементы матрицы C[n+l1] равны нулю, то выбирают мат-

рицу R[(1n)+l1] в качестве квазиканонической матрицы смежности и, обо-

значив ее Rq, на этом выполнение первого этапа заканчивают. В противном случае переходят к следующей итерации.

Последовательность операций m-й итерации (m = 1, 2, 3...) этапа построения квазиканонической матрицы смежности в общем виде можно представить следующим образом.

Обозначим

Lm = m li , i=0

где l0 = 0 по определению.

83

m-я итерация.

(m1)

3(m – 1) + 1-й шаг. По матрице R[n+Lm1] строят матрицу

(m)

S[n+Lm1] , элементы которой вычисляются по формуле

s

(m)

= r

(m1) n+Lm1

r

(m1)

+

n+Lm1

(m1)

 

 

 

 

r

 

,

ij

ij

kj

 

ij

 

 

 

 

 

 

k =1

 

 

 

 

k =1

 

 

 

 

 

 

i = 1(1)n + Lm1,

 

 

 

 

 

 

 

 

 

j = 1(1)n + Lm1.

 

 

 

 

(2.2.3)

(m)

3(m – 1) + 2-й шаг. По матрице S[n+Lm1] строят матрицу

(m)

C[n+Lm1] , элементы которой вычисляются по формуле

 

 

 

 

 

 

(m)

 

 

(m)

 

s

(m)

− min s

(m)

 

 

 

 

 

 

 

 

 

 

kj

 

 

(m)

 

 

sij

− min sik

 

ij

 

 

 

 

c

= r

(m1)

 

k

1(1+)n L

 

 

k

1+(1)n L

 

 

 

 

 

 

 

 

 

+

 

 

 

 

 

 

 

,

ij

ij

 

 

 

 

m1

 

 

 

 

 

 

m1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(m)

 

 

 

(m)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sik

 

> 0

 

 

skj

 

> 0

 

 

 

 

 

 

 

 

 

 

 

 

 

i = 1(1)n + Lm1 , j = 1(1)n + Lm1 .

(2.2.4)

 

3(m – 1) + 3-й шаг. Если все элементы cijm

матрицы C(m)

]

 

[n+Lm1

равны нулю, то выполнение первого этапа заканчивают. Получен-

(m1)

ной на предыдущей m – 1-й итерации матрице R[n+Lm1] присваивают обозначение

R = R(m1)

q [n+Lm1],

так как она является искомой квазиканонической матрицей смежности.

Если не все элементы матрицы

(m)

]

равны нулю, то опреде-

C[n+L

 

m1

 

 

 

ляют число lm таких элементов и строят матрицу R(m)

способом,

 

 

 

[n+Lm ]

 

84

рассмотренным на третьем шаге первой итерации. Затем переходят к следующей m + 1-й итерации.

Рассматриваемый процесс построения матрицы Rq является итерационным и продолжается до тех пор, пока все элементы матрицы

(m)

C[n+Ln1] не станут равными нулю на некоторой m-й итерации. Число

итераций данного процесса конечно. Размерность получаемой матрицы Rq, равная n + Lq, где Lq – число добавленных столбцов (строк), может быть оценена неравенством

n + Lq ≤ n2 + n – 1.

Основная идея доказательства сходимости процесса заключается в следующем.

 

(1)

 

(1)

 

Пусть число не равных нулю элементов

cij

матрицы

C[n]

равно L.

Тогда справедливо неравенство

 

 

 

 

L n21,

 

 

 

 

так как число элементов матрицы C[(1n)] равно n2, а среди элементов

(1)

матрицы S[n] есть хотя бы один не равный нулю наименьший элемент.

(1)

 

 

 

 

 

 

Следовательно, в матрице C[n] будет хотя бы один нулевой элемент,

 

 

 

 

(1)

 

 

соответствующий этому наименьшему элементу матрицы

S[n] .

(m)

 

 

(m)

 

 

 

 

Для каждого из вновь введенных в матрицу R[n+Lm ]

элементов rik

,

r(m), m =1, 2, 3 ..., соответствующие

элементы c(m+1)

и c(m+1)

матри-

kj

ik

 

 

kj

 

 

(m+1)

(m+1)

 

(m+1)

 

 

цы C[n+Lm ] всегда равны нулю, так как элементы sik

 

, skj

матри-

(m+1)

цы S[n+Lm ] равны наименьшему положительному числу в i-й строке и

(m+1)

k-м столбце, либо в k-й строке и j-м столбце матрицы S[n+Lm ] , что

(m)

обусловлено соответствующим построением матрицы R[n+Lm ] (хотя бы

85

(m)

один столбец или одна строка матрицы R[n+Lm ] , используемые для

 

 

(m+1)

(m+1)

 

 

(m+1)

вычисления элементов

cik

 

, ckj

 

матрицы

C[n+Lm ] , соответству-

ющих вновь введенным элементам

r(m), r(m)

, содержат только одну

 

 

 

 

 

 

ik

kj

 

единицу).

 

 

 

 

 

 

 

 

 

 

(m)

 

 

 

 

(m)

 

Поскольку элемент

rij

в матрице

R[n+Lm ] , для которого введены

элементы r(m)

, r(m) , на m-й итерации становится равным нулю и оста-

ik

kj

 

 

 

 

 

 

 

ется таковым на всех последующих итерациях, то соответствующий

 

(m+1)

 

(m+1)

 

элемент

cij

матрицы

C[n+Lm ]

также оказывается равным нулю и

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

 

(m+1)

 

(m+1)

на каждой итерации хотя бы один элемент

cij

матрицы

C[n+Lm ] ,

для которого соответствующий элемент rij матрицы смежности R[n] не равен нулю, становится равным нулю. При этом количество ненуле-

(m)

]

за счет введения в матрицу смеж-

вых элементов в матрице C[n+L

m1

 

 

ности R[n] дополнительных элементов в процессе выполнения итераций не увеличивается.

Число элементов rij 0 в матрице R[n] конечно и равно L, а за каж-

(m)

дую итерацию размерность матрицы R[n+Lm ] увеличивается на конеч-

ное число, равное числу элементов r

(m1)

0 в матрице R(m1)

]

, для

ij

 

[n+Lm1

 

 

(m)

 

(m)

 

 

которых соответствующие элементы

cij

матрицы

C[n+Lm1] не равны

нулю, поэтому, во-первых, число итераций в процессе построения матрицы Rq будет конечным, и, во-вторых, число добавленных столбцов, а следовательно, и строк в матрице удовлетворяет неравенству

Lq ≤ L.

86

Это означает, что

n + Lq n2+ n1.

Таким образом, в результате выполнения первого этапа получают квазиканоническую матрицу смежности Rq размерности n + Lq.

2-й этап. Нумерация вершин реберного графа

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

1-й шаг. Просматривают матрицу Rq либо R[n]. Если в матрице имеется более одного пустого столбца, то к матрице Rq добавляют слева один столбец, а сверху – одну строку. В новую строку на местах, соответствующих пустым столбцам матрицы Rq, проставляют единицы.

Добавленным столбцу и строке присваивают одинаковый номер. При ручном счете этот номер может быть очередным. При реализации методики на ЭВМ столбцы и строки следует перенумеровать в соответствии с их расположением в матрице, сохраняя возможность последующего восстановления исходной нумерации.

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

2-й шаг. Если в матрице Rq либо R[n] имеется более одной пустой строки, то к матрице Rq добавляют справа один столбец, а снизу – одну строку. В добавленный столбец на местах, соответствующих пустым строкам матрицы Rq, проставляют единицы. Добавленным столбцу и строке присваивают одинаковый очередной номер.

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

3-й шаг. Справа от матрицы Rq строят таблицу дуг реберного графа. Таблица имеет три столбца Nв, Nнач, Nкон и число строк, соответствующее числу строк матрицы Rq. В столбец Nв проставляются номера строк матрицы Rq. Столбцы Nнач и Nкон заполняются в процессе выполнения дальнейших шагов второго этапа.

4-й шаг. Пустому столбцу матрицы Rq присваивают некоторый номер (индекс). Этот номер присваивают соответствующей строке матрицы Rq, т. е. строке, номер которой соответствовал номеру столбца до присваивания ему индекса. Присвоенный индекс проставляется также в столбце Nнач таблицы дуг реберного графа в соответствующей строке.

87

Если в матрице Rq нет пустых столбцов, то первоначальный номер (индекс) может быть присвоен любому столбцу матрицы Rq. Столбец, которому присвоен индекс, будем называть отмеченным.

5-й шаг. Просматривают отмеченный столбец матрицы Rq сверху вниз. Встретив элемент столбца, не равный нулю, вычеркивают все не равные нулю элементы строки, на пересечении с которой находится встреченный элемент, в том числе и сам элемент. Просматривают столбцы, в которых находились вычеркнутые элементы. Если эти столбцы оказались пустыми (не осталось ни одного не равного нулю элемента), то этому столбцу и соответствующей ему строке присваивают тот же индекс (номер), что и отмеченному столбцу. Этот индекс проставляется на соответствующих местах в столбце Nнач таблицы дуг реберного графа. Данный шаг выполняют до тех пор, пока отмеченный столбец не станет пустым.

6-й шаг. Присваивают очередной номер (индекс) следующему неотмеченному столбцу и соответствующей строке, заносят этот номер (индекс) в соответствующее место столбца Nнач таблицы дуг реберного графа и для рассматриваемого столбца матрицы Rq выполняют операции пятого шага.

Пятый и шестой шаги повторяют до тех пор, пока в матрице не останется ни одного не вычеркнутого элемента.

7-й шаг. Заполняют столбец Nкон таблицы дуг реберного графа. Это можно выполнить следующим образом. Просматривают последовательно все столбцы матрицы Rq. Для тех строк, для которых в просматриваемом столбце имеются ненулевые элементы, проставляют в столбце Nкон таблицы новый, присвоенный в процессе выполнения четвертого, пятого, шестого шагов, номер (индекс) просматриваемого столбца.

После выполнения седьмого шага таблица дуг реберного графа оказывается заполненной полностью. При этом в столбце Nнач указаны номера (индексы) начальных вершин, из которых исходят дуги реберного графа, в столбце Nкон – номера (индексы) конечных вершин, в которые заходят дуги реберного графа, а в столбце Nв – номера вершин исходного графа, эквивалентные соответствующим дугам реберного графа. Если для какого-либо номера из столбца Nв таблицы в исходном графе нет соответствующей вершины, то дуги реберного графа, сопоставляемые данному номеру, считаются фиктивными.

88

3-й этап. Построение диаграмм реберного графа

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

Рассмотрим применение изложенной методики на примерах.

Пример 2.2.1

Пусть диаграмма исходного вершинного графа имеет вид, представленный на рис. 2.2.2. Требуется построить эквивалентный ему реберный граф.

Решение. Матрица смежности R[5] исходного графа имеет вид

3

1

4

2

5

Рис. 2.2.2.Диаграмма вершинного графа в примере 2.2.1

 

 

 

 

 

 

 

1

2

3

4

5

 

 

 

1

0

0

1

1

1

 

 

 

 

2

 

0

1

1

1

 

 

 

0

 

R[5] =

 

rij

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 0 0 0 0 0

 

 

 

 

 

 

 

5

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

4

0

0

0

0

0

 

 

 

 

5

 

0

0

0

0

 

 

 

 

0

 

Здесь и в дальнейшем пустые клетки матрицы соответствуют нулевым элементам.

89

При ручном счете предварительно для каждой строки вычислим

5

rij , а для каждого столбца 5

rij . Вычисленные значения справа

j=1

i=1

 

и внизу матрицы смежности можно записать против соответствующих строк и столбцов.

1-й этап. Построение квазиканонической матрицы смежности

1-й шаг. По матрице R[5] строим матрицу S[5], элементы которой определяются по формуле

s(1)

= r

5

r +

5

 

, i = 1(1)5, j = 1(1)5.

 

r

 

ij

ij

ij

ij

 

 

 

i=1

 

j=1

 

 

Ненулевые элементы данной матрицы практически могут быть определены путем суммирования для ненулевых элементов матрицы R[5]

содержимого соответствующей строки столбца

5

rij

и содержимого

j=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соответствующего столбца строки

5

rij .

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

0

0

5

5

5

 

 

 

 

 

 

 

 

 

 

0

5

5

5

 

 

 

 

 

 

5

 

0

 

 

 

S[5] =

sij

 

 

=

 

 

 

 

 

 

 

 

 

 

 

0 0 0 0 0 .

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

0

0

0

 

 

 

 

 

 

 

 

 

 

0

0

0

0

 

 

 

 

 

 

 

 

 

0

 

 

 

При ручном счете для каждой строки матрицы S[5] справа записываем наименьший не равный нулю элемент строки либо нуль, если все элементы строки равны нулю. Для каждого столбца снизу записываем наименьший не равный нулю элемент столбца либо нуль, если все элементы столбца равны нулю.

2-й шаг. По матрице S[5] строим матрицу C[5], элементы которой вычисляются по формуле

90