OpenCV的GCGRAPH(最大流)算法基于哪种算法?

8

OpenCV实现了最大流算法(在文件gcgraph.hpp中的GCGRAPH类)。这里提供了该算法的实现。

有人知道这个类实现了哪个特定的最大流算法吗?


@taocp 我在阅读算法实现时遇到了困难,因为这个实现更注重性能而不是可读性。 - Shai
1
我现在正在努力弄清楚,但这是我最近看到的最难读懂的代码。大家一定要注释你们的代码! - templatetypedef
1个回答

9
我不是100%确信,但我认为该算法基于这篇描述计算机视觉最大流算法的研究论文。具体而言,第3节描述了一种计算最大流的新算法。
我没有将论文算法的每个细节与算法实现对齐,但许多细节似乎匹配:
- 所描述的算法通过从s和t进行双向搜索来工作,实现也在这样做:例如,有一个注释读取// grow S & T search trees, find an edge connecting them。 - 所描述的算法跟踪一组孤立节点,变量std::vector<Vtx*> orphans似乎在实现中跟踪它们。 - 所描述的算法通过构建一组树并重复使用它们来工作;算法实现跟踪与每个节点相关联的树。
希望这能帮到您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接