我不明白如何通过推送重新标记来实现间隙启发式。维基是这样描述的:
“在间隙重新标记启发式中,我们维护一个大小为 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 的示例代码中所示?
谢谢,文斯