生成树实验

合集下载

最小生成树 实验报告

最小生成树 实验报告

最小生成树实验报告最小生成树实验报告一、引言最小生成树是图论中的一个重要概念,它在实际问题中有着广泛的应用。

本次实验旨在通过编程实现最小生成树算法,并通过实验数据对算法进行分析和评估。

二、算法介绍最小生成树算法的目标是在给定的带权无向图中找到一棵生成树,使得树上所有边的权重之和最小。

本次实验我们选择了两种经典的最小生成树算法:Prim 算法和Kruskal算法。

1. Prim算法Prim算法是一种贪心算法,它从一个顶点开始,逐步扩展生成树的规模,直到包含所有顶点为止。

算法的具体步骤如下:(1)选择一个起始顶点,将其加入生成树中。

(2)从与生成树相邻的顶点中选择一个权重最小的边,将其加入生成树中。

(3)重复上述步骤,直到生成树包含所有顶点。

2. Kruskal算法Kruskal算法是一种基于并查集的贪心算法,它首先将图中的边按权重从小到大进行排序,然后逐个加入生成树中,直到生成树包含所有顶点为止。

算法的具体步骤如下:(1)将图中的边按权重从小到大进行排序。

(2)逐个加入边,如果该边的两个顶点不在同一个连通分量中,则将其加入生成树中。

(3)重复上述步骤,直到生成树包含所有顶点。

三、实验过程本次实验我们使用C++语言实现了Prim算法和Kruskal算法,并通过随机生成的图数据进行了测试。

1. Prim算法的实现我们首先使用邻接矩阵表示图的结构,然后利用优先队列来选择权重最小的边。

具体实现过程如下:(1)创建一个优先队列,用于存储生成树的候选边。

(2)选择一个起始顶点,将其加入生成树中。

(3)将与生成树相邻的顶点及其边加入优先队列。

(4)从优先队列中选择权重最小的边,将其加入生成树中,并更新优先队列。

(5)重复上述步骤,直到生成树包含所有顶点。

2. Kruskal算法的实现我们使用并查集来维护顶点之间的连通关系,通过排序后的边序列来逐个加入生成树中。

具体实现过程如下:(1)将图中的边按权重从小到大进行排序。

生成树协议STP 实验报告

生成树协议STP 实验报告

实验三生成树协议STP1、项目目的理解生成树协议STP的原理及配置。

2、项目描述在网络建设中,为了提高网络的可靠性,网络管理员用两条链路将交换机互连,现要在交换机上做适当配置,使网络避免环路。

本项目以两台3560交换机为例,两台交换机分别命名为:SwitchASwitchB。

PC0和PC1在同一个网段,假设IP地址分别为:192.168.1.1 ,192.168.1.2 ,子网掩码为:255.255.255.03、实现功能使网络在有冗余链路的情况下避免环路的产生,避免广播风暴等。

4、项目拓扑生成树如图所示。

5、项目设备思科3560交换机(2台)、PC机(2台)。

6、项目步骤(1)在SwitchA查看生成树情况,用show spanning-tree brief命名输出。

(2)在SwitchB查看生成树情况,用show spanning-tree brief命名输出。

验证测试:在SwitchA上的Fa0/24端口处于BLK状态,分析原因?(3)修改SwitchA的BID优先级,让SwitchA成为Root Bridge。

设置交换机SwitchAr优先级为4096,数值最小的交换机为根交换机(也称根桥)交换机SwitchBr优先级采用默认优先级(32768),因此SwitchA将成为根交换机。

SwitchA(config)#spanning-tree vlan 1 priority 4096(4)在SwitchA上查看show spanning-tree 命名输出结果。

(5)在SwitchB上查看show spanning-tree 命名输出结果。

验证测试:在SwitchB上的Fa0/23端口处于BLK状态,分析原因?(6)如果将SwitchB的Fa0/23和Fa0/24的状态调换过来,可能通过修改什么参数来实现?可以在SwitchA降低接口优先级来实现。

SwitchA(config)#int fa0/24SwitchA(config-if)#spanning-tree vlan 1 port-priority 112(7)修改后,在SwitchA查看show spanning-tree 命名输出结果。

实验二 生成树实验

实验二 生成树实验
实验二 生成树实验
实验拓扑
IP 地址设置:
设备 交换机A 交换机B PC1 PC2 IP 192.168.1.1 192.168.1.2 192.168.1.101 192.168.1.102 Mask 255.255.255.0 255.255.255.0 255.255.255.0 255.255.255.0
网线连接:
交换机A e0/0/1 交换机A e0/0/2 交换机B 交换机B e0/0/3 e0/0/4
PC1
PC2
交换机A e0/0/24
交换机B e0/0/24
实验步骤

1、按照上面的要求连接网络拓扑,设置各设备的 IP地址,四台设备的默认网关都是192.168.1.254。 测试四台设备的互通性。 2、“PC1 ping PC2 –t ”观察现象 是否能ping通; 所有连接网线的端口的绿灯很频繁地闪烁,表 明该端口收发数据量很大,已经在交换机内部 形成广播风暴。
switchA(Config)#spanning-tree

实验步骤

4、继续使用“PC1 ping PC2 –t ”观察现象
能够ping通
拔掉交换机B端口4的网线,观察现象,写在实
验报告中。 再插上交换机B端口4的网线,观察现象,写在 实验报告中。
实验步骤


5、在switchA和switchB上分别建立VLAN 10,并 把e0/0/24口都加入。再测试四台设备的互通性(应 该是SWA和SWB互通,其他都不通,因为跨交换 机之间的trunk模式未设置)。 6、分别设置switchA的e0/0/1和e0/0/2,,switchB 的e0/0/3和e0/0/4口的模式为trunk。再测试四台设 备的互通性(应该是switchA和switchB互通,PC1 和PC2互通)。

生成树_配置_实验报告

生成树_配置_实验报告

一、实验目的1. 理解生成树协议(STP)的基本原理和工作机制;2. 掌握生成树协议的配置方法;3. 通过实验验证生成树协议在网络中的实际应用效果。

二、实验环境1. 实验设备:两台华为S5700交换机、两台PC机;2. 实验软件:华为网络设备仿真软件;3. 实验拓扑:两台交换机通过一条物理链路连接,两台PC机分别连接到两台交换机上。

