使n个居民点到邮局的距离总和最小。-Read.ppt

使n个居民点到邮局的距离总和最小。-Read.ppt

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使n个居民点到邮局的距离总和最小。-Read

邮局选址问题 姓名 :林 炜 学号 :060320079 问题描述 在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x 坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由坐标(x,y)表示。 街区中任意2 点(x1,y1)和(x2,y2)之间的距离可以用数值|x1-x2|+|y1-y2|度量。 居民们希望在城市中选择建立邮局的最佳位置,使n个居民点到邮局的距离总和最小。 编程任务 给定n 个居民点的位置,编程计算n 个居民点到邮局的距离总和的最小值。 结果输出 程序运行结束时,将计算结果输出到文件output.txt 中。文件的第1 行中的数是n 个居民点到邮局的距离总和的最小值。 输入文件示例 输出文件示例 input.txt output.txt 5 10 1 2 2 2 1 3 3 -2 3 3 算法分析 首先,给定一个从小到大的数列x1,x2,……,xn,设x是从x1到xn与其绝对差之和最小的数,则显然x位于x1与xn之间。那么,由于x1,xn与它们之间的任意一点的距离之和都相等,且都等于xn-x1,因此接下来可以不考虑x1与xn,而考虑剩下的从x2到x[n-1]的数,同样显然有x必然位于x2和x[n-1]之间,依次类推,最后得出的结论是x就是该数列中间的那个数,或者是中间的那两个数之一,而这个数就是中位数。 结论:数列的中位数就是该数列各个数与其绝对差之和最小的数。 算法复杂度分析 空间复杂性:用一个整型变量n记录居民数量,用两个整型数组x,y来存储居的x坐标与y坐标,所以总的空间复杂性为O(n)。 时间复杂性:读入居民坐标用时O(n),用平均情况下的线性时间选择算法选择x[n],y[n]的中位数用时O(n),最后遍历一次x[n],y[n]求距离总和的最小值用时也为O(n),所以总的时间复杂性为O(n)。 The End Thank you! * * * * 数据输入 由文件input.txt 提供输入数据。文件的第1 行是居民点数n,1£n£10000。接下来n 行是居民点的位置,每行2 个整数x 和y,-10000£x,y£10000。 因为任意2 点(x1,y1)和(x2,y2)之间的距离是用数值|x1-x2|+|y1-y2|度量的,那么n个点P1----Pn到邮局地点P(x,y)的距离之和可以表示为: |x1-x|+ |x2-x|+……+|xn-x| + |y1-y|+ |y2-y|+……+|yn-y| 。 这样一来,问题转变为分别求x轴和y轴上的一个点,使得该轴上的其他点坐标与该点坐标的差的绝对值之和最小。 于是问题就变为求解中位数。因为给定一个数列,中位数有这样的性质 :所有数与中位数的绝对差之和最小。 下面给出简略证明(因为如果证明中位数的性质正确,则该题就可以用求解中位数来解题):

文档评论(0)

170****0571 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档