Постановка задачи о назначении.
Найти вектор (матрицу) X=(xij, і,j=1...,n), что минимизирует целевую функцию
L(X)= c11 x11 +...+ c1n x1n +...+ cn1 xn1 +...+ cnn xnn (14.1)
и удовлетворяет систему ограничений
xi1 + ... + xin = 1, i=1...,n (14.2)
x1j + ... + xnj = 1, j=1...,n (14.3)
xij = 0 или 1, і,j=1...,n (14.4)
где сіj — расходы, связанные с использованием і-го исполнителя для выполнения j-ї работы (і,j=1...,n). Элементы сіj образуют матрицу расходов C.
Задача (14.1)–(14.4) Решается венгерским методом, что основывается на том факте, что вычитание числа ai, i=1...,n, от каждого элемента і-го строки и числа bj, j=1...,n, от каждого элемента j-го столбца матрицы расходов C не изменяет множества оптимальных назначений. В этом понимании можно говорить, что указанные действия превращают матрицу расходов C в эквивалентную ей. В алгоритме, что дается ниже, матрицы, эквивалентные исходной матрице расходов C, называются просто матрицами расходов.
Алгоритм венгерского метода.
1. Отнимаем в матрице C от каждого элемента і-го строки минимальный элемент этой строки (i=1...,n).