这种最短网络称为最小生成树

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

1). 2). 3). 4).
解:ab—bd—dc--de
§2 最短路径问题
一. 简介 1. 问题:寻找网络中两个顶点之间的最短路径问题. 2. 实例:希望利用公路开车从上海到北京,希望路 程最短. 注:(1)点—城市,边—公路, 权—距离,连通赋权图. (2)所有权均非负.
二. Dijkstra 算法(1959) 1. 算法思想:
例2:假设在一个没有良好高速公路的偏远地区涌现 了几个城市,理想的是建筑足够多的高速公路, 使得城市之间或者直接通过高速公路往来,或 者可以通过去其他城市来实现彼此的互相往来. 现在我们希望成本最小化.
注: (1)成本最小化即:可以实现城市间的互通,同时, 每条高速路都不浪费(即去掉后就不能互通了).
(2)不允许高速路在所研究的城市以外的某点 处连接.
最短网络问题:
如何用最短的线路将三部电话连起来?
A
B
C
此问题可抽象为设△ABC为等边三角形,,连接三 顶点的路线(称为网络)。这种网络有许多个, 其中最短路线者显然是二边之和(如AB∪AC).
但若增加一个周转站(新点P),连接4点的新网 络的最短路线为PA+PB+PC。最短新路径之长N 比原来只连三点的最短路径O要短。 这样得到的网络不仅比原来节省材料,而且稳定性 也更好。
Steiner猜想起源于在美国贝尔电话公司发生的一 个富有戏剧性的事件。
1967年前,贝尔公司按照连结各分部的最小生成树 的长度来收费。1967年一家航空公司戳了贝尔公司 一个大洞。当时这家企业申请要求贝尔公司增加一 些服务点,而这些服务点恰恰位于构造该公司各分 部的斯坦纳最小树需增加的斯坦纳顶点上。这使得 贝尔公司不仅要拉新线,增加服务网点,而且还要 减少收费。这一意外事件迫使贝尔公司自此以后便 采用了斯坦纳最小树原则 。
三. Kruskal算法
1. 问题描述:如村落间铺设电话线的问题.
2. 算法思想(贪婪算法):总是选择权最小的边.
3. 算法描述: 步骤1:按照权的递增顺序排列图G的边,置集合T为空集. 步骤2:检查排列序表中第一条未检查的边,此边被放入 T中当且仅当它不与T中的边形成回路。若这条边被 加入T中,进入步骤3,否则重复步骤2. 步骤3:若T有n-1条边,则停止,T即为所找的最小支 撑树,否则,进入步骤2.
图论及其算法
张莉 Tongji University lizhang@tongji.edu.cn
§1 最小支撑树问题
一.基本概念 1. 树:无回路的无向连通图. 2. 叶:树中度数为1的顶点.
3. 森林:连通分支大于1,且每个连通分支均为 树的非连通图.
二.最小生成树 1. 例1:在偏远地区,可以通过公路连接分散的村 落,但没有任何电话服务。我们希望铺设电话 线路,使得每一对村落都可以通过电话线连接 (不必是直接的)。沿着现存的公路铺设电话线 最便宜,问沿着哪些公路铺设电话线,可以确 保每一对村落被连接,且电话线的总长度达到 最小(电话线总长度可能与安装总成本成正比)? 解:寻找最小生成树.
首先给始点一个标号l (u0 ) 0, 对其他点v, 则标号为l (v) , 在算法进行过程中,不断修改这些标号,使得每Baidu Nhomakorabea点都最终 可以得到一个标号,这个标号就是始点u0到该点的最短路长.
直观思路即:从始点开始,每次找到始点最近的边,将其 顶点设为S,不断地将始点与S之间的最短路所涉及的边之 端点加入到S,直至到达终点.
5. 实例:
b 53 d 8 54 e 12 10 70 22 a 63 c
排序: ab, cd,de,ec,bd,be,ac,ae 解:ab—cd—de--bd
四. Prim算法 1. 算法思想(贪婪算法): 从顶点出发,对任意点,总是选择与其关联的 权最小的边放入T中.
2. 算法描述: 步骤1:置集合T为空集,任选一点v放入树T中.
步骤2:将连接T中的点与V-V(T)中的点的所有边中权最 小的边加入到T中,若权最小的边有多条,任选其一, 若不可能把任一条边加入到T中,则停止,输出G非 连通. 步骤3:若T有n-1条边,则停止,T即为所找的最小支 撑树,否则,重复步骤2.
5. 实例:
b 53 d 8 54 e 12 10 70 22 a 63 c 选点a,T={a},选出ab, T={ab},选出bd, T={ab,bd},选出dc, T={ab,bd,dc},选出de
2. 算法描述(从u0到un-1):
步骤1:置l (u0 ) 0, 对其他点v, l (v) , S0 u0 , 且i 0. 步骤2:对每个v Si , l (v) min{l (v), l (ui ) w(ui v)}; 计算 min{l (v)}, 并把达到这个最小值的一个顶点记为ui 1.置

A
P
B
C
斯坦纳(Steiner)最小树是可以在给定的点之外再增加 若干个点(称为斯坦纳点),然后将所有这些点连起来。
如果不允许增加任何额外的点作为网络的顶点,这种最 短网络称为最小生成树。 在前面的例子中Steiner最小树的长为 3. 最小生成树的长为2. 1968年贝尔实验室波雷克(Pollak)和研究员吉尔伯特 (Gilbert)提出如下猜想:平面上任意n点集,斯坦纳最 小树长与最小生成树之长的比值的最小值是 3 2 .
vSi
Si 1 Si {ui 1}. 步骤3:若i n-1, 则停止,若i n -1, 则i : i 1,转步骤2.
a 3. 实例:
3 d 3 5 x 8 b 2 1 4 e 8 c 1
y
1) 2) 3) 4) 5) 6) 7)
S0={x},其他l(v)=∞,l(x)=0 l(a)=3,l(b)=8,l(c)=4,S1={x,a} l(b)=8,l(c)=4,l(d)=6, S2={x,a,c} l(b)=8,l(e)=5,l(d)=6,S3={x,a,c,e} l(d)=6,l(b)=7,l(y)=13, S4={a,c,e,d} l(b)=7,l(y)=11,S5={a,c,e,d,b} l(y)=11,S6={a,c,e,d,b,y}
相关文档
最新文档