Главная Бухгалтерия в кармане Учет расходов Экономия на кадровиках Налог на прибыль Как увеличить активы Основные средства
Главная ->  Гамильтоновы циклы 

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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141

1) в дальнейшем такое множество цепей будем называть цепным паросо четанием (на множестве Х~ или для множества Х~).- Прим. ред.

когда веса ребер произвольны, сформулировали и решили как задачу о паросочетании (с частной задачей о кратчайшей цепи) Эдмондс [9], Эдмондс и Джонсон [10], Басакер и Саати [7] и Кри-стофидес [8].

Рассмотрим неориентированный граф G = {X, А). Среди вершин из X некоторые вершины (скажем из множества X*) будут иметь четные степени, а остальные (из множества Х~ = X - X*) - нечетные степени. Далее сумма степеней di всех вершин х,- 6 X равна удвоенному числу ребер в А (так как каждое ребро добавляет по единице к степеням двух его концевых вершин) и поэтому равна четному числу 2т. Следовательно,

di+ S di = 2m,

и так как сумма 2 четна, то сумма 2 di также четна. Но

все di в последней сумме нечетны, значит число Х~ \ вершин нечетной степени четно.

Пусть М - множество таких цепей (скажем р^) в G между концевыми вершинами Xi и xj {xi, xj 6 Х~), что никакие две цепи не имеют одинаковых конечных вершин, т. е. цепи соединяют различные пары вершин из Х~ и покрывают все вершины ) множе-

ства Х~. Число цепей \iij ъ М равно у Х~ , а как было показано выше, I Х~ I всегда четно, следовательно, это число всегда целое, если, конечно, оно определено. Предположим теперь, что все ребра, образующие цепь pj, добавлены к G в качестве искусственной параллельной цепи, причем эти ребра остаются в графе G. Это означает, прежде всего, что все ребра из G, образующие цепь pjj, теперь удвоены. Так поступаем с каждой цепью 6 М, и полученный s-граф обозначим через G~ (М). Так как некоторые ребра из G могут входить более чем в одну цепь р^, то некоторые ребра из G~ (М) могут быть (после того как добавлены все новые цепи \iij) утроены, учетверены и т. д.

Теперь мы можем доказать следующую теорему.

Теорема 5. Для любого цикла, проходящего по G, можно выбрать множество М, для которого граф G~ {М) имеет эйлеров цикл, соответствующий первоначально взятому циклу в графе G. Это соответствие таково, что если цикл проходит по ребру [х xj) из G I раз, то в G~ (М) существует I ребер {одно реальное и I - 1 искусственных) между Xi и xj, каждое из которых проходится ровно один раз эйлеровым циклом иа G~ {М). Справедливо и обратное утверждение.



Доказательство. Если цикл проходит по графу G, то по крайней мере одно ребро, инцидентное каждой вершине Xi нечетной степени, должно проходиться дважды. (Ребро, проходимое дважды, можно рассматривать как два параллельных ребра - одно реальное и одно искусственное - и каждое из них проходится один раз.) Пусть это ребро (х^, х^). В случае нечетности степени d, вершины Хи графа G добавление искусственного ребра прежде всего сделает d четным, и значит только ребро (х;, х^) нужно будет проходить дважды, если ограничиться рассмотрением лишь вершин Xi и х^. В случае когда d четно, добавление искусственного ребра сделает d нечетным, а второе ребро выходящее из х^, должно быть пройдено дважды (т. е. добавляется еще одно искусственное ребро). Такая ситуация сохраняется до тех пор, пока не встретится вершина нечетной степени, о чем говорилось выше. Следовательно, чтобы удовлетворить условию возвращения в вершину Xi, нужно дважды пройти всю цепь из Х; в некоторую другую вершину нечетной степени х,., принадлежащую множеству Х~. Это автоматически приводит к выполнению условия прохождения вершины Хг. Аналогично обстоит дело для всех других вершин Xi из Х~. Это значит, что все множество М цепей из G, определенное выше, должно проходиться дважды, и так как отсюда вытекает, что каждое ребро из G~ {М) должно проходиться один раз, то теорема доказана.

Алгоритм решения задачи китайского почтальона немедленно следует из доказанной теоремы, так как все, что для этого необходимо, состоит в нахождении множества цепей М* (цепного паросочетания для множества вершин нечетной степени), дающего наименьший дополнительный вес. Цикл наименьшего веса, проходящий по G, будет иметь вес, равный сумме весов всех ребер из G плюс сумма весов ребер в цепях из М*. Это то же самое, что и сумма весов всех ребер - реальных и искусственных - графа G~ (М*). Дадим теперь описание алгоритма.

5.2.1. Описание алгоритма. Шаг 1. Пусть [сц] - матрица весов ребер графа G. Используя алгоритм кратчайшей цепи (см. гл. 8), образуем Z~ X \ Х' -матрицу D = [dij], где dij - вес цепи наименьшего веса, идущей из некоторой вершины Х; 6 Х~ в другую вершину х, 6 Х~.

Шаг 2. Найдем то цепное паросочетание М* для множества Х~, которое дает наименьший вес (в соответствии с матрицей весов D). Это можно сделать эффективно с помощью алгоритма минимального паросочетания из гл. 12.

Шаг 3. Если вершина Ха, сочетается с другой вершиной xg, то определим цепь i,ag наименьшего веса (из Ха, в Xg), соответствующую весу dag, делая шаг 1. Добавим искусственные ребра в



соответствующие ребрам из pag, и проделаем это для всех других цепей из множества М*, в результате чего получится s-граф G- (М*).

Шаг 4. Сумма весов всех ребер графа G~ (М*), найденная с использованием матрицы [сц] (вес искусственного ребра берется равным весу параллельного ему реального ребра), равна минимальному весу цикла, проходящего по G. При этом число прохождений цикла по ребру (х;, xj) равно общему числу параллельных ребер между Х; и xj в G~ (М*).

Следует заметить, что поскольку на шаге 2 мы используем минимальное паросочетание, никакие две кратчайшие цепи и при таком паросочетании (скажем, идущие из х, в Xj и из Хр

Ч


Рис. 9.11. Цепи Hfj- и Hpq, имеющие общее ребро (а, Ь).

в Xg) не могут иметь общего ребра. Если бы они имели общее ребро (ха, Xf,), как показано на рис. 9.11, то сочетание вершин х^ и^Хд (использующее подцепи от Х; к х^, и от х^ к Хд) и сочетание пары

вершин Хр и Xj (использующее подцепи от Хр к Ха и от Ха к Х;)

давало бы общее паросочетание веса 2саь, меньшего чем вес первоначального паросочетании, что противоречит предположению о минимальности исходного паросочетании. Следовательно, граф G~ (М*) не должен содержать более двух параллельных ребер



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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141

© 2024 Constanta-Kazan.ru
Тел: 8(843)265-47-53, 8(843)265-47-52, Факс: 8(843)211-02-95