При решении транспортной задачи как в методе потенциалов так и в методе падающего камня ключевым моментом при реализации является нахождение цикла (замкнутого пути). К сожалению, не нашел ни одного толкового описания алгоритма, готового к реализации. Например, для нахождения цикла предлагается следующий метод:
Цитата:
Поставьте курсор мыши в выбранную свободную ячейку. Используя горизонтальные и вертикальные перемещения курсора, соедините непрерывной линией базисные ячейки так, чтобы вернуться в исходную ячейку. Базисные ячейки, расположенные в вершинах построенной ломаной линии, образуют цикл для выбранной нами ячейки. Он единственный. Направление обхода не имеет значения.
И это самое лучшее, что смог найти
В результате нескольких часов страданий придумал следующую эвристику:
Отмечаем ячейку, для которой нам нужно найти цикл и все ячейки опорного плана. Вычеркиваем все строки и столбцы с единственным отмеченным элементом до тех пор пока не сможем ничего вычеркнуть. В итоге у нас останутся отмеченными только узлы искомого пути.
Проверял на тестовых данных - вроде работает. Это верный алгоритм?
И если у кого есть ссылка на работающий алгоритм решения транспортной задачи - буду весьма благодарен...