三、实验原理生成树协议(Spanning Tree Protocol,STP)是一种用于在网络中消除环路并实现冗余链路备份的协议。

当网络中出现环路时,STP会阻塞部分端口,形成一个没有环路的树形结构,确保网络的高可用性和容错能力。

STP通过交换机之间的BPDU(Bridge Protocol Data Unit)报文进行信息交互,选举根网桥,并确定每个交换机的根端口和指定端口。

根端口是连接到根网桥的端口,指定端口是连接到同一VLAN且路径最短的端口。

其余端口被阻塞,不参与数据转发。

四、实验步骤1. 配置交换机名称和密码;2. 配置交换机接口;3. 配置VLAN;4. 配置STP;5. 验证STP配置效果。

五、实验过程1. 配置交换机名称和密码```bashS1>display versionS1>sysname S1S1>display versionS1>enableS1#configure terminalS1(config)#username admin password simple 123456 S1(config)#exit```2. 配置交换机接口```bashS1>display ip interface briefS1#interface GigabitEthernet0/0/1S1(config-if)#ip address 192.168.1.1 24S1(config-if)#exitS1#interface GigabitEthernet0/0/2S1(config-if)#ip address 192.168.1.2 24S1(config-if)#exit```3. 配置VLAN```bashS1>display vlanS1#vlan 10S1(config-vlan)#name VLAN10S1(config-vlan)#exitS1#interface GigabitEthernet0/0/1S1(config-if)#port link-type access S1(config-if)#port default vlan 10 S1(config-if)#exitS1#interface GigabitEthernet0/0/2S1(config-if)#port link-type access S1(config-if)#port default vlan 10 S1(config-if)#exit```4. 配置STP```bashS1>display stpS1#stpmode stpS1>display stpS1#interface GigabitEthernet0/0/1S1(config-if)#port link-type access S1(config-if)#port default vlan 10 S1(config-if)#exitS1#interface GigabitEthernet0/0/2S1(config-if)#port link-type access S1(config-if)#port default vlan 10S1(config-if)#exit```5. 验证STP配置效果```bashS1>display stpS1>display stp interface GigabitEthernet0/0/1S1>display stp interface GigabitEthernet0/0/2S1>ping 192.168.1.2```六、实验结果与分析1. 实验结果通过实验,成功配置了生成树协议,并验证了STP在网络中的实际应用效果。

实验5最小生成树算法的设计与实现(报告)

实验5最小生成树算法的设计与实现(报告)

实验5 最小生成树算法的设计与实现一、实验目的1、根据算法设计需要, 掌握连通图的灵活表示方法;2、掌握最小生成树算法,如Prim、Kruskal算法;3、基本掌握贪心算法的一般设计方法;4、进一步掌握集合的表示与操作算法的应用。

二、实验内容1、认真阅读算法设计教材和数据结构教材内容, 熟习连通图的不同表示方法和最小生成树算法;2、设计Kruskal算法实验程序。

有n个城市可以用(n-1)条路将它们连通,求最小总路程的和。

设计测试问题,修改并调试程序, 输出最小生成树的各条边, 直至正确为止。

三、Kruskal算法的原理方法边权排序:1 3 14 6 23 6 41 4 52 3 53 4 52 5 61 2 63 5 65 6 61. 初始化时:属于最小生成树的顶点U={}不属于最小生成树的顶点V={1,2,3,4,5,6}2. 根据边权排序,选出还没有连接并且权最小的边(1 3 1),属于最小生成树的顶点U={1,3},不属于最小生成树的顶点V={2,4,5,6}3. 根据边权排序,选出还没有连接并且权最小的边(4 6 2),属于最小生成树的顶点U={{1,3},{4,6}}(还没有合在一起,有两颗子树),不属于最小生成树的顶点V={2,5}4. 根据边权排序,选出还没有连接并且权最小的边(3 6 4),属于最小生成树的顶点U={1,3,4,6}(合在一起),不属于最小生成树的顶点V={2,5}5. 根据边权排序,选出还没有连接并且权最小的边(3 6 4),属于最小生成树的顶点U={1,2,3,4,6},,不属于最小生成树的顶点V={5}6. 根据边权排序,选出还没有连接并且权最小的边(3 6 4),属于最小生成树的顶点U={1,2,3,4,5,6}此时,最小生成树已完成四、实验程序的功能模块功能模块:bool cmp(Edge a,Edge b); //定义比较方法x);//在并查集森林中找到x的祖先int g etfa(intint s ame(int x,int y); //判断祖先是否是同一个,即是否联通 void merge(int x,int y); //合并子树,即联通两子树sort(e+1,e+m+1,cmp); //对边按边权进行升序排序详细代码:#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define M AXN_E 100000#define M AXN_V 100000using namespace std;struct Edge{int f m,to,dist;//边的起始顶点,边的到达顶点,边权}e[MAXN_E];int f a[MAXN_V],n,m; //顶点数组,顶点总数,边总数 //定义比较,只是边权比较bool cmp(Edge a,Edge b){return a.dist < b.dist;}//查找x的祖先是在并查集森林中找到x的祖先x){//getfaint g etfa(intreturn fa[x];if(fa[x]==x)else r eturn fa[x] = getfa(fa[x]);}//判断祖先是否是同一个,即是否联通int s ame(int x,int y){return getfa(x)==getfa(y);}//合并两棵树void merge(int x,int y){int f ax=getfa(x),fay=getfa(y);fa[fax]=fay;}int m ain(){int i;cout<<"请输入顶点数目和边数目:"<<endl;cin>>n>>m;//n为点数,m为边数//输出顶点信息cout<<"各个顶点值依次为:"<<endl;for(i=0;i<n;i++){fa[i]=i;if(i!=0)cout<<fa[i]<<" ";}cout<<endl;cout<<"请输入边的信息(例子:1 4 5 从顶点1到顶点4的边权为5)"<<endl;for(i=1;i<=m;i++)用边集数组存放边,方便排序和调用 cin>>e[i].fm>>e[i].to>>e[i].dist;//sort(e+1,e+m+1,cmp); //对边按边权进行升序排序表示目前的点共存在于多少个集合中,初始情况是每 int r st=n,ans=0;//rst个点都在不同的集合中for(i=1;i<=m && rst>1;i++){int x=e[i].fm,y=e[i].to;函数是查询两个点是否在同一集合中 if(same(x,y))continue;//sameelse{函数用来将两个点合并到同一集合中 merge(x,y);//mergerst--;//每次将两个不同集合中的点合并,都将使rst值减1这条边是最小生成树中的边,将答案加上边权 ans+=e[i].dist;//}}cout<<ans;return 0;}五、测试数据和相应的最小生成树Input:6 101 2 61 3 11 4 52 3 52 5 63 4 53 5 63 6 44 6 25 6 6Putout:18生成树为:七、思考题1、微软面试题一个大院子里住了50户人家,每家都养了一条狗,有一天他们接到通知说院子里有狗生病了,并要求所有主人在发现自己家狗生病的当天就要把狗枪杀掉。

