Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по ТПP.doc
Скачиваний:
123
Добавлен:
15.06.2014
Размер:
2.52 Mб
Скачать

2.5 Пример решения задачи о назначениях венгерским методом

Задача. Решить задачу о назначениях, которая определяется матрицей

.

Решение.

При решении задачи знак выделения +, подлежащий уничтожению, обводим кружком. Последовательность из элементов 0' и 0* на втором шаге указываем стрелками.

1. Подготовительный этап. Максимальный элемент первого столбца матрицы C равен 4. Поэтому для получения первого столбца необходимо из 4 вычесть элементы первого столбца матрицы. Аналогично для получения второго, третьего, четвертого и пятого столбцов вычитаем элементы этих столбцов из максимальных элементов 5, 3, 2 и 3 соответственно. В полученной матрице минимальный элемент каждой строки равен нулю, поэтому матрица найдена. Помечаем независимые нули: в первом столбце выбираем произвольный путь, тогда во втором и в третьем столбцах независимых нулей нет, в четвертом столбце помечаем независимый нуль, в пятом столбце независимого нуля нет. Следует заметить, что в рассматриваемой задаче возможны и другие варианты выбора независимых нулей – предлагается рассмотреть эти варианты самостоятельно.

.

2.Первая итерация

Шаг 0. Выделяем знаком + первый и четвертый столбцы – они содержат 0*.

Шаг 1. Просматриваем невыделенные нули матрицы . Помечаем штрихом нуль, расположенный во второй строке и во втором столбце. Поскольку в этой строке содержится 0*, то имеем случай а) и ставим + на вторую строку, а знак + над первым столбцом обводим кружком (убираем). Помечаем штрихом нуль этого столбца, который лежит в третьей строке, не содержащей 0*. Имеем случай б), поэтому переходим к шагу 2.

Шаг 0

Шаг 1

Шаг 2. Строим последовательность: от последнего помеченного 0' движемся к 0* (первый столбец, вторая строка), затем от 0* из второй строки переходим к 0', расположенному в той же строке и во втором столбце. Поскольку второй столбец не содержит 0*, то процесс построения последовательности закончен. Найденная последовательность состоит из элементов: . Преобразованная последовательность принимает вид . Вносим эти изменения в матрицу , чистим ее (убираем знаки + и штрих) и получаем в результате матрицу , в которой число независимых нулей (0*) увеличено на единицу. На этом первая итерация алгоритма завершается.

Шаг 2

Поскольку последующие итерации проводятся аналогично, ниже приводятся результаты вычислений без дополнительных пояснений.

3. Вторая итерация

Шаг 0

Шаг 1

Шаг 3 а), б), h=1

Шаг 3 в)

Шаг 1

Шаг 2

4. Третья итерация

Шаг 0, Шаг 1

Шаг 2

После третьей итерации количество независимых нулей (0*) стало равным размерности n матрицы и поэтому процесс выбора закончен. Искомые элементы матрицы Cсоответствуют позициям независимых нулей матрицы .

Значение целевой функции

.

Оптимальное решение задачи о назначениях с соответствующей матрицей C определяется набором со значениями: . Содержательно это означает, что первую работу выполняет второй исполнитель, вторую – третий исполнитель, третью работу – первый исполнитель, четвертую – пятый исполнитель и пятую работу выполняет четвертый исполнитель.