Algorithm 如何将流量过大的预流量推送网络转换为流量网络
我实现了最大流的最高标签推-再标签算法的第一阶段,但我找不到任何关于如何实现第二阶段的资源,即将预流推送网络转换为有效流网络。如果您确实需要最大流(可以直接从预流导出一个最小切割,并使用它来验证预流),然后我知道两种方法 第一种方法在关于push-relabel算法的原始Goldberg--Tarjan论文中有介绍。本质上,第二阶段的实现几乎与第一阶段完全相同。唯一的区别是源保持在距离n处(而不是接收器,保持在距离0处)。这具有将多余部分路由回源的效果 我不确定第二种方法是在哪里描述的。我知道它在Goldberg的实现中,它是基于(参见Algorithm 如何将流量过大的预流量推送网络转换为流量网络,algorithm,max-flow,push-relabel,Algorithm,Max Flow,Push Relabel,我实现了最大流的最高标签推-再标签算法的第一阶段,但我找不到任何关于如何实现第二阶段的资源,即将预流推送网络转换为有效流网络。如果您确实需要最大流(可以直接从预流导出一个最小切割,并使用它来验证预流),然后我知道两种方法 第一种方法在关于push-relabel算法的原始Goldberg--Tarjan论文中有介绍。本质上,第二阶段的实现几乎与第一阶段完全相同。唯一的区别是源保持在距离n处(而不是接收器,保持在距离0处)。这具有将多余部分路由回源的效果 我不确定第二种方法是在哪里描述的。我知道它
convert\u preflow\u to\u flow
)的
实际上,第1步和第2步都涉及深度优先搜索。天真地说,在检测到并取消每个周期后,人们会重新启动深度优先搜索以进行周期检测,但可以将深度优先搜索倒回到它第一次使用取消删除的弧的点,从而节省时间到达该点再次搜索。拓扑顺序可以作为搜索的副产品获得,为第2步保存单独的遍历。如果您确实需要最大流(可以直接从预流导出最小切割并使用它验证预流),那么我知道两种方法 第一种方法在关于push-relabel算法的原始Goldberg--Tarjan论文中有介绍。本质上,第二阶段的实现几乎与第一阶段完全相同。唯一的区别是源保持在距离n处(而不是接收器,保持在距离0处)。这具有将多余部分路由回源的效果 我不确定第二种方法是在哪里描述的。我知道它在Goldberg的实现中,它是基于(参见
convert\u preflow\u to\u flow
)的