最小生成树与最短路径的区别以及实现方法

本文探讨了最小生成树和最短路径的区别:最小生成树确保整个图的路径和最小,而非单点最短路径。介绍了两种最小生成树的实现算法——Prim's和Kruskal's,并提供了Prim算法的代码实现。
摘要由CSDN通过智能技术生成


一 区别
最小生成树能够保证整个拓扑图的所有路径之和最小,但不能保证任意两点之间是最短路径。
最短路径是从一点出发,到达目的地的路径最小。

二 实现方法
1. 最小生成树
最小生成树有两种算法来得到:Prims算法和Kruskal算法。
Kruskal算法:根据边的加权值以递增的方式,一次找出加权值最低的边来构建最小生成树,而且规定:每次添加的边不能造成生成树有回路,知道找到N-1个边为止。
Prims算法:以每次加入一个的临界边来建立最小生成树,直到找到N-1个边为止。其规则为:以开始时生成树的集合(集合U)为起始的定点,然后找出与生成树集合邻接的边(集合V)中,加权值最小的边来建立生成树,为了确定新加入的边不会造成回路,所以每一个新加入的边,只允许有一个顶点在生成树集合中,重复执行此步骤,直到找到N-1个边为止。
下面是一段实现Prims算法的代码:

            while(alreadyVisited.size() != Switches.size())
            {
                Vector neighbors = getNeighborSet(topo, Switches, alreadyVisited);
                Vector CostOfNeighbors = new Vector();
                int cost = 40000000;
                ASwitch srcsw = null, dstsw = null;
                for(int i = 0;i < neighbors.size();i++)
                {
                    ASwitch sw1 = (ASwitch)neighbors.get(i);
                    for(i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值