Метод минимального элемента: транспортная задача

Транспортная задача - одна из классических задач линейного программирования: нужно перевезти груз от поставщиков к потребителям с минимальными суммарными затратами. Метод минимального элемента - самый быстрый способ получить начальный опорный план, с которого затем стартует метод потенциалов.
Постановка транспортной задачи
Дано поставщиков с запасами () и потребителей со спросом (). Стоимость перевозки единицы груза из в равна . Нужно найти план перевозок такой, что:
Задача сбалансирована, если . Если нет - добавляют фиктивного поставщика или потребителя с нулевыми тарифами.
Алгоритм метода минимального элемента
Метод строит начальный план «жадным» способом: на каждом шаге заполняет клетку с наименьшим тарифом.
Шаг 1. В таблице тарифов найти клетку с минимальным значением .
Шаг 2. Назначить перевозку .
Шаг 3. Уменьшить остаток соответствующего поставщика и потребителя:
Шаг 4. Если - вычеркнуть строку ; если - вычеркнуть столбец ; если оба равны нулю - вычеркнуть одно из двух (оставив вырожденную базисную клетку с нулём).
Шаг 5. Повторять шаги 1-4 до полного распределения грузов.
Итог: базисных клеток ровно (условие невырожденности). Суммарная стоимость начального плана, как правило, далека от оптимума - она служит отправной точкой для метода потенциалов.

Числовой пример
Рассмотрим задачу : поставщики (запасы 30, 40, 20) и потребители (спрос 20, 50, 20).
Матрица тарифов:
Итерация 1: минимум . . Вычеркиваем столбец 3. Остаток .
Итерация 2: из оставшихся минимум . . Вычеркиваем столбец 1. Остаток .
Итерация 3: минимум . . Вычеркиваем строку 1. Остаток .
Итерация 4: минимум . . Вычеркиваем строку 2. Остаток .
Итерация 5: . Вычеркиваем строку 3 и столбец 2.
Начальный план: .
Число базисных переменных: - план невырожден.
Сравнение с методом северо-западного угла
Метод северо-западного угла заполняет клетки по диагонали таблицы, не смотря на тарифы. Для нашего примера он дал бы:
Метод минимального элемента обычно даёт более дешёвый начальный план - разрыв в 15-30 % типичен, что сокращает число итераций в методе потенциалов.
При равенстве нескольких минимальных тарифов выбирайте клетку с большей возможной перевозкой - это чаще даёт невырожденный план без добавления нулей.
Условие невырожденности и вырожденный план
Если на шаге одновременно обнуляются и , и , одну из строк (или столбцов) не вычёркивают, а оставляют с нулевой перевозкой . Эта базисная клетка с нулём - вырожденная - всё равно учитывается в счётчике базисных переменных: их ровно .
Вырожденность не запрещена, но при циклировании (бесконечном переходе между планами одной стоимости) в методе потенциалов к нулевым базисным клеткам прибавляют .
Проверка оптимальности: метод потенциалов
После получения начального плана переходят к методу потенциалов:
- Системе для всех базисных клеток решают относительно потенциалов (полагая ).
- Для небазисных клеток вычисляют оценку .
- Если все - план оптимален.
- Иначе находят клетку с , строят цикл и перераспределяют перевозки.
Метод минимального элемента сокращает путь к оптимуму именно потому, что начальный план уже близок к нему по стоимости.
Частые ошибки
- Не проверяют баланс. Перед применением метода нужно убедиться, что . Если не так - добавляют фиктивный поставщик или потребитель с нулевыми тарифами и нулевой перевозкой.
- Вычёркивают оба при одновременном обнулении. Правильно оставить одно из них «открытым» с остатком 0 - иначе число базисных переменных будет меньше и план непригоден для метода потенциалов.
- Выбирают разные минимумы при одинаковых тарифах случайно. Лучше придерживаться правила: при равных тарифах - выбирать наибольший возможный объём перевозки.
- Путают начальный план с оптимальным. Метод минимального элемента даёт только начальный план. Он редко оптимален сам по себе - требуется проверка по методу потенциалов или распределительному методу.
- Неверно считают количество базисных переменных. Их должно быть ровно ; если меньше - план вырожден неправильно и метод потенциалов зависнет.
FAQ
Почему метод минимального элемента лучше метода северо-западного угла?
Метод северо-западного угла заполняет клетки без учёта тарифов - он гарантирует только допустимость плана. Метод минимального элемента на каждом шаге минимизирует «местные» затраты, что в среднем даёт план на 15-30 % дешевле и требует меньше итераций для выхода на оптимум.
Гарантирует ли метод минимального элемента оптимальный план?
Нет. Это жадный алгоритм: локально оптимальные решения не всегда глобально оптимальны. Для проверки оптимальности применяют метод потенциалов (для больших задач) или распределительный метод (для небольших). Метод минимального элемента только строит хорошее стартовое приближение.
Что делать, если задача несбалансирована?
Добавить фиктивного поставщика с запасом (или потребителя, если запасы превышают спрос) и нулевыми тарифами. После решения перевозки в фиктивные клетки означают неудовлетворённый спрос (или нераспределённые запасы) и в реальности не выполняются.
Коротко
Метод минимального элемента строит начальный опорный план транспортной задачи, жадно заполняя клетки с наименьшим тарифом. Алгоритм прост: найти минимальный , назначить максимально возможную перевозку, вычеркнуть насыщенную строку или столбец - и повторять до заполнения. Результат - базисных клеток, план, близкий к оптимуму, и быстрый старт для метода потенциалов.
Читайте также

Метод северо-западного угла: транспортная задача
Метод северо-западного угла для транспортной задачи: как пошагово построить опорный план, проверить его на вырожденность по правилу m+n-1 и посчитать стоимость перевозок с разбором типовой задачи.

Бинарный поиск по ответу: метод и примеры задач
Бинарный поиск по ответу: как применять метод к задачам на оптимизацию, как формулировать предикат, строить монотонную функцию и избегать ошибок в границах.

Метод наискорейшего спуска: формула шага и зигзаг
Метод наискорейшего спуска простыми словами: как выбрать оптимальную длину шага через точный линейный поиск, почему траектория зигзагит и как число обусловленности влияет на скорость сходимости.