<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WirelessYang &#187; 加油问题</title>
	<atom:link href="http://wirelessyang.info/tag/%e5%8a%a0%e6%b2%b9%e9%97%ae%e9%a2%98/feed/" rel="self" type="application/rss+xml" />
	<link>http://wirelessyang.info</link>
	<description>YANG YANG</description>
	<lastBuildDate>Fri, 09 Jul 2010 21:08:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>一类相似的智力题&#8211;加油问题</title>
		<link>http://wirelessyang.info/2009/04/%e4%b8%80%e7%b1%bb%e7%9b%b8%e4%bc%bc%e7%9a%84%e6%99%ba%e5%8a%9b%e9%a2%98-%e5%8a%a0%e6%b2%b9%e9%97%ae%e9%a2%98/</link>
		<comments>http://wirelessyang.info/2009/04/%e4%b8%80%e7%b1%bb%e7%9b%b8%e4%bc%bc%e7%9a%84%e6%99%ba%e5%8a%9b%e9%a2%98-%e5%8a%a0%e6%b2%b9%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 15:54:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[数学]]></category>
		<category><![CDATA[加油问题]]></category>
		<category><![CDATA[智力题]]></category>

		<guid isPermaLink="false">http://wirelessyang.info/?p=57</guid>
		<description><![CDATA[飞机加油问题 汽车加油问题 智力题 面试题]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: normal;"> 相信每个人都会对这4个问题有直观的解答，但是最关键的问题在于如何证明某个解答是最优的</span></p>
<h3>1猴子搬香蕉问题<span style="color: #ffffff;">wirelessyang.info</span></h3>
<p><span style="color: #ffffff;"><br />
</span></p>
<h3>一个小猴子边上有100根香蕉，它要走过50米才能到家，每次它最多搬50根香蕉，（多了就被压死了），它每走1米就要吃掉一根，请问它最多能把多少根香蕉搬到家里。</h3>
<p>逻辑推理：<span id="more-57"></span></p>
<p>a)  小猴子需要搬运n次，之前n次需要储存一些香蕉在半路，否则达不到最优。</p>
<p>b) 小猴子每次开始搬运的时候需要搬50根，否则达不到最优。（也就是搬运两次）</p>
<p>c) 小猴子第一次搬运不可能超过25m。<span style="color: #ffffff;">wirelessyang.info</span></p>
<p>d) 小猴子第一次搬运到50*(1/3)m时可留下 50*(1/3)根香蕉做储存。</p>
<p>e) 小猴子把香蕉放在0～50*(1/3)m处无法取得最优；小猴子把香蕉放在50*(1/3)～25m处无法取得最优。（也就是说只能放在50*(1/3)m处）  假设小猴子能在 50*(1/3)m处存放x根香蕉，则 50=3x，x=16.666&#8230;</p>
<p>因为x必须是整数，所以小猴子能在 16m处存放18根香蕉。 因此最后一次搬运的时候能把16根香蕉搬运到家里。</p>
<h3>2飞机加油问题<span style="color: #ffffff;">wirelessyang.info</span></h3>
<p><span style="color: #ffffff;"><span style="color: #999999;">(据说是微软面试题)</span> </span></p>
<h3>已知：每个飞机只有一个油箱， 飞机之间可以相互加油（注意是相互，没有加油机） 一箱油可供一架飞机绕地球飞半圈， 问题：为使至少一架飞机绕地球一圈回到起飞时的飞机场，至少需要出动几架飞机？（所有飞机从同一机场起飞，而且必须安全返回机场，不允许中途降落，中间没有飞机场）。 <span style="color: #ffffff;">wirelessyang.info</span></h3>
<div id="attachment_91" class="wp-caption aligncenter" style="width: 532px"><img class="size-full wp-image-91" title="飞机续航问题 图解" src="http://wirelessyang.info/wp-content/uploads/2009/04/2009-4-27-21-28-02.jpg" alt="飞机续航问题 图解" width="522" height="433" /><p class="wp-caption-text">飞机续航问题 图解</p></div>
<p>拿到本题后,直觉得出来的答案是Fig1(b),而正确的答案是Fig1(a),但网上大多没给出关于最优解的证明。</p>
<p>（提供一个类似的理论分析：<a href="http://wsamc82.googlepages.com/shumo.pdf" target="_blank">PDF</a> 来源：<a href="http://wsamc.spaces.live.com/blog/cns!30446B6D7A90BDA4!903.entry" target="_blank">chen’s blog</a>）</p>
<p>在这里诚心请教用逻辑分析证明Fig1(a)最优的方法：<a href="mailto:tommy786yang@gmail.com" target="_blank">请联系我</a></p>
<h3>3 汽车加油问题1<span style="color: #ffffff;">wirelessyang.info</span></h3>
<p><span style="color: #ffffff;"><br />
</span></p>
<h3>一条公路1000公里，一辆汽车加满一次油 需要500单位的油 可以行驶500公里，请问从公路这头行驶到另一头至少一共需要多少单位的油？假设公路边任意位置点都有加油筒（筒初始为空），可以将车中油暂存到路边的加油筒中。</h3>
<p>出乎我意料的是，这道题居然要用<a href="http://en.wikipedia.org/wiki/Backward_induction" target="_blank">Backward Induction</a>的方法，看似和前面几道题十分类似，但是解题思路却完全不一样。由<a href="http://en.wikipedia.org/wiki/Backward_induction" target="_blank">反向归纳</a>的思想进行分析的步骤如下：  首先确定一个原则，为了尽量省油，我们就要让车在路上的行程尽量短，不做过多的折回。直观上可以判断：越靠近起点的路经过的折回越多，越靠近终点的路经过的折回越少。因此至少要多少油料的问题就转化成了如何使车在路上折回的次数越少的问题。从终点向起点看去，折回的次数从0严格递增。</p>
<p>a)从终点向起点看去，最优的策略是车直接到达（也就是不折回），而这样需要在离终点500公里的地方（暂且叫作中专点1）放500单位油</p>
<p>b)从离终点500公里的地方向起点看去，最优的策略是从某一点（暂且叫作中转点2）折回1次到达（次数是1因为折回次数总是严格递增，我们需要让递增速度最慢）。<span style="color: #ff0000;">我们的目标是让中转点2离中转点1尽可能得远，同时能够保证能成功地通过折回一次来给中转点1提供500单位油</span>。根据<strong>引理1</strong>，中转点2需要离中转点1 (500/3)公里，同时需要在中转点2放置1000单位油。</p>
<p>c)循环应用<strong>引理1</strong></p>
<p>d)这个问题就便成了求解一个最小的N，使得<img class="aligncenter size-full wp-image-108" title="2009-4-27-23-43-26" src="http://wirelessyang.info/wp-content/uploads/2009/04/2009-4-27-23-43-26.jpg" alt="2009-4-27-23-43-26" width="234" height="42" /></p>
<p>这样具体的结果大家就可以自行计算了。</p>
<p><strong>引理1：<span style="color: #ffffff;">wirelessyang.info</span></strong></p>
<div id="attachment_98" class="wp-caption aligncenter" style="width: 325px"><img class="size-full wp-image-98" title="2009-4-27-23-31-181" src="http://wirelessyang.info/wp-content/uploads/2009/04/2009-4-27-23-31-181.jpg" alt="lemma" width="315" height="221" /><p class="wp-caption-text">Fig2</p></div>
<p>场景：在Fig2显示的图中，我们的目标在于先找到m&#8217;使得m&#8217;=min{m}，然后再这个m&#8217;的条件下找到一个x&#8217;使得x&#8217;=max{x}。</p>
<p>内容：m&#8217;=M; x&#8217;=Z/(2*n+1)。</p>
<p>证明:略。<span style="color: #ffffff;">wirelessyang.info</span></p>
<h3><span style="color: #c0c0c0;">4 汽车加油问题2(待解决)<span style="color: #ffffff;">wirelessyang.info</span></span></h3>
<p><span style="color: #c0c0c0;"><span style="color: #ffffff;"><br />
</span></span></p>
<h3><span style="color: #c0c0c0;">假设有一辆车，它的油箱恰好和一个油桶一样大，而且车上恰好可以运载一个桶。假设一桶油可以让车开一百公里。现在在起点，车装满了油，另外起点还有100桶油。问，这车最远能离开起点多远？</span></h3>
]]></content:encoded>
			<wfw:commentRss>http://wirelessyang.info/2009/04/%e4%b8%80%e7%b1%bb%e7%9b%b8%e4%bc%bc%e7%9a%84%e6%99%ba%e5%8a%9b%e9%a2%98-%e5%8a%a0%e6%b2%b9%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
