124
а). В строке с непомеченным нулем нет помеченного (*) нуля;
тогда непомеченный нуль помечается (0′), и производится
переход к пункту 3 (увеличение числа независимых нулей).
б). В строке с непомеченным нулем
есть помеченный (*) нуль;
тогда: - непомеченный нуль помечается (0′);
- строка выделяется знаком (+) и является занятой
строкой;
- снимается отметка с занятого столбца, соответст-
вующего помеченному (0*) нулю (знак (+) обводит-
ся кружком ⊕ и считается незанятым);
- производится переход к пункту Б) данного шага.
Данный шаг заканчивается переходом либо к шагу 3, с после-
дующим увеличением
числа независимых нулей и переходом к
шагу 1, либо к шагу 4, с преобразованием матрицы назначений С
s
в С
s+1
и последующим возвратом к выполнению шага 2.
3). Увеличение числа независимых нулей. Строится цепоч-
ка нулей, состоящая из (0′) и (0*). Начиная с последнего помечен-
ного нуля (0′), в столбце выбирается (0*), от него по строке произ-
водится переход к (0′), далее снова по столбцу к (0*) и т. д. Про-
цесс построения цепочки оборвется на некотором (0′) (возможно,
что и на первом).
Производится замена
пометки в образованной цепочке: (0*)
заменяется на (0); и (0′) заменяется на (0*). Иначе, снимается от-
метка с (0*), а (0′) заменяется на (0*). Число независимых нулей,
отмеченных как 0*, становится на 1 больше.
Снимается выделение строк и столбцов («занятость» строк и
столбцов). Снимается отметка (0′).
Итерация закончена; производится переход на шаг 1; k = k + 1.
4). Эквивалентные преобразования матрицы. Среди эле-
ментов С
s
, соответствующих незанятым строкам и столбцам, вы-
бирается минимальный элемент, который вычитается из этих
свободных элементов и добавляется к элементам, стоящих на
пересечении занятых строк и столбцов. Полученная матрица С
s+1
эквивалентна матрице С
s
и содержит свободные нули; s = s+1.
В случае, когда задача о назначениях решается на макси-
мум целевой функции, алгоритм отличается выполнением 0-го
шага.
0). При выполнении предварительных преобразований мат-
рицы назначений в каждом столбце выбирается максимальный