最小树问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二节 最小树问题
一、树的基本概念
在各种各样的图中,有一类图是十分简单又非 常具有应用价值的图,这就是树。
例3 已知有六个城市,它们之间要架设电话 线,要求任意两个城市均可以互相通话,并且电话 线的总长度最短。
一、树的基本概念
如果用六个点 v1 … v6 代表这六个城市,在任意 两个城市之间架设电话线,即在相应的两个点之间 连一条边。这样,六个城市的一个电话网就作成一 个图。任意两个城市之间均可以通话,这个图必须 是连通图。并且,这个图必须是无圈的。否则,从 圈上任意去掉一条边,剩下的图仍然是六个城市的 一个电话网。图5-6是一个不含圈的连通图,代表了 一个电话线网。
6.2.3 最小生成树
v5
9
8 17
v6
7
12
10
v1
11
10
v4 16 7
9.5 v2
10 16 11 10
10 9.5
16 11 10 17
9.5 19.5
7 12
7 8
7
8 9
19.5
v3
17 19.5 12 7 9
• Prim算法是多项式算法
• Prim算法可以求最大生成树
一、树的基本概念
v1
v2
v3
v5
v4
v6
图5-6
一、树的基本概念
1.树 无圈且连通的无向图称为树.树一般记为T.作
为树定义还可以有以下几种表述: (1) T 连通且无圈或回路; (2) T 无圈且有n-1条边(如果有n个结点); (3) T 连通有n-1条边; (4) T 无回路,但不相邻的两个结点之间联以一边,恰
• 对每个节点,用两种标号:T和P,表示从始点到该节点的距 离,P是最短距离(权),为永久标号,T是目前路径的距离,是 临时标号。
• 通过不断改进T值,当其最小时,将其改为P标号。
• 开始时,令始点有P=0的P标号,其它节点为T=+ .
• 标号过程分为两步:
– 1始再.修点进改的 行T所标标有号号弧;。段如假果v定ivvvjj,是i 是如T新标果产号v生点j的,是P则P标进标号行号点如点,下,考修则察改对以该v点i 为不
得一个圈; (5) T 连通,但去掉T 的任意一条边,T 就不连通了;
(亦即,在点集合相同的图中,树是含边数最少的 连通图。)
(6) T 的任意两个结点之间恰有一条初等链.
2.支撑树
定义3 设图K=(V, E I )是图G=(V, E )的一支撑子图,如果
图K=(V, EI )是一个树,那么称K是G的一个支撑树或生成树。
的图中,再取一个圈(v1 ,v2 ,v4 ,v3 ,v1 ),去掉边e4 。再从圈
(v3 ,v4 ,v5 ,v3 )中去掉边e6 。再从圈(v1 ,v2 ,v5 ,v4 ,v3 ,v1 )中去
掉边e7,这样,剩下的图不含圈,于是得到一个支撑树,如
图所示。 v2
e1
e4 v4 e7
v1
e3
e8
e2
e5 e6
T(v4)= 9
+∞
v2(3) 6
v4
+∞ 9
3
14
+∞
2
v6
6
1
v3
+∞ 5 (4)
v5 +∞
P(v3 )= 4
二、最短路问题的算法
(4)考察 v3: T(v5)=min [T(v5),P(v3) +a35]
TP(v4)= 87
T(v6)= 11
=min [∞,4+1] = 5
T(v4)=min [T(v4),P(v3) +a34] =min [9,4+4] = 8
1、根据网路写出边权矩阵,两点间若没有边,则用表示;
2、从 v1 开始标记,在第一行打 ,划去第一列; 3、从所有打 的行中找出尚未划掉的最小元素,对该元素
画圈,划掉该元素所在列,与该列数对应的行打 ;
4、若所有列都划掉,则已找到最小生成树(所有画圈元素所 对应的边);否则,返回第 3 步。
• 该算法中,打 行对应的节点在 V1中,未划去的列在 V2 中
若 T T ,使
w T min Tk T
w Tk
则称 T * 为网络N的一棵最小生成树,简称最小树.
1.最小生成树
b4
2 a
2
4
3
f5
c
最小

