Алгоритм решения задачи о назначениях
13.3.1. Алгоритм решения задачи о назначениях
Этот алгоритм состоит из трех этапов.
Этап 1:
1. Формализация
проблемы в виде транспортной
таблицы по аналогии с
2. В каждой
строке таблицы найти
3. Повторить ту же самую процедуру для столбцов.
Теперь в каждой строке и в каждом столбце таблицы есть по крайней мере один нулевой элемент. Представленная в полученной с помощью описанного выше приема "приведенной" транспортной таблице задача о назначениях эквивалентна исходной задаче, и оптимальное решение для обеих задач будет одним и тем же. Сущность Венгерского метода заключается в продолжении процесса приведения матрицы до тех пор, пока все подлежащие распределению единицы не попадут в клетки с нулевой стоимостью. Это означает, что итоговое значение приведенной целевой функции будет равно нулю. Так как существует ограничение на неотрицательность переменных, нулевое значение целевой функции является оптимальным.
Этап 2.
Если некоторое
решение является допустимым, то каждой
строке и каждому столбцу
1. Найти строку,
содержащую только одно
2. Зачеркнуть оставшиеся нулевые значения данного столбца.
3. Пункты 1 и 2
повторять до тех пор, пока
продолжение описанной
Если на данном этапе окажется, что есть несколько нулей, которым не соответствуют назначения и которые являются незачеркнутыми, то необходимо:
4. Найти столбец,
содержащий только одно
5. Зачеркнуть
оставшиеся нули в данной
6. Повторять
пункты 4 и 5 до тех пор, пока
дальнейшая их реализация
Если окажется, что таблица содержит неучтенные нули, повторить операции 1-6. Если решение является допустимым, т.е. все элементы распределены в клетки, которым соответствует нулевая стоимость, то полученное решение одновременно является оптимальным. Если решение является недопустимым, осуществляется переход к этапу 3.
Этап 3.
1. Провести минимальное число прямых через строки и столбцы матрицы (но не по диагоналям) таким образом, чтобы они проходили через все нули, содержащиеся в таблице.
2. Найти наименьший
среди элементов, через
3. Вычесть его
из всех элементов, через
4. Прибавить
найденный элемент ко всем
элементам таблицы, которые
5. Все элементы
матрицы, через которые
В результате применения данной процедуры в таблице появляется по крайней мере один новый ноль. Необходимо возвратиться к этапу 2 и повторять алгоритм до тех пор, пока не будет получено оптимальное решение.
Пример 13.7. Некоторая компания имеет четыре сбытовые базы и четыре заказа, которые необходимо доставить различным потребителям. Складские помещения каждой базы вполне достаточны для того, чтобы вместить один из этих заказов. В табл. 13.29 содержится информация о расстоянии между каждой базой и каждым потребителем. Как следует распределить заказы по сбытовым базам, чтобы общая дальность транспортировки была минимальной?
| Таблица 13.29. Расстояние от сбытовых баз до потребителей | ||||
| Сбытовая база | Расстояние, миль Потребители | |||
| I | II | III | IV | |
| А В С D |
68 56 3847 |
72 60 40 42 |
75 58 35 40 |
83 63 45 45 |
Решение
Понимание существа проблемы можно в значительной степени облегчить, если перед тем, как применять Венгерский метод, попытаться решить поставленную задачу, используя один из широко известных методов. Примените метод Вогеля и проследите, насколько он приближает нас к оптимальному решению, которое мы рассмотрим в конце данного раздела. Значения общего спроса и общего предложения для всех строк и столбцов равны единице.
Этап 1 Венгерского метода: В каждой строке находится наименьший элемент.
| Таблица 13.30. Выявление наименьших элементов по строкам | |||||
| Потребители | Наименьший элемент строки | ||||
| I | II | III | IV | ||
| А В С D |
68 56 38 47 |
72 60 40 42 |
75 58 35 40 |
83 63 45 45 |
68 56 35 40 |
Наименьший элемент вычитается из всех элементов соответствующей строки
| Таблица 13.31. Вычитание наименьшего элемента по строкам и выявление наименьшего элемента по столбцам | ||||
| 0 | 4 | 7 | 15 | |
| 0 | 4 | 2 | 7 | |
| 3 | 5 | 0 | 10 | |
| 7 | 2 | 0 | 5 | |
| 0 | 2 | 0 | 0 | ¬Наименьший элемент столбца |
Найденный наименьший элемент вычитается из всех элементов соответствующего столбца.
| Таблица 13.32. Вычитание наименьшего элемента по столбцам | |||
| 0 | 2 | 7 | 10 |
| 0 | 2 | 2 | 2 |
| 3 | 3 | 0 | 5 |
| 7 | 0 | 0 | 0 |
В соответствии с процедурой, описанной в этапе 2, осуществляются назначения. Наличие назначения обозначается через
|
Таблица 13.33. Назначения в клетки с нулевыми значениями
|
На данном этапе мы можем осуществить только три нулевых назначения, тогда как требуемое их количество равно четырем. Полученное распределение является недопустимым. Переходим к этапу 3. Проводим наименьшее число прямых, проходящих через все нули таблицы.
Таблица 13.34. Проведение прямых через нулевые элементы
Наименьшим элементом,
через который не проходит ни одна
из прямых, является число 2. Скорректируем
таблицу так, как это описано
выше в соответствии с этапом 3, т.е.
вычтем 2 из каждого элемента, через
который не проходит ни одна прямая,
и добавим 2 ко всем элементам, лежащим
на пересечении двух прямых, оставив
без изменения все прочие элементы,
через которые проходит только одна
прямая. Теперь перераспределим
| Таблица 13.35. Скорректированная таблица с назначениями для нулевых клеток | ||||||
| I | II | III | IV | |||
| А |
|
7 | 8 | |||
| В |
|
2 | ||||
| С | 3 | 1 |
|
3 | ||
| D | 9 | 2 |
| |||
Теперь требование
о размещении четырех назначений
в клетки с нулевой стоимостью
выполняется, следовательно, полученное
решение является оптимальным. Перевозки
осуществляются со сбытовой базы А
к потребителю I, с базы В —
к потребителю II, с базы С —
к потребителю III и с базы D —
к потребителю IV. Хотя данное решение
и является оптимальным, однако оно
не единственное. Тем не менее в
любом оптимальном решении
| Таблица 13.36. Первое альтернативное оптимальное решение | ||||||
| I | II | III | IV | |||
| A |
|
0 | 1 | 8 | ||
| В | 0 | 0 | 2 |
| ||
| С | 3 | 1 |
|
3 | ||
| D | 9 |
|
2 | 0 | ||
| Таблица 13.37. Второе альтернативное оптимальное решение | |||||||
| I | II | III | IV | ||||
| А | 0 |
|
7 | 8 | |||
| В |
|
0 | 2 | 0 | |||
| С | 3 | 1 |
|
3 | |||
| D | 9 | 0 | 2 |
| |||
Минимальную дальность перевозок для каждого из трех решений можно вычислить из исходной таблицы:
Решение 1: 68 + 60 + 35 + 45 - 208 миль;
Решение 2: 68 + 63 + 35 + 42 = 208 миль;
Решение 3: 72 + 56 +
35 + 45 = 208 миль.
Общая дальность перевозок для всех трех
решений одинакова.
Примечание: в задачах большей размерности, чем задача из примера 13.7. убедиться в том, что проведенное в соответствии г пунктом 1 этапа 3 число прямых является минимальным, гораздо труднее. В этой связи может оказаться полезным так называемое "правило правой руки":
1. Выбирается любая строка или столбец, содержащие только один нулевой элемент.
2. Если выбрана строка, прямая проводится через столбец, в котором находился данный нулевой элемент.
3. Если выбран
столбец, прямая проводится
4. Пункты 1-3 повторяются до тех пор, пока не будут учтены все входящие в таблицу нули.
http://sider.home.nov.ru/book/
http://habrahabr.ru/blogs/

- Алгоритм решения изобретательских задач
- Алгоритм розв’язання конфлікту
- Алгоритм сборки Кубика Рубика
- Алгоритм. Свойства алгоритма
- Алгоритм, свойства алгоритма и базовые структуры алгоритма
- Алгоритм сжатия изображения jpeg
- Алгоритм составления социальных программ (технология проекта)
- Алгоритм проведения фестиваля народного творчества
- Алгоритм работы прозрачного моста
- Алгоритм работы со скретч картами
- Алгоритм разработки и продвижения услуг туристического агенства «Саратов-тур Сервис»
- Алгоритм разработки и реализации федеральных целевых программ по развитию проблемных регионов России
- Алгоритм растопки котла из холодного резерва
- Алгоритм решения задач