- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
快速排序法求解管道运输问题.doc
快速排序法求解管道运输问题
摘 要 快速排序的分治策略能有效解决计算几何和组合问题。本文主要是在快速排序法的基础上,对管道运输问题进行算法设计、求解,以求加深对快排算法的认识,并为今后解决同类问题作一借鉴。
关键词 管道运输 快速排序 算法
中图分类号:TP3 文献标识码:A
0引言
排序是计算机信息处理中经常遇到的问题,是一项复杂而又非常重要的技术,它使输入元素按照某种顺序重新进行排列。它的发展不仅可以引起大批量的数据处理变革,而且将影响软件工程的设计。它在计算机图形、计算机辅助设计、机器人、模式识别及统计学等领域具有广泛应用。基本的排序问题是重排一个给定的数据项集,使它按递增或递减排列。数据项可以是具有线性顺序的任意对象。排序能够大大简化查找或更新一个记录的过程。到目前为止,尽管研究人员已经设计了多种排序算法。但快速排序仍然是实际应用中最常用的一种排序算法。对它的复杂度分析方法和数据结构的研究是研究许多应用问题的基础。快速排序中使用的分治策略是设计有效计算几何和组合问题算法的典型设计方法。
快速排序算法采用的是分治策略,是由Tony Hoare于1962年首次提出的,在过去40年里对快速排序方法的研究表明,至今快速排序算法仍然是流传久远的最实用的排序算法,能达到的最佳排序时间为O(Nlog2N) 。只在输入数据项有更详细的信息时,其它排序算法才可能胜过快速排序算法。快速排序算法的一个特性就是其复杂度分析和数据结构的丰富性,这些特性指导我们为各种组合应用问题研制相应的算法设计技术。尽管在最坏情况下,快速排序算法的性能不佳,但严格的证明表明,它的平均情况下的时间复杂度相当好。事实上,在某一排序复杂度模型之下,快速排序的平均复杂度是最可能的一种情况。更具体的说,如果输入有序序列进行排序,快速排序性能最差,而对于几乎所有随机的输入,快速排序性能极好。
本文是基于快速排序算法的良好性能,来对实际问题――输气管道问题进行一个简单求解。
1问题描述
为响应国家西气东输工程,某石油公司计划建造一条由东向西的主输气管道。该管道要穿过N座城市。从每座城市都要有一条输气管道沿最短路经(或南或北)与主管道相连。如果给定N座城市的位置,即它们的x坐标(东西向)和y坐标(南北向),应如何确定主管道的最优位置,即使各城市主管道之间的输气管道长度总和最小的位置?证明可在线性时间内确定主管道的最优位置。给定N座城市的位置,编程计算各座城市到主管道之间的输气管道最小长度总和。
2问题分析
情况1:如果只有一座城市,那么显然是越近越好,主管道直接经过该城市即可。
情况2:如果有两座城市,那么显然又可以分为以下两种情况:
(1)两座城市都在主管道北边,那么这个时候的两个连接管道的长度和肯定大于两座城市的Y坐标之差 ;两座城市都在主管道南边,情况相同;
(2)两座城市,一个在主管道南边,一个在主管道北边,那么两个连接管道的长度和就等于两口井的Y坐标之差
显然情况三是所要的最短管道的设计情况,即当主管道在两座城市之间的任意位置时,连接管道长度之和都等于两座城市的Y坐标之差,是最短的长度
情况3:如果有两座城市以上时,我们设有N座城市,又可分为以下两种情况:
(1)N是偶数 ,只要这N座城市分布在主管道的两边,一边N/2个,那么就是距离之和最小的;
(2)N是奇数,只要将这N座城市中,Y坐标最中间的(也就是Y是中值的那个)城市不算,其余的偶数座城市分布在主管道的两侧,这个时候移动主管道,那么这N个连接管道长度之和就决定于那个最初未算的城市了,因为其余的城市的距离之和是固定了的,这个时候只要主管道最接近那个点就可以了。
通过对上述三种情况的分析,我们知道该问题结果不受x的影响,只与y有关,因此实际上就是求y的中位数,所以可以采用快速排序方法来求解。
3算法实现
4运行结果
上述算法使用软件VC6.0编译,运行结果如下图所示。从图中,我们可以看到当只有一座城市时,主输气管道穿过该城市;当只有两座城市时,虽然在两座城市之间(包括这两座城市在内)随意一处建立主管道均可,但该算法以y小的值为最终结果,当有多座城市时类似可得出结果。
5结果分析
当然,这是在理想的状况下设计的,主要问题是主管道是由正西向正东的方向,而现实中是不可能的,方向一定会有偏差的,但是这种情况也是可以解决的。只需我们在建立坐标系的时候将X轴的方向指向输气管道的方向即可,而个座城市的相对位置不会变,这样的话,我们依旧可以使用这种算法(模型)计算类似的最短距离和。
通过对这一简单问题的算法设计,不仅使我加深了对快速排序算法的认识,而且在今后碰到类似问题时,
文档评论(0)