生成树STP

生成树STP

生成树协议
一.实验要求:
1.了解交换机中使用生成树的意义;
2.掌握STP的工作原理;
3.熟悉STP在园区网的部署;
4.掌握生成树协议的基本配置。

二.实验设备:
3台交换机
三.实验步骤:
1. 实验拓扑图:
将3台交换机通过制定的端口如图连接。

2. 配置trunk链路使交换机互联
注:配置trunk链路后,交换机Switch0默认的阻塞端口为:fa0/2,如拓扑图中所示3. 配置VTP,在Switch0下配置VTP服务模式,其他2台交换机配置Vtp客户模式VTP客户模式:
VTP服务模式:
4. 在交换机Switch0中划分3个VLAN,其他2台交换机会自动更新
5. 在交换机Switch0中通过配置生成树协议将VLAN2设置优先级
同理,在交换机1和2中分别设置VLAN3和VLAN4为优先。

6.在特权模式下,分别在3台交换机上通过命令:show spanning-tree 查看各自VLAN下的端口连通情况
四.实验结果:
在交换机0下查看得知:
在VLAN2中,端口fa0/1,fa0/2都是是畅通的。

在VLAN3中,端口fa0/1畅通,端口fa0/2阻塞。

在VLAN4中,端口fa0/1阻塞,端口fa0/2畅通。

在交换机1和2中查看3个VLAN结果一样,都是畅通的,因为未配置生成树协议时,这2个交换机的连接端口都是连通的,只有交换机0的端口fa0/2是阻塞的。

生成树协议实验报告总结

生成树协议实验报告总结

生成树协议实验报告总结《生成树协议实验报告总结》嘿,家人们!今天来给大家唠唠我做生成树协议实验的那些事儿,总结一下我的感受和见解,保证让你们感同身受呀。

一开始,看到这个实验的时候,我心里就犯嘀咕:“哎呀呀,这是啥玩意儿啊,咋感觉这么高深莫测呢。

”不过咱也不能退缩不是,硬着头皮就上了。

在做实验的过程中,那可真是状况百出啊。

一会儿这边连线出问题了,一会儿那边参数又设置错了,感觉自己就像个无头苍蝇到处乱撞。

不过还好,经过一番捣鼓,总算是有点眉目了。

然后呢,就开始观察实验现象啦。

嘿,你还别说,看着那些网络拓扑结构一点点变化,还真挺有意思的。

就好像在看一个小世界在我面前一点点构建起来一样。

这个生成树协议啊,就像是网络世界里的交通指挥员,指挥着数据流量该怎么走。

要是没有它呀,那可就乱套了,数据都不知道该往哪儿跑啦。

所以说,它的作用那是杠杠的呀!做这个实验,也让我深刻认识到了细节的重要性。

一个小小的参数设置错误,可能就导致整个实验失败。

这就好比盖房子,一块砖头没放好,整栋房子都可能歪了。

而且啊,团队合作也很重要。

我和小伙伴们一起讨论、一起解决问题,那感觉可带劲了。

要是自己一个人闷头干,估计还得费不少时间和精力呢。

最后,说一下我的经验教训吧。

首先,一定要认真看实验指导书,把每个步骤都搞清楚,不然肯定会出问题。

其次,遇到问题不要慌张,静下心来慢慢分析,总能找到解决办法的。

最后,就是要多和别人交流分享,说不定别人的一个小建议就能让你豁然开朗。

总之,这次生成树协议实验让我学到了不少东西,既有知识又有经验。

虽然过程有些曲折,但最后看到实验成功的时候,那种成就感真的是爆棚啊!希望我的这些感受和见解能对大家有所帮助,下次做实验的时候都能顺顺利利的啦!哈哈!。

生成树实训的实验报告

生成树实训的实验报告

一、实验目的通过本次生成树实训,加深对生成树概念的理解,掌握生成树的构建方法,学习使用网络设备配置生成树协议,并分析生成树在网络中的重要作用。

二、实验环境1. 实验设备:两台交换机、一台计算机、网线。

2. 实验软件:网络仿真软件(如GNS3)或实际网络设备。

三、实验内容1. 了解生成树的基本概念和作用。

2. 学习生成树的构建方法,包括STP(Spanning Tree Protocol)和RSTP(Rapid Spanning Tree Protocol)。

3. 使用网络设备配置生成树协议。

4. 分析生成树在网络中的重要作用。

四、实验步骤1. 了解生成树的基本概念和作用生成树是一种无环的连通子图,它包含一个图的所有节点,但不包含任何环。

在计算机网络中,生成树主要用于防止网络中的环路,避免广播风暴和网络性能下降。

2. 学习生成树的构建方法生成树的构建方法主要有以下两种:(1)STP(Spanning Tree Protocol)STP是一种基于桥优先级的生成树协议。

在STP中,每个交换机都有一个桥优先级,该优先级由桥ID(桥优先级+MAC地址)决定。

桥ID越小,优先级越高。

STP通过以下步骤构建生成树:- 选择根桥:所有交换机通过比较桥ID确定根桥。

- 计算每个交换机的端口角色:根端口、指定端口和非指定端口。

- 选择每个交换机的根端口和指定端口。

(2)RSTP(Rapid Spanning Tree Protocol)RSTP是一种改进的STP协议,它提高了网络恢复速度。

RSTP通过以下步骤构建生成树:- 立即阻塞所有端口:所有端口初始时处于阻塞状态。

- 立即转发端口:当检测到端口状态变化时,立即将端口转换为转发状态。

- 优化端口状态转换:RSTP使用端口状态转换时间优化网络恢复速度。

