算法导论图那里的定理23.1的证明看不太懂
定理(《算法导论》中定理23.1)(以白话阐述):G=(V,E) 是个无向连通加权图。A 是 E 的一个子集,它包含于 G 的某个最小生成树中。设割 (S, V-S) 是G的任意一个不妨害A的割(就是说A中任何一条边的两个端点要么全在S中,要么全在V-S中),边(u,v)是通过割(S,V-s)的一条轻边(就是说(u,v)是所有端点分布于S和V-S的边中权值最小的),则(u,v)对集合A是安全的。
证明:
图3演示出了定理1的证明。S中的结点为黑色,V-S中的结点为白色,边(u,v)与T中从u到v的通路P中的边构成一回路。由于u和v处于割(S,V- S)的相对的边上(什么叫相对的边?),因此在T中的通路P上至少存在一条边也通过割(为什么?通过割的边必须成对出现吗?)。设(x,y)为满足此条件的边。因为割不妨害A(为什么?前文说若集合A中没有边通过割,则我们说割不妨害边的集合A,但并不表明割就不会妨害集合A啊),所以边(x,y)不属于A。又因为 (x,y)处于T中从u到v的唯一通路上,所以去掉边(x,y)就会把T分成两个子图。这时加入边(u,v)以形成一新的生成树T¢=T-{(x,y)}∪{(u,v)}。 算法导论
[解决办法]
lz看的第2版吧。
1.相对的边:其实是说u和v一个在S中,一个在V-S中,我觉得这是翻译的问题,在第三版中原话是:u和v分别处在割(S,V-S)的两端。不知道原版是怎么说的
2.T是最小生成树,那么肯定存在这样一条边,边的一端在S中,一端在V-S中,也就是该边通过割。不知道你说的通过割的边成对出现什么意思
3.你没弄清A的含义吧,A是E的子集,也就是说A就是边的集合。按照妨害的定义就明了了吧