5
2d 6
e
比如,城市间交通线 的建造等,可以归结为这 一类问题。
再如前面例3,在已知的几个城市之间联结电话线网, 要求总长度最短和总建设费用最少,这类问题的解决都 可以归结为最小树问题。
所以,P(v5)= 5 (5)考察 v5:
(0)
v1
T(v6)=min [T(v6),P(v5) +a56]
例如,图5-7b 是图5-7a 的一个支撑树。
v3
v5
v3
v5
v1
v6 v1
v6
v2 a v4
图5-7
v2
b v4
2.支撑树
定理3 一个图G有支撑树的充要条件是G是连通图。
证明: 必要性显然;
充分性: 设图G是连通的,若G不含圈,则按照定义,G是 一个树,从而G是自身的一个支撑树。若G含圈,则任取G的 一个圈,从该圈中任意去掉一条边,得到图G的一支撑子图 G1。若G1不含圈,则G1是G的一个支撑树。若G1仍然含圈, 则任取G1的一个圈,再从圈中任意去掉一条边,得到图G的 一支撑子图G2。依此类推,可以得到图G的一个支撑子图GK, 且不含圈,从而GK是一个支撑树。
寻找连通图支撑树的方法有“破圈法”。就是从图中 任取一个圈,去掉一条边。再对剩下的图重复以上步 骤,直到不含圈时为止,这样就得到一个支撑树。
例4 用破圈法求出下图的一个支撑树。
v2
e1
e4
e7
v1
e3
e2
v4 e8
e5
e6
v5
v3
2.支撑树
取一个圈(v1 ,v2 ,v3 ,v1 ),在一个圈中去掉边e3 。在剩下
例如:
V2 3
V1 2 V3
5
V4
V1 V2 V3 V4 V5
V1 0 3 2
4
2 V2
30
54
V3 2 0 8
8
V5 V4
5 0 2
V5
4 8 20
3、赋权有向图的矩阵表示: 左边的第一列 为弧的起点,在每一行中,以该点为起点,按弧 的方向,依次填上到各点的权数。如没有到该点
的弧,记为 ,对角线上的数是 0 。这样得到
A
7
2
2
S
5
5
B
D5
41
31
7
T
C
4
E
最小生成树总长=2+2+1+3+1+5=14
第三节 最短路径问题
最短路径问题是图论中十分重要的最优 化问题之一,它作为一个经常被用到的基本 工具,可以解决生产实际中的许多问题,比 如城市中的管道铺设,线路安排,工厂布局, 设备更新等等。也可以用于解决其它的最优 化问题。
2.最小树的求法
求最小树的两种方法,是避圈法与破圈法
(1)避圈法:
从网络图中 任意节点开始寻 找与该节点关联 的权数最小的边, 使之与已选边不 构成为圈,直到 选够n-1条边为 止。
从网络中