3. 使用网络设备配置生成树协议以RSTP为例,配置生成树协议的步骤如下:(1)在交换机上配置RSTP协议:```Switch> enableSwitch# configure terminalSwitch(config)# spanning-tree mode rstp```(2)查看交换机生成树状态:```Switch(config)# show spanning-tree summary```4. 分析生成树在网络中的重要作用生成树在网络中的重要作用如下:- 防止环路:生成树通过阻塞部分端口,避免网络中的环路,从而防止广播风暴和网络性能下降。

生成树实验报告

生成树实验报告

一、实验目的1. 理解生成树的概念和作用;2. 掌握Prim算法和Kruskal算法实现生成树的方法;3. 分析算法的时间复杂度和空间复杂度;4. 提高算法设计与分析能力。

二、实验原理生成树(Spanning Tree)是一个无向图的所有顶点构成的一棵树,且该树包含了原图的所有顶点。

生成树在计算机网络、电路设计等领域具有广泛的应用。

在无向图中,如果任意两个顶点之间都存在路径,则称该图是连通的。

对于连通图,一定存在一棵生成树。

Prim算法和Kruskal算法是两种常见的生成树算法,它们分别采用贪心策略和最小生成树算法实现。

三、实验内容1. Prim算法实现生成树(1)初始化:设置一个数组来记录每个顶点与当前生成树的连接情况,以及一个数组来记录每个顶点到生成树的距离。

(2)选择一个顶点作为起始顶点,将其距离设置为0,其他顶点距离设置为无穷大。

(3)在当前生成树上选择距离最小的顶点,将其加入生成树,并将该顶点与其他顶点的距离更新。

(4)重复步骤(3),直到所有顶点都被加入生成树。

2. Kruskal算法实现生成树(1)将所有边按照权值从小到大排序。

(2)创建一个并查集,用于判断两个顶点是否属于同一个集合。

(3)遍历排序后的边,对于每条边,判断其两个顶点是否属于同一个集合:(a)如果属于同一个集合,则跳过该边;(b)如果不属于同一个集合,则将这条边加入生成树,并将两个顶点所属的集合合并。

(4)重复步骤(3),直到生成树包含所有顶点。

四、实验步骤1. 创建一个无向图,包含若干顶点和边。

2. 使用Prim算法实现生成树,记录算法运行时间。

3. 使用Kruskal算法实现生成树,记录算法运行时间。

4. 分析两种算法的时间复杂度和空间复杂度。

五、实验结果与分析1. Prim算法实现生成树(1)顶点集合:V = {A, B, C, D, E, F}(2)边集合:E = {(A, B, 1), (A, C, 3), (A, D, 2), (B, C, 2), (B, D, 2), (C, D, 1), (C, E, 4), (D, E, 3), (D, F, 2), (E, F, 1)}(3)Prim算法运行时间:0.001秒2. Kruskal算法实现生成树(1)顶点集合:V = {A, B, C, D, E, F}(2)边集合:E = {(A, B, 1), (A, C, 3), (A, D, 2), (B, C, 2), (B, D, 2), (C, D, 1), (C, E, 4), (D, E, 3), (D, F, 2), (E, F, 1)}(3)Kruskal算法运行时间:0.001秒通过实验,我们可以得出以下结论:1. Prim算法和Kruskal算法均可以有效地实现生成树,且在时间复杂度和空间复杂度上表现良好。

生成树协议实验总结

生成树协议实验总结

生成树协议实验总结
嘿,朋友们!今天我来给大家分享一下生成树协议实验的总结。

一开始接触这个实验的时候,我就像只无头苍蝇,完全不知道从哪儿下手!(就好比你突然被扔到一个陌生的森林里,迷茫得很!)好在有老师和同学们的帮助。

