注册 登录
编程论坛 数据结构与算法

最小生成树

ivapple 发布于 2008-11-15 03:08, 2869 次点击
对于一个各边权值均不相等的简单连通图,它的最小生成树唯一吗,
 我感觉不唯一,可就是很难画出个图来验证,难道是唯一的,还请高手指点。
16 回复
#2
geninsf0092008-11-15 23:07
在下不才,俺想请教一下"简单连通图"是啥子图?
我只知道简单路径这个概念,无向图连通与非连通的概念,
有向图的强连通的概念.
#3
ivapple2008-11-16 01:24
没有自环和多重边的图叫简单图
#4
ivapple2008-11-16 03:05
是不是应该说成连通的简单图好些
简单连通图在理解上有误导,会让人有“简单连通”和“复杂连通”的感觉。
#5
geninsf0092008-11-16 13:36
直觉觉得可能是唯一的,不过可以考虑用反证法证明一下,
分析中...
#6
ivapple2008-11-17 01:41
再多些人讨论啊?
#7
ivapple2008-11-29 03:15
顶起
#8
jdshaoheyi2008-11-30 15:03
对于一个各边权值均不相等的简单连通图,它的最小生成树唯一
#9
jdshaoheyi2008-11-30 15:11
首先最小生成树是在n个节点构成的网中,选取n-1条边,可以建立一个连通图,现在假设,我们用普里姆算法或者是克鲁斯卡尔算法,计算出一棵最小生成树(记住你已经计算出了一个最小生成树了),现在你又有幸的到了一个最小生成树,和上一次计算出的权值和是一样的,但是要知道这棵最小生成树也只有n-1条边啊!也就是说第一次算出的最小生成树和第二次算出的生成树只有一条边不一样,那会发生什么事情呢?
#10
geninsf0092008-11-30 15:25
"也就是说第一次算出的最小生成树和第二次算出的生成树只有一条边不一样"
-----------啥意思?怎么解释?我们只知道图中一共有
n个顶点,但不知道多少条边啊?请多多指教,

我感觉也应该是唯一的,可感觉很难证明,我在试图用
反证法证明.
#11
nuciewth2008-11-30 20:40
以下是引用ivapple在2008-11-15 03:08的发言:

对于一个各边权值均不相等的简单连通图,它的最小生成树唯一吗,
 我感觉不唯一,可就是很难画出个图来验证,难道是唯一的,还请高手指点。

当恰好有两条权值相同的边时,你要选择那条,这样就会出现不同的生成树。
#12
ivapple2008-12-03 19:00
是唯一的!
因为我昨天刚发现有一道题目让证明这个结论。
到底如何证啊?这问题困扰我好久了。
#13
missiyou2008-12-03 20:11
小弟来解吧,
吹一点,很简单的。
简单连通图。意思就是

A----------B
|          |
|          |
C----------D
从任一点出好,能够通过深度优先和广度优先遍历所有结点。例子,从A点出发,深度的,就是ABDC所有结点都访问过了,就是简单连通图了。
所以最小生成树也就是唯一的了。
#14
geninsf0092008-12-03 20:17
回复 第13楼 missiyou 的帖子
斑竹,我还是每听懂你说的意思啊?你说的深度优先遍历没有涉及权值啊?
#15
ivapple2008-12-07 04:42
我有了个想法:
假定存在两棵不同的最小生成树A,B
对于两棵树A和B中任意相同点对(i,j)
一定是下面的情况:
1.A中有边相连,B中也有边相连,此时这两点之间的边一定是同一条(因为没有多重边)
2.A中无边相连,B中也无边相连
3.A中有边相连,B中无边相连
4.A中无边相连,B中有边相连

因为两棵树不同,所以3或者4的情况必然至少出现一次
(如果只是1,和2,那么两棵树就完全一样了)
假设存在点对(v,w)属于情况3,(4类似)
那么我们将A中点对(v,w)间的边e加到B中,
B中会形成唯一的一条包含边e的回路。
可以肯定e一定不是这个回路中权值最大的边,
(在各边权值都不等的情况下,回路中权值最大的边不会出现在任意一个最小生成树中)   !!! 有定理支持


显然A这棵最小生成树包含e,所以如果e的权值最大就会出现矛盾。
那么我们从B中形成的这个回路中去掉一个权值最大的边(一定不是e)
就会得到另一颗树C,显然树C的权值比最小生成树树B要小。
(因为去掉边的权值要比加入边e的权值大)

这就与B是最小生成树矛盾。
#16
geninsf0092008-12-07 19:30
回复 第15楼 ivapple 的帖子
言之有理.
#17
阝子健2011-07-07 19:43
唯一
1