Метод северо-западного угла: транспортная задача

Метод северо-западного угла - самый простой способ построить начальный опорный план транспортной задачи: распределить грузы от поставщиков к потребителям так, чтобы все запасы были вывезены, а все потребности удовлетворены. Метод не заботится о стоимости перевозок, его задача - быстро получить допустимый план, от которого затем стартует метод потенциалов. Ниже разберём, как пошагово заполнять таблицу, начиная с её левой верхней (северо-западной) клетки, почему число занятых клеток должно равняться , как считать стоимость плана и где студенты ошибаются. Чтобы сразу увидеть, как лесенка заполнения идёт по таблице, покрутите калькулятор ниже: он строит опорный план для разных размеров задачи и считает его стоимость.
Что такое транспортная задача и опорный план
Транспортная задача - это задача линейного программирования: есть поставщиков с запасами и потребителей с потребностями . Стоимость перевозки единицы груза от поставщика к потребителю равна . Нужно найти объёмы перевозок , при которых все запасы вывезены, все потребности закрыты, а суммарная стоимость
минимальна. Задача называется сбалансированной (закрытой), когда сумма запасов равна сумме потребностей: . Только для такой задачи метод северо-западного угла применяется напрямую; несбалансированную сначала закрывают фиктивным поставщиком или потребителем с нулевыми стоимостями.
Опорный план - это допустимое распределение, в котором заполнено ровно клеток таблицы, причём эти клетки не образуют замкнутого цикла. Метод северо-западного угла даёт именно такой план, не глядя на стоимости, поэтому он почти никогда не оптимален - его потом улучшают.
Алгоритм метода северо-западного угла
Идея в одной фразе: начинаем с левой верхней клетки таблицы и движемся к правой нижней, на каждом шаге загружая текущую клетку по максимуму.
Пошагово алгоритм выглядит так:
- Встаём в северо-западную (левую верхнюю) клетку .
- В текущую клетку записываем перевозку - сколько можно реально перевезти, ограничено меньшим из остатков.
- Вычитаем эту величину из остатка запаса строки и остатка потребности столбца: , .
- Если исчерпан запас строки () - переходим на клетку ниже, в следующую строку. Если исчерпана потребность столбца () - переходим вправо, в следующий столбец.
- Повторяем, пока не дойдём до правой нижней клетки и не распределим весь груз.
Из-за этого правила движения заполненные клетки складываются в характерную ступенчатую линию - ту самую лесенку из северо-западного угла в юго-восточный.
Формула и баланс m + n - 1
Главная проверка корректности опорного плана - число занятых клеток. Для невырожденного плана оно равно
где - число строк (поставщиков), - число столбцов (потребителей). Для задачи это клеток, для - пять, для - четыре.

Почему именно ? На каждом шаге, кроме последнего, мы обнуляем либо одну строку, либо один столбец. Всего строк и столбцов , но последний шаг закрывает сразу и строку, и столбец, поэтому заполненных клеток на единицу меньше суммы. Если в ходе расчёта запас строки и потребность столбца обнуляются одновременно не в последней клетке, возникает вырожденность: клеток оказывается меньше . Тогда в одну из пустых клеток ставят нулевую базисную перевозку, чтобы формально восстановить число занятых клеток - иначе метод потенциалов дальше не запустится.
Пример решения типовой задачи
Возьмём базовый сценарий калькулятора. Запасы поставщиков: , потребности потребителей: . Сумма запасов равна сумме потребностей - задача сбалансирована. Матрица стоимостей:
Идём по лесенке:
- Клетка : . Столбец 1 закрыт, остаток строки 1 равен .
- Клетка : . Строка 1 закрыта, остаток столбца 2 равен .
- Клетка : . Столбец 2 закрыт, остаток строки 2 равен .
- Клетка : . Строка 2 закрыта, остаток столбца 3 равен .
- Клетка : . Столбец 3 закрыт, остаток строки 3 равен .
- Клетка : . Всё распределено.
Заполнено шесть клеток - ровно , план невырожденный. Считаем стоимость, перемножая объёмы на стоимости занятых клеток:
Стоимость опорного плана равна . Это не минимум - метод северо-западного угла игнорирует стоимости, и почти всегда найдётся план дешевле. Но как стартовая точка для метода потенциалов он годится: дальше план улучшают, перераспределяя груз по циклам пересчёта.
Чем северо-западный угол отличается от метода минимального элемента
Метод северо-западного угла - не единственный способ получить опорный план. Часто рядом изучают метод минимальной стоимости (минимального элемента) и метод Фогеля. Разница в том, какую клетку загружать первой:
- Северо-западный угол заполняет клетки строго по географии таблицы - сверху-слева вниз-вправо, не глядя на . Самый быстрый и механический, но даёт самый дорогой стартовый план.
- Метод минимального элемента на каждом шаге выбирает свободную клетку с наименьшей стоимостью. План получается ближе к оптимуму, но строится дольше.
- Метод Фогеля учитывает штрафы (разности двух минимальных стоимостей в строке и столбце) и обычно стартует почти от оптимума.
Для учебных задач северо-западный угол ценен именно прозрачностью: лесенка строится однозначно, ошибиться негде, а проверка по моментальная. Когда нужен план подешевле сразу, берут минимальный элемент или Фогеля.
Частые ошибки
- Забыли проверить баланс. Если , метод напрямую не работает. Сначала добавьте фиктивного поставщика или потребителя с нулевыми стоимостями, закрыв разницу.
- Загрузили не минимум, а произвольное число. В клетку всегда пишется ровно , иначе либо запас уйдёт в минус, либо потребность будет превышена.
- Двинулись по диагонали. После заполнения клетки можно уйти только вправо (закрылся столбец) или вниз (закрылась строка), но не сразу по диагонали - так теряется базисная клетка.
- Пропустили вырожденность. Если занятых клеток меньше , план вырожден. Метод потенциалов на таком плане сорвётся, пока не поставите нулевую базисную перевозку.
- Считают, что это и есть ответ. Северо-западный угол даёт лишь опорный план. Минимальную стоимость находят уже методом потенциалов, улучшая полученное распределение.
FAQ
Почему метод называется северо-западным углом? Потому что заполнение начинается с левой верхней клетки таблицы перевозок. На карте сторон света левый верхний угол - это северо-запад, отсюда и название. Дальше движение идёт к правому нижнему (юго-восточному) углу.
Даёт ли метод северо-западного угла оптимальный план? Нет. Метод не использует стоимости перевозок, поэтому полученный план почти всегда дороже оптимального. Его роль - быстро дать допустимый опорный план, который затем улучшают методом потенциалов до минимальной стоимости.
Что делать, если транспортная задача не сбалансирована? Ввести фиктивного участника. Если запасов больше, чем потребностей, добавляют фиктивного потребителя с потребностью, равной излишку, и нулевыми стоимостями. Если потребностей больше - фиктивного поставщика. После этого задача становится закрытой и метод применяется как обычно.
Коротко
Метод северо-западного угла строит опорный план транспортной задачи, заполняя таблицу от левой верхней клетки к правой нижней: в каждую клетку пишут , закрывают исчерпанную строку или столбец и сдвигаются вправо-вниз. Корректный невырожденный план содержит ровно занятых клеток, а его стоимость считается как . Это лишь стартовый план: оптимум находят дальше методом потенциалов.
Читайте также

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

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

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