我们小组在一起讨论得那叫一个火热,“这根线该接到哪儿啊?”“这个参数怎么设置呀?”(你一言我一语的,别提多热闹了。


真正开始做实验了,才发现每一步都不简单。

一会儿这里出错,一会儿那里又不对,真是急死人了!(感觉就像在走迷宫,老是碰到死胡同。

)但咱们可没轻易放弃!遇到问题就解决问题呗,我们一点一点地调试,一遍一遍地尝试。

记得有一次,就差那么一点点,眼看着就要成功了,结果又出了岔子,哎哟,那心情,简直低落到谷底了!(就像努力爬上山顶,却又一下子滑了下来。

)但是大家都相互打气,“没关系,再来一次!”终于,功夫不负有心人,我们成功啦!那种喜悦,真的无法用言语来形容!(就好像在黑暗中突然看到了曙光!)
通过这个实验,我深刻地明白了什么叫团队合作,每个人都不可或缺,大家一起努力,才能攻克难关。

(这就好比一艘船,只有大家齐心协力划桨,才能在大海中顺利前行!)而且做事情真的要有耐心,不能着急,一步一个脚印地走。

我觉得生成树协议实验真的让我收获满满,不仅学到了知识和技能,更重要的是体会到了和大家一起奋斗的快乐!这就是我的生成树协议实验总结,你们觉得怎么样呢?。

最小生成树实验报告

最小生成树实验报告

一、实验目的1. 通过上机程序,进一步加深对最小生成树的理解。

2. 掌握Kruskal算法。

3. 学会用程序解决离散数学中的问题。

4. 增强我们编写程序的能力。

二、实验内容求带权无向联通平面图的最小生成树三、实验环境我的实验依旧是在实验环境下完成的,而所设计的程序也在这个环境下通过了编译,运行和测试。

四、实验原理和实现过程利用Kruskal算法求最小生成树,原理如下:1.选取最小权边e1,置边数j 1.2.i=n-1结束,否则转c。

3.设已经选择的边为e1,e2,......,ei,在G中选取不同于e1,e2, (i)边,使{e1,e2,……,ei,ei+1}中无回路且ei+1是满足此条件的最小边。

4.i i+1,转b。

根据这个,还有以下思路:由G生成的最小生成树T所包含的边的集合1.按非降序权重将E中的边排序2.建立n个单元素集(每个顶点一个)3.最小生成树的边集合T初始为空4 .while |T|<n-15. 令e(x,y)为E中的下一条边6. if包含x的集合不是与包含y的集合不是同一个集合 then7. 将e(x,y)加入到T8. 将包含x的集合和包含y的集合合并9. end ifwhile五、实验源代码及分析#include<>struct Edge{int from, to, weight; rom); o);if(x!=y) rom, edge[k].to, edge[k].weight); rom, &edge[i].to, &edge[i].weight); eight>edge[j].weight){temp=edge[i];edge[i]=edge[j];edge[j]=temp;}printf("The minimum spanning tree is:\n");Kruskal(); //调用Kruskal算法return 0;}其中运用seek函数找出当前端点所在集合编号。

神州数码生成树实验

神州数码生成树实验

实验二十一、生成树实验一、 实验目的1、了解生成树协议的作用。

2、熟悉生成树协议的配置。

二、 应用环境交换机之间具有冗余链路本来是一件很好的事情,但是它有可能引起的问题比它能够解决的问题还要多。

如果你真的准备两条以上的路,就必然形成了一个环路,交换机并不知道如何处理环路,只是周而复始地转发帧,形成一个“死循环”,这个死循环会造成整个网络处于阻塞状态,导致网络瘫痪。

采用生成树协议可以避免环路。

生成树协议的根本目的是将一个存在物理环路的交换网络变成一个没有环路的逻辑树形网络。

IEEE802.1d协议通过在交换机上运行一套复杂的算法STA(spanning-tree algorithm),使冗余端口置于“阻断状态”,使得接入网络的计算机在与其他计算机通讯时,只有一条链路生效,而当这个链路出现故障无法使用时,IEEE802.1d协议会重新计算网络链路,将处于“阻断状态”的端口重新打开,从而既保障了网络正常运转,又保证了冗余能力。

三、 实验设备1、DCS-3926S交换机2台2、PC机2台3、Console线1-2根4、直通网线4-8根四、 实验拓扑五、 实验要求IP地址设置:设备IP Mask255.255.255.0交换机A 10.1.157.100255.255.255.0交换机B 10.1.157.101255.255.255.0PC1 10.1.157.113255.255.255.0PC2 10.1.157.114网线连接:交换机A e0/0/1 交换机B e0/0/3交换机A e0/0/2 交换机B e0/0/4PC1 交换机A e0/0/24PC2 交换机B e0/0/23如果生成树成功,则PC1可以ping 通PC2。

六、 实验步骤第一步:正确连接网线,恢复出厂设置之后,做初始配置交换机A:switch#configswitch(Config)#hostname switchAswitchA(Config)#interface vlan 1switchA(Config-If-Vlan1)#ip address 10.1.157.100 255.255.255.0switchA(Config-If-Vlan1)#no shutdownswitchA(Config-If-Vlan1)#exitswitchA(Config)#交换机B:switch#configswitch(Config)#hostname switchBswitchB(Config)#interface vlan 1switchB(Config-If-Vlan1)#ip address 10.1.157.101 255.255.255.0switchB(Config-If-Vlan1)#no shutdownswitchB(Config-If-Vlan1)#exitswitchB(Config)#第二步:“PC1 ping PC2 –t ”观察现象1、ping不通;2、所有连接网线的端口的绿灯很频繁地闪烁,表明该端口收发数据量很大,已经在交换机内部形成广播风暴。

最小生成树实验报告

最小生成树实验报告

最小生成树实验报告1.引言最小生成树(Minimum Spanning Tree,简称MST)是图论中的重要概念,在各个领域都有广泛的应用。

最小生成树是指在给定的加权连通图中,选择一个子集,使得该子集包含了所有的顶点,并且所有边的权值之和最小。

本实验主要目的是探讨最小生成树的算法并比较它们的效率和准确性。

2.实验方法本次实验使用Python编程语言实现了两种著名的最小生成树算法:Prim算法和Kruskal算法。

Prim算法是一种贪心算法,从一个顶点开始不断扩张集合,直到包含所有顶点,生成最小生成树。

Kruskal算法则是基于并查集的算法,将边按照权值排序后逐一加入生成树,同时要保证加入的边不会产生环路。

3.实验过程首先,我们从文件中读取了一张加权无向图的数据。

图的表示采用邻接矩阵的方式,即用一个二维数组来存储顶点之间的连接关系和权值。

读取完图的数据后,我们分别使用Prim算法和Kruskal算法求解最小生成树。

在Prim算法中,我们使用一个辅助数组来记录顶点是否已被访问过,然后从任意一个顶点开始,依次将与当前集合相邻的顶点加入,并选择权值最小的边。

直到所有顶点都被访问过,并形成了一个最小生成树。

在Kruskal算法中,我们首先将所有边按照权值从小到大进行排序。

然后,从权值最小的边开始,逐一将边加入生成树。

加入时,需要判断两个顶点是否在同一个连通分量中,以避免产生环路。

实验中,我们使用了Python中的heapq库来实现了堆排序,以加快Prim算法的运行速度。

4.实验结果经过实验,我们得到了图的最小生成树以及对应的权值。

实验数据显示,当图中顶点较少时,Prim算法和Kruskal算法几乎没有明显的差别。

但当图的规模增大时,Prim算法明显比Kruskal算法更快。

5.实验分析从实验结果可以看出,Prim算法和Kruskal算法都可以求解最小生成树,但在不同情况下它们的性能表现并不相同。

Prim算法适用于稠密图,因为它的时间复杂度与顶点的平方成正比;而Kruskal算法适用于稀疏图,因为它的时间复杂度与边的数量成正比。

最小生成树实验报告

最小生成树实验报告

最小生成树实验报告最小生成树(Minimum Spanning Tree,MST)是图论中的一个重要概念,用于在一个连通带权无向图中找到一个子图,使得这个子图是一个树(即无环连通图),并且所有边的权值之和最小。

最小生成树在诸多领域有着广泛的应用,如网络设计、电力传输等。

在本次实验中,我们实现了最小生成树算法,并将其运用到多个实际问题上。

下面将依次介绍算法原理、实现过程、实验结果以及对实验的进一步改进。

1.算法原理Kruskal算法的基本思想是,首先将所有边按照权值从小到大排序,然后从最小的边开始,逐一加入生成树,直到生成树包含了所有的顶点。

在加入一条边时,需要判断这条边将两个顶点连通起来是否会形成环,如果不会则加入生成树。

Prim算法的基本思想是,从一个顶点开始,逐步加入生成树的顶点,每次加入一个顶点时,选择一个离生成树最近的点,并将这个点加入生成树。

通过不断的选择顶点和加入边,最终得到最小生成树。

2.实现过程首先,我们实现了图的数据结构和边的数据结构。

在图的数据结构中,我们定义了图的顶点数和边数,并用邻接矩阵来表示图的连接情况。

边的数据结构包含了两个顶点和边的权值。

其次,我们实现了两种算法。

对于Kruskal算法,我们首先将所有边按照权值从小到大进行排序。

然后,逐个加入边,判断是否形成环。

如果不会形成环,则将该边加入生成树。

最后,我们使用并查集数据结构来判断两个顶点是否连通。

对于Prim算法,我们首先选择一个起点作为生成树的初始顶点,并将其加入生成树。

然后,每次选择一个离生成树最近的顶点,并将其加入生成树,同时更新其他顶点到生成树的距离。

最后,所有顶点都被加入生成树后,得到最小生成树。

3.实验结果我们在实验中选择了不同大小的图进行测试。

经过对比,我们发现Kruskal算法和Prim算法得到的最小生成树结果是一致的,但是Kruskal 算法的时间复杂度要稍高于Prim算法。

具体的结果如下:对于一个边数为10的图,我们得到了如下最小生成树:1-2-4-5-3总权重为12对于一个边数为20的图,我们得到了如下最小生成树:2-1-4-5-3总权重为16对于一个边数为30的图2-1-4-5-6-7-3总权重为22从实验结果来看,无论是规模较小的图还是规模较大的图,我们都能够得到最小生成树,并且所得到的结果是正确的。

最小生成树prim算法实验报告

最小生成树prim算法实验报告

最小生成树prim算法实验报告最小生成树Prim算法实验报告引言:最小生成树(Minimum Spanning Tree,简称MST)是图论中的一个重要概念,意为在一个连通图中找到一棵生成树,使得树上所有边的权值之和最小。

Prim算法是一种常用的解决MST问题的贪心算法。

本实验旨在通过实际操作和观察,深入理解Prim算法的原理与过程。

实验目的:1. 理解Prim算法的基本原理;2. 掌握Prim算法的具体实现过程;3. 利用Prim算法求解最小生成树问题;4. 分析Prim算法的时间复杂度。

实验过程:1. 实验环境搭建:在实验开始前,我们需要搭建合适的实验环境。

首先,我们选择一种编程语言,如Python或C++,来实现Prim算法。

其次,我们需要准备一个图的数据集,可以是随机生成的或者是从现实问题中提取的。

最后,我们需要一个用于可视化的工具,以便观察Prim算法的执行过程和结果。

2. Prim算法实现:Prim算法的核心思想是从一个顶点开始,逐步扩展生成树,直到包含所有顶点为止。

具体实现过程如下:a. 初始化一个空的生成树,选择一个起始顶点;b. 在剩余的顶点中,选择与生成树距离最近的顶点,并将其加入生成树;c. 更新生成树与剩余顶点的距离,如果存在更短的路径,则更新;d. 重复步骤b和c,直到生成树包含所有顶点。

3. Prim算法求解最小生成树问题:利用Prim算法求解最小生成树问题的步骤如下:a. 根据实验环境搭建中准备的图数据集,构建图的邻接矩阵或邻接表表示;b. 选择一个起始顶点,将其加入生成树;c. 重复以下步骤,直到生成树包含所有顶点:i. 从生成树中选择一个顶点v,找到与v相连的顶点中距离最小的顶点u; ii. 将顶点u加入生成树,并将(u, v)边加入生成树的边集;iii. 更新生成树与剩余顶点的距离,如果存在更短的路径,则更新。

实验结果与分析:我们通过实验环境搭建和Prim算法实现,成功求解了多个最小生成树问题。

生成树协议实验报告演示文稿

生成树协议实验报告演示文稿

生成树协议实验报告演示文稿一、引言生成树协议是计算机网络中用于解决广播风暴问题的一种重要协议。

通过构建一棵生成树,有效地控制广播消息的传输范围,提高网络性能和效率。

本文将介绍生成树协议的原理、实验目的、实验方法和实验结果,并对实验进行总结和展望。

二、生成树协议原理生成树协议是通过选举一个根节点,并由根节点向外扩展生成树的方式来限制广播消息的传播范围。

其中,有两种常用的生成树协议,即STP(Spanning Tree Protocol)和RSTP(Rapid Spanning Tree Protocol)。

STP协议通过选举根节点,然后每个节点依次按照一定规则选择自己的父节点,最终形成一棵生成树。

RSTP协议在STP基础上做了优化,加快了生成树的计算速度和收敛速度。

生成树协议的核心思想是,通过禁用某些链路,将网络构建成一个无环的拓扑结构,从而避免广播消息在网络中无限传播,造成网络拥塞。

三、实验目的本实验旨在通过搭建局域网实验环境,模拟生成树协议的运行过程,深入理解生成树协议的原理和工作机制,并验证生成树协议对于网络性能的优化效果。

四、实验方法1. 搭建实验环境:选取适当的网络拓扑结构,配置所需设备和软件环境。

2. 研究生成树协议:详细了解STP和RSTP协议的工作原理和消息交换过程,分析其优缺点。

3. 实验操作:在实验环境中运行生成树协议,观察生成树的构建过程和拓扑结构变化。

4. 测试性能:通过发送广播消息,记录网络拓扑变化和节点之间的通信情况,测试生成树协议对于网络性能的改善效果。

5. 结果分析:根据实验数据和观察结果,分析生成树协议的性能表现和优化效果。

五、实验结果经过实验测试和数据统计,我们得到以下实验结果:1. 生成树协议能够有效地限制广播消息的传播范围,避免广播风暴问题的发生。

2. STP协议的收敛速度较慢,当网络拓扑结构变化频繁时,可能导致网络性能下降。

3. RSTP协议通过优化生成树的计算和收敛过程,提高了网络的响应速度和性能稳定性。

HCIA-Datacom网络技术实验指南生成树基础实验-p74

HCIA-Datacom网络技术实验指南生成树基础实验-p74

• S3的STP端口角色
[S3]display stp brief MSTID Port 0 GigabitEthernet0/0/1 0 GigabitEthernet0/0/2
Role STP State ROOT FORWARDING DESI FORWARDING
根交换机
S1(核心层)
G0/0/2
[S4]display stp brief MSTID Port
0 GigabitEthernet0/0/2 0 GigabitEthernet0/0/3 [S4]display stp brief MSTID Port 0 GigabitEthernet0/0/2 0 GigabitEthernet0/0/3 [S4]display stp brief MSTID Port 0 GigabitEthernet0/0/2 0 GigabitEthernet0/0/3
Role STP State ALTE DISCARDING ROOT FORWARDING
Protection NONE NONE
8
实验任务1:确认STP端口角色(2)
• S3的STP端口角色
[S3]display stp brief MSTID Port 0 GigabitEthernet0/0/1 0 GigabitEthernet0/0/2
3
实验目的
• 了解如何切换STP模式:STP、RSTP、MSTP • 指定根交换机和备份根交换机 • 调整交换机设备优先级 • 调整端口路径开销 • 调整端口优先级 • 配置根保护 • 配置BPDU保护 • 配置边缘端口 • 配置MSTP
4
实验拓扑
S1(核心层)
G0/0/2

最小生成树算法实验报告_2

最小生成树算法实验报告_2

作业1最小生成树的生成算法1.1算法应用背景在实际生活中, 图的最小花费生成树问题有着广泛的应用。

例如, 用图的顶点代表城市, 顶点与顶点之间的边代表城市之间的道路或通信线路, 用边的权代表道路的长度或通信线路的费用, 则最小花费生成树问题, 就表示为城市之间最短的道路或费用最小的通信线路问题。

其中普里姆算法是使用贪婪法策略设计的典型算法。

1.2算法原理在一给定的无向图G = (V, E) 中, (u, v) 代表连接顶点u 与顶点v 的边(即), 而w(u, v) 代表此边的权重, 若存在T 为E 的子集(即)且为无循环图, 使得的w(T) 最小, 则此T 为G 的最小生成树。

许多应用问题都是一个求无向连通图的最小生成树问题。

例如:要在n个城市之间铺设光缆, 主要目标是要使这n 个城市的任意两个之间都可以通信, 但铺设光缆的费用很高, 且各个城市之间铺设光缆的费用不同;另一个目标是要使铺设光缆的总费用最低。

这就需要找到带权的最小生成树。

1.3算法描述1)最小生成树之普里姆算法描述:令G=(V,E,W), 为简单期间, 令顶点集为V={0,1,2…, n-1}。

