Я не уверен на 100% об этом, но считаю, что алгоритм основан на this research paper describing max-flow algorithms for computer vision. В частности, в разделе 3 описан новый алгоритм вычисления максимальных потоков.
Я не выстроены каждую деталь алгоритма газеты с реализацией алгоритма, но многие детали, кажется, соответствуют:
- Описанный алгоритм работы с использованием двунаправленного поиска с обеих s- и т , реализация которого также выполняется: например, есть комментарий, читающий
// grow S & T search trees, find an edge connecting them
.
- В описанном алгоритме отслеживается набор осирожденных узлов, которые, как представляется, отслеживает переменную
std::vector<Vtx*> orphans
в реализации.
- Алгоритм, описанный в работах, создает множество деревьев и использует их повторно; реализация алгоритма отслеживает дерево, связанное с каждым узлом.
Надеюсь, это поможет!
@taocp У меня возникли проблемы с чтением алгоритма из реализации, поскольку реализация более ориентирована на производительность, чем ориентированная на читаемость. – Shai
@templatetypedef - спасибо за ссылку – Shai
Я пытаюсь понять это сейчас, но это наименее читаемый код, который я видел через некоторое время. Комментируйте свой код, ребята! – templatetypedef