斯坦纳最小树

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

结果
用穷举法可得到给定的9个通讯站的最 小Steiner树,共有5个,费用为94。 图13.9给出了这5个最小Steiner树, 其中每个Steiner树都含4个或5个 Steiner点。因此可按图13.9中任何一 个Steiner树来设计给定9个站的费用 最少的局部网络。
图13.9
3)确定新点集S的最小支撑树,其费 用记为C1,
若C1≤C,则更新C为C1,更新当前点集 Z为S, 当k=M时停止,否则k=k+1,转2); 若C1>C,则仅以一定的概率(可取为 exp{-(C1-C)/T(k)},其中T为一控制参数, 称为温度,随k的增大而减小,比如取 T(k)=T(0)/k,称为冷却方案)接受S作为 当前点集Z,转2)。
求V0的最小Steiner树可分解为两个问题: 1)求Steiner点;2)求最小生成树。 根据提示“最小Steiner树最多只需n-2个虚 设站(Steiner点)”, Vs :表示Vp中任意s个点的集合。 对满足0≤s≤n-2的整数s和点集Vs Vp,以 V= Vs∪V0为顶点集的加权完全图Ks+n的 最小生成树记为Ts, 所有Ts 中权最小者记为 T*,T*即为所要求的最小Steiner树。
Steiner树:
Steiner树——通过加入若干“虚设站”后,构造 出由原站点和虚设站生成的最小生成树。若虚设站 设置得恰当,就可降低由原站点生成的最小生成树 所需的费用。用这种方法可降低费用多达13.4% 注意: 1)Steiner树允许线路在通讯站点以外连接,这种 连接点即为虚设站。 2)为构造一个有n个站的网络,最低费用的 Steiner树最多只需n-2个虚设站,这些虚设站称为 Steiner点。Steiner 点位于给定通信站点的x坐标 线,y坐标线形成的格点上。
图13.5
图13.6
“虚设站”(即Steiner点)的个数和位置是解决问 题的关键。 “Steiner点位于给定通信站点的x坐标线,y坐标 线形成的格点上”,最多有n2-n=n(n-1)个Steiner 点的可能位置,这些位置就是Steiner点的候选点. 当n=9时,有n(n-1)=72个Steiner点的可能位置 V0 :给定的n个通信站点的集合; Vp : Steiner点的候选点集合,设其点数为p, Vp∩V0=φ; 以V= Vp∪V0为顶点集作一个加权完全图Kp+n,其 中的边(u,v)的权取为点u与v之间的直角折线距离。 问题成为:求加权完全图Kp+n中包含V0(也允许包 含V中的其他点)的权最小的子树。此即求加权完 全图Kp+n中,V0的最小Steiner树问题。
用模拟退火法来求图13.4所给出的9个点的 最小Steiner树,在25MHz型386计算机上 运行,大约1.5分中便可得到了最优解。 对应于随机数产生器的不同种子的不同运 行,可给出全部五个不同的最优解。 在上百次运行中,模拟退火法都总是收敛 到五个最优解中的一个。 计算时间方面的优越性表明当该问题的规 模较大,穷举法不可行时,模拟退火法的 价值。
提示: 最小Steiner树问题是NP难题。 前面介绍的方法,除穷举法之外,每个算 法都是有效算法,但不一定能得到最优解, 一般需要对解的近似程度进行分析。 对算法的好坏,可随机给出一些通讯站, 用这些方法来求解,对算法给出的解进行 比较,看哪个算法效果最佳。
编写贪婪试探算法、改进型试探算法 的MATLAB程序,求给定的9个通讯站 的最小Steiner树。 用手工操作的方式,由修正的Prim启 发式算法求给定的9个通讯站的最小 Steiner树,体会该算法的思想。
在下述四类区域中不含Steiner点
D 1 {( x , y ) | x x 00 ( k ), y y k }; D 3 {( x , y ) | x x 10 ( k ), y y k }; D 2 {( x , y ) | x x 01 ( k ), y y k }; D 4 {( x , y ) | x x 11 ( k ), y y k };
2.假设
1)通信站点集合V0是整数坐标的平面 点集; 2)两点间的距离为直角折线距离,线 路费用正比于线路长度; 3)允许通讯线在非站点处连接。
3.问题分析及模型
给定n个通讯站点,用通讯线把这些站点联 结起来,允许通讯线在非站点处连接,如何 连接,可使连接通信站的线网费用最低? 允许通讯线在站点以外的点(即“虚设站” 或Steiner点)连接,这样可以使线网费用 降低,但问题要复杂得多。 如,有三个通讯站,直角坐标分别为a(0,0), b(4,3),c(6,0)
(3)改进型试探算法
如果每次迭代,都按照随意的顺序加入“虚设站”, 并使得到的最小生成树费用有所减少,直到已加入 n-2个“虚设站”,或加入任何一个剩余的可能的 Steiner点都不能使费用减少为止。按步骤描述如 下 1)求给定的n个点的最小生成树,记录其费用; 2)取一个可能的Steiner点加入,求最小生成树, 若该树的费用小于当前的费用,则记录此树并更新 费用; 3)重复2)直到已有n-2个Steiner点,或任何剩余 的Steiner点加入都不能减少费用。 贪婪试探算法和改进型试探算法都是近似算法,对 一般的问题未必能得到最优解。
(5)修正的Prim启发式算法
受到求最小生成树的Prim算法的启发,根 据Prim算法的思想,构造出下面的求最小 直角折线Steiner树的方法。 先引入一些记号: Z: 给百度文库的通讯站点集合; G: 给定通信站点的x坐标线,y坐标线 形成的格点全体构成的集合; T: 当前Steiner树的顶点集; S=G-Z; 算法步骤: 1)选取Z中距离最近的两点zi=(xi,yi), zj=(xj,yj);
范例2 通讯网络的最佳Steiner树
1.问题 2.假设 3.问题分析及模型 4.问题求解
穷举法 贪婪试探算法 改进型试探算法 模拟退火法 修正的Prim启发式算法
5.结果
1.问题
给定平面上若干通讯站,两通讯站之间的线 路长度为两点间的直角折线距离,即 d=|x1-x2|+|y1-y2| 两点间的线路费用正比于线路的长度。 ①如何布线使连接通信站的线网费用最低? ②如何构造最小Steiner树,即最低费用的 Steiner树?
(1)穷举法
求最小Steiner树问题是NP难题,点数较小 的问题可用穷举法,但若规模较大,应寻 求近似算法。 由于费用最少的Steiner树T*上最多只需引 入n-2个虚设点,因此可从m≤n(n-1)个可能 的Steiner点位置中任取s个点, s=0,1,2,…,n-2,连同给定的n个点一起, 用Kruskal算法,求由这n+s个点确定的赋 权完全图(图中边权取为两点间的直角折 线距离)的最小生成树Ts。 若m不大,此法可行,若m大,此法将无效。
(2)贪婪试探算法
图13.5的最小生成树如图13.8(a),顶点按 直角坐标之定位放置,右边的图是把边画成直 角折线,该图称为其三个点的最小直角折线支 撑树。若将图13.8的右边图中重边的端点d作 为虚设站加入,则4个点的最小生成树的权减 少了2。
图13.8
一般情况下,可把最小直角折线支撑树中重 边的端点作为Steiner点的侯选点。结合贪 婪法的思想,可构造出如下的试探法,能否 得到正确解,需要证明。 1)输入给定的n个通信站点的坐标; 2)计算最小直角折线支撑树; 3)找重边,则重边的端点便是Steiner点 的侯选点; 4)分别计算出每个侯选点作为Steiner点加 入后所减少的费用,该费用称为此点的价值; 5)把最大价值的侯选点也作为一个给定点, 重复2)到5)直到没有正价值的侯选点。

