第二章 生成树

第二章 生成树
第二章 生成树

第二章树

教学安排的说明

章节题目:§2.1树的特性;§2.2割边与割点,§2.3生成树

学时分配:共2课时

本章教学目的与要求:会正确表述关于树的一些基本概念(如树、生成树、割边与割点),会用避圈法和破圈法找生成树,会用树的方法描述一些简单的

实际问题.

课 堂 教 学 方 案

课程名称:§2.1树的特性;§2.2割边与割点;§2.3 生成树

授课时数:2学时

授课类型:理论课

教学方法与手段:讲授法

教学目的与要求:会正确表述关于树的一些基本概念(如树、生成树、割边与割点),

会用避圈法和破圈法找生成树,会用树的方法描述一些简单的实际问题.

教学重点、难点:

(1) 理解树的概念以及树的等价命题;

(2) 掌握割边与割点的概念;

(3) 理解生成树的定义;

(4) 掌握找生成树的两种方法——避圈法和破圈法。

教学内容:

树是图论中的一个重要概念。树是一种极为简单而又非常重要的特殊图,它在

计算机科学以及其它许多领域都有广泛的应用。在1847年克希霍夫就用树的理论来研究电网络,1857年凯莱在计算有机化学中222n C H 的同分异构物数目时也用到了树的理论。各类网络的主干网通常都是树的结构。本节介绍树的基本知识,其中谈到的图都假定是简单图。

2.1 树的特性

定义2.1.1 连通无圈的无向图称为无向树,简称为树(Undirected tree )。记作T ,树中的悬挂点(或称T 中度数为1的顶点)又称为树叶(leave )(或叶顶点),其它顶点称为树枝(Branch Point 或内点(Inner Point))。诸连通分支均为树的图称为森林(forest ),树是森林。

例1 图1中(a ),(b )为树,(c )为森林。

图1

由于树无环也无重边(否则它有圈),因此树必定是简单图。树还有等价命题:

设T 是一个无向(,)n m 图,则以下关于T 的命题是等价的。

(1) T 是树;

(2)T 无圈且1m n =-;

(3) T 连通且1m n =-;

(4)T 无圈,但增加任一新边,得到且仅得到一个圈。

(5)T 连通,但删去任一边便不连通(2n ≥)。

(6)T 的每一对顶点间有唯一的一条通路(2n ≥)。

证明 (1) ?(2)

由树的定义可知T 无圈。下证1m n =-。对n 进行归纳证明。

当1n =时,0m =,显然1m n =-。

假设n k =时结论成立,现证明1n k =+时结论也成立。

由于树是连通而无圈的,所以至少有一个度数为1的顶点v ,在T 中删去v 及

其关联边,便得到k 个顶点的连通无圈图。由归纳假设它有1k -条边。再将顶点v

及其关联边加回得到原图T ,所以T 中含有1k +个顶点和k 条边,故结论1

m n =-成立。所以树是无圈且1m n =-的图。

(2) ?(3)

用反证法。若T 不连通,设T 有k 个连通分支(2k ≥) 1T ,2T ,,k T ,其顶

点数分别是

12,,,k n n n ,边数分别为12,,,k m m m ,于是11,k k i i i i n n m m ====∑∑

11(1)1

k k i i i i m m n n k n ====-=-<-∑∑得出矛盾。所以T 是连通且1m n =-的图。

(3) ?(4)

首先证明T 无圈。对n 作归纳证明。

当1n =时,10m n =-=,显然无圈。

假设顶点数为1n -时无圈,今考察顶点数是n 时的情况。此时至少有一个顶点v 其度数deg()1v =。我们删去v 及其关联边得到新图T ',根据归纳假设T '无圈,

再加回v 及其关联边又得到图T ,则T 也无圈。

其次,若在连通图T 中增加一条新边(,)i j v v ,则由于T 中由i v 到j v 存在一条通

路,故必有一个圈通过i v ,j v 。若这样的圈有两个,则去掉边(,)i j v v ,T 中仍存在

通过i v ,j v 的圈,与T 无圈矛盾。故加上边(,)i j v v 得到一个且仅一个圈。

(4) ?(5)

若T 不连通,则存在两个顶点i v 和j v ,在i v 和j v 之间没有路,若加边(,)i j v v 不

会产生圈,但这与假设矛盾,故T 是连通的。又由于T 无圈,所以删去任一边,图便不连通。

(5) ?(6)

由连通性知,任意两点间有一条路径,于是有一条通路。若此通路不唯一,则T 中含有圈,删去此圈上任一边,图仍连通,这与假设不符,所以通路是唯一的。

(6) ?(1)

显然T 连通。下证T 无圈。用反证法。若T 有圈,则圈上任意两点间有两条通路,此与通路的唯一性矛盾。故T 是连通无圈图,即T 是树。

从以上特征性可以看出,树是“最小的连通图”,少一边便不连通;树又是“最大

的无圈图”,多一边便有圈,因而树是以“最经济”的方式把其中各顶点连接起来

的图。

推论2.1.4 任何多于一个顶点的树都至少有两片叶。

证明 设T 是一棵(,)n m 树(2n ≥),则

1deg()22(1)22n i

i v m n n ===-=-∑ (1)

若T 中无树叶,则T 中每个顶点的度数2≥,则

1deg()2n i

i v n =≥∑ (2)

若T 中只有一片树叶,则T 中只有一个顶点度数为1,其他顶点度数2≥,所以 1deg()2(1)22n i

i v n n =>-=-∑ (3)

(2),(3)都与(1)矛盾。所以T 中至少有两片树叶。

树的特征可见:在顶点数给定的所有图中,树是边数最少的连通图, 也是边数

最多的无圈图。由此可知,在一个(,)n m 图G 中,若1m n <-,则G 是不连通的; 若1m n >-,则G 必定有圈。

例2 设T 是一棵树,它有两个2度顶点,一个3度顶点,三个4度顶点,求T 的树叶数。

解 设树T 有x 片树叶,则T 的顶点数213n x =+++,T 的边数为

15m n x =-=+

又由12deg()n

i i m v ==∑得2(5)223143x x +=?+?+?+

所以9x =,即树T 有9片树叶。

§2.2 割边与割点

定义2.2.1若无向图,G V E =为连通图,若有点集1V V ?,使图G 删除了1V 的所

有顶点后,所得到的子图是非连通图,而删除了1V 的任何真子集后所得到的子图

仍是连通图,则称1V 是G 的一个割集(Vertex Cutset )。若某一个顶点构成一个

割集,则称该顶点为割点(Cut Vertex )。

如图2,{b ,d },{c },{e}都是割集,顶点c 和顶点e 都是割点。虽然删除顶点a

和c 图成为不连通的,但因{c }是{a ,c }的真子集,所以{a ,c }不是割集。

图2

定义2.2.2 若无向图,G V E =为连通图,若有边集1E E ?,使图G 删除了1E 的

所有边后,所得到的子图是非连通图,而删除了1E 的任何真子集后所得到的子图仍是连通图,则称1E 是G 的一个边割集(Edge Cutest)。若某一条边构成一个边割

