注册 登录
编程论坛 数据结构与算法

邮局选址问题 给个思路吧

baobaoyuan 发布于 2010-04-22 16:23, 1766 次点击
邮局选址问题(变化后)
实验任务
在一个按照东西和南北方向划分成规整街区的城市里,n个居民点散乱地分布在不同的街区中。用x坐标表示东西向,用y坐标表示南北向。各居民点的位置可以由其x坐标和y坐标来表示。居民们希望在城市中选择一个恰当的位置(x,y)建立一个邮局。由于地理位置不同,街区中不同居民点到邮局的费用也不相同。如果居民点(xi,yi)沿东西向和南北向前进单位距离的费用分别是ai和bi,1≤i≤n,则从居民点(xi,yi)到邮局(x,y)的费用是ai|xi-x|+bi|yi-y|。全部居民点到邮局的总费用就是

niiiiyybxxa1i。
如何选择邮局的最佳位置才能使n个居民点到邮局的总费用最小。
给定n个居民点的位置以及每个居民点沿东西向和南北向前进单位距离的费用,计算n个居民点到邮局的最小总费用。
数据输入
输入数据的第1行是居民点数n,1≤n≤100000。接下来的n行是居民点的位置坐标以及每个居民点沿东西向和南北向前进单位距离的费用。每行有4个数。前2个是整数x和y,-100000≤x,y≤100000,表示居民点的位置坐标。后2个是实数a和b,0<a,b≤100,分别表示居民点沿东西向和南北向前进单位距离的费用。
数据输出
将计算出的n个居民点到邮局的最小总费用输出,计算结果保留2位小数。
输入示例
输出示例
5
1 2 1.0 2.0
2 8 1.0 2.0
5 3 1.5 2.0
4 -2 2.0 1.0
3 -3 1.0 2.5
38.00
3 回复
#2
cnfarer2010-04-22 18:00
类似背包问题!可参考下背包问题的解决方案(网上搜索下,很多)
#3
mywaylgh2010-04-22 18:18
典型的单纯型极值(simplex minimization)问题。
由于最后的函数有绝对值,所以应采用 Nelder-Mead simplex minimization方法(不知道怎么翻译成中文)
这种方法还很多软件里面已经内置,一些c/c++库里面也有
如 matlab,octave 等的 fminsearch函数
GNU的gsl库也包含了这个方法
#4
自欺欺人2010-04-23 07:31
极限值问题?
1