В более сложных графах необходимо находить и последовательно удалять несколько венгерских деревьев Т1, Т2, ..., и, следовательно, рассматривать несколько оставшихся подграфов G1, G2, ..., прежде чем будет получен граф, в котором мы обнаружим либо совершенное паросочетание, либо венгерское дерево, содержащее все оставшиеся верщины. Восстанавливая последовательно венгерские деревья в обратном порядке и находя максимальное паросочетание для каждого вновь добавленного дерева, получаем максимальное паросочетание для всего графа.
Чтобы проиллюстрировать стягивание и последующее разворачивание соцветий, предположим, что кроме ребер, показанных на рис. 5.32, а, вершина С инцидентна структуре, представленной на рис. 5.33, а.

Рис. 5.33.
По отношению к растущему дереву и ребрам паросочетания, показанным на рис. 5.32, а, цикл С, Р, Q, Т, N является соцветием. После его стягивания получим рис. 5.33, b. По отношению к новому растущему дереву (рис. 5.33, b) оставшийся граф является соцветием, которое можно стянуть в одну псевдо-псевдовершину, показанную на рис. 5.33, с. Растягивая соцветия в обратном порядке и восстанавливая паросочетания, удаленные при стягивании, получим максимальное паросочетание, показанное на рис. 5.33, d. Предположим, что вершина С в нашем исходном примере фактически была вышеупомянутой псевдо-псевдовершиной (т. е. что процедурам, показанным на рис. 5.32, предшествовало двойное стягивание). Тогда максимальное паросочетание для всего графа будет иметь вид рис. 5.34.

Рис. 5.34.
Упражнение 21. Найти максимальное паросочетание для графов, показанных на рис. 5.15 и 5.17.
Итак, в предыдущих разделах мы ввели терминологию и предварительные сведения, необходимые для описания алгоритма, и проиллюстрировали его работу на небольшом частном примере. Опишем теперь алгоритм в общем виде.
Описание алгоритма. Пусть G= (V,E) обозначает граф, для которого требуется найти максимальное паросочетание, М — исходное паросочетание в G (возможно, пустое множество), a S — множество ребер, первоначально пустое, которое будет последовательно расширяться добавлением определенных ребер. Если некоторые вершины G не покрыты относительно М, то выберем одну из них в качестве начала растущего дерева Т. Рассмотрим в любом порядке ребра, которые не входят в Т, но инцидентны внешним вершинам Т. Если Т — цветущее дерево относительно некоторого ребра, то стянем соответствующее соцветие в одну псевдовершину, зафиксируем стянутое соцветие и будем считать псевдовершину внешней вершиной Т. Если Т может быть увеличено присоединением двух ребер и вершин, как описывалось ранее, то увеличим его. Если Т является расширяющимся по отношению к некоторому ребру, то увеличим М, используя соответствующее чередующееся расширение. (В этом случае Т не является более растущим деревом. Образуем новое растущее дерево, выбирая, если она существует, непокрытую вершину относительно М.) Если текущий вариант растущего дерева Т оказывается венгерским и если не все вершины графа принадлежат Т, то временно удалим все вершины Т и все ребра, которые инцидентны этим вершинам. Оставшийся граф обозначим G1 и повторим описанный процесс для этого графа.
В конечном счете, после удаления конечного числа венгерских деревьев Т1, Т2, …, Тп и рассмотрения соответствующих оставшихся графов G1, G2, ..., Gn оказывается, что либо (1) Gn и есть пустой граф, либо (2) М содержит совершенное паросочетание для Gn. После
этого восстанавливаем поочередно Тп , Тп-1,.....,Т1 и их
максимальные паросочетания. Если некоторые вершины являются псевдовершинами, то растянем их в соцветия. (Во избежание ошибок лучше всего это делать в порядке, обратном их стягиванию.) При этом после растягивания найдем для соответствующего соцветия максимальное паросочетание, ни одно ребро которого не инцидентно вершине, служившей верхушкой ствола в момент стягивания. После растягивания всех соцветии получим паросочетание, которое является максимальным для первоначального графа.
Пусть G=(V, E) — граф, каждой из вершин v которого поставлено в соответствие неотрицательное целое число d(v). Подграфом с ограниченными степенями графа G считается подграф G'=(V, F) такой, что степень каждой его вершины v не больше d(v). Максимальным подграфом, с ограниченными степенями считается подграф, имеющий наибольшее число ребер.
Легко видеть, что задача о максимальном паросочетании соответствует частному случаю, когда d(v) = 1 для каждой вершины v.
Эдмондс непосредственно обобщил приведенный выше алгоритм на решение общей задачи нахождения максимального подграфа с ограниченными степенями для произвольных неотрицательных d(v). Он также рассмотрел еще одно важное обобщение задачи о максимальном паросочетании, когда требуется найти паросочетание с максимальным общим весом при условии, что каждому ребру графа поставлено в соответствие число, называемое «весом» (исходная задача о паросочетании соответствует случаю, когда все веса равны единице). Алгоритм решения этой задачи можно объединить с алгоритмом нахождения кратчайших путей и решить на их основе «задачу китайского почтальона», впервые предложенную Кваном. Эта задача сводится к нахождению замкнутой цепи, в которую каждое ребро связного графа входит по крайней мере один раз и которая имеет минимальный общий вес. (Другими словами, задача состоит в том, чтобы получить уникурсальный граф за счет дублирования ребер при минимальном дополнительном весе.)
ТЕХНИЧЕСКИЕ ПРИЛОЖЕНИЯ
5.15. Анализ технических систем
Покажем, как можно использовать соответственным образом построенные ориентированные графы для получения существенной информации о поведении реальных технических систем на основе информации, характеризующей их составные части при заданном способе связи этих частей. Излагаемый ниже метод, разработанный в числе прочих Трентом, наиболее широко используется для анализа электрических цепей. Однако его можно также применять и к любым другим системам, в которых происходит преобразование энергии, например к механическим, устройствам с поступательными или вращательными движениями, или к гидравлическим системам. Кроме «чистых» систем (т. е. использующих только один вид энергии) этот метод может быть распространен на «смешанные» системы, в которых различные элементы работают с различными видами энергии и связаны между собой через соответствующие устройства согласования.
Рассмотрим набор из т двухполюсников, которые образуют элементы системы Е1, ..., Ет. Пусть клеммы двухполюсников соединены некоторым образом в п узлах Р1, ..., Рп. Примером такой системы может служить набор сопротивлений, конденсаторов, индуктивностей и источников напряжения (в простейшем случае — батареи, в более сложных случаях — источники переменного напряжения). Предположим, что каждый отдельный элемент системы можно адекватно охарактеризовать известным уравнением, связывающим две основные переменные: ток xi и напряжение уi элемента Ei. Считается, что xi и уi измеряются в определенном направлении. Выбор переменных и использование терминов «ток» и «напряжение» будут скоро понятны.
Если, например, хi и уi обозначают электрический ток и разность потенциалов соответственно, то пассивный элемент (элемент, не являющийся источником) может характеризоваться одним из уравнений вида