任选一点
v1
4
v2
1
v3
1
2 13
1
v8
4
55
4
v0
v4
2
4
5
v7
3
v6
2
v5
最小树,权为13
2.最小树的求法
的矩阵不一定是对称矩阵。
例如:
起点 V1
终点 V2 V3 V4 V5
V2
5
V4
V1 0 3 2
3 4
V2 0 5 4
V1
6
2
2 V3 6 0 8
V3
8
V5
V4 0 2
V5 0
• (4)Prim 算法:不需要对边权排序,即可以直接在网 路图上操作,也可以在边权矩阵上操作,后者适合计算 机运算 边权矩阵上的 Prim 算法:
6.3.1 狄克斯特拉算法 (Dijkstra algorithm, 1959) 计算两节点之间或一个节点到所有节点之间的最短路
令 dij 表示 vi vj 的直接距离(两点之间有边),若两点之间没 有边,则令 dij = ,若两点之间是有向边,则 dji = ;令 dii = 0,s 表示始点,t 表示终点
=min [∞,0+5] = 5
3
所以,P(v2 )= 3
(0)
v1
(3)考察 v2:
5
T+d(2v33])=min [T(v3),P(v2)
=min [5,3+1] = 4
T+d(2v44])=min [T(v4),P(v2) =min [∞ ,3+6] = 9
T(v3 )= 5
P(v2 )= 3
T (v j ) min T (v j ), P(vi ) wij
– 2.产生新的P标号点,原则:在现有的所有T标号中将值 最小者改为P标号
二、最短路问题的算法
例6 求v1到v6的最短路。
(1)首先给v1以P标号, P(v1)=0,给其余所有点 T标号,T(vj)=+∞( j = 2,3,… 6)
• 网路的边权可以有多种解释,如效率
• 次数受限的最小生成树—尚无有效算法
• 最小 Steiner 树—尚无有效算法
练习 如图S,A,B,C,D,E,T代表村镇,村镇之间的连线 上赋予了权值(可代表距离,费用,流量等)现沿图中 连线架设电线,使各村镇全部通电,问如何架设使电 线总长最短.(该图称为赋权图或无向网络).
第三节 最短路径问题
一、基本概念
给定一个赋权有向图D= ( V,A ) ,对每一条弧
aij=w (vi,vj),相应地有权w (aij )= wij ,又有两点 vs、vt ∈V,设 p 是 D 中从vs 到vt 的一条路,路 p 的权是 p 中所有弧的权之和,记为w(p).最短路 问题就是求从vs 到vt 的路中一条权最小的路 p*:
v3
e1
v2
v5
v1 e2
e5 v4
e8
v5
v3
破圈法
• 任取一圈,从该圈中去
v4
掉பைடு நூலகம்一条边
2
• 对余下的圈重复相同的 v1 步骤
1
v5
4
v6
• 直到将图中所有的圈都 破掉为止
3
v2
v3
避圈法
• 也称为生长法
v4
• 从图中某一点开始
生长边
• 逐步扩展成长为一 v1
棵树
• 每步选取与已入树
的边不构成圈的那
V1 0 1 1 0 0
V1 V3
V2
V3 V5
V4
1 0011 1 0001 0 10 0 1
V5 0 1 1 1 0
两顶点间有边连接的记为 1 ,无边连接的记为 0。 得到的矩阵一定是对称矩阵。
2、赋权无向图的矩阵表示: 两顶点间有边
连接的记为该边的权数。无边相连的记为 ,
对角线上的数是 0 。得到的矩阵也是对称矩阵。
4
v2
1
v3
所剩最小的边加入边集 T,只
1
2 13
1
要不和前面加入的边构成回路, v8 4
直到 T 中有 n1 条边,则 T
55
4
v0
v4
2
4 5
是最小生成树
v7
3
v6
2
v5
图的矩阵表示
将图的几何形状转化为代数矩阵形式,可大 大方便计算机对图的处理与运算。
1、无权图的矩阵表示:
V2
V4
V1 V2 V3 V4 V5
w p min wp p
第三节 最短路径问题
二、最短路问题的算法
下面仅介绍在一个赋权有向图中寻求最短路 的方法——双标号法(Dijkstra算法),它是在 1959年提出来的。目前公认,在所有的权wij ≥0 时,这个算法是寻求最短路问题最好的算法。并 且,这个算法实际上也给出了寻求从一个始定点 vs到任意一个点vj的最短路。
些边
v2
v5
v6
v3
二、最小生成树及其算法
1.最小生成树
一个网络图可以有多个生成树.记N的所有生成 树的集合为:T={ Tk | k=1,2,…,L }
设Tk =(V, Ek )是网络图N=(G,w)的一棵生成树, 则边集Ek中所有边的权数之和称为树Tk 的权数,记为
w Tk w e
e Ek
(2)破圈法:
① 在网络图中寻找 一个圈。若不存在圈, 则已经得到最短树或网 络不存在最短树;
② 去掉该圈中权数 最大的边;
反复重复 ① ② 两 步,直到最小树。
v1
4
v2
1
v3
1
2 13
1
v8
4
55
4
v4
v0
2
4
5
v7
3
v6
2
v5
•(3)Kruskal 算法:将图中所有边 v1
按权值从小到大排列,依次选
P标号以( )形式标 在结点旁边,T标号以 不带()的数字标在结 点旁边 .
(0)
v1
v2+∞ 6
3 14
5 1
v3 +∞
v4+∞
3
2
+∞
v6
6
v5 +∞
二、最短路问题的算法
(2)考察 v1: T(v2)=min [T(v2),P(v1) +d12]
=min [∞,0+3] = 3
T(v3)=min [T(v3),P(v1) +d13]
第三节 最短路径问题
例5 如下图所示的单行线交通网,每个弧旁边的
数字表示这条单行线的长度。现在有一个人要从v1出发, 经过这个交
通网到达v6,
v2
6
v4
要寻求总路
3
3
程最短的线
v1
路。
14 5
2
v6
6
1
v3
v5
第三节 最短路径问题
从v1到v6的路线是很多的。比如从v1出发,经 过v2 ,v4到达v6或者从v1出发,经过v2,v3,v5到 达v6等等。但不同的路线,经过的总长度是不同 的。例如,按照第一个线路,总长度是 3+6+3=12 单 位 , 按 照 第 二 个 路 线 , 总 长 度 是 3+1+1+6=11单位。
相关文档
最新文档