《算法导论(原书第3版)》第23章部分题目解答
第23章 最小生成树
23.1 最小生成树的形成
23.1-5
对于任意一个被e横跨的割,我们知道,它必然会被另一个与e在同一个环上的边横跨。而“e为连通图\(G=(V,E)\)的某条环路上权重最大的边”,如果e是唯一最大的,那么所以任意时刻e不会成为一个安全边,所以图G中必然存在一棵不包含边e的最小生成树;如果在环上存在与e权重相同的边,且在取安全边的时候需要在两者中取一个,那么取这条边而不是e即可。所以图G中存在一棵不包含边e的最小生成树。
23.1-6
证明:
用反证法证明:
假设这种图有2个生成树\(T_1,T_2\)。由于\(T_1,T_2\)不同,所以必然存在边\((x_1,y_1),(x_2,y_2)\)使得\((x_1,y_1)\)在\(T_1\)中而不在\(T_2\)中,同时\((x_2,y_2)\)在\(T_2\)中而不在\(T_1\)中。此时我们可以找到一个割\((S,V-S),S=\{x_1,x_2\}\)。根据已知条件,对于这个割,必然仅有唯一的一个横跨它的轻量边,所以\((x_1,y_1),(x_2,y_2)\)中必然有至少1个被替换后会使得整个生成树的权值减少,所以\(T_1,T_2\)中至少有1个不是最小生成树,矛盾。
得证。
举例:
对于图\(G=(V,E),V={1,2,3},E=\{(1,2,1),(1,3,1)\}\)(三元组(x,y,z)表示x,y的边权值为z),满足仅含有一棵最小生成树的条件,但是对于割\((S,V-S),S=\{1\}\),不满足仅唯一一条横跨它的轻量级边。
23.1-8
证明:
设\(T_1\)是图G的另外一棵最小生成树,且\(T\neqT_1\),那么必然存在一组边\((x_1,y_1),...,(x_k,y_k)\),这些边在T中而不在\(T_1\)中。我们选取其中一条边\((x_1,y_1)\),将其加入到\(T_1\)中,这样必然会使\(T_1\)中出现一个环。然后我们分析这个环:如果环中存在其他的边权值大于\((x_1,y_1)\),那么删掉这条边后得到的树的权重小于\(T_1\),这与\(T_1\)是一棵最小生成树矛盾,所以环中其他边权值必然小于等于\((x_1,y_1)\)。相应地,假设所有边权值小于\((x_1,y_1)\),那么删掉\((x_1,y_1)\)后得到的树的权重小于T的权重,与T是一棵最小生成树矛盾。所以环中必然有其它边权值中(x_1,y_1)相等,而且这些同(x_1,y_1)权值相等的边当中必然存在至少一条不在T中。这样我们可以把那条边从\(T_1\)中删除,如此得到的树\(T_2\)它的边权重有序列表不会发生改变,但是与T相同的边的数目增加了。这样一直操作下去,最终会得到一颗与T相等的树,而在这个过程中每次操作后生成的新树的边权重有序列表都与操作前的相同,即边权重有序列表始终未发生改变。
得证。
相关推荐
一颗有n个顶点的生成树有且仅有n-1条边,如果生成树中再添加一条边,则必定成环。此算法可以称为“加边法”,初始最小生成树边数为0,每迭代一次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。