输油管道问题解答.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
输油管道问题解答

输油管道问题解答 输油管道问题解答(福州大学算法与数据结构课程组提供) 1 问题描述 某石油公司计划建造一条由东向西的主输油管道。该管道要穿过一个有 n口油井的油 田。从每口油井都要有一条输油管道沿最短路经 (或南或北 )与主管道相连。如果给定 n口油 井的位置,即它们的 x坐标(东西向)和 y坐标(南北向),应如何确定主管道的最优位置, 即使各油井到主管道之间的输油管道长度总和最小的位置?证明可在线性时间内确定主管 道的最优位置。 2 实验任务: 给定 n口油井的位置, 设计一个线性时间算法,计算各油井到主管道之间的输油管道最 小长度总和。 3 解题思路 设给定的 n口油井的位置坐标为: (x0, y0 ),(x1, y1),.,(xn-1, yn-1) 。 由于平面上的距离满足三角不等式,故每个油井到主输油管道的最短距离是该油井到主 输油管道的垂直距离。由此可知,所述问题可表述为求平面上的一条直线 y =c 使得, .(n) (1) (-) | yi . c | = min íì.(n) (1) (-) | yi . y |y . y.E i=0 .i =0 . 设 y0, y1,., yn-1 的中位数为 median( y)。通过进一步观察可知, median( y)是 min .(n) (1) (-) | yi . y | 的最优解。这个结论将在算法正确性分析中严格证明。 y.E i =0 4 算法实现 通过上面的分析易知,输油管道问题实质上就是求中位数的问题。 (1)用教材中的快速排序算法 QuickSort将 n口油井的 y坐标排序后,容易计算出中 位数 median( y),由此容易求得 n口油井到主管道的最小长度总和。具体算法可描述如下: void pipeline() { QuickSort(y,n); //y 坐标排序 int dy=y[n/2]; // 中位数 } for(int i=0;in;i++) dist+=abs(y[i]-dy); // 计算长度总和 1 (2)用教材中的最坏情况下的线性时间选择算法 Select计算出中位数 median( y), 然后计算 n口油井到主管道的最小长度总和。具体算法描述如下: void pipeline() { int dy=Select(y,0,n-1,(n+1)/2); // y 坐标中位数 } for(int i=0;in;i++) dist+=abs(y[i]-dy); // 计算长度总和 (3)用教材中的随机选择算法 RandomizedSelect计算出中位数 median(x)和 median( y),然后计算 n口油井到主管道的最小长度总和。具体算法描述如下: void pipeline() { int dy=RandomizedSelect(y,0,n-1,(n+1)/2); // y 坐标中位数 } for(int i=0;in;i++) dist+=abs(y[i]-dy); // 计算长度总和 5 算法正确性 算法的正确性由下面的定理保证。定理 1: median(x)是 min .(n) (1) (-) | xi . x | 的最优解。 x.E i=0 证明: 在下面的讨论中,不失一般性可设 x0 ≤ x1 ≤ .≤ xn-1 。 分别讨论 n为奇数和 n为偶数的情况。 (1)当 n为奇数时,设 n= 2k +1, median (x) ={xk }, sum=| xi . xk | 。.(n) (1) (-) i=0 对于任意 x .E , .(n) (1) (-) | xi . x | =.(n) (1) (-) | xi . xk + xk . x | i=0 i=0 =.(-) (k) (1) | xi . xk + xk . x | +.(-) (n) (1) | xi . xk + xk . x |+ | xk . x | i=0 i=k +1 =.(-) (k) (1) | xi . xk | +.(-) (k) (1) (x -xk ) +.(-) (n) (1) | xi . xk | -.(k) (2) (x . xk )+ | xk . x | i=0 i=0 i=k +1 i=k +1 =.-(n) (1) | x . x |+ | x . x | ik k i=0 = sum + |x . xk |≥ sum 由此可见, xk为最优解, sum为最优值。 (2)当 n为偶数时,设 n =

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档