槑芈耂嘙 4星
共回答了481个问题 评论
普里始算法和克鲁斯卡尔算法区别
边数较少可以用Kruskal克鲁斯卡尔算法,因为克鲁斯卡尔算法算法每次查找最短的边。边数较多可以用普里姆算法,因为它是每次加一个顶点,对边数多的适用。
克鲁斯卡尔算法
假设WN=(V{E})是一个含有n个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含n个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有n棵树的一个森林。之后,从网的边集 E中选取一条权值最小的边,若该条边的两个顶点分属不同的树,则将其加入子图,也就是说,将这两个顶点分别所在的两棵树合成一棵树;反之,若该条边的两个顶点已落在同一棵树上,则不可取,而应该取下一条权值最小的边再试之。依次类推,直至森林中只有一棵树,也即子图中含有n-1条边为止。
普里姆算法
假设WN=(V{E})是一个含有n个顶点的连通网,
TV是WN上最小生成树中顶点的集合,TE是最小生成树中边的集合。显然,在算法执行结束时, TV=V,而TE是E的一个子集。在算法开始执行时,TE为空集,TV中只有一个顶点,因此,按普里姆算法构造最小生成树的过程为:在所有“其一个顶点已经落在生成树上,而另一个顶点尚未落在生成树上”的边中取一条权值为最小的边,逐条加在生成树上,直至生成树中含有n-1条边为止。
14小时前
猜你喜欢的问题
23天前3个回答
23天前5个回答
23天前1个回答
23天前1个回答
23天前1个回答
23天前3个回答
热门问题推荐
1个月前1个回答
3个月前1个回答
1个月前1个回答
1个月前3个回答
2个月前1个回答
20天前1个回答
1个月前2个回答
2个月前1个回答
3个月前1个回答