Этот специальный метод решения ТЗ позволяет автоматически выделять циклы с отрицательной ценой и определять их цены.
Идея метода состоит в следующем. Для каждого поставщика и потребителя вводятся псевдоплатежи за перевозки единицы груза поставщиком и получателем ai и bj соответственно, не зависящие от направления перевозок. Псевдостоимость перевозки единицы груза от Аi к Bj равна =ai+bj; i=1, 2, …, m; j=1, 2, …, n. При этом ai и bj не обязательно положительны.
Известна так называемая «теорема о платежах», которую мы приведем без доказательства, отсылая интересующихся к литературным источникам:
для каждой совокупности псевдоплатежей (ai, bj) суммарная псевдостоимость перевозок при любом допустимом плане перевозок (xij) сохраняет одно и то же значение
=const
Для невырожденного плана перевозок (с числом базисных клеток в таблице перевозок m+n–1) псевдоплатежи (ai, bj) определяют так, чтобы во всех базисных клетках псевдостоимости перевозок были равны стоимостям: =ai+bj=cij при xij>0. Оказывается, что соотношение между псевдостоимостями и стоимостями в свободных клетках является индикатором оптимальности плана. Это положение фиксируется следующей теоремой:
Если для всех базисных клеток плана (xij>0) =ai+bj=cij, а для всех свободных клеток (xij=0) =ai+bj≤cij, то план оптимален и не может быть улучшен.
Эта теорема справедлива также и для вырожденного плана с наличием нулевых базисных клеток.
План с указанными в теореме свойствами называют потенциальным, а соответствующие ему псевдоплатежи (ai, bj) – потенциалами пунктов Аi, Bj, то есть всякий потенциальный план оптимален.
Таким образом, задача сводится к поиску потенциального плана и решается методом последовательных приближений – сначала задаются произвольной системой платежей, удовлетворяющей условию =cij для всех базисных клеток, затем одновременно меняют систему платежей так, чтобы они приближались к потенциалам, используя следующее свойство псевдоплатежей и псевдостоимостей:
При любой системе платежей, удовлетворяющей условию =cij для всех базисных клеток, для каждой свободной клетки цена цикла переноса равна разности между стоимостью и псевдостоимостью в данной клетке cij– .
Алгоритм решения задачи по методу потенциалов может выглядеть так:
- Берется любой опорный план с m+n–1 базисных клеток.
- Для этого плана определяются псевдоплатежи по условию ai+bj=cij; один из платежей можно определить произвольным, например нулевым.
- Вычисляются псевдостоимости для всех свободных клеток =ai+bj;
- Если хотя бы в одной свободной клетке псевдостоимость превышает стоимость, осуществляют переброски перевозок по циклу для любой свободной клетки с отрицательной ценой.
- Заново подсчитываются платежи и псевдостоимости и так до тех пор, пока во всех свободных клетках не окажутся псевдостоимости не более стоимостей.