据说是一计算机博士面世时的题目,蛮有意思,有兴趣可以看看 ( 积分: 0 )

  • 主题发起人 镀金的乞丐
  • 开始时间
真笨,拿个塑料桶装50L油不就什么问题都解决了。
 
分析:最优化的条件是刚好不浪费
自己满油一直开是500公里,那么题目改变,使500公里处汽车刚好满油 50L
从已知得出我们开到N公里处可以返回加油,要返回那么至少留n/20的油
若是直接开到N公里处那么下一次同样只能开到这里。
中间值N=250
首先来设置一个假设:
假设我们在100KM处放油返回。
(500-100*2)/10=30L
那么就能在那里留下30L
下一次到达这里将消耗100/10=10L
由于这个一段将只要返回的油量,那么5次之后我们也许就能达到500km处。
我们有2个选择: 1,装油 10L 留下20L返回用 那么就是这样子
这个时候将以100Km处为起点, 继续开100km 放下 30L油 返回 这时汽车到了200km处放下30L油
返回上一个油点,20L 拿去10L 返回 还剩10L
下一次来
不是在这里拿油而是在这里放下10L 作返回 开到下一个地方
200/10 =20
50-20-10=20L
还有20L剩余

装10L开100Km
300Km处放下10L返回。。。

依次类推

100Km------〉20L
200Km------〉20L
300Km------〉20L
400Km------〉20L
500Km------〉10L

要是这个样子我们就能开到终点。
最优化:
这个样子的话我们就要舍弃所有浪费

最后一次开出将没有任何油残留
100Km------〉10L
200Km------〉10L
300Km------〉10L
400Km------〉10L
500Km------〉10L

依次往回推理

100Km------〉20L
200Km------〉20L
300Km------〉20L
400Km------〉10L

100Km------〉20L
200Km------〉20L
300Km------〉10L

100Km------〉20L
200Km------〉10L
100Km------〉10L
实际上我们第一次放下10L还有20L多余 那么我们使用最优化
50/4=12.5L

125Km------〉25L
250Km------〉25L
375Km------〉25L
500Km------〉12.5L

油量消耗为:

D点到达12.5L只需要一次 12.5*1
C点到达12.5L需要为D点服务 12.5*(2+1)
B点为C点服务 12.5*(2+1)*(2+1)
A点为B服务 12.5*(2+1)*(2+1)*(2+1)
12.5*1+12.5*3+12.5*9*12.5*27=12.5*(1+3+9+27)=12.5*40=500L

但是A点一次实际上可以运25L 所以

500-12.5*(2+1)*(2+1)*(2+1)/2=500-168.75=331.25L
原来认为这个331.25是总消耗,后来感觉350L跑7次就没了。貌似太少,汽车来回跑一次就是50升所以。。。。
油量消耗应该为:
终点 50
D点到达12.5L只需要一次 12.5*1 50
C点到达12.5L需要为D点服务 12.5*(2+1) 50*3
B点为C D点服务 12.5*(2+1)*(2+1) 50*9
A点为B C D服务 12.5*(2+1)*(2+1)*(2+1) 50*27/2
50*(1+1+3+9+27/2)=50*27.5= 1350L
用5次的话
50*(1+1+3+9+27+27*3/3)=50*81.5=3400L (貌似有错)
3次的话
50*(1+1+3+9)=700L
166M处放置16.6升 返回 50L
重复9次 50*9 450L
332M处放置16.6升 50L
重复3次 50*3 150L
500处放置16.6升一次 返回 50L
然后一直开到目的地
最后一次 50L
一共是 450+150+50+50=700L
 
小弟无聊写的。有错请见谅!
示例图:
(这个图后来搜索了下找到一题类似的,那位居然用5次做解答-。-没仔细看是否有错误,但是他的解答结果为580,难道越大越有利?写个程序模拟下也许才能知道结果)
   (加油站)
   甲_______A_______B_______C____________________乙
   甲_______A_______B_______C____________________乙
1.甲-->A 1
   甲_______A_______B_______C____________________乙
  2.甲-->A 2
   甲_______A_______B_______C____________________乙
  3.甲-->B 0 1
   甲_______A_______B_______C____________________乙
  4.甲-->A 1 1
   甲_______A_______B_______C____________________乙
  5.甲-->A 2 1
   甲_______A_______B_______C____________________乙
  6.甲-->B 0 2
   甲_______A_______B_______C____________________乙
  7.甲-->A 1 2
   甲_______A_______B_______C____________________乙
  8.甲-->A 2 2
   甲_______A_______B_______C____________________乙
  9.甲-->C 0 0 1
   甲_______A_______B_______C____________________乙
  10.甲-->A 1 0 1
   甲_______A_______B_______C____________________乙
  11.甲-->A 2 0 1
   甲_______A_______B_______C____________________乙
  12.甲-->B 0 1 1
   甲_______A_______B_______C____________________乙
  13.甲-->A 1 1 1
   甲_______A_______B_______C____________________乙
  14.甲--------------------------------------------->乙
这个是奇数份

要得到最优解应该是这个次数的问题,个人感觉最优的应该是一次放置来回2份,那么就可以一次性推进。前进1个单位,后退一个单位,放置2个单位 那么4份
如下图:
   (加油站)
   甲_______A_______B_______C________D_______________________________乙

甲_______A_______B_______C________D_______________________________乙
1.甲-->A 2
甲_______A_______B_______C________D_______________________________乙
2.甲-->B 0 2
甲_______A_______B_______C________D_______________________________乙
3.甲-->A 2 2
甲_______A_______B_______C________D_______________________________乙
4.甲-->C 0 0 2
甲_______A_______B_______C________D_______________________________乙
5.甲-->A 2 0 2
甲_______A_______B_______C________D_______________________________乙
6.甲-->B 0 2 2
甲_______A_______B_______C________D_______________________________乙
7.甲-->A 2 0 1 1
甲_______A_______B_______C________D_______________________________乙
8.甲-->B 1 1 1 1
甲_______A_______B_______C________D_______________________________乙
9.甲---------------------------------------------------------------->乙
应该是 50*(4+3+1+1)=50*9=450
这个是偶数份
有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!有错请见谅!
(貌似小学生的解法-。-!)
 
仿佛一个线性搜索(是不是这个名字我忘记了)的问题,一个模型很简单的,数学建模的入门课程啊
 
好,帮顶


--------签名档---------------------------

比肩国内顶尖源码下载站点 -> 源码我爱你

http://www.source520.com
http://www.source520.net
80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
******************************************************************
附:为了站点持续发展,现有本站近年来收藏的大量大型商业源码低价出售,
详情请进入以下链接查看:
http://www.source520.com/building_delphi.htm

浏览商业代码请从如下URL进入查看实物:
1.商业源码库1: ftp://source520see3:browse@61.152.199.245/
2.商业源码库2: ftp://source520see2:browse@61.152.199.245/
 

Similar threads

I
回复
0
查看
561
import
I
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部