集,则称该边为割边(Cut Edge)或桥(Bridge)。

定理 2.2.1 一个无向连通图G 中的顶点v 是割点的充分必要条件是存在顶点u 和

w ,使得连接u 和w 的每条路都经过v 。

证明 充分性:如果连通图G 中存在顶点u 和w ,使得连接u 和w 的每条路都经过

v ,则在子图{}G v -中u 和w 必不可达,故v 是割点。

必要性:如果v 是割点,则{}G v -中至少有两个连通分支>=<111,E V G 和

>=<222,E V G ,任取1V u ∈,2V w ∈,因为G 连通,故在G 中必有连接u 和w 的路P ,但u 和w 在{}G v -中不可达,因此路P 必通过v ,即u 和w 之间的任意路必经过v 。 定理2.2.2 一个无向连通图G 中的边e 是割边的充分必要条件是存在顶点u 和w ,使得连接u 和w 的每条路都经过e 。

定理 2.2.3 无向连通图G 中的边e 是割边的充分必要条件是e 不包含在图的任何

基本圈中。

证明 (,)e x y =是连通图G 的割边当且仅当x 和y 在{}G e -的不同连通分支中,而

后者等价于在{}G e -中不存在x 到y 的路,从而等价于e 不包含在图的任何基本圈

中。于是定理得证。

§2.3 树与生成树

1.无向图中的生成树

定义2.3.1 若无向(连通图) G 的生成子图是一棵树,则称该树是G 的生成

树或支撑树(Spanning Tree),记为T 。生成树T 中的边称为树枝。图G 中其他边

称为T 的连枝。所有这些连枝的集合称为T 的补。

例如,图3中()b 、()c 所示的树1T 、2T 是图()a 的生成树,而()d 所示的树3T 不是图

()a 的生成树。()f 、()g 所示的树是图()e 的生成树。一般的,一个图的生成树不

唯一。

图3

考虑生成树1T ,可知1234,,,e e e e 是1T 的树枝,567,,e e e 是1T 的连枝,集合567{,,}e e e 是

1T 的补。生成树有其一定的实际意义。

例3 某地要兴建5个工厂,拟修筑道路连接这5处。经勘测其道路可依如图3()a 的

无向边铺设。为使这5处都有道路相通,问至少要铺几条路?

解:这实际上是求G 的生成树的边数问题。

一般情况下,设连通图G 有n 个顶点,m 条边。由树的性质知,T 有n 个顶点,n

-1条树枝,1m n -+条连枝。

在图3()a 中,5n =,则1514n -=-=,所以至少要修4条路才行。

由图3可见,要在一个连通图G 中找到一棵生成树,只要不断地从G 的圈上删去

一条边,最后所得无圈的子图就是G 的一棵生成树。于是有以下定理。

定理2.3.1任一连通图G 都至少有一棵生成树。

证 若G 无圈,则G 本身为一树。若G 有圈。则删去圈上任一边e ,G –e 仍连

通。对G –e 重复上述讨论,直到得到G 的无圈的连通子图——生成树。

定理2.3.2 无向图G 有生成树的充分必要条件是G 为连通图。

证明 先采用反证法来证明必要性。

若G 不连通,则它的任何生成子图也不连通,因此不可能有生成树,与G 有生成

树矛盾,故G 是连通图。

再证充分性。

设G 连通,则G 必有连通的生成子图,令T 是G 的含有边数最少的生成子图,于

是T 中必无圈(否则删去圈上的一条边不影响连通性,与T 含边数最少矛盾),故T

是一棵树,即生成树。

生成树的求法

求一个连通图的生成树有一个简单算法,这个算法就是在一个连通图中破掉所有的

圈,剩下不含圈的连通图就是原图一个生成树,这个算法叫做“破圈法”.

也可以用下面的算法来构造连通图的生成树.

在图G 中任意取一条边1e ,找一条不与1e 构成圈的边2e ,然后再找一条不与{1e ,2e }构成圈的边3e ,这样继续下去,直到这种过程不能进行,这时所得到的图G 就

是一个生成树.这种算法我们称之为“避圈法”.

2.无向赋权图中的最小生成树

在实际工作中,有很多问题的可行解方案都可以通过一个赋权有向图表示,例如:物流渠道的设计、物资运输路线的安排、装卸设备的更新、排水管道的铺设等、所以赋权图被广泛应用于解决工程技术及科学管理等领域的最优化问题。通常

我们称赋权图为网络,赋权有向图为有向网络,赋权无向图为无向网络。在有向图

的讨论中,类似无向图,可以对多重边、环、简单图、链等概念进行定义,只是在无向图中,链与路、闭链与圈概念是一致的,而在有向图中,这两个概念不能混为一谈。概括地说,一条路必定是一条链。然而在有向图中,一条链未必是一条路,只有在每相邻的两弧的公共顶点是其中一条弧的终点,同时又是另一条弧的始点

时,这条链才能叫做一条路这里仅讨论无向赋权图。

权 p 个顶点的连通图T ,每边指定一正数,称为权;图的权,是指图中所

有边的权之和。T 的生成树T 的每边权之和是生成树T 的权.(权可以表示距离、

费用和时间等)

最小生成树 设

,G V E 是一连通的带权图,则G 的生成树G T 为带权生成树,G T 的树枝所带权之和称为生成树

G T 的权(Weight),记为()G w T 。G 中具有最小权的生成树G T 称为G 的最小生成树(Minimal Spanning Tree)。

最小生成树有很广泛地应用。例如要建造一个连接若干城市的通讯网络,已知

城市i v 和j v 之间通讯线路的造价,设计一个总造价为最小的通讯网络,就是求最小

生成树G T 。

求最小树通常用以下两种方法。

最小生成树

◇普里姆算法(1912年提出):

普里姆(Prim )算法构造最小生成树的过程为:在所有“其一个顶点已经落在生

成树上,而另一个顶点尚未落在生成树上”的边中取一条权值为最小的边,逐条加

在生成树上,直至生成树中含有n-1条边为止。普里姆算法的时间复杂度为O (n2),与网中的边数无关,适用于求边稠密的网的最小生成树。

◇破圈法:在给定连通图G 中,任取一圈,去掉一条最大权边(如果有两条或两

条以上的边都是权最大的边,则任意去掉其中一条边),在余图中(是图G 的支撑

子图)任取一圈,去掉一条最大权边,重复下去,直到余图中无圈为止,即可得到

图G 的最小树。

三、最小生成树及其算法

如上所述,一个连通的赋权图G ,可能有很多生成树.设T 为图G 的一个生

成树,若把T 中各边的权数相加所得的和数称之为生成树T 的权数.G 的所有生成树中,权数最小者称为G 的最小生成树.

求最小生成树问题有很广泛的实际应用.例如把n 个城市用高压电缆连接起来

建立一个电网.如何能设计一个把n 个城市联系起来的电网,使所用的电缆长度之

和最短,即费用最小(因费用与长度正比),就是一个求最小生成树的问题.

由树的性质及生成树的定义知,树T 为图G 的最小生成树的充分必要条件是

