最大流量和最大流量之间有什么区别。我正在阅读这些术语,同时使用福特福克森算法,他们很混乱。我尝试上网,但无法得到合理的答案。我相信最大流量是非常清楚的,因为它意味着网络中可以从源传输到汇的最大流量,但究竟是最大流量。
如果可能的话,请以外行的方式回答。
感谢。
答案 0 :(得分:3)
想想山顶, 他们每个人都是最大的解决方案, 附近没有高于他们的地方, 但只有珠穆朗玛峰的顶部有最大的高度和 因此是最大的解决方案。
让我用几何术语解释一下: 想想一架飞机(例如大量的纸张)。 飞机上的每个点都是解决问题的可能方法。 每个点的高度是与该点对应的解的质量。 在优化中,我们希望找到最优解,即平面上的最高点。 找到最佳解决方案的一个想法是从平面中的可能解决方案开始 一点一点地改进它: 每次我们从一个点移动到一个靠近它的点,这个点更高。 这称为本地搜索算法。 当我们到达高于其附近所有点的点时,此过程停止。 这一点被称为局部最优。 相应的解决方案称为最大解决方案,因为我们无法通过移动到其附近的任何解决方案来提高解决方案的质量。 但是,最大解决方案不一定是最佳解决方案, 与邻居相比,它是最佳的。
如果满足,有一些共同的条件 我们不会在飞机上具有非全局最优的局部最优值。 在这种情况下,我们可以使用本地搜索算法来找到最佳解决方案。 一个这样的条件是如果解的平面是凸的, 直觉地,对于每两个点我们都有线上的所有点连接它们 也在解决方案领域和 每个人的质量都可以从中确定 点与两个端点的相对距离和 两个端点的质量。 在convex optimization中研究凸空间的优化。
现在,让我们回到最大流量问题。 修复图形作为输入。 想想满足容量和流量保持的每个流程 要求作为一个要点。 我们称之为有效流程。 我们想找到最大流量。 如果我们可以通过增加或减少获得一个点,则两个点彼此靠近 流经从源到水槽的路径。
我们可以从所有边缘的流量为零的流量开始 (这是一个有效的流程)。 在每个步骤中,我们在更新的剩余容量图中找到从源到接收器的路径(每个边的权重是其未使用的容量的量) 以某种方式(例如使用BFS)并通过添加它来增加流量。 这为我们提供了一种局部搜索算法。 问题是解决方案的空间不是凸起的 我们最终可能会有一个流程 我们不能再增加,但它不是最大流量。
我们能做什么? 一个想法是将解决方案的空间改为凸面。 为了直觉,想想飞机上的一颗星。 恒星内部的点不会形成凸起的空间 但是我们可以通过在解决方案空间中包含更多点来将其转换为凸空间 把它变成五角大楼。
这基本上是我们通过考虑现有流程来做的 图的原始边 作为新边(称为残边) 其上的流量对应于减少原始边缘上的现有流量。 这使得空间凸起,我们的局部搜索算法不会卡在解决方案上 这是局部最优但不是全局最优的。