2

我已经使用福特富尔克森算法计算了最大流量,现在我想实现需要计算最大值的项目选择问题。不。可行的项目。我需要找到一个包含 no 的 min.cut。具有最大利润的可行项目。找到最小值的算法应该是什么。cut *在知道图中的最大流量之后。*我如何使用最大流量来确定包含即否的切割。对最大流量有贡献的节点数。我需要选择最佳节点集,以使收入最大化。在我的应用程序中,每个节点都与一个收入相关联,它也可以是正数和负数。并且也有优先级限制,例如,如果选择 a 比选择 b&c 也必须选择 有人能告诉我如何实现吗?


我在最大流图中将其转换如下:如果收入(节点)> 0 从源-> 节点添加一条边,否则从节点-> 接收器添加一条边,我为优先约束创建了一个无限容量的 egde

4

2 回答 2

0

Ford Fulkerson 在某种程度上是一种元算法,因为它可以以几种不同的方式实现(Edmonds-Karp 是 FF 算法的实例化)。如果不知道您实施它的方式或您拥有什么信息,您的问题很难回答。

理想情况下,您正在使用某种残差图在算法中进行某种类型的广度优先搜索。当你这样做时,当你的 BFS 找不到接收器时,算法应该停止。一旦发生这种情况,您的剪辑的第一组是您能够通过 BFS 找到的所有节点,另一组是您找不到的所有节点。

如果您使用算法的标记版本,则形成切割的集合是标记集和未标记集。

我希望这有帮助。诚然,您的问题对我来说有点难以解析。如果您无法在此处找到足够的帮助,我会提供与 matcheek 相同的建议(如果您有该书,请查看 Wikipedia 或 CLRS)。

于 2012-07-06T18:14:52.687 回答
0

我们可以通过从源顶点运行 dfs/bfs 来计算 min.cut (A,B),然后在最终残差图中找到饱和边,即在没有增广路径之后

于 2012-07-11T18:18:44.427 回答