对T 以外的任意边(v v i j ,),

)},(,),,(),,{max{),(211j i i i i i j i v v v v v v v v k ωωωω???≥

其中 ),,,,,(21j i i i i v v v v v k ???为生成树T (V ,E )的连接v v i j 和的路,故G 最小生成

树T 必然由那些权数较小而不形成任何回路的边组成.下面所介绍的算法都是根

据这个基本原理得到的.

1. 克罗斯克尔算法

克罗斯克尔算法是1956年提出的,俗称“避圈法”.步骤如下:

(1)先把G 中所有边按权数大小由小到大重新排列,并取权数最小的一条边

作为T 的一条边.

(2)从剩下的边中按(1)的排列顺序取下一条边,若该边与前已取进T 中的

边没有形成圈,则把该边取入T中作为T的一条边,否则舍去,继续按(1)的排

列顺序再取下一条边,…,如此下去直至有n-1条边组成G 的最小生成树T.

证明 设

0T 为由上述算法构造的一个G 的子图,它的顶点是G 的n 个顶点,0T 的边是121,,,n e e e -,且0T 无圈。由定理7.7.1可知0T 是一棵树,且为图G 的生成树。 下面证明0T 是最小生成树。

设图G 的最小生成树是T 。若T 与

0T 相同,则0T 是图G 的最小生成树。若T 与0T 不同,则在0T 中至少存在一条边1i e +,使得1i e +不是T 的边,但

12,,,i e e e 是T 的边。因为T 是树,我们在T 中加上边

1i e +,必有一个圈C ,而0T 是树,所以C 中必存在某条边e 不在0T 中。对于树T ,若以边1i e +置换e ,则得到一棵新树T ',树T '的权1()()()()i C T C T C e C e +'=+-,因为T 是最小生成树,故()()C T C T '≤,即

1()

()0i C e C e +-≥或1()()i C e C e +≥。因为12,,,i e e e 1,i e +是T '的边,且在12{,,,i e e e 1,}i e +中无圈,故

1()()i C e C e +>不可能成立,否则在0T 中,自12,,,i e e e 之后将取e 而不能取

1i e +,与题设矛盾。于是1()()i C e C e +=,因此T '也是G 的最小生成树,但是T '与

0T 的公共边比T 与0T 的公共边数多1,用T '置换T ,重复上述过程直到得到与

0T 有1n -条公共边的最小生成树,这时T '就是0T ,故0T 是最小生成

树。 以图11-14为例(节点数n=8).先按各边权数的权数由小到大排列

),,(),,(),,(213322101v v e v v e v v e

. ),,(),,(),,(),,(),,(),,(),,(5010749548317436655204v v e v v e v v e v v e v v e v v e v v e

由克罗斯克尔算法的步骤,顺次取边e e e e e e e e e 123456789,,,,,,,,,舍去e e 47和,

得到最小生成树为

T={}e e e e e e e 1235689,,,,,,

即为图11-17所示.

为了便于编程,我们采用所谓“最

小标号法”对节点进行重新编号,方

法如下:

先对图中各节点以自然方式编号,

节 点 v v v v v v v v 01234567,,,,,,,

自然编号 1 2 3 4 5 6 7 8 图11-17

以后每一步对取进T 中边的节点都要重新编号:若(u 1,u 2,···,u r )为T

中任意一条路,则该路所经过的节点u 1,u 2,···,u r 都要重新标以它们中最小的标号,即

l u l u l u u u u r r ()()()min{,,,)1212==???==???. 经过这种“最小标号法”重新编号后,就能判断下一条边),(j i k k k v v e 是否与前

已取进T 中的边构成某回路,因此决定),(j i k k k v v e 是否能取进T 中.若),

()(j i k k v l v l =则说明),(j i k k k v v e 取进T 中会形成一个回路,应舍去),(j i k k k v v e ;若),()(j i k k v l v l ≠说

明至少有一个节点不在前已取进的T 的节点中,故在T 中加入e k 后不会形成任何

回路,因而应将),(j i k k k v v e 取进T 中.如此下去,最终能得到最小生成树T.

克鲁斯卡尔算法的时间复杂度与图中的边数有关,适用于求边稀疏的图的最小

生成树。

2.普莱姆算法

普莱姆算法的基本思想为:

(1)先在G 中任取一个节点0v ,并取入T 中;

(2)令S=V(G)\V(T),其中V (G ),V (T )分别为G 与T 的节点集;

(3)在所有连接V (T )的节点与S 的节点的边中,选出权数最小的边(,),

u v 00即

}),(|),(m in{),(00S v T V u v u v u ∈∈=ωω

(4)将边(,)u v 00取入T 中.重复(2)至(4)步骤,直至G 中的节点全都取入T 中为止.

仍以图11-14为例,若v 0为起点,顺次取入T 中的边为

),,(),,(),,(),,(54433210v v v v v v v v ()65,v v ,),,(74v v 或),(76v v 形成的最小生成树T 与图

11-17一致.

类似可定义最大生成树及其相应的算法.

例4求图4中赋权图的最小生成树。

解 因为图(a)中n =8,所以按算法要执行n -1=7次,其过程见图4(b)~(h)所示。

图4

例5 图5所示的赋权图G表示七个城市,,,,,,

a b c d e f g及架起城市间直接通讯线路的预测造价。试给出一个设计方案使得各城市间能够通讯且总造价最小,并计算出最小造价。

图5

解该问题相当于求图G的最小生成树问题,此图的最小生成树为图5中的T,因此如图T架线使各城市间能够通讯,且总造价最小,最小造价为:

W T=+++++=.

()134892348

G

例6求下列图(a)和( b )中的最小生成树。

解:根据克鲁斯卡尔算法,求得最小生成树如下:

图6

补充

根树及其应用

1 有向树

定义1.1 一个有向图,若不考虑边的方向,它是一棵树,则称这个有向图为有向

树(Directed Tree )。 一棵有向树,如果恰有一个顶点的入度为0,其余所有顶

点的入度都为1,则称为根树(Rooted Tree),其中入度为0的顶点称为树根(Root),出度为0的顶点称为树叶,出度不为0的顶点称为分枝点或内点。

定义1.2 一棵有向树,如果恰有一个结点的入度为0,其余所有结点的入度都为1,则称为根树。入度为0的结点称为根,出度为0的结点称为叶,出度不为0的结点称为分枝点或内点。

从根树的结构中还可以看到,树中每一个结点都可看到是原来树中的某一棵子树的

根,由此可知,根树亦可递归定义为:

定义1.3 根树包含一个或多个结点,这些结点中某一个称为根,其他所有结点被

分成有限个子根树。

这个定义把n 个结点的根树用结点数少于n 的根树来定义,最后得到每一棵都是一

个结点的根树,它们就是原来那棵树的叶。

对于一棵根树,可以有树根在下或树根在上的两种不同画法,

根树的画法有:树根在下,向上生长;树根在上,向下生长。

例如,图7()a 、()b 、()c 和()d 均为有向树,其中只有()c 和()d 为根树。在根树图()d 中,1v 为树根,123,,v v v 为分枝点,其余顶点为树叶。习惯上我们把根树的根画

在上方,叶画在下方,这样就可以省去根树的箭头,如图7()e 所示。

在根树中,称从树根到顶点v 的距离为该点的层次。这样对图7中的根树()d ,1v 的

层次为0,23,v v 的层次为1,其余顶点的层次均为2。

(f )

图7 定义1.4 在根树中,若从i v 到j v 可达,则称i v 是j v 的祖先,j v 是i v 的后代;又若

〈i v ,j v 〉是根树中的有向边,则称i v 是j v 的父亲,j v 是i v 的儿子;如果两个顶点

是同一顶点的儿子,则称这两个顶点是兄弟。

定义1.5 在根树中,任一顶点v 及其v 的所有后代和从v 出发的所有有向路中的边构成的子图称为以v 为根的子树。根树中的顶点u 的子树是以u 的儿子为根的

子树。

在现实的家族关系中,兄弟之间是有大小顺序的,为此我们引入有序树的概念。

定义 1.6 如果在根树中规定了每一层次上顶点的次序,这样的根树称为有序

树(Ordered Tree)。在有序树中规定同一层次顶点的次序是从左至右。例如,图

7()c 和()d 均为有序树。

定义1.7一个有向图,如果它的每个连通分支是有向树,则称该有向图为(有向)

森林;在森林中,如果所有树都是有序树且给树指定了次序,则称此森林是有序森林。例如,图7(f)是一个有序森林。

2 m 叉树

在树的实际应用中,我们经常研究完全m 叉树。

定义2.1 在根树T 中,若顶点的最大出度为m ,则称T 为m 叉树(m -ary Tree)。

如果T的每个分枝点的出度都恰好等于m,则称T为完全m叉树(Complete m-ary Tree)。若m叉树的所有叶顶点在同一层,则称它为正则m叉树(Regular m-ary Tree)。二叉树(Binary Tree )的每个顶点v至多有两棵子树,分别称为v 的左子树和右子树。若顶点v只有一棵子树,则称它为v的左子树或右子树均可。若T是(正则)m叉树,并且是有序树,则称T为m元有序(正则)树。

二叉树(二元树) 每个顶点的出度均小于或等于2的根树

例如,在图8()a是一棵二叉树,而且是正则二叉树;图8()b是一棵完全二叉树;图8()c是一棵三叉树,而且是正则三叉树;图8()d是一棵完全三叉树。

图8

有很多实际问题可用二叉树或m叉树表示。

例1 甲、乙两人进行球赛,规定三局两胜。图9表示了比赛可能出现的各种情况(图中顶点标甲者表示甲胜,标乙者表示乙胜),这是一棵完全二叉树。

图9

m叉树中,应用最广泛的是二叉树。由于二叉树在计算机中最易处理,所以常常需要把一棵有序树转换为二叉树。其一般步骤为:

(1) 从根开始,保留每个父亲与其最左边儿子的连线,删除与别的儿子的连线;

(2) 兄弟间用从左向右的有向边连接;

(3) 用如下方法选定二叉树的左儿子和右儿子:直接处于给定顶点下面的顶点作为左儿子;对于同一水平线上与给定顶点右邻的顶点作为右儿子,依次类推。

例2 将图10()a所示的三叉树转换为一棵二叉树。

解对图()a进行步骤(1)、(2)得图()b,再按步骤(3)得图()c。图10()c即为所求的二叉树。反过来,我们也可将图()c还原为图()a。

图10

用二叉树表示有序树的方法,可以推广到有序森林上去,只是将森林中每棵树的根看作兄弟。其步骤为:

(1) 先把森林中的每一棵树表示成一棵二叉树;

(2) 除第一棵二叉树外,依次将每棵二叉树作为左边二叉树的根的右子树,直到所有的二叉树都连成一棵二叉树为止。

例3将图11()a所示的有序森林转换为一棵二叉树。

解如图11()b的二叉树即为所求。

图11

关于完全m 叉树,我们有如下定理。

定理 2.1 在完全m 叉树中,若树叶数为t ,分枝点数为i ,则有 (1)1m i t -=-

证明 由假设知,该树有i t +个顶点,则该树边数为1i t +-。因为所有顶点出度

之和等于边数,所以根据完全m 叉树的定义知, 1mi i t =+-即 (1)1m i t -=-。

例4 假设有一台计算机,它有一条加法指令,可计算3个数之和。如果要求9个

数1x ,2x ,,9x 之和,问至少要执行几次加法指令?

解 用顶点表示每个数,把9个数看成树叶,将表示3个数之和的顶点作为它

们的父亲顶点。这样本问题可理解为求一个完全三叉树的分枝点的个数问题。有

(31)91i -=-由此得i =4。

所以至少要执行 4 次加法指令。

图12表示了两种可能的计算顺序。

图12

例5 设有33盏灯,拟公用一个电源,则至少需要多少个5插头的接线板 ? 解 把33盏灯看成树叶,将5插头的接线板看成分枝点,这样本问题可理解为求一个完全5叉树的分枝点的个数i 的问题。有(51)331i -=-由此得 i =8所以至少需要8个5插头的接线板。

例6枚硬币问题。若有8枚硬币,,,,,,,a b c d e f g h ,其中 7 枚重量相等,只有1枚稍轻。现要求以天平为工具,用最少的比较次数挑出轻币来。

解 可用图13所示的树表示判断过程。从图中可知,只需称2次即可挑出轻币。这种用于描述判断过程的树叫判定树。

图13

3 最优二叉树

定3.1 设有一棵二叉树,有t 片树叶。使其树叶分别带权

12,,,t w w w 的二叉树称为带权二叉树(Weighted Binary Tree)。

定义3.2 设有一棵带权12,,,t w w w 的二叉树T ,其权为i w 的树叶的层为()i L w 。

生成树的发展历程

生成树(STP)技术的部署与调试案例 8.1 生成树(STP)技术与实现原理 在一个包含有交换机与网桥的网络中,消除环路对于获得可靠通信与防止流量在网络中不停循环必不可少。生成树协议(Spanning-tree Protocol,STP),工作在ISO七层模型中第二层,其应用能够使交换机或者网桥通过构成“生成树”,在网络拓扑中动态执行“环路遍历”,通过逻辑判断网络的链路,达到网络无环路和链路冗余的目的。 8.1.1 生成树的发展历程 网络发展过程中,以太网设备由Hub发展到透明网桥到智能交换机。透明网桥比Hub 智能,Hub收到数据包后,向除自己外的其他所有端口进行广播,而透明网桥则记录物理端口上连接设备的MAC,收到数据帧后按照记录的MAC地址向该端口发送数据帧,这样大大减少数据帧冲突。 但是透明网桥由于他的透明性,一旦网络中存在环路,一台透明网桥收到的数据帧,又会在环路中返回,这样数据帧不停在网络中增生,最终形成广播风暴,导致整个网络瘫痪;一种阻止网络环路的协议——生成树协议(STP),IEEE 802.1D标准,生成树模拟自然界树的生长规律,从树根到树梢不会形成环路,生成树协议通过对比环路网络中的设备属性的优先级、链路的开销、端口优先级等来判断环路中链路的优先级,从而逻辑上阻断优先级低的网络链路。 生成树从阻断到转发状态需要经过阻断、监听、学习、转发延迟等阶段,这个阶段大约需要30~50s的时间,对于要求高可靠性的网络来,这是不允许的。快速生成树协议(RSTP)IEEE 802.1W按结构需求产生,RSTP将阻断的端口设置备用端口,一旦检测到主链路中断,备用端口直接进入转发状态,大大加大收敛速度。 上一章介绍了VLAN在园区网中的应用与划分,很多企业在网络中都会规划多个VLAN。STP和RSTP只支持一个VLAN,对于只有一个VLAN的网络非常适用,但现在网络中全部是多VLAN的结构,每VLAN生成树和多VLAN生成树协议被提上议程。其中,每VLAN生成树 PVST 为Cisco专有的协议,该协议不兼容其他厂家的生成树协议。同时,如果VLAN多的话,过多的生成树可能导致交换机CPU、内存过载,而IEEE 802.1S 制定的多生成树协议(MSTP)通过划分域的概念,解决了CPU过度运算的问题,同时向下兼容STP、RSTP协议。本章的后续案例将分别介绍各种生成树技术的应用。

最小生成树实验报告

数据结构课程设计报告题目:最小生成树问题 院(系):计算机工程学院 学生姓名: 班级:学号: 起迄日期: 指导教师: 2011—2012年度第 2 学期 一、需求分析

1.问题描述: 在n个城市之间建设网络,只需保证连通即可,求最经济的架设方法。存储结构采用多种。求解算法多种。 2.基本功能 在n个城市之间建设网络,只需要架设n-1条线路,建立最小生成树即可实现最经济的架设方法。 程序可利用克鲁斯卡尔算法或prim算法生成最小生成树。 3.输入输出 以文本形式输出最小生成树,同时输出它们的权值。通过人机对话方式即用户通过自行选择命令来输入数据和生成相应的数据结果。 二、概要设计 1.设计思路: 因为是最小生成树问题,所以采用了课本上介绍过的克鲁斯卡尔算法和 prim算法两种方法来生成最小生成树。根据要求,需采用多种存储结构,所以我选择采用了邻接表和邻接矩阵两种存储结构。 2.数据结构设计: 图状结构: ADT Graph{ 数据对象V:V是具有相同特性的数据元素的集合,称为顶点集。 数据关系R:R={VR} VR={|v,w∈V且P(v,w),表示从v到w的弧, 谓词P(v,w)定义了弧的意义或信息} 基本操作: CreateGraph( &G, V, VR ) 初始条件:V是图的顶点集,VR是图中弧的集合。 操作结果:按V和VR的定义构造图G。 DestroyGraph( &G ) 初始条件:图G存在。 操作结果:销毁图G。 LocateVex( G, u ) 初始条件:图G存在,u和G中顶点有相同特征。 操作结果:若G中存在顶点u,则返回该顶点在图中位置;否则返 回其它信息。 GetVex( G, v ) 初始条件:图G存在,v是G中某个顶点。

数据结构课程设计图的遍历和生成树求解

数学与计算机学院 课程设计说明书 课程名称: 数据结构与算法课程设计 课程代码: 6014389 题目: 图的遍历和生成树求解实现 年级/专业/班: 学生姓名: 学号: 开始时间: 2012 年 12 月 09 日 完成时间: 2012 年 12 月 26 日 课程设计成绩: 指导教师签名:年月日

目录 摘要 (3) 引言 (4) 1 需求分析 (5) 1.1任务与分析 (5) 1.2测试数据 (5) 2 概要设计 (5) 2.1 ADT描述 (5) 2.2程序模块结构 (7) 软件结构设计: (7) 2.3各功能模块 (7) 3 详细设计 (8) 3.1结构体定义 (19) 3.2 初始化 (22) 3.3 插入操作(四号黑体) (22) 4 调试分析 (22) 5 用户使用说明 (23) 6 测试结果 (24) 结论 (26)

摘要 《数据结构》课程主要介绍最常用的数据结构,阐明各种数据结构内在的逻辑关系,讨论其在计算机中的存储表示,以及在其上进行各种运算时的实现算法,并对算法的效率进行简单的分析和讨论。进行数据结构课程设计要达到以下目的: ?了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力; ?初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; ?提高综合运用所学的理论知识和方法独立分析和解决问题的能力; 训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。 这次课程设计我们主要是应用以前学习的数据结构与面向对象程序设计知识,结合起来才完成了这个程序。 因为图是一种较线形表和树更为复杂的数据结构。在线形表中,数据元素之间仅有线性关系,每个元素只有一个直接前驱和一个直接后继,并且在图形结构中,节点之间的关系可以是任意的,图中任意两个数据元素之间都可能相关。因此,本程序是采用邻接矩阵、邻接表、十字链表等多种结构存储来实现对图的存储。采用邻接矩阵即为数组表示法,邻接表和十字链表都是图的一种链式存储结构。对图的遍历分别采用了广度优先遍历和深度优先遍历。 关键词:计算机;图;算法。

实验:RSTP快速生成树配置

快速生成树配置---------------------晚上风出品 1.实验目标 ?理解生成树协议工作原理; ?掌握快速生成树协议RSTP基本配置方法; ?实验背景学校为了开展计算机教学和网络办公,建立了一个计算机教室和一个校办公区,这两处的计算机网络通过两台交换机互连组成内部校园网,为了提高网络的可靠性,作为网络管理员,你要用2条链路将交换机互连,现要求在交换机上做适当配置,使网络避免环路。 2.生成树配置技术原理 ?生成树协议(spanning-tree),作用是在交换网络中提供冗余备份链路,并且解决交换网络中的环路问题; ?生成树协议是利用SPA算法,在存在交换环路的网络中生成一个没有环路的树形网络。运用该算法将交换网络的冗余备份链路从逻辑上断开,当主链路出现故障时,能够自动的切换到备份链路,保证数据的正常转发; ?生成树协议版本:STP、RSTP(快速生成树)、MSTP(多生成树协议) ?生成树协议的特点收敛时间长。从主要链路出现故障到切换至备份链路需要50秒的时间。 ?快速生成树在生成树协议的基础上增加了两种端口角色:替换端口和备份端口,分别做为根端口和指定端口的冗余端口。当根端口或指定端口出现故障时,冗余端口不需要经过50秒的收敛时间,可以直接切换到替换端口或备份端口,从而实现RSTP 协议小于1秒的快速收敛。 3.实验步骤 ?新建packet tracer 拓扑图(如图) ?默认情况下STP协议启用的。通过两台交换机之间传送BPDU协议数据单元,选出根交换机、根端口等,以便确定端口的转发状态。上图中标记为黄色的端口处于block堵塞状态。 ?设置rstp; ?查看交换机show spanning-tree状态,了解根交换机和根端口情况; ?通过更改交换机生成树的优先级spanningtree vlan * priority 4096 可以变化根交换机的角色。 ?测试。当主链路处于down状态时候,能够自动的切换到备份链路,保证数据的正常转发。

07-生成树实验

1. 实验报告如有雷同,雷同各方当次实验成绩均以0分计。 2. 当次小组成员成绩只计学号、姓名登录在下表中的。 3. 在规定时间内未上交实验报告的,不得以其他方式补交,当次成绩按0分计。 4. 实验报告文件以PDF 格式提交。 【实验题目】生成树协议 【实验目的】理解快速生成树协议的配置及原理。使网络在有冗余链路的情况下避免环路的产生,避免广播风暴等。 【实验内容】 (1)完成实验教程实例3-8的实验,回答实验提出的问题及实验思考。(P117) (2)抓取生成树协议数据包,分析桥协议数据单元(BPDU )。 (3)在实验设备上查看VLAN 生成树,并学会查看其它相关重要信息。 【实验要求】 一些重要信息需给出截图。 注意实验步骤的前后对比! 【实验记录】(如有实验拓扑请自行画出, 要求自行画出拓扑图) (1) 实例3-8 实验拓扑图如下: 院系 班 级 组长 学号 学生 实验分工 陈 刘 3-8 、 宗良 警示

步骤0: 将PC1和PC2配置好IP地址和掩码后按照拓扑图连接实验设备。 在PC1上启动Wireshark 软件观察包的数量变化如下: 此时已经产生了广播风暴。 两台交换机此时的生成树配置信息如下: 无生成树配置信息。 用PC1pingPC2时包增长情况如下:

可见此时包增长的更快,已经产生广播风暴,但是PC并未发生死锁。步骤1: 配置交换机A: 步骤2: 配置交换机B: 步骤3: 配置两交换机的快速生成树协议:

再按照拓扑图连接实验设备,此时包增长情况如下: 此时两PC间可以相互ping通,且无广播风暴。由此可见生成树协议的作用为避免网络中存在交换环路的时候产生广播风暴,确保在网络中有环路时自动切断环路。

07_生成树实验

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的生成树信息:

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

Packet Tracer 5.0实验(五) 快速生成树配置

二、实验背景 学校为了开展计算机教学和网络办公,建立了一个计算机教室和一个校办公区,这两处的计算机网络通过两台交换机互相连接组成内部校园网,为了提高网络的可靠性,作为网络管理员,你要用2条链路将交换机互连,现要求在交换机上做适当的配置,使网络避免环路。 三、技术原理 生成树协议(spanning-tree),作用是在交换网络中提供冗余备份链路,并且解决交换网络中的环路问题; 生成树协议是利用SPA算法,在存在交换环路的网络中生成一个没有环路的树形网络。运用该算法将交换网络的冗余备份链路从逻辑上断开,当主链路出现故障时,能够自动的切换到备份链路,保证数据的正常转发; 生成树协议版本:STP、RSTP(快速生成树)、MSTP(多生成树协议); 生成树协议的特点是收敛时间长,从主要链路出现故障到切换至备份链路需要50秒的时间; 快速生成树协议在生成树协议的基础上增加了两种端口角色:替换端口和备份端口,分别做为根端口和指定端口的冗余端口。当根端口或指定端口出现故障时,冗余端口不需要经过50秒的收敛时间,可以直接切换到替换端口或备份端口,从而实现RSTP协议小于1秒的快速收敛。 四、实验步骤

实验拓扑 默认情况下STP协议启用的,通过两台交换机之间传送BPDU协议数据单元,选出根交换机、根端口等,以便确定端口的转发状态。上图中标记为橙色的端口处于block堵塞状态。 设置RSTP 查看交换机 show spanning-tree 状态,了解根交换机和根端口情况; 通过更改交换机生成树的优先级spanning-tree vlan * priority 4096 可以变化根交换机的角色; S1: Switch>en Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#hostname S1 S1(config)#end S1# %SYS-5-CONFIG_I: Configured from console by console

快速生成树的配置(思科)

快速生成树的配置(已经测试过) 实验名称:快速生成树配置。 实验目的:理解快速生成树配置及原理。 背景描述:现有两台交换机互连组成内部局域网,为了提高网络的可靠性,网络管理员用2 条链路将交换机互连,现要在交换机上做适当配置,使网络避免环路。 技术原理:生成树协议是利用SPA算法(生成树算法),在存在交换环路的网络中生成一个没有环路的树形网络。运用该算法将交换网络冗余的备份链路逻辑上断开,当主要链路出现故障时,能够自动 的切换到备份链路,保护数据的正常转发。 生成树协议目前常见的版本有STP(生成树协议IEEE802.1d)、RSTP(快速生成树协议IEE E802.1w)、MSTP(多生成树协议IEEE802.1s)。 实现功能:使网络在有冗余链路的情况下避免环路的产生,避免广播风暴等。 实验设备:S2126(2台);PC机(2台);直连线(4根) 实验拓扑: 按照拓扑图连接网络时注意,两台交换机都配置完快速生成树协议后,再将两台交换机连接起来。 如果先连接再配置会造成广播风暴,影响交换机的正常工作。

实验步骤: 步骤1:交换机A的基本配置。 SwitchA(config)#vlan 10 SwitchA(config-vlan)#name sales SwitchA(config-vlan)#exit SwitchA(config)#interface fastEthernet 0/3 SwitchA(config-if)#switchport access vlan 10 SwitchA(config-if)#end SwitchA#sh vlan id 10 VLAN Name Status Ports ---- -------------------------------- --------- --------- 10 sales active Fa0/3 SwitchA# 步骤2:在交换机A上配置快速生成树。 SwitchA(config)# spanning mode pvst SwitchA(config)#interface range fastethernet 0/1 SwitchA(config-if)#swit mode trunk SwitchA(config)#interface range fastethernet 0/2 SwitchA(config-if)#swit mode trunk SwitchA(config-if)#exit 步骤3:交换机B的基本配置。

生成树STP基本概念与实验

二层交换:生成树STP基本概念与实验 如果你把两台傻瓜式交换机之间连两根网线,那么这俩交换机就会出现环路从而产生广播风暴。 可能你会觉得好笑,但实际工作中,我却碰到了,一些不懂网络的装修包工头,就会这样做。 ==================================================================== 生成树就是为了让交换网络中防环而出现的。 生成树最原始的版本是802.1d,也就是STP(Spanning Tree Protocol), 但这个版本的标准是所有VLAN共用一个生成树,所以也叫CST(Common Spanning Tree) 思科在此基础上增强了一下,发布了PVST+(Per Vlan Spanning Tree) 802.1d的下一个版本是802.1w,也就是RSTP(Rapid STP),但还是共用生成树,搞不懂IEEE不长点记性。 于是思科又搞了一下,发布了PVRST+ IEEE又基于思科的MISTP的方案,发布了802.1s(MSTP),这个就屌爆了,之后再说为何这么屌,凡是大一点的交换网络都用MSTP。 ===================================================================== STP的基础 要学习更高级的RSTP/MST,还是需要STP的基础,尽管现在已经很少用到STP。 STP的工作流程

1. 在整个交换网段里选择一台做根桥,这根桥就是整棵树的根部,所有其他交换机就选一条到这个根桥的最短路径,其余的路径阻塞掉。所有交换机中桥优先级最低的成为根桥。 2. 选择所有非根桥交换机的根端口,就是那条最短路径的接口。如果有超过1条等价路径,则选择对端指定端口优先级最低的本地端口(有点绕口,通过实验来说明) 3. 选择各网段的指定端口。这个网段其实就是指一根链接,其中一头一定是指定端口,另外一头可能是根端口,也可能是非指定端口。 根端口——只出现在非根桥交换机上,就是到达根桥最短路径的那个接口。如下图,SW1被设置较低的桥优先级成为了根桥,注意,根桥上是没有根端口的。根端口转发数据帧。 指定端口(和非指定端口)——所有交换机上都可能有,根桥上的所有端口都是指定端口(接终端的那些不算啊),非根桥之间的指定端口通过判断优先级,谁低谁是指定端口,对端是非指定端口或根端口,非指定端口禁止转发数据帧,不过仍会监听BPDU。 如下图,SW1上的接口都是指定端口,SW2/3上离根桥最短路径的端口就是根端口。而SW2<->SW3之间的链路,记住,一条链接上一定有一头是指定端口,另外一头如果不是根端口,那就一定是非指定端口。那哪边是指定端口呢?哪边的桥优先级更低,哪边就是指定端口。而SW3上非指定端口被阻塞了,所以SW2<->SW3之间的链路其实是被阻塞了不能用于转发数据。

生成树技术及应用

交换机生成树协议及应用 目录 1生成树协议综述 (1) 1.1 生成树协议的产生背景 (1) 1.2 生成树协议的分类 (1) 2 STP协议概述 (1) 2.1 STP协议基本思想 (1) 2.2 BPDU(网桥协议数据单元) (2) 2.3 生成树协议端口的角色 (2) 2.4 生成树协议端口的状态 (3) 2.5 生成树的形成过程 (3) 2.5.1 决定根交换机 (3) 2.5.2 决定根端口 (4) 2.5.3 认定LAN的指派交换机 (4) 2.5.4 决定指派端口 (4) 2.5.5 根端口和指派端口的转发设定 (4) 2.6生成树协议端口状态迁移 (5) 3 RSTP协议概述 (6) 3.1 RSTP产生原因 (6) 3.2 RSTP与STP的比较 (6) 3.5 RSTP的性能分析 (7) 4 MSTP协议概述 (7) 4.1 MSTP产生原因 (7) 4.2 MSTP相关概念 (8) 5 生成树的配置 (8) 5.1 查看生成树的配置 (8) 5.2 打开、关闭STP协议 (8) 5.3 设置生成树模式 (8) 5.4 配置交换机优先级(Switch Priority) (9) 5.5 配置端口优先级(Port Priority) (9) 5.6 配置端口的路径花费(Path Cost) (9) 5.7 配置Hello Time (10) 5.8 配置端口的Max Age (10) 5.9 配置端口的Forward Delay (10) 5生成树在实际工程中的应用 (11) 5.1 环路预防 (11)

5.1.1 接入层交换机上发生环路 (11) 5.1.1 接入层交换机下联的普通交换机上发生了环路 (12) 5.1.1 实际应用举例 (13) 5.2冗余备份 (13) 5.2.1纯二层冗余备份 (13) 5.2.2与VRRP结合使用 (14)

神州数码生成树实验

实验二十一、生成树实验 一、实验目的 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 地址设置:

如果生成树成功,则PC1 可以ping 通PC2。 六、实验步骤 第一步:正确连接网线,恢复出厂设置之后,做初始配置 交换机A: switch#config switch(Config)#hostname switchA switchA(Config)#interface vlan 1 switchA(Config-If-Vlan1)#ip address 10.1.157.100 255.255.255.0 switchA(Config-If-Vlan1)#no shutdown switchA(Config-If-Vlan1)#exit switchA(Config)# 交换机B: switch#config switch(Config)#hostname switchB switchB(Config)#interface vlan 1 switchB(Config-If-Vlan1)#ip address 10.1.157.101 255.255.255.0 switchB(Config-If-Vlan1)#no shutdown switchB(Config-If-Vlan1)#exit switchB(Config)# 第二步:“PC1 ping PC2 –t ”观察现象 1、ping不通; 2、所有连接网线的端口的绿灯很频繁地闪烁,表明该端口收发数据量很大,已经 在交换机内部形成广播风暴。 第三步:在两台交换机中都使用启用生成树协议 switchA(Config)#spanning-tree mode stp

多生成树(Multiple Spanning Tree Protocol)

多生成树(Multiple Spanning Tree Protocol) 1、概述 1.1 产生背景 1.1.1 IEEE 80 2.1D STP 1.1.2 IEEE 80 2.1w RSTP 1.2 MSTP技术优点 2、MSTP详细介绍 2.1 相关术语 2.2 MSTP算法实现 2.2.1 初始状态 2.2.2 端口角色的选择原则 2.2.3 优先级向量计算 2.2.4 角色选择过程 2.2.5 计算结果 3、Comware实现的技术特色 3.1 MSTP的三种工作模式 3.2 Path Cost缺省值的计算 3.3 设置超时因子特性 3.4 指定根桥和备份根桥 3.5 BPDU保护 3.6 Root保护 3.7 Loop保护 3.8 TC保护 3.9 配置摘要侦听 3.10 No Agreement Check特性实现 3.11 MSTP标准报文格式特性实现 3.12 VLAN Ignore特性 4、典型组网案例 5、总结

1概述 1.1产生背景 在二层交换网络中,一旦存在环路就会造成报文在环路内不断循环和增生,产生广播风暴,从而占用所有的有效带宽,使网络变得不可用。 在这种环境下STP协议应运而生,STP是一种二层管理协议,它通过有选择性地阻塞网络冗余链路来达到消除网络二层环路的目的,同时具备链路的备份功能。 STP协议和其他协议一样,是随着网络的不断发展而不断更新换代的。最初被广泛应用的是IEEE 802.1D STP,随后以它为基础产生了IEEE 802.1w RSTP、IEEE 802.1s MSTP。 1.1.1 IEEE 80 2.1D STP STP协议的基本思想十分简单。自然界中生长的树是不会出现环路的,如果网络也能够像一棵树一样生长就不会出现环路。于是,STP协议中定义了根桥(Root Bridge)、根端口(Root Port)、指定端口(Designated Port)、路径开销(Path Cost)等概念,目的就在于通过构造一棵树的方法达到裁剪冗余环路的目的,同时实现链路备份和路径最优化。用于构造这棵树的算法称为生成树算法(Spanning Tree Algorithm)。 要实现这些功能,网桥之间必须要进行一些信息的交互,这些信息交互单元就称为配置消息BPDU(Bridge Protocol Data Unit)。STP BPDU是一种二层报文,目的MAC是多播地址01-80-C2-00-00-00,所有支持STP 协议的网桥都会接收并处理收到的BPDU报文。该报文的数据区里携带了用于生成树计算的所有有用信息。STP的工作过程是:首先进行根桥的选举。选举的依据是网桥优先级和网桥MAC地址组合成的桥ID,桥ID 最小的网桥将成为网络中的根桥,它的所有端口都连接到下游桥,所以端口角色都成为指定端口。接下来,连接根桥的下游网桥将各自选择一条“最粗壮”的树枝作为到根桥的路径,相应端口的角色就成为根端口。循环这个过程到网络的边缘,指定端口和根端口确定之后一棵树就生成了。生成树经过一段时间(默认值是30秒左右)稳定之后,指定端口和根端口进入转发状态,其他端口进入阻塞状态。STP BPDU会定时从各个网桥的指定端口发出,以维护链路的状态。如果网络拓扑发生变化,生成树就会重新计算,端口状态也会随之改变。这就是生成树的基本原理。 随着应用的深入和网络技术的发展,STP的缺点在应用中也被暴露了出来。STP协议的缺陷主要表现在收敛速度上。 当拓扑发生变化,新的配置消息要经过一定的时延才能传播到整个网络,这个时延称为Forward Delay,协议默认值是15秒。在所有网桥收到这个变化的消息之前,若旧拓扑结构中处于转发的端口还没有发现自己应该在新的拓扑中停止转发,则可能存在临时环路。为了解决临时环路的问题,STP使用了一种定时器策略,即在端口从阻塞状态到转发状态中间加上一个只学习MAC地址但不参与转发的中间状态,两次状态切换的

生成树的计数及其应用

生成树的计数及其应用 目录 生成树的计数及其应用 (1) 目录 (1) 摘要 (2) 关键字 (2) 问题的提出 (2) [例一]高速公路(SPOJ p104 Highways) (2) [分析] (2) 预备知识 (2) 排列 (3) 行列式 (4) 新的方法 (7) 介绍 (7) 证明 (9) 理解 (12) 具体应用 (12) [例二]员工组织(UVA p10766 Organising the Organisation) (13) [分析] (13) [例三]国王的烦恼(原创) (13) [分析] (14) 总结 (14) 参考文献 (14)

摘要 有关生成树的最优化问题如最小生成树等是我们经常遇到的,而对生成树的计数及其相关问题则少有涉及。事实上,生成树的计数是十分有意义的,在许多方面都有着广泛的应用。首先介绍了一种指数级的动态规划算法,然后介绍了行列式的基本概念、性质,并在此基础上引入Matrix-Tree定理,同时通过与一道数学问题的对比,揭示了该定理所包含的数学思想。最后通过几道例题介绍了生成树的计数的应用,并进行总结。 关键字 生成树的计数Matrix-Tree定理 问题的提出 [例一]高速公路(SPOJ p104 Highways) 一个有n座城市的组成国家,城市1至n编号,其中一些城市之间可以修建高速公路。现在,需要有选择的修建一些高速公路,从而组成一个交通网络。你的任务是计算有多少种方案,使得任意两座城市之间恰好只有一条路径? 数据规模:1≤n≤12。 [分析] 我们可以将问题转化到成图论模型。因为任意两点之间恰好只有一条路径,所以我们知道最后得到的是原图的一颗生成树。因此,我们的问题就变成了,给定一个无向图G,求它生成树的个数t(G)。这应该怎么做呢? 经过分析,我们可以得到一个时间复杂度为O(3n*n2)的动态规划算法,因为原题的规模较小,可以满足要求。但是,当n再大一些就不行了,有没有更优秀的算法呢?答案是肯定的。在介绍算法之前,首先让我们来学习一些基本的预备知识。 预备知识 下面,我们介绍一种重要的代数工具——行列式。为了定义行列式,我们首先来看一下排列的概念。

生成树实验

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信息如下:

生成树的详细配置及实验

STP及其优化实验拓扑图:

实验步骤: 1. 设置SW1,SW2,SW3主机名分别为Core1,Core2, ED-SW 2. 把Core1与Core2间的两条链路绑定成etherchannel2,并设置成Trunk mode Core1: interface range fa0/23 - 24 switchport trunk encapsulation dot1q //支持ISL及dot1Q的交换机必须设置trunk的封装协议。低端的C2950,C2960,C2918只支持dot1Q,无此命令。 switch mode trunk //接口设置为Trunk模式。 channel-group 2 mode on //接口加入Etherchannel2。 Creating a port-channel interface Port-channel 2 //系统提示自动创建port-channel2。 interface Port-channel2 // Port-channel2接口配置必须同物理接口一致。 switchport trunk encapsulation dot1q switchport mode trunk Core2: interface range fa0/23 - 24 switchport trunk encapsulation dot1q switch mode trunk channel-group 2 mode on Creating a port-channel interface Port-channel 2 interface Port-channel2 switchport trunk encapsulation dot1q switchport mode trunk 3.验证etherchannel设置 Core1#sh etherchannel summary //显示etherchannel的详细信息 Flags: D - down P - in port-channel I - stand-alone s - suspended H - Hot-standby (LACP only) R - Layer3 S - Layer2 U - in use f - failed to allocate aggregator u - unsuitable for bundling w - waiting to be aggregated d - default port Number of channel-groups in use: 1 //目前已经建好1个etherchannel。Number of aggregators: 1 Group Port-channel Protocol Ports ------+-------------+-----------+----------------------------------------------- 2 Po2(SU) - fa0/23(P) fa0/24(P) // S - Layer2 U - in use P - in port-channel

RSTP快速生成树协议的配置课程设计

石河子大学 信息科学与技术学院 <网络技术>课程设计成果报告
2014—2015 学年第一学期
题目名称:
利用快速生成树协议(RSTP) 实现现交换机之间的冗余链路备份
专 班 学
业: 级: 号:
计算机科学与技术 计科 2012(一)班 2012508013 蒋 曹 能 传 凯 东
学生姓名: 指导教师:
完成日期:二○一五

一 月 七




一 课题介绍 ......................................................................................................................................................... - 3 1.1 课题名称 ............................................................................................................................................... - 3 1.2 课题简介 ............................................................................................................................................... - 3 1.3 课题拓展 ............................................................................................................................................... - 3 二 RSTP 简介....................................................................................................................................................... - 3 三 实验环境介绍 ................................................................................................................................................. - 5 3.1 实验软硬件环境 ................................................................................................................................... - 5 3.2 实验参数 ............................................................................................................................................... - 5 3.3 实验拓扑图 ........................................................................................................................................... - 8 四 实验内容 ......................................................................................................................................................... - 8 五 实验详细步骤 ................................................................................................................................................. - 9 5.1 绘制实验拓扑 ....................................................................................................................................... - 9 5.2 交换机及 PC 的基本配置 .................................................................................................................... - 9 5.3 Spanning-tree 的配置 .......................................................................................................................... - 13 5.3 链路测试 ............................................................................................................................................. - 14 六 课题总结 ....................................................................................................................................................... - 17 附录 A 参考文献................................................................................................................................................ - 18 -

相关文档
最新文档