假定与顶点i, j相关联的边为ei, j, ei, j的权用c[i][j]表示, T是最小花费生成树的边集。

这个算法维护两个顶点集合S 和N, 开始时: 令T=Ф,S={0},N=V-S。

然后, 进行贪婪选择, 选取i∈S, j∈N, 并且c[i][j]最小的i和j;并使S=S∪S{j},N=N-{j},T=T∪{ei, j}.重复上述步骤, 直到N为空, 或找到n-1条边为止。

此时, T中的边集, 就是所要求取的G中的最小花费生成树。

由此, 可描述普里姆算法的步骤如下:(1)T=Ф, S={0},N=V-S。

(2)如果N为空, 算法结束;否则, 转步骤(3)。

(3)寻找使i∈S, j∈N, 并且c[i][j]最小的i和j。

(4)S=S∪S{j},N=N-{j},T=T∪{ei, j};转步骤(2)。

生成树实验报告总结

生成树实验报告总结

一、实验目的本次实验的主要目的是通过实际操作加深对生成树概念的理解,掌握生成树的构建方法,包括Kruskal算法和Prim算法,并学会使用程序解决实际问题。

二、实验内容1. Kruskal算法Kruskal算法是一种基于边优先的策略来构建最小生成树的算法。

它将所有边按照权值从小到大排序,然后依次选择权值最小的边,同时检查新加入的边是否会构成环。

