03‘斯坦纳最小树2

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

(3)改进型试探算法 改进型试探算法
如果每次迭代,都按照随意的顺序加入“虚设站” 如果每次迭代,都按照随意的顺序加入“虚设站”, 并使得到的最小生成树费用有所减少, 并使得到的最小生成树费用有所减少,直到已加入 n-2个“虚设站”,或加入任何一个剩余的可能的 个 虚设站” Steiner点都不能使费用减少为止。按步骤描述如 点都不能使费用减少为止。 步骤描述如 点都不能使费用减少为止 下 1)求给定的 个点的最小生成树,记录其费用; 个点的最小生成树, )求给定的n个点的最小生成树 记录其费用; 2)取一个可能的 点加入, )取一个可能的Steiner点加入,求最小生成树, 点加入 求最小生成树, 若该树的费用小于当前的费用, 若该树的费用小于当前的费用,则记录此树并更新 费用; 费用; 3)重复 )直到已有 )重复2)直到已有n-2个Steiner点,或任何剩余 个 点 点加入都不能减少费用。 的Steiner点加入都不能减少费用。 点加入都不能减少费用 贪婪试探算法和改进型试探算法都是近似算法, 贪婪试探算法和改进型试探算法都是近似算法,对 一般的问题未必能得到最优解。 一般的问题未必能得到最优解。
Steiner树: 树
Steiner树——通过加入若干“虚设站”后,构造 树 通过加入若干“ 通过加入若干 虚设站” 由原站点和虚设站生成的最小生成树。 出由原站点和虚设站生成的最小生成树。若虚设站 设置得恰当, 设置得恰当,就可降低由原站点生成的最小生成树 所需的费用。用这种方法可降低费用多达13.4% 所需的费用。用这种方法可降低费用多达 注意: 注意: 1)Steiner树允许线路在通讯站点以外连接 1)Steiner树允许线路在通讯站点以外连接,这种 树允许线路在通讯站点以外连接, 连接点即为虚设站。 连接点即为虚设站。 2)为构造一个有n个站的网络,最低费用的 )为构造一个有 个站的网络, 个站的网络 Steiner树最多只需 个虚设站,这些虚设站称为 树最多只需n-2个虚设站 个虚设站, 树最多只需 Steiner点。Steiner 点位于给定通信站点的 坐标 点位于给定通信站点的x坐标 点 坐标线形成的格点上。 线,y坐标线形成的格点上。 坐标线形成的格点上
(2)贪婪试探算法 贪婪试探算法
的最小生成树如图13.8(a),顶点按 ),顶点按 图13.5的最小生成树如图 的最小生成树如图 ( ), 直角坐标之定位放置, 直角坐标之定位放置,右边的图是把边画成直 角折线, 角折线,该图称为其三个点的最小直角折线支 撑树。若将图13.8的右边图中重边的端点 作 的右边图中重边的端点d作 撑树。若将图 的右边图中重边的端点 为虚设站加入, 为虚设站加入,则4个点的最小生成树的权减 个点的最小生成树的权减 少了2。 少了 。
(4)模拟退火法 模拟退火法
这是一种通用的随机搜索法,是解决 这是一种通用的随机搜索法,是解决NPH 问题的比较有效的方法。 问题的比较有效的方法。 1)给定点集连同一些虚设点一起构成点集 ) Z,求Z的最小支撑树,其费用记为 ,置 的最小支撑树, , 的最小支撑树 其费用记为C, k=0; ; 2)产生新的点集 )产生新的点集S 从以下几种方式中随机选择一种: 从以下几种方式中随机选择一种: · 加入一个新的虚设点 · 去掉一个存在的虚设点 · 移动一个现有的虚设点到一个随机的允 许位置
图13.8
一般情况下, 一般情况下,可把最小直角折线支撑树中重 边的端点作为Steiner点的侯选点。结合贪 边的端点作为Steiner点的侯选点。 Steiner点的侯选点 婪法的思想,可构造出如下的试探法, 婪法的思想,可构造出如下的试探法,能否 得到正确解,需要证明。 得到正确解,需要证明。 输入给定的n个通信站点的坐标; 1)输入给定的n个通信站点的坐标; 2)计算最小直角折线支撑树; 计算最小直角折线支撑树; 找重边,则重边的端点便是Steiner Steiner点 3)找重边,则重边的端点便是Steiner点 的侯选点; 的侯选点; 分别计算出每个侯选点作为Steiner Steiner点加 4)分别计算出每个侯选点作为Steiner点加 入后所减少的费用,该费用称为此点的价值; 入后所减少的费用,该费用称为此点的价值; 把最大价值的侯选点也作为一个给定点, 5)把最大价值的侯选点也作为一个给定点, 重复2)到5)直到没有正价值的侯选点。 重复2)到5)直到没有正价值的侯选点。 2) 直到没有正价值的侯选点
百度文库
(1)穷举法 穷举法
求最小Steiner树问题是 难题,点数较小 树问题是NP难题 求最小 树问题是 难题, 的问题可用穷举法,但若规模较大, 的问题可用穷举法,但若规模较大,应寻 求近似算法。 求近似算法。 由于费用最少的Steiner树T*上最多只需引 由于费用最少的 树 上最多只需引 个虚设点, 入n-2个虚设点,因此可从 个虚设点 因此可从m≤n(n-1)个可能 个可能 点位置中任取s个点 的Steiner点位置中任取 个点, 点位置中任取 个点, s=0,1,2,…,n-2,连同给定的 个点一起, 个点一起, ,连同给定的n个点一起 算法, 用Kruskal算法,求由这 算法 求由这n+s个点确定的赋 个点确定的赋 权完全图( 权完全图(图中边权取为两点间的直角折 线距离)的最小生成树Ts。 线距离)的最小生成树 。 不大, 若m不大,此法可行,若m大,此法将无效。 不大 此法可行, 大 此法将无效。
在下述四类区域中不含Steiner点 点 在下述四类区域中不含
D1 = {( x , y ) | x < x00 ( k ), y < yk }; D3 = {( x , y ) | x > x10 ( k ), y < yk }; D2 = {( x , y ) | x < x01 ( k ), y > yk }; D4 = {( x , y ) | x > x11 ( k ), y > yk };
的最小Steiner树可分解为两个问题: 树可分解为两个问题: 求V0的最小 树可分解为两个问题 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树。 , 即为所要求的最小 树
图13.5 图13.6
“虚设站”(即Steiner点)的个数和位置是解决问 虚设站” Steiner点 虚设站 题的关键。 题的关键。 Steiner点位于给定通信站点的 坐标线, 点位于给定通信站点的x “Steiner点位于给定通信站点的x坐标线,y坐标 线形成的格点上” 最多有n n=n(n-1)个 线形成的格点上”,最多有n2-n=n(n-1)个Steiner 点的可能位置,这些位置就是Steiner点的候选点. Steiner点的候选点 点的可能位置,这些位置就是Steiner点的候选点. n=9时 n(n-1)=72个Steiner点的可能位置 当n=9时,有n(n-1)=72个Steiner点的可能位置 给定的n个通信站点的集合; V0 :给定的n个通信站点的集合; Steiner点的候选点集合 设其点数为p, 点的候选点集合, Vp : Steiner点的候选点集合,设其点数为p, Vp∩V0=φ; 为顶点集作一个加权完全图Kp+n Kp+n, 以V= Vp∪V0为顶点集作一个加权完全图Kp+n,其 中的边( 之间的直角折线距离。 中的边(u,v)的权取为点u与v之间的直角折线距离。 问题成为:求加权完全图Kp+n中包含V Kp+n中包含 问题成为:求加权完全图Kp+n中包含V0(也允许包 中的其他点)的权最小的子树。 含V中的其他点)的权最小的子树。此即求加权完 全图Kp+n Kp+n中 的最小Steiner树问题。 Steiner树问题 全图Kp+n中,V0的最小Steiner树问题。
2.假设 假设
1)通信站点集合V0是整数坐标的平面 )通信站点集合 点集; 点集; 2)两点间的距离为直角折线距离,线 )两点间的距离为直角折线距离, 路费用正比于线路长度; 路费用正比于线路长度; 3)允许通讯线在非站点处连接。 )允许通讯线在非站点处连接。
3.问题分析及模型 问题分析及模型
给定n个通讯站点, 给定 个通讯站点,用通讯线把这些站点联 个通讯站点 结起来,允许通讯线在非站点处连接, 结起来,允许通讯线在非站点处连接,如何 连接,可使连接通信站的线网费用最低? 连接,可使连接通信站的线网费用最低? 允许通讯线在站点以外的点(即“虚设站” 允许通讯线在站点以外的点( 虚设站” 在站点以外的点 或Steiner点)连接,这样可以使线网费用 点 连接, 降低, 问题要复杂得多 得多。 降低,但问题要复杂得多。 有三个通讯站,直角坐标分别为a(0,0), 如,有三个通讯站,直角坐标分别为 b(4,3),c(6,0)
如图13.7,星号点是给定的9个通讯站点。共 ,星号点是给定的 个通讯站点 个通讯站点。 如图 点的可能位置, 有n(n-1)=72个Steiner点的可能位置,它们 个 点的可能位置 位于过9个点的水平线与垂直线的交点上 个点的水平线与垂直线的交点上。 位于过 个点的水平线与垂直线的交点上。 且由于区域D 内不含Steiner点, 且由于区域 1,D2,D3和D4内不含 点 72个可能的 个可能的Steiner点位置可减少到 个 点位置可减少到31个 个可能的 点位置可减少到 中小圆圈所示的31个位置 (图4中小圆圈所示的 个位置)。 中小圆圈所示的 个位置)。 31 31 31 m=31,迭代次数减少到 0 + 1 + K + 7 = 3572224 迭代次数减少到

秒的时间, 次。假设每次迭代只需用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)
范例2 通讯网络的最佳Steiner树 范例 通讯网络的最佳 树
1.问题 问题 2.假设 假设 3.问题分析及模型 问题分析及模型 4.问题求解 问题求解
穷举法 贪婪试探算法 改进型试探算法 模拟退火法 修正的Prim启发式算法 修正的 启发式算法
5.结果 结果
1.问题 问题
给定平面上若干通讯站,两通讯站之间的线 给定平面上若干通讯站, 路长度为两点间的直角折线距离, 路长度为两点间的直角折线距离,即 d=|x1-x2|+|y1-y2| 两点间的线路费用正比于线路的长度。 两点间的线路费用正比于线路的长度。 如何布线使连接通信站的线网费用最低? ①如何布线使连接通信站的线网费用最低? 如何构造最小Steiner树,即最低费用的 ②如何构造最小 树 Steiner树? 树
问题
假定要设计一个有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树。 最小 树
相关文档
最新文档