本题是关于生成树方面,只要白边优先和黑边优先两种顺序做两次最小生成树,得到白边数量的区间。
下面来证明该算法的正确性,不妨考虑白边数量为最小值m的生成树T,我们来证明可以得到白边数量为m+1.
对图中的顶点数目进行归纳, n = 2, 显然成立;
假设n <= k时成立,下面来考虑n = k + 1时
的生成树,考虑T的任意一条黑边,去除这条黑边得到2个联通区域T1(V1), T2(V2), 如果{V1,V2}的割边有一条白边,替换掉即可。
否则因为存在最大值为M(大于m)的生成树, 必然在某个联通区域,不妨设为T1存在一个生成树T3,满足T3的白边数量大于T1。
下面我们来证明原图G1中必定包含一个白边数量为m(T1)+1的最小生成树, 因为v(T1) <= k, min(G1) <= m(T1) , MAX(G1) >= m(T3)
由数学归纳法知,G1中一定存在一个白边数目大于等于min(G1)小于等于max(G1)的最小生成树,因为m(T1) + 1 >= m(T1) >= min(G1)
m(T1) + 1 <= m(T3)<=max(G1), 所以成立.