若不会构成环,则将这条边加入最小生成树中。

2. Prim算法Prim算法是一种基于顶点优先的策略来构建最小生成树的算法。

它从一个顶点开始,逐步扩大最小生成树,直到所有顶点都被包含。

在每次迭代中,算法都会选择一个与已构建的最小生成树连接的最小权值边。

三、实验步骤1. 设计实验环境(1)搭建实验平台:使用C++编程语言,实现Kruskal算法和Prim算法。

(2)设计数据结构:邻接矩阵和邻接表。

2. 编写算法代码(1)Kruskal算法:```cpp// Kruskal算法实现void Kruskal(int n, adjmatrix a) {int i, j, k, u, v;for (i = 1; i <= n; i++) {for (j = i + 1; j <= n; j++) {if (a[i][j] != 0 && a[i][j] != INF) {// 初始化并查集 u = Find(i);v = Find(j);// 合并集合Union(u, v);}}}}```(2)Prim算法:```cpp// Prim算法实现void Prim(int n, adjmatrix a) { int i, j, k, u;int key[MaxNum];int inTree[MaxNum];for (i = 1; i <= n; i++) { key[i] = INF;inTree[i] = false;}key[1] = 0;inTree[1] = true;while (true) {k = -1;for (i = 1; i <= n; i++) {if (!inTree[i] && key[i] < INF) {if (k == -1 || key[i] < key[k]) {k = i;}}}if (k == -1) {break;}inTree[k] = true;for (j = 1; j <= n; j++) {if (!inTree[j] && a[k][j] != INF && a[k][j] < key[j]) { key[j] = a[k][j];}}}}```3. 编译并运行程序(1)使用C++编译器编译代码。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2.当次小组成员成绩只计学号、姓名登录在下表中的。

3.在规定时间内未上交实验报告的,不得以其他方式补交,当次成绩按0
分计。

4.实验报告文件以PDF格式提交。

【实验题目】生成树协议
路的产生,避免广播风暴等。

【实验内容】
(1)完成实验教程实例3-8的实验,回答实验提出的问题及实验思考。

(P117)
(2)抓取生成树协议数据包,分析桥协议数据单元(BPDU)。

(3)在实验设备上查看VLAN生成树,并学会查看其它相关重要信息。

【实验要求】
一些重要信息需给出截图。

注意实验步骤的前后对比!
【实验记录】(如有实验拓扑请自行画出,要求自行画出拓扑图)
(1)实例3-8
实验拓扑图如下:
步骤0:
将PC1和PC2配置好IP地址和掩码后按照拓扑图连接实验设备。

