Главная  Полное построение алгоритма 

[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [ 13 ] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117]

Доказательство этой теоремы очень простое и оставляется читателю в качестве упражнения. Теорема 2.2.2 дает определение моста, которое используется в доказательстве теоремы 2.2.3.

Теорема 2.2.3. Ребро е сети G является мостом тогда и только тогда, когда е не принадлезшт ни одному циклу G

Q: V

Рис. 2.2.6. Маршрут: uvxwywzvwvu; путь: uvxwz; цикл: vxwzv.

Доказательство. Пусть G- компонента G, содержащая ребро е={и, v). Предположим, что е не принадлежит циклу в G и не является мостом. Тогда, так как сеть G-е связная, должен существовать путь Р из и в VB G-е. Но, е я Р вместе образуют цикл в G, содержащий е, что противоречит предположению.

Наоборот, пусть е={и, Ь) - мост, лежащий на цикле С в G. Пусть Vl и V2 - две произвольные различные вершины в G. Если е не лежит на пути Pi из в Ua. то Pi язлястся тзкже путем из Vl в Vi в G-е. Если е лежит на пути Ра из Vi в v., то маршрут из v в Vz может быть построен в G-е заменой е на оставшуюся часть цикла С. Так как каждый маршрут из Vi в Vz содержит путь из Vi в Vz, то в G-е существует путь из Vl в Vi. Так как Vi и произвольные, е не может быть мостом.

Представление сетей

Сеть С=(1/, Е) может быть полностью определена простым пере-численим множеств V и Е. Однако в большинстве случаев этот метод представления сети не позволяет быстро ответить на вопрос, обладает или не обладает сеть различными свойствами.



Можно также представить сеть в виде (в известном смысле произвольной) картинки. Хотя визуальное представление иногда полезно при выявлении свойств заданной сети, оно не применимо для больших сетей и мало пригодно при работе с вычислительной машиной.

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


12 3 4 5

A(G):

Рис. 2.2.7. ПредстзБлеиие в форме матрицы смежности.

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

Матрица смежности. Любая сеть G={V, Е) с М вершинами может быть представлена матрицей размера МхМ при условии, что вершинам G приписаны некоторые (произвольные) метки. Если вершины G помечены метками Vi, V2, . . ., Од., то матрица смежности А (G) определяется следующим образом:

А iG)=[au],

где aij=\, если Vi смежна с Vj); aij-O в противном случае.

На рис. 2.2.7 приведена сеть и ее матрица смежности. Заметим, что для неориентированной сети G А (G) всегда будет симметричной матрицей (О, 1) с нулями на диагонали. Заметим также, что степень вершины Vi равна числу единиц либо в i-й строке, либо в t-м столбце Л(G).

Матрица инцидентности. Второй метод представления сети использует матрицу инцидентности /(G). Если вершины G помечены (произвольно) метками Vi, v, . . uj, а ребра ~ метками

!) Если С - взвешенная сеть, то элемент an равен весу ребра между вершинами t и /.



матрица инцидентности MXN определяется следующим образом;

где Ьц=\, если vt инцидентна ер, Ьц=0 в противном случае.

На рис. 2.2.8 приведена матрица инцидентности /(G) сети G с рис. 2.2.7.

Заметим, что каждый столбец в / (G) содержит ровно две единицы и что никакие два столбца не идентичны. Заметим также, что число

с: 2


KG):

а Ь с d е. f g 1 1 0 0 0 1

Рис. 2.2.8. Представление в форме матрицы инцидентности;

единиц в i-й строке равно степени для Vi в G. Матрица инцидентности полезна для решения различных сетевых задач, касающихся циклов. С другой стороны, матрица инцидентности требует больше памяти {MXN, т. е. порядка слов) и использует ее менее эффективно, поскольку {M-2)xN слов заполнены нулями.

Векторы смежности. Вместо представления сети матрицами (О, 1) можно воспользоваться матрицей, в которой элементы соответствуют непосредственно меткам Vi, v, .... м, приписанным вершинам G. В такой матрице i-я строка содержит вектор, компонентами которого являются все вершины, смежные с Vj. Порядок элементов в таком векторе, называемом вектором смежности, обычно определяется порядком, в котором представлены ребра в G (например, порядок ввода в программу). На рис. 2.2.9 мы приводим сеть G, список ребер G в случайном порядке и представление G в форме векторов смежности. Размер матрицы, содержащей векторы смежности, никогда не превышает MXD, где D - максимальная степень вершины из G.

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

Ниже приведена небольшая программа на Фортране, которую можно использовать (с незначительными модификациями в операторе READ) для представления в форме векторов смежности сети с рис. 2.2.9, а, причем порядок ребер указан на рис. 2.2.9, б.



[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [ 13 ] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] [99] [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117]

0.0014