где t обозначает время. Активный элемент, или источник, характеризуется уравнением, выражающим одну из основных переменных как функцию времени (это может быть и константа). Например, уi=f(t) характеризует источник напряжения.
Допустим теперь, что каждому элементу Е соответствует дуга аi, а каждому узлу Рj — вершина vj. Если конечные точки дуг взяты в качестве соответствующих» узлов, то полученный ориентированный граф дает удобную характеристику структуры соответствующей реальной технической системы. Важное для нашего рассмотрения свойство токов состоит в том, что в каждой вершине их поведение подчинено так называемому правилу вершин. Оно состоит в следующем.
Правило вершин. Алгебраическая сумма токов, соответствующих дугам, инцидентным любой заданной вершиной, равна нулю.
Под алгебраической суммой понимается следующее: каждый ток добавляется или вычитается в зависимости от того, является ли соответствующая дуга положительно или отрицательно инцидентной рассматриваемой вершиной. На рис. 5.35 правило выполняется, например, в v1, так как (4)—(7)— (-3)=0.

Pис. 5.35
Нетрудно видеть, что оно выполняется также и в других вершинах. В теории электрических цепей это правило называется законом Кирхгофа для токов.
В общем случае, в качестве одной из базисных переменных, а именно той, которая имеет смысл тока, должна выбираться переменная, размерность которой обеспечивает выполнение условий вершинного постулата.
Напряжения также удовлетворяют следующему основному так называемому циклическому правилу.
Циклическое правило. Алгебраическая сумма напряжений, соответствующих дугам любого элементарного цикла, равна нулю.
В этом случае предполагается, что циклу задается некоторая ориентация (в любом из направлений) и каждое напряжение добавляется или вычитается в зависимости от того, совпадает или не совпадает направление соответствующей дуги с выбранной ориентацией цикла. На рис. 5.36 это правило выполняется, например, для ориентированного элементарного цикла С, так как
|
Из за большого объема этот материал размещен на нескольких страницах:
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 |