在PC1上启动Wireshark 软件观察包的数量变化如下:
此时已经产生了广播风暴。

两台交换机此时的生成树配置信息如下:
无生成树配置信息。

用PC1pingPC2时包增长情况如下:
可见此时包增长的更快,已经产生广播风暴,但是PC并未发生死锁。

步骤1:
配置交换机A:
步骤2:
配置交换机B:
步骤3:
配置两交换机的快速生成树协议:
再按照拓扑图连接实验设备,此时包增长情况如下:
此时两PC间可以相互ping通,且无广播风暴。

由此可见生成树协议的作用为避免网络中存在交换环路的时候产生广播风暴,确保在网络中有环路时自动切断环路。

步骤4:验证测试
SwitchA的生成树信息:
SwitchB的生成树信息:
SwitchB中RootCost和RootPort值都为0,因此SwitchB为根交换机。

根端口为G0/1。

步骤5:设置交换机的优先级
将SwitchA的优先级设置为4096
步骤6: 验证SwitchA的优先级
当两个端口都连在一个共享介质上,交换机会选择一个高优先级的端口进入forwarding状态,低优先级的端口进入discarding状态。

步骤7:验证交换机SwitchB的G0/1,G0/2,端口的状态
由上图可知,SwitchB的G0/1端口处于转发状态,G0/2端口处于组阻塞状态。

步骤8:
步骤7后每个交换机的信息如下:
两交换机G0/1端口链路down之后SwitchB的端口2信息如下:
此时每个交换机的信息:
与之前相比,SwitchB的RootPort变为G0/2,其他均未变化。

说明一条链路down 之后,生成树协议启用了备用端口使得整个链路恢复数据传输。

SwitchA和SwitchB之间的一条链路down掉时,PC1和PC2仍然能相互ping通,但会丢包:
说明生成树在链路断掉后重新构筑,原先阻塞的链路已经变为转发状态,一个端口断开时会将流量切换到另一个端口上,中间有短暂的联路中段,丢包数为一个。

此时每个交换机的生成树信息如下:
与步骤8的(1)相比,SwitchB的根端口变为G0/2,转换时间大约为2秒。

实验思考
1)在实验开始产生广播风暴时,实验设备中存在环路,在生成树协议开启后不在存在环路,因为广播风暴现象已经消除。

2)冗余链路会引起MAC地址表不稳定和多帧复制等问题。

MAC表不稳定
当PC1发送数据到PC2时,如果Switch A和Switch B也是刚刚启动,这时候它们MAC表里都没有PC2的MAC地址
收到数据包后,Switch A就会广播该数据包,并把源MAC添加到MAC表,然后认为PC1在端口0
收到数据包后,Switch B就会广播该数据包,并把源MAC添加到MAC表,然后认为PC1在端口0
当Switch B在收到Switch A的广播包后又认为PC1在端口1
当Switch A在收到Switch B的广播包后又认为PC1在端口1
这时就会造成交换机MAC表的不稳定
多帧复制
在冗余链路中出现广播风暴后,当PC1向PC2发送数据报时,如果两个交换机刚刚启动,这时候它们的MAC地址表里都没有PC2的MAC地址,SwitchA将会广播该数据包,SwitchB收到SwichA的广播包之后发现自己的MAC地址表里也没有PC2的MAC地址,就会继续广播该数据包,如此循环PC2就会收到多个同样的数据包造成多帧复制。

(2)分析生成树协议数据包
STP协议传输过程中wireshark捕获到的STP数据包如下:
具体信息如下(frame1):
具体信息:
DMA 01:80:v2:00:00:00
SMA 58:69:6c:15:57:36
L/T 39
LLC Header
Payload信息如下:
具体信息如下:
协议号 0x0000
版本号 2
报文类型 0x02
标记 0x7c
根网桥号 4096/58:69:6c:15:57:36
根路径成本 0
发送网桥ID 4096/58:69:6c:15:57:36
端口ID 0x8003
呼叫时间 2s
转发延迟 15s
(3)VLAN生成树其它相关重要信息
全部实验步骤结束后的交换机生成树配置信息如下:
Switch A:
STP版本 RSTP
STP协议运行状态运行
最大生存时间 20
呼叫时间 2s
转发延迟 15s
网桥最大生存时间 20
网桥呼叫时间 2s
网桥转发延迟 15s
最大跳转次数 20
路径成本模式长
BPDUGuard 未运行
BPDUFilter 未运行
LoopGuardDef 未运行
网桥地址优先级 4096
拓扑结构变动时间 1分4秒
拓扑结构变动数 3
指派端口根路径成本 0(本交换机为根)
根端口 0(本交换机为根)
Switch B
STP版本 RSTP
STP协议运行状态运行
最大生存时间 20
呼叫时间 2s
转发延迟 15s
网桥最大生存时间 20
网桥呼叫时间 2s
网桥转发延迟 15s
最大跳转次数 20
路径成本模式长
BPDUGuard 未运行
BPDUFilter 未运行
LoopGuardDef 未运行
网桥地址优先级 32768
拓扑结构变动时间 46秒
拓扑结构变动数 6
指派端口根路径成本 20000
根端口 Gi0/2
交换机的端口状态:
Gi0/1:
默认端口加速不可用
操作端口加速不可用
自动配置默认端口不可用
自动配置操作端口不可用
默认连接类型自动
操作连接类型点对点
BPDUGuard 未运行
BPDUFilter 未运行
端口监视模式无
端口状态转发状态
端口优先级 128
根指派端口指派成本 0
指派网桥指派端口优先级 128
指派端口号 1
转发跳转数 2
默认路径成本 20000
操作路径成本 20000
矛盾状态正常
端口角色根端口
Gi0/2
默认端口加速不可用
操作端口加速不可用
自动配置默认端口不可用
自动配置操作端口不可用
默认连接类型自动
操作连接类型点对点
BPDUGuard 未运行
BPDUFilter 未运行
端口监视模式无
端口状态阻塞状态
端口优先级 128
根指派端口指派成本 0
指派网桥指派端口优先级 128
指派端口号 2
转发跳转数 0
默认路径成本 20000
操作路径成本 20000
矛盾状态正常
端口角色替换端口。

相关文档
最新文档