Проверка плана на оптимальность
Равновесие можно сохранить передвижкой того же числа единиц в другой строке из столбца, где предыдущая передвижка завысила возможный выпуск автомобилей, в столбец, где возник их избыток. Сдвижка всегда парная, одного и того же числа единиц. Процедура эта должна быть возможной и эффективной.
Последнее определяется сравнением выигрыша и проигрыша (произведение числа сдвинутых автомобилей на разницу расстояний).
Полученный любым методом исходный план требует проверки на оптимальность. Проверка производится при помощи оценочных индексов.
Проставляются они во вспомогательных строке и столбце.
Будем называть клетки, в которых представлено число автомобилей — загруженными, пустые — незагруженными.
Остальные индексы определяются так, чтобы расстояния, записанные в верхнем правом углу каждой загруженной клетки, были равны сумме индексов, соответствующих строки и столбца.
Фиктивную загрузку можно поставить в любую клетку, имеющую только один индекс. В нашем примере это клетки, помеченные крестиками.
Если бы число загруженных клеток было больше 6 (для нашего примера), для определения индексов пришлось бы одну из загруженных клеток разгрузить.
Для этого в матрице строится замкнутый контур из горизонтальных и вертикальных прямых линий так, чтобы все вершины контура располагались в загруженных клетках. Таких контуров всегда можно построить столько, сколько в матрице двойных связей.
Проверка плана на оптимальность заключается в отыскании незагруженных клеток, в которых расстояние меньше суммы индексов. Если такие клетки есть, план неоптимален, клетки называются потенциальными, а разница между суммой индексов и расстоянием — потенциалами.
Отсутствие потенциальных клеток говорит об оптимальности плана.
В нашем примере потенциальных клеток нет, поэтому план уже после логического улучшения является оптимальным и в улучшении не нуждается.