Push-relabel间隙启发式

时间:2013-01-28 20:45:54

标签: heuristics push-relabel gaps-in-data

我不明白如何用push relabel实现间隙启发式。 Wiki将其描述为:

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

使用间隙启发式。如果存在'k',使得没有节点高度(u)= k,则可以为除源之外的所有节点设置高度(u)= max(高度(u),高度(源)+1),对于哪个高度(u)> k。这是因为任何这样的'k'表示图中的最小切割,并且不再有来自节点S = {u其中高度(u)>的流量。 k}到T = {v,其中height(v)0的节点。但那么身高(u)>高度(v)+1,与高度(u)相矛盾> k和高度(v)< ķ。

有人可以用伪代码向我解释如何将间隙启发式添加到FIFO push-relabel中,如wiki的示例代码所示?

谢谢, 文斯

1 个答案:

答案 0 :(得分:3)

这可能有点晚了,但这里是斯坦福大学笔记本的链接,你可以在C中使用Gap Heuristic找到push-relabel最大流量。 我希望它可以帮助你。

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