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

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

как внешняя, а другая концевая вершина не принадлежит Т, найти

А = min {Cj - я? - п\].

Шаг 6. Для каждой вершины графа G, принадлежаш,ей Х' и являющейся внешней вершиной дерева Т, поменять nf на я? + А, а для каждой вершины графа G, принадлежащей Х^ и являющейся внутренней вершиной дерева Т, заменить

на Яь -А.

Сохранить дерево Т и перейти к шагу 2. Конец

Шаг 7. Текущее совершенное паросочетание является минимальным.

4.1.2. Матричная форма алгоритма

Часто, когда граф является полным, операции вышеприведенного алгоритма реализуются на (п X ге)-матрице С, строки которой соответствуют вершинам из X , а столбцы - вершинам из X. Начальные элементы с^ являются стоимостями (весами) ребер (xi, Xk).

На шаге 1 алгоритма начальный вес я? вершины Xi 6 X* берется равным наименьшему элементу строки i. Вес я вычитается из всех элементов строки i, и так делается для всех строк. Вес вершины Xk € X берется равным наименьшему элементу в столбце к получившейся матрицы. Затем вычитается из всех элементов столбца к, и зто делается для всех столбцов, в результате чего получается новая матрица С с cJh = с^ь - я? - Щ. 0. Матрица С называется редуцированной матрицей. Тогда остовным подграфом G будет {п X ге)-двудольный граф с дугами (Xi, Xk), соединяющими только те вершины Х{ и Xk, для которых cik = О- Совершенное паросочетание графа G будет соответствовать такому выбору нулевых элементов в матрице С, когда в каждой строке и каждом столбце выбрано ровно по одному нулевому элементу С.

Построение альтернирующего дерева в зтом получившемся остовном подграфе G происходит с помощью следующей процедуры расстановки пометок в строках и столбцах матрицы С. Начнем построение произвольного паросочетания в G, отмечая нулевые элементы в С так, чтобы никакие два отмеченные нуля не находились в одном и том же столбце или строке. (Если мы отметили нуль в позиции (i, к), то это означает, что ребро {xi, Xk) входит в паросочетание, и наоборот.)



1) См. примечание 2 на стр. 382.- Прим. ред.

Найдем строку s без отмеченных элементов и сделаем пометку Ра = 0. Если такой строки нет, то текущее паросочетание будет минимальным совершенным паросочетанием. (Вершина - если такая существует - соответствует теперь экспонированной вершине, выбранной в качестве корня альтернирующего дерева, а Pi являются эквивалентами пометок, используемых для хранения этого дерева ).) Это надо понимать так: дерево рассматривается как некоторая древовидность с корнем, причем если дуга (а> в) входит в эту древовидность, то хранится равенство Рр = Ха- Для корня дерева мы берем = 0. (См. разд. 2.2.1, гл. 7.) Начинаем с такой ситуации, когда есть пометка р^ = О и когда все другие строки и столбцы не помечены.

(i) Пометить каждый непомеченный столбец к, содержащий неотмеченный О в помеченной строке i, меткой р^ = i. Если существует несколько возможностей, взять любую.

(ii) Пометить каждую непомеченную строку i, содержащую отмеченный О в помеченном столбце к, меткой Pi = к.

Повторять процесс расстановки пометок (в соответствии с правилами (]) и (ii)). Эти две операции неявно строят в G дерево, причем это дерево дается эквивалентами пометок. Стоит заметить, что все внешние вершины этого дерева соответствуют строкам из С, а все внутренние - столбцам. Применение операций (i) и (ii) продолжается до тех пор, пока не будет помечен столбец t без отмеченных элементов (скажем, меткой pt) или процесс расстановки пометок нельзя будет продолжать. В первом случае будет найдена аугментальная цепь t, pt, pv, pr, s, где t = Pi, t = Pi и т. д. Элементы О (нули) в позициях {t, pt), iPti Pv), (Pt-i Pt ), { > матрицы С' попеременно отмечаются или нет для образования лучшего паросочетания. Пометки Pi стираются, и процесс продолжается. Во втором случае обнаруживается венгерское дерево. Если I* ж К* - множества всех помеченных, а 7 и К~ - всех непомеченных строк и столбцов соответственно, то находим

Д = т1п [clft].

(Заметим, что cltt = Ci - я? - л^.)

Обновление. = Яг -- Д для iI*, Яй = Яй - А для к^К*, ск-=с'ги - ДЛЯ i 6 /- и А; 6 К-, с[и = с'гУ Д^* i 1- жк Ю , в остальных случаях сш не изменяются. Операции (i) и (ii) теперь снова применяются к новой матрице С и т. д.



4.2. Пример

Решим ЗН для полного двудольного rj матрица С стоимостей (весов) такая:

[)а G = 8,8, где

И

Редуцированной матрицей С будет (8х 8)-матрица, приведенная ниже, где векторы слева ov матрицы и вверху - весовые векторы [jii] и [яь1 соответственно.

12 6

17 10

42 0*

т

0 16

8 26

25 39

т



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