1 给定一个流网络 G = (V, E),如果我们提高其中一个
边 ei ∈ E 的容量就会提高这个网 络的最大流量,我们称这样的边 ei 为向上临界边。
是否每个流网络有一个向上临界边?简述一个算法鉴别每个网络 G 中的向上临界边,并简 要证明其正确性,分析它的最坏运行时间复杂度
2.给定一个流网络 G = (V, E),我们如果降低其中一个边 ej ∈ E 的容量就会降低这个网 络的最大流量,我们称这样的边 ej 为向下临界边。
鉴别向上临界边和向下临界边的方法是否相同呢?如果不,简述一个算法鉴别每个网络 G 中的向下临界边,并简要证明其正确性,分析它的最坏运行时间复杂度
1.
不是每个流网络都有一个向上临界边。考虑一个简单的流网络只有a,b,c三个点,并且c(a,b) = c(b,c) = 1 ;那么此时提高一条边的容量不会提高这个流网络的容量。
鉴别向上临界边算法。
1)对于给定流网络G(V,E),计算出一个最大流f,则由f诱导的G的剩余网络为Gf=(V, Ef )。
2)设U是源点s可以达到的点的集合,V是可以达到汇点t的集合。
3)那么U和V中所有的点构成的边都是流网络G的向上临界边。
证明:对于满足上述条件的边,当我们提高其中一个边 ei ∈ E 的容量,都会产生一条增广路径,则此时会提高这个网络的最大流量。
算法最坏的时间复杂度:取决于求最大流网络使用算法的时间复杂度。
2.
不相同。
鉴别向下临界边算法。
1)计算出一个最大流f,则由f诱导的G的剩余网络为Gf=(V, Ef )。
2)对其中两个点u,v,边(u,v)存在于流网络,而不在剩余网络。
3)此时边(u,v)是向下临界边。
证明:反证法。假设一条满足上述条件的边(u,v)不是向下临界边,则降低该边的容量不会降低这个网络的最大容量。又因为(u,v)是饱和的,其f((u, v)) =c((u, v),若此时降低(u,v)的容量,即c((u, v)减少,则f((u, v))必定减少,则当前的最大容量必定减少,与假设矛盾。因此此时边(u,v)是向下临界边。
算法最坏的时间复杂度:还是取决于求最大流网络使用算法的时间复杂度,而对于找存在于流网络G,而不在剩余网络Gf的边(u,v),遍历G中所有的边需要的时间复杂度最坏是O(E),其一定是比求最大流网络使用算法的时间复杂度要小。因此总体来看,算法的时间复杂度最坏还是取决于求最大流网络使用算法的时间复杂度。