次。假设每次迭代只需用1/60秒的时间, 3572224次迭代需要大约17个小时。
9个给定 点和31 个可能的 Steiner 点 a(0,15), b(5,20), c(16,24), d(20,20), e(33,25), f(23,11), g(35,7), h(25,0), i(10,3)
e)若dist1<dist2, 则加入path1, 若dist2<dist1, 则加入path2, 若dist1=dist2, 则对下一个最近点 重复(2)a到(2)e, 直到dist1¹ dist2, 或穷 尽了Z中所有顶点(此时任意选择); 3)取ziZ∩(G-T),zjT,使zi,zj尽可能 近; 4)重复2),3)直到Z中的顶点均在 T中。
问题
假定要设计一个有9个通 讯站点的局部网络,使 其造价最低。这9个站的 直角坐标为: a(0,15), b(5,20), c(16,24), d(20,20), e(33,25), f(23,11), g(35,7), h(25,0), i(10,3)。 求出联结这9个通讯站的 最小Steiner树。
(4)模拟退火法
这是一种通用的随机搜索法,是解决NPH 问题的比较有效的方法。 1)给定点集连同一些虚设点一起构成点集 Z,求Z的最小支撑树,其费用记为C,置 k=0; 2)产生新的点集S 从以下几种方式中随机选择一种: ·加入一个新的虚设点 ·去掉一个存在的虚设点 ·移动一个现有的虚设点到一个随机的允 许位置
2)这两点的x坐标或y坐标相同,则将两点连接起 来,并把该路径上所有在G中的点以及zi,zj加入T, 否则 a)构造过(xi,yj)的连接zi,zj的直角折线路径 path1,将path1上所有属于G的点以及zi,zj加入T; b)在Z-T中找到与当前树距离最近的顶点z,其 距离记为dist1,然后删掉树中的path1; c)构造过(xi,yj)的连接zi,zj的直角折线路径 path1, 将path1上所有属于G的点以及zi,zj加入T; d)在Z-T中找到与当前树距离最近的顶点z,其 距离记为dist2,然后删掉树中的path2;
如图13.7,星号点是给定的9个通讯站点。共 有n(n-1)=72个Steiner点的可能位置,它们 位于过9个点的水平线与垂直线的交点上。 且由于区域D1,D2,D3和D4内不含Steiner点, 72个可能的Steiner点位置可减少到31个 (图4中小圆圈所示的31个位置)。 31 31 31 m=31,迭代次数减少到 0 1 7 3572224
相关文档
最新文档