1

我不明白如何通过推送重新标记来实现间隙启发式。维基是这样描述的:

“在间隙重新标记启发式中,我们维护一个大小为 n 的数组 A,在 A[i] 中保存每个标签的节点数(最多 n)。如果找到标签 d,使得 A[d] = 0,那么所有标签 > d 的节点都被重新标记为标签 n。”

使用间隙启发式。如果有一个'k'使得没有节点height(u)=k,您可以为除source之外的所有节点设置height(u)= max(height(u),height(source)+1),其中height (u) >k。这是因为任何这样的“k”都表示图中的最小切割,并且不会有更多的流量从节点 S={u where height(u) > k} 流向 T={v, where height(v) 中的节点0。但是 height(u) > height(v)+1 与 height(u) > k 和 height(v) < k 相矛盾。

有人可以用伪代码向我解释如何将间隙启发式添加到 FIFO 推送重新标签中,如 wiki 的示例代码中所示?

谢谢,文斯

4

1 回答 1

3

可能有点晚了,但这里是斯坦福大学笔记本的链接,您可以在其中找到使用 C 中的 Gap Heuristic 的推送重新标记最大流量。我希望它对您有所帮助。

http://www.stanford.edu/~liszt90/acm/notebook.html#file3

于 2013-08-16T13:36:13.703 回答