﻿<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>f(Program,Poet)=Programet &#187; 智慧</title>
	<atom:link href="http://blog.programet.org/tag/%e6%99%ba%e6%85%a7/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.programet.org</link>
	<description>f(诗,程序)=诗序=思绪 &#124; 记载我们自己的生活</description>
	<lastBuildDate>Tue, 07 Feb 2012 16:00:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>你被这些网络迷题难倒过吗？</title>
		<link>http://blog.programet.org/2011/08/%e4%bd%a0%e8%a2%ab%e8%bf%99%e4%ba%9b%e7%bd%91%e7%bb%9c%e8%bf%b7%e9%a2%98%e9%9a%be%e5%80%92%e8%bf%87%e5%90%97%ef%bc%9f.html</link>
		<comments>http://blog.programet.org/2011/08/%e4%bd%a0%e8%a2%ab%e8%bf%99%e4%ba%9b%e7%bd%91%e7%bb%9c%e8%bf%b7%e9%a2%98%e9%9a%be%e5%80%92%e8%bf%87%e5%90%97%ef%bc%9f.html#comments</comments>
		<pubDate>Tue, 30 Aug 2011 12:24:07 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[科普]]></category>
		<category><![CDATA[非严肃]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[果壳]]></category>
		<category><![CDATA[概率]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=4538</guid>
		<description><![CDATA[经常有一些网络迷题让观众看得瞠目结舌。要说的是，这其中不乏一些设计巧妙的。但对于死理性派来说，再精巧的设计，也会被看穿。本文在这里，就解释了几个流传颇广的经典数学谜题奥秘所在。 &#160; 消失的正方形 这是数学游戏大师马丁·加德纳在《从惊讶到思考》一书中提到过的例子。重新摆放分割的小块图形后，上面的正方形中少了一个小方格，它去了哪里？我们 不妨实际操作一下，做两个全等的、上面没有孔洞的正方形（做的越大越好）。把其中一个按图中的式样精确地剪成所需要的五块，然后重新安排一下，拼成右边的 样子的。最后把它放到未经剪切的正方形上边，让二者的上边和两侧边都重合。你会发现，其实带方格的图形不是真正的正方形。它实际上是长方形，比正方形高 1／12。它的底部多出一个 12 * （1／12） 的窄带，其面积恰好等同于消失方格的面积。 所有三角形都是等腰三角形 这是一个颇为古老的数学把戏。最近又开始在网上流传。不妨来看看这个神奇的结论是如何得到的。 在一个任意△ABC中，做A点的角平分线，交BC边的垂直平分线A&#8217;O于点O。然后过O点分别做AB与AC边上的垂线，垂足为C&#8217;和B&#8217;。 显然△AC'O≌△AB'O，所以 AC' = AB'， C'O = B'O 又因为 BO = CO， ∠OB'C = ∠OC'B 所以△BOC'≌△COB'。 推得： C'B = B'C AB = AC'+ C'B = AB' + B'C = AC，即△ABC是等腰三角形。 正如前面所说，平面几何的谬误大多都是在有误差的图上做文章的。实际上，角平分线会与其相对的垂直平分线并不相交于三角形内，而是交于三角形外部。所以即使有AC&#8217;=AB&#8217;，BC&#8217;=B&#8217;C，我们也能一眼看出AB=AC&#8217;+AB&#8217;，AC=BC&#8217;-B&#8217;C。 图里藏人 下面让我们见识一下什么是“大变活人”。 先看两排爷们的脸 把上面的图从中间剪开，然后挪动成下图那样，怎么就少了一个人？ 再看下面这张图。 上图仅仅通过两个动作，剪切和互换，就让人数在十二和十三之间变来变去，这是怎么回事？ 眼尖的读者或许已经发现了，这种精心的安排其实是移花接木。以“爷们脸”这幅图为例（这幅图较简单），第一个人变成了圆下巴，第二个直接变成了双下巴，第三个的鼻子变大了，第四个的鼻子变长了，第五个换了一个表情，多了眉毛。 因为整个图的面积不变，但是脸个数少了一个，导致剩下的那些脸都变大了一些，其结果就是所有爷们个个是长脸。这种传递式的面积分配，很容易通过上色标记的办法清晰地辨认出来。 而至于第二个图，不得不说那是一个精妙无比的设计。不妨在图片变动之前，对十二个人编号。 再看看移动之后的号码变动情况，其中上身和下身都对应着各自的编号。 如果仔细看，便会发现移动之后1号小小地少了一撮头发，10号的鞋底也被削了一层。他们各自都被从身体的某个部位切割下一点东西，活生生拼凑出了一个人。当画面上出现13个人时，每个人都比出现12个时要矮 [...]
相关文章：<ol>
<li><a href='http://blog.programet.org/2010/08/%e7%bb%9f%e8%ae%a1%e4%b8%8e%e6%8e%a8%e7%90%863%ef%bc%9aktv%e9%87%8c%e7%9a%84%e9%aa%b0%e5%ad%90%e6%b8%b8%e6%88%8f.html' rel='bookmark' title='统计与推理(3)：KTV里的骰子游戏'>统计与推理(3)：KTV里的骰子游戏</a></li>
<li><a href='http://blog.programet.org/2011/07/%e4%b8%8d%e5%8f%af%e6%80%9d%e8%ae%ae%e7%9a%84%e7%ae%b1%e5%ad%90%ef%bc%9a%e4%bd%a0%e7%9a%84%e4%b8%80%e7%94%9f%e5%b0%b1%e5%9c%a8%e9%87%8c%e9%9d%a2.html' rel='bookmark' title='不可思议的箱子：你的一生就在里面'>不可思议的箱子：你的一生就在里面</a></li>
<li><a href='http://blog.programet.org/2009/12/%e5%b7%a5%e6%ac%b2%e5%96%84%e5%85%b6%e4%ba%8b%ef%bc%8c%e5%bf%85%e6%9c%89%e5%99%a8%e2%80%94%e2%80%94cad%e4%ba%8c%e4%b8%89%e4%ba%8b.html' rel='bookmark' title='工欲善其事，必有器——CAD二三事'>工欲善其事，必有器——CAD二三事</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<blockquote><p>经常有一些网络迷题让观众看得瞠目结舌。要说的是，这其中不乏一些设计巧妙的。但对于死理性派来说，再精巧的设计，也会被看穿。本文在这里，就解释了几个流传颇广的经典数学谜题奥秘所在。</p></blockquote>
<p><span id="more-4538"></span></p>
<p>&nbsp;</p>
<h3>消失的正方形</h3>
<p><img src="http://img1.guokr.com/gkimage/a2/3k/4g/a23k4g.png" alt="/gkimage/a2/3k/4g/a23k4g.png" width="450" height="200" /></p>
<p>这是数学游戏大师马丁·加德纳在《从惊讶到思考》一书中提到过的例子。重新摆放分割的小块图形后，上面的正方形中少了一个小方格，它去了哪里？我们 不妨实际操作一下，做两个全等的、上面没有孔洞的正方形（做的越大越好）。把其中一个按图中的式样精确地剪成所需要的五块，然后重新安排一下，拼成右边的 样子的。最后把它放到未经剪切的正方形上边，让二者的上边和两侧边都重合。你会发现，其实带方格的图形不是真正的正方形。它实际上是长方形，比正方形高  1／12。它的底部多出一个 12 * （1／12） 的窄带，其面积恰好等同于消失方格的面积。</p>
<h3>所有三角形都是等腰三角形</h3>
<p>这是一个颇为古老的数学把戏。最近又开始在网上流传。不妨来看看这个神奇的结论是如何得到的。</p>
<p>在一个任意△ABC中，做A点的角平分线，交BC边的垂直平分线A&#8217;O于点O。然后过O点分别做AB与AC边上的垂线，垂足为C&#8217;和B&#8217;。</p>
<p><img src="http://img1.guokr.com/gkimage/00/9c/e6/009ce6.png" alt="/gkimage/00/9c/e6/009ce6.png" /></p>
<pre>显然△AC'O≌△AB'O，所以 AC' = AB'， C'O = B'O

又因为 BO = CO， ∠OB'C = ∠OC'B

所以△BOC'≌△COB'。  推得： C'B = B'C

AB = AC'+ C'B = AB' + B'C = AC，即△ABC是等腰三角形。
</pre>
<p>正如前面所说，平面几何的谬误大多都是在有误差的图上做文章的。实际上，角平分线会与其相对的垂直平分线并不相交于三角形内，而是交于三角形外部。所以即使有AC&#8217;=AB&#8217;，BC&#8217;=B&#8217;C，我们也能一眼看出AB=AC&#8217;+AB&#8217;，AC=BC&#8217;-B&#8217;C。</p>
<p><img src="http://img1.guokr.com/gkimage/0w/b5/0p/0wb50p.png" alt="/gkimage/0w/b5/0p/0wb50p.png" /></p>
<h3>图里藏人</h3>
<p>下面让我们见识一下什么是“大变活人”。</p>
<p>先看两排爷们的脸</p>
<p><img src="http://img1.guokr.com/gkimage/mw/rk/ev/mwrkev.png" alt="/gkimage/mw/rk/ev/mwrkev.png" /></p>
<p>把上面的图从中间剪开，然后挪动成下图那样，怎么就少了一个人？</p>
<p>再看下面这张图。</p>
<p><img src="http://img1.guokr.com/gkimage/8p/96/ay/8p96ay.png" alt="/gkimage/8p/96/ay/8p96ay.png" /></p>
<p>上图仅仅通过两个动作，剪切和互换，就让人数在十二和十三之间变来变去，这是怎么回事？</p>
<p>眼尖的读者或许已经发现了，这种精心的安排其实是移花接木。以“爷们脸”这幅图为例（这幅图较简单），第一个人变成了圆下巴，第二个直接变成了双下巴，第三个的鼻子变大了，第四个的鼻子变长了，第五个换了一个表情，多了眉毛。</p>
<p>因为整个图的面积不变，但是脸个数少了一个，导致剩下的那些脸都变大了一些，其结果就是所有爷们个个是长脸。这种传递式的面积分配，很容易通过上色标记的办法清晰地辨认出来。</p>
<p><img src="http://img1.guokr.com/gkimage/5m/3j/lu/5m3jlu.png" alt="/gkimage/5m/3j/lu/5m3jlu.png" /></p>
<p>而至于第二个图，不得不说那是一个精妙无比的设计。不妨在图片变动之前，对十二个人编号。</p>
<p><img src="http://img1.guokr.com/gkimage/pm/ah/j9/pmahj9.png" alt="/gkimage/pm/ah/j9/pmahj9.png" /></p>
<p>再看看移动之后的号码变动情况，其中上身和下身都对应着各自的编号。</p>
<p><img src="http://img1.guokr.com/gkimage/hw/dz/rq/hwdzrq.png" alt="/gkimage/hw/dz/rq/hwdzrq.png" /></p>
<p>如果仔细看，便会发现移动之后1号小小地少了一撮头发，10号的鞋底也被削了一层。他们各自都被从身体的某个部位切割下一点东西，活生生拼凑出了一个人。当画面上出现13个人时，每个人都比出现12个时要矮 1／13。</p>
<p>两幅图的原理都是通过累积很多次细微尺寸的变化，最终改变图中物品的数量。第一幅较为简单，而第二幅用十二人切合成十三个，做了十二件事（从每个人身上“偷”一点），但却只用了两个动作！其精巧程度实在让人佩服。</p>
<p>有趣的是，有一种古老的伪造钱币的方法正是以这种原理为基础的。按照上面的方法可以类似地把九张钞票分成18份，重新安排成十张。但这样伪造的钞票 很容易被侦破，不建议读者采用。因为票面上特殊的两个数字串，钱号在这种操作下已不相匹配。在所有的钞票上，这两个数字串都是位于相对的两端，一高一低。 这正是为了挫败这种伪造企图。</p>
<p><img src="http://img1.guokr.com/gkimage/co/hl/7i/cohl7i.png" alt="/gkimage/co/hl/7i/cohl7i.png" /></p>
<h3>看似一样的信息，不一样的结果</h3>
<p>一位母亲有两个孩子，有人问母亲的朋友A，两个孩子都是女孩吗？这位朋友说：“我不清楚，但有一个是女孩”。母亲的另一位朋友B说：“我上次去她家，看到一个女孩”。朋友A听到，表示不屑：“这和我说的不是一样的吗”。</p>
<p>看起来这两个信息没有差别，但它们真的是等同的吗？</p>
<p>答案是：不同的。由A给出的信息可以推出两个孩子全是女孩的概率是1／3，而由B则是1／2。</p>
<p>让我们仔细分析一番。根据A的叙述，我们知道“两个小孩中有女孩”，而两个小孩的性别组合有四种情况：男男，男女，女男和女女。因为知道了两个小孩中有女孩，所以可以排除“男男”，两个小孩都是女孩的概率便是1／3。</p>
<p>而B的陈述是看到一个孩子是女孩，问题实际上就转化成了“另一个孩子是不是女孩”，因此两个小孩都是女孩的概率是1／2。</p>
<p>为什么呢？这是因为在进行概率计算的时候， <strong>不确定的描述往往意味着更多的可能性</strong> 。一个类似的例子是，打牌的的时候，如果有人说，“来打个赌吧，我现在有一张A，猜猜我还有没有更多A？”这种情况下他很可能会输，但如果他报出抓到的那张A的花色，“我现在有一张黑桃A，猜猜我还有没有更多的A？”那结果就截然不同了。死理性派之前对此有过一个 <a href="http://www.guokr.com/article/33711/">详细的分析</a> 。前一种情况下，有更多A的概率是 37% ,而后一种有更多A的概率一下就跃升为 56% 。面对这样反常的结果，不了解概率论的人，都会被吓一跳。</p>
<p>类似这样“想不通”的例子还有很多。比如著名的三门问题。换还是不换？这是一个让无数人纠结的问题，据说很多人在看了详尽的分析后，依然觉得有违常 理，不能接受。“最高IQ人类”的玛丽莲在当年公布自己的答案——换一扇门时，立刻引来巨大争议，无数人觉得她回答错了，并写信“纠正”她，这些记录都保 留在它的个人网站上。就是直到今天，这个游戏依然困扰着不少人。</p>
<p>我后来又<a title="用多次试验法踏上雷区，来分析条件概率问题" href="http://blog.programet.org/2011/08/%e7%94%a8%e5%a4%9a%e6%ac%a1%e8%af%95%e9%aa%8c%e6%b3%95%e8%b8%8f%e4%b8%8a%e9%9b%b7%e5%8c%ba%ef%bc%8c%e6%9d%a5%e5%88%86%e6%9e%90%e6%9d%a1%e4%bb%b6%e6%a6%82%e7%8e%87%e9%97%ae%e9%a2%98.html">在这里</a>补充了一个进一步的说明。</p>
<h3>双赢的赌局</h3>
<p>甲和乙各自收到女朋友送的领带。两人见面开始争论谁的更贵，最终决定打个赌，去商场调查，谁的领带贵谁就算赢，  <strong>而赢的人要把领带送给输的人作安慰</strong> 。</p>
<p>甲认为他在这个赌局中输赢是等概率的。如果赢了，那么失去的是自己戴的这条领带。而如果输了，则会得到一个更贵的领带。所以这个赌局对他是有利的。</p>
<p>当然乙也可以这样想。但问题是，打一次赌怎么会同时对双方都有利呢？</p>
<p>这个著名的问题由法国数学家莫里斯•克莱特契克在他的《数学消遣》书中首先提出。他指出，要想这个游戏公平，必须限制条件。比如甲乙二人对对方女朋 友的阔绰程度一无所知等。如果说甲的女朋友出手相对更阔绰些，那么甲的领带就有较大的可能比乙的要贵，他就更倾向于输掉这次打赌。</p>
<p>这个例子后来衍化成著名的钱包悖论，道具由领带变为了钱包：由第三者计算甲、乙二君钱包里面的钱，钱少者可以赢走钱多者的钱。</p>
<p>实际上，甲、乙二人的错误在于，他们只根据“可以赢更多的钱”这点，就做出这场赌博对自己有利的结论。但这场赌博对谁有利，应该以谁可以“赢得这场赌博”而不是“可以赢更多的钱”来判断。以赌谁钱包里钱少为例。判断谁有胜算，必须注意两点：</p>
<pre>• 必须计算期望值。

• 钱包里有多少钱是很随机的。
</pre>
<p>所以正确的逻辑应为：</p>
<pre>• 如果我的钱包里有较多的钱，那么我参加这个游戏，会输掉较多的钱。

• 如果我的钱包里有较少的钱，那么我参加这个游戏，会赢得较多的钱。
</pre>
<p>这两种情况的可能性是均等的。而且，由于总有一个人赢得另一个人输掉有更多钱的钱包，这个游戏是均衡的。所以它的结果应该是甲、乙各有一半的可能获胜。也就是说，这个游戏 <a href="http://www.guokr.com/article/7976/">是公平的</a> ，并不对哪一方有利。</p>
<blockquote><p>本文原载于<a href="http://www.guokr.com/article/60677/">果壳网</a></p></blockquote>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2010/08/%e7%bb%9f%e8%ae%a1%e4%b8%8e%e6%8e%a8%e7%90%863%ef%bc%9aktv%e9%87%8c%e7%9a%84%e9%aa%b0%e5%ad%90%e6%b8%b8%e6%88%8f.html' rel='bookmark' title='统计与推理(3)：KTV里的骰子游戏'>统计与推理(3)：KTV里的骰子游戏</a></li>
<li><a href='http://blog.programet.org/2011/07/%e4%b8%8d%e5%8f%af%e6%80%9d%e8%ae%ae%e7%9a%84%e7%ae%b1%e5%ad%90%ef%bc%9a%e4%bd%a0%e7%9a%84%e4%b8%80%e7%94%9f%e5%b0%b1%e5%9c%a8%e9%87%8c%e9%9d%a2.html' rel='bookmark' title='不可思议的箱子：你的一生就在里面'>不可思议的箱子：你的一生就在里面</a></li>
<li><a href='http://blog.programet.org/2009/12/%e5%b7%a5%e6%ac%b2%e5%96%84%e5%85%b6%e4%ba%8b%ef%bc%8c%e5%bf%85%e6%9c%89%e5%99%a8%e2%80%94%e2%80%94cad%e4%ba%8c%e4%b8%89%e4%ba%8b.html' rel='bookmark' title='工欲善其事，必有器——CAD二三事'>工欲善其事，必有器——CAD二三事</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2011/08/%e4%bd%a0%e8%a2%ab%e8%bf%99%e4%ba%9b%e7%bd%91%e7%bb%9c%e8%bf%b7%e9%a2%98%e9%9a%be%e5%80%92%e8%bf%87%e5%90%97%ef%bc%9f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>谜之系列(0):线性规划</title>
		<link>http://blog.programet.org/2011/02/%e8%b0%9c%e4%b9%8b%e7%b3%bb%e5%88%970%e7%ba%bf%e6%80%a7%e8%a7%84%e5%88%92.html</link>
		<comments>http://blog.programet.org/2011/02/%e8%b0%9c%e4%b9%8b%e7%b3%bb%e5%88%970%e7%ba%bf%e6%80%a7%e8%a7%84%e5%88%92.html#comments</comments>
		<pubDate>Mon, 14 Feb 2011 16:16:38 +0000</pubDate>
		<dc:creator>DarkRaven</dc:creator>
				<category><![CDATA[数学]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[计算机]]></category>
		<category><![CDATA[严肃]]></category>
		<category><![CDATA[公式]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[算法]]></category>
		<category><![CDATA[证明]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=3736</guid>
		<description><![CDATA[Don&#8217;t Panic! 虽然听起来很可怕，但是线性规划其实是很容易理解的东西。 简单介绍 嘛，大家在高中里面也应该做过这样的题目： 最大化： 满足： 这是二维情况下的线性规划，大家当时的解法恐怕都是在平面上画出相应的图形，然后平移目标函数对应的直线来找到目标函数的最优值。 从这个想法很容易推广到变量个数更多的线性规划问题。比如在拥有三个变量的线性规划中，约束条件由二维时的直线推广到平面，可行域由二维时的半平面推广到半空间。 同样地n个变量的一般线性规划也可以如此推广（n维超空间，n-1维超平面什么的&#8230;.） 如果说三维还在人的想象力所及的范围内，那么n维的线性规划要怎么解呢？ 直觉告诉我们，线性规划的最优解总是在顶点处取到（事实也是这样，证明略），于是我们可以联立变量数个方程，解出顶点坐标，带入目标函数。这样的算法，对于n个变量，m个约束条件的线性规划问题，其复杂度为 而这个复杂度也就是线性规划中常用的单纯形算法的最坏复杂度。 我将不在此介绍单纯形算法。 以上是对线性规划的简单介绍，下面要讲线性规划问题在网络流问题中一个比较有用的性质，对偶性 对偶性 所谓对偶性是指，对于每一个要求目标函数最大化线性规划问题，都有相应的，目标函数是最小化的线性规划问题，这两个问题有相同的最优解，其最普遍的体现就是一些最大/最小定理，比如最大流最小割定理可能是最广为人知的了。 现在先让我不失一般性地定义一下一个线性规划问题： 最大化： 满足： 注：这个定义是“一般的”，任何一个线性规划都可以转化为这种形式（松弛型），具体留给读者思考好了。 然后定义其对偶式： 最小化： 满足： 所谓对偶，就是将约束条件与变量互换（回忆射影几何中的对偶），于是一个最大化问题变成了一个最小化问题，现在要证明的是这两个问题的最优解相同。 （以下证明来自算法导论第二版，引理29.8） 引理：线性规划中的弱对偶性 令为原问题的一个可行解，为对偶问题的一个可行解，则： 证明： （见对偶式的约束条件） （见原问题的约束条件） 于是现在问题变成这样：只要找到一对可行解，使 那么线性规划的对偶性就得到了证明。 关于这个解的存在性问题的证明，将会涉及到单纯形算法的细节，所以在这里只是简单、不严密的讲一下： 我们在原问题的约束条件（(*)式）左边加一项，并将不等号变为等号（﻿） 可以看出，这样并不会改变原问题的最优解。之后通过对变量的互相替换，我们最终可以将目标函数化为如下形式： N表示所有出现在目标函数中的变量的下标所组成的集合。 那么取就是对偶问题的最优解。或者令，那么就是取。 当原问题的目标函数化为如(1)的形式后，最优解是明显的，即令，取得。 现在只要说明，可以使对偶式的目标函数也取值即可。 取上文中扩展后的定义，我将不加解释地说明这一点： 因为这个等式对于任意的，取值都成立，则必定为0（令所有） 所以此时，命题得证。 （对于不理解(i)式的人，再看看修改后的约束条件） 关于线性规划这个基础知识的介绍就到这里，下一篇大概会定义“网络”是什么“流”是什么 本文由 DarkRaven 创作，转载或引用前请联系我们。相关文章： 素数有无穷多个的另类证明（三）：被遗忘的证明 素数有无穷多个的另类证明（二）：素数的某个求和式 素数有无穷多个的另类证明（一）：两两互素的无穷序列
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/12/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e8%a2%ab%e9%81%97%e5%bf%98%e7%9a%84%e8%af%81%e6%98%8e.html' rel='bookmark' title='素数有无穷多个的另类证明（三）：被遗忘的证明'>素数有无穷多个的另类证明（三）：被遗忘的证明</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%ba%8c%ef%bc%89%ef%bc%9a%e7%b4%a0%e6%95%b0%e7%9a%84%e6%9f%90%e4%b8%aa%e6%b1%82.html' rel='bookmark' title='素数有无穷多个的另类证明（二）：素数的某个求和式'>素数有无穷多个的另类证明（二）：素数的某个求和式</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%80%ef%bc%89%ef%bc%9a%e4%b8%a4%e4%b8%a4%e4%ba%92%e7%b4%a0%e7%9a%84%e6%97%a0.html' rel='bookmark' title='素数有无穷多个的另类证明（一）：两两互素的无穷序列'>素数有无穷多个的另类证明（一）：两两互素的无穷序列</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1 style="text-align: center;"><strong>Don&#8217;t Panic!</strong></h1>
<p>虽然听起来很可怕，但是线性规划其实是很容易理解的东西。<span id="more-3736"></span></p>
<h2>简单介绍</h2>
<p>嘛，大家在高中里面也应该做过这样的题目：</p>
<p style="text-align: left;">最大化：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=6x%2B5y&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='6x+5y' title='6x+5y' class='latex' /></p>
<p>满足：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%20x%2By%20%5Cleq%2010%20%5C%5C2x-3y%20%5Cleq%205%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt=' x+y \leq 10 \\2x-3y \leq 5 ' title=' x+y \leq 10 \\2x-3y \leq 5 ' class='latex' /></p>
<p>这是二维情况下的线性规划，大家当时的解法恐怕都是在平面上画出相应的图形，然后平移目标函数对应的直线来找到目标函数的最优值。</p>
<p>从这个想法很容易推广到变量个数更多的线性规划问题。比如在拥有三个变量的线性规划中，约束条件由二维时的直线推广到平面，可行域由二维时的半平面推广到半空间。</p>
<p>同样地n个变量的一般线性规划也可以如此推广（n维超空间，n-1维超平面什么的&#8230;.）</p>
<p>如果说三维还在人的想象力所及的范围内，那么n维的线性规划要怎么解呢？</p>
<p>直觉告诉我们，线性规划的最优解总是在顶点处取到（事实也是这样，证明略），于是我们可以联立变量数个方程，解出顶点坐标，带入目标函数。这样的算法，对于n个变量，m个约束条件的线性规划问题，其复杂度为<img src='http://s.wordpress.com/latex.php?latex=%5Cdbinom%7Bn%2Bm%7D%7Bn%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\dbinom{n+m}{n}' title='\dbinom{n+m}{n}' class='latex' /></p>
<p>而这个复杂度也就是线性规划中常用的单纯形算法的最坏复杂度。</p>
<p>我将不在此介绍单纯形算法。</p>
<p>以上是对线性规划的简单介绍，下面要讲线性规划问题在网络流问题中一个比较有用的性质，对偶性</p>
<h2>对偶性</h2>
<p>所谓对偶性是指，对于每一个要求目标函数最大化线性规划问题，都有相应的，目标函数是最小化的线性规划问题，这两个问题有相同的最优解，其最普遍的体现就是一些最大/最小定理，比如最大流最小割定理可能是最广为人知的了。</p>
<p>现在先让我不失一般性地定义一下一个线性规划问题：</p>
<p>最大化：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20c_%7Bj%7Dx_j%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{j=1}^{n} c_{j}x_j ' title='\displaystyle\sum_{j=1}^{n} c_{j}x_j ' class='latex' /></p>
<p>满足：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20a_%7Bij%7Dx_j%20%5Cleq%20b_i%20%5Cquad%20i%3D1%2C2%2C3%2C%5Ccdots%2Cm%5Cqquad%7B%7D%28%2A%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{j=1}^{n} a_{ij}x_j \leq b_i \quad i=1,2,3,\cdots,m\qquad{}(*)' title='\displaystyle\sum_{j=1}^{n} a_{ij}x_j \leq b_i \quad i=1,2,3,\cdots,m\qquad{}(*)' class='latex' /></p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=x_j%20%5Cgeq%200%20%5Cquad%20j%3D1%2C2%2C3%2C%5Ccdots%2Cn&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x_j \geq 0 \quad j=1,2,3,\cdots,n' title='x_j \geq 0 \quad j=1,2,3,\cdots,n' class='latex' /></p>
<p>注：这个定义是“一般的”，任何一个线性规划都可以转化为这种形式（松弛型），具体留给读者思考好了。</p>
<p>然后定义其对偶式：</p>
<p>最小化：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%20b_%7Bi%7Dy_i%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{i=1}^{m} b_{i}y_i ' title='\displaystyle\sum_{i=1}^{m} b_{i}y_i ' class='latex' /></p>
<p>满足：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%20a_%7Bij%7Dy_i%20%5Cgeq%20c_j%20%5Cquad%20j%3D1%2C2%2C3%2C%5Ccdots%2Cn&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{i=1}^{m} a_{ij}y_i \geq c_j \quad j=1,2,3,\cdots,n' title='\displaystyle\sum_{i=1}^{m} a_{ij}y_i \geq c_j \quad j=1,2,3,\cdots,n' class='latex' /></p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=y_i%20%5Cgeq%200%20%5Cquad%20j%3D1%2C2%2C3%2C%5Ccdots%2Cm&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='y_i \geq 0 \quad j=1,2,3,\cdots,m' title='y_i \geq 0 \quad j=1,2,3,\cdots,m' class='latex' /></p>
<p>所谓对偶，就是将约束条件与变量互换（回忆射影几何中的对偶），于是一个最大化问题变成了一个最小化问题，现在要证明的是这两个问题的最优解相同。</p>
<p>（以下证明来自算法导论第二版，引理29.8）</p>
<p><strong>引理：线性规划中的弱对偶性</strong></p>
<p>令<img src='http://s.wordpress.com/latex.php?latex=%5Coverline%7Bx%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\overline{x}' title='\overline{x}' class='latex' />为原问题的一个可行解，<img src='http://s.wordpress.com/latex.php?latex=%5Coverline%7By%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\overline{y}' title='\overline{y}' class='latex' />为对偶问题的一个可行解，则：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20c_%7Bj%7D%5Coverline%7Bx%7D_j%5Cleq%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%20b_%7Bi%7D%5Coverline%7By%7D_i&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{j=1}^{n} c_{j}\overline{x}_j\leq\sum_{i=1}^{m} b_{i}\overline{y}_i' title='\displaystyle\sum_{j=1}^{n} c_{j}\overline{x}_j\leq\sum_{i=1}^{m} b_{i}\overline{y}_i' class='latex' /></p>
<p><strong>证明：</strong></p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20c_%7Bj%7D%5Coverline%7Bx%7D_j%5Cleq%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%5Cleft%20%28%5Csum_%7Bi%3D1%7D%5E%7Bm%7Da_%7Bij%7D%5Coverline%7By%7D_%7Bi%7D%5Cright%20%29%5Coverline%7Bx%7D_j&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{j=1}^{n} c_{j}\overline{x}_j\leq\sum_{j=1}^{n}\left (\sum_{i=1}^{m}a_{ij}\overline{y}_{i}\right )\overline{x}_j' title='\displaystyle\sum_{j=1}^{n} c_{j}\overline{x}_j\leq\sum_{j=1}^{n}\left (\sum_{i=1}^{m}a_{ij}\overline{y}_{i}\right )\overline{x}_j' class='latex' />（见对偶式的约束条件）</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%3D%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%5Cleft%20%28%5Csum_%7Bi%3D1%7D%5E%7Bm%7Da_%7Bij%7D%5Coverline%7Bx%7D_%7Bj%7D%5Cright%20%29%5Coverline%7By%7D_i&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle= \sum_{j=1}^{n}\left (\sum_{i=1}^{m}a_{ij}\overline{x}_{j}\right )\overline{y}_i' title='\displaystyle= \sum_{j=1}^{n}\left (\sum_{i=1}^{m}a_{ij}\overline{x}_{j}\right )\overline{y}_i' class='latex' /></p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Cleq%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%20b_%7Bi%7D%5Coverline%7By%7D_i&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\leq\sum_{i=1}^{m} b_{i}\overline{y}_i' title='\displaystyle\leq\sum_{i=1}^{m} b_{i}\overline{y}_i' class='latex' />（见原问题的约束条件）</p>
<p style="text-align: right;"><img src='http://s.wordpress.com/latex.php?latex=%5Chfill%20%5Censuremath%7B%5CBox%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\hfill \ensuremath{\Box}' title='\hfill \ensuremath{\Box}' class='latex' /></p>
<p>于是现在问题变成这样：只要找到一对可行解<img src='http://s.wordpress.com/latex.php?latex=%5Coverline%7Bx%7D%2C%5Coverline%7By%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\overline{x},\overline{y}' title='\overline{x},\overline{y}' class='latex' />，使</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20c_%7Bj%7D%5Coverline%7Bx%7D_j%3D%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%20b_%7Bi%7D%5Coverline%7By%7D_i&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{j=1}^{n} c_{j}\overline{x}_j=\sum_{i=1}^{m} b_{i}\overline{y}_i' title='\displaystyle\sum_{j=1}^{n} c_{j}\overline{x}_j=\sum_{i=1}^{m} b_{i}\overline{y}_i' class='latex' /></p>
<p>那么线性规划的对偶性就得到了证明。</p>
<p>关于这个解的存在性问题的证明，将会涉及到单纯形算法的细节，所以在这里只是简单、不严密的讲一下：</p>
<p>我们在原问题的约束条件（(*)式）左边加一项，并将不等号变为等号（<img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%20a_%7Bij%7Dx_j%20%2B%20x_%7Bn%2Bi%7D%3D%20b_i%20%5Cquad%20i%3D1%2C2%2C3%2C%5Ccdots%2Cm&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{j=1}^{n} a_{ij}x_j + x_{n+i}= b_i \quad i=1,2,3,\cdots,m' title='\displaystyle\sum_{j=1}^{n} a_{ij}x_j + x_{n+i}= b_i \quad i=1,2,3,\cdots,m' class='latex' />﻿）</p>
<p>可以看出，这样并不会改变原问题的最优解。之后通过对变量的互相替换，我们最终可以将目标函数化为如下形式：</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%7B%7Dz%3Dv%27-%5Csum_%7Bj%5Cin%7B%7DN%7Dc%27_%7Bj%7Dx_%7Bj%7D%5Cqquad%7B%7D%281%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle{}z=v&#039;-\sum_{j\in{}N}c&#039;_{j}x_{j}\qquad{}(1)' title='\displaystyle{}z=v&#039;-\sum_{j\in{}N}c&#039;_{j}x_{j}\qquad{}(1)' class='latex' /></p>
<p style="text-align: center;">N表示所有出现在目标函数中的变量的下标所组成的集合。<img src='http://s.wordpress.com/latex.php?latex=c%27_%7Bj%7D%3E0&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='c&#039;_{j}&gt;0' title='c&#039;_{j}&gt;0' class='latex' /></p>
<p style="text-align: left;">那么取<img src='http://s.wordpress.com/latex.php?latex=%5Coverline%7By%7D%3D%5Cbegin%7Bcases%7Dc%27_%7Bn%2Bi%7D%26%5Ctext%7Bif%20%7D%20n%2Bi%5Cin%20N%20%5C%5C%200%20%26%5Ctext%7Botherwise%7D%5Cend%7Bcases%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\overline{y}=\begin{cases}c&#039;_{n+i}&amp;\text{if } n+i\in N \\ 0 &amp;\text{otherwise}\end{cases}' title='\overline{y}=\begin{cases}c&#039;_{n+i}&amp;\text{if } n+i\in N \\ 0 &amp;\text{otherwise}\end{cases}' class='latex' />就是对偶问题的最优解。或者令<img src='http://s.wordpress.com/latex.php?latex=c%27_%7Bj%7D%3D0%2Cj%5Cnotin%7B%7DN&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='c&#039;_{j}=0,j\notin{}N' title='c&#039;_{j}=0,j\notin{}N' class='latex' />，那么就是取<img src='http://s.wordpress.com/latex.php?latex=y%3Dc%27_%7Bn%2Bi%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='y=c&#039;_{n+i}' title='y=c&#039;_{n+i}' class='latex' />。</p>
<p style="text-align: left;">当原问题的目标函数化为如(1)的形式后，最优解是明显的，即令<img src='http://s.wordpress.com/latex.php?latex=x_%7Bj%7D%3D0%2Cj%5Cin%7B%7DN&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x_{j}=0,j\in{}N' title='x_{j}=0,j\in{}N' class='latex' />，取得<img src='http://s.wordpress.com/latex.php?latex=z_%7Bmax%7D%3Dv%27&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='z_{max}=v&#039;' title='z_{max}=v&#039;' class='latex' />。</p>
<p style="text-align: left;">现在只要说明，<img src='http://s.wordpress.com/latex.php?latex=%5Coverline%7By%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\overline{y}' title='\overline{y}' class='latex' />可以使对偶式的目标函数也取<img src='http://s.wordpress.com/latex.php?latex=v%27&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='v&#039;' title='v&#039;' class='latex' />值即可。</p>
<p style="text-align: left;">取上文中扩展后的<img src='http://s.wordpress.com/latex.php?latex=c%27&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='c&#039;' title='c&#039;' class='latex' />定义，我将不加解释地说明这一点：<img src='http://s.wordpress.com/latex.php?latex=%20%20%5Cdisplaystyle%20%20%5Cbegin%7Barray%7D%7Brl%7D%20%20%5Cdisplaystyle%20%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7Dc_%7Bj%7Dx_j%20%26%20%5Cdisplaystyle%3D%20v%27%20-%20%5Csum_%7Bj%3D1%7D%5E%7Bn%2Bm%7Dc%27_%7Bj%7Dx_j%20%5C%5C%20%20%26%20%5Cdisplaystyle%3Dv%27%20-%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7Dc%27_%7Bj%7Dx_j%20-%20%5Csum_%7Bi%3D1%7D%5E%7Bm%7Dc%27_%7Bn%2Bi%7Dx_i%20%5C%5C%20%20%26%20%5Cdisplaystyle%3Dv%27%20-%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7Dc%27_%7Bj%7Dx_j%20-%20%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%5Coverline%7By%7D_%7Bi%7Dx_i%20%5C%5C%20%20%26%20%5Cdisplaystyle%3Dv%27%20-%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7Dc%27_%7Bj%7Dx_j%20-%20%5Csum_%7Bi%3D1%7D%5E%7Bm%7D%5Coverline%7By%7D_%7Bi%7D%5Cleft%20%28b_%7Bi%7D%20-%20%5Csum_%7Bj%3D1%7D%5E%7Bn%7Da_%7Bij%7Dx_j%20%5Cright%20%29%20%5Cqquad%20%28i%29%20%5C%5C%20%20%26%20%5Cdisplaystyle%3D%5Csum_%7Bj%3D1%7D%5E%7Bn%7D%5Cleft%20%28%20%5Csum_%7Bi%3D1%7D%5E%7Bm%7Da_%7Bij%7D%5Coverline%7By%7D_%7Bi%7D%20-%20c%27_%7Bj%7D%20%5Cright%20%29x_j%20%2B%20%5Cleft%20%28v%27%20-%20%5Csum_%7Bi%3D1%7D%5E%7Bm%7Db_%7Bi%7D%5Coverline%7By%7D_%7Bi%7D%20%5Cright%20%29%20%20%5Cend%7Barray%7D%20%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='  \displaystyle  \begin{array}{rl}  \displaystyle  \sum_{j=1}^{n}c_{j}x_j &amp; \displaystyle= v&#039; - \sum_{j=1}^{n+m}c&#039;_{j}x_j \\  &amp; \displaystyle=v&#039; - \sum_{j=1}^{n}c&#039;_{j}x_j - \sum_{i=1}^{m}c&#039;_{n+i}x_i \\  &amp; \displaystyle=v&#039; - \sum_{j=1}^{n}c&#039;_{j}x_j - \sum_{i=1}^{m}\overline{y}_{i}x_i \\  &amp; \displaystyle=v&#039; - \sum_{j=1}^{n}c&#039;_{j}x_j - \sum_{i=1}^{m}\overline{y}_{i}\left (b_{i} - \sum_{j=1}^{n}a_{ij}x_j \right ) \qquad (i) \\  &amp; \displaystyle=\sum_{j=1}^{n}\left ( \sum_{i=1}^{m}a_{ij}\overline{y}_{i} - c&#039;_{j} \right )x_j + \left (v&#039; - \sum_{i=1}^{m}b_{i}\overline{y}_{i} \right )  \end{array}  ' title='  \displaystyle  \begin{array}{rl}  \displaystyle  \sum_{j=1}^{n}c_{j}x_j &amp; \displaystyle= v&#039; - \sum_{j=1}^{n+m}c&#039;_{j}x_j \\  &amp; \displaystyle=v&#039; - \sum_{j=1}^{n}c&#039;_{j}x_j - \sum_{i=1}^{m}c&#039;_{n+i}x_i \\  &amp; \displaystyle=v&#039; - \sum_{j=1}^{n}c&#039;_{j}x_j - \sum_{i=1}^{m}\overline{y}_{i}x_i \\  &amp; \displaystyle=v&#039; - \sum_{j=1}^{n}c&#039;_{j}x_j - \sum_{i=1}^{m}\overline{y}_{i}\left (b_{i} - \sum_{j=1}^{n}a_{ij}x_j \right ) \qquad (i) \\  &amp; \displaystyle=\sum_{j=1}^{n}\left ( \sum_{i=1}^{m}a_{ij}\overline{y}_{i} - c&#039;_{j} \right )x_j + \left (v&#039; - \sum_{i=1}^{m}b_{i}\overline{y}_{i} \right )  \end{array}  ' class='latex' /></p>
<p style="text-align: left;">因为这个等式对于任意的<img src='http://s.wordpress.com/latex.php?latex=x_%7Bi%7D%2Ci%3D1%2C2%2C3%2C%5Ccdots%2Cn&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x_{i},i=1,2,3,\cdots,n' title='x_{i},i=1,2,3,\cdots,n' class='latex' />，取值都成立，则<img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%7B%7Dv%27%20-%20%5Csum_%7Bi%3D1%7D%5E%7Bm%7Db_%7Bi%7D%5Coverline%7By%7D_%7Bi%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle{}v&#039; - \sum_{i=1}^{m}b_{i}\overline{y}_{i}' title='\displaystyle{}v&#039; - \sum_{i=1}^{m}b_{i}\overline{y}_{i}' class='latex' />必定为0（令所有<img src='http://s.wordpress.com/latex.php?latex=x_%7Bi%7D%3D0&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='x_{i}=0' title='x_{i}=0' class='latex' />）</p>
<p style="text-align: left;">所以此时<img src='http://s.wordpress.com/latex.php?latex=%5Cdisplaystyle%5Csum_%7Bi%3D1%7D%5E%7Bm%7Db_%7Bi%7D%5Coverline%7By%7D_%7Bi%7D%20%3D%20v%27%20&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\displaystyle\sum_{i=1}^{m}b_{i}\overline{y}_{i} = v&#039; ' title='\displaystyle\sum_{i=1}^{m}b_{i}\overline{y}_{i} = v&#039; ' class='latex' />，命题得证。</p>
<p style="text-align: left;">（对于不理解(i)式的人，再看看修改后的约束条件）</p>
<p style="text-align: left;">
<p style="text-align: left;">关于线性规划这个基础知识的介绍就到这里，下一篇大概会定义“网络”是什么“流”是什么</p>
<p style="text-align: left;">
<p style="text-align: center;">
<p style="text-align: center;">
<p><small>本文由 DarkRaven 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/12/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e8%a2%ab%e9%81%97%e5%bf%98%e7%9a%84%e8%af%81%e6%98%8e.html' rel='bookmark' title='素数有无穷多个的另类证明（三）：被遗忘的证明'>素数有无穷多个的另类证明（三）：被遗忘的证明</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%ba%8c%ef%bc%89%ef%bc%9a%e7%b4%a0%e6%95%b0%e7%9a%84%e6%9f%90%e4%b8%aa%e6%b1%82.html' rel='bookmark' title='素数有无穷多个的另类证明（二）：素数的某个求和式'>素数有无穷多个的另类证明（二）：素数的某个求和式</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%80%ef%bc%89%ef%bc%9a%e4%b8%a4%e4%b8%a4%e4%ba%92%e7%b4%a0%e7%9a%84%e6%97%a0.html' rel='bookmark' title='素数有无穷多个的另类证明（一）：两两互素的无穷序列'>素数有无穷多个的另类证明（一）：两两互素的无穷序列</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2011/02/%e8%b0%9c%e4%b9%8b%e7%b3%bb%e5%88%970%e7%ba%bf%e6%80%a7%e8%a7%84%e5%88%92.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>推荐时间：鸡同鸭抢</title>
		<link>http://blog.programet.org/2010/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e9%b8%a1%e5%90%8c%e9%b8%ad%e6%8a%a2.html</link>
		<comments>http://blog.programet.org/2010/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e9%b8%a1%e5%90%8c%e9%b8%ad%e6%8a%a2.html#comments</comments>
		<pubDate>Sat, 11 Sep 2010 03:51:09 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[非严肃]]></category>
		<category><![CDATA[博弈]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[桌游]]></category>
		<category><![CDATA[策略]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=3184</guid>
		<description><![CDATA[恩……掉出首页许久了。最近从家到学校，再搬了校区，弄到一个只能上q的网络，最近才弄好。最近玩的桌游比较多，所以今天再推荐一个我玩过的桌游：鸡同鸭抢。 这是一个很休闲的策略小游戏，与很多策略性桌游需要的精密思考相比，鸡同鸭抢更多的是对对手心理的揣摩，甚至可以看成是猜拳游戏的升级版。 玩家在游戏中的目标就是用手中的鸡鸭鹅尽可能地抢饲料，同时避免自己的禽鸟被对手的狐狸吃掉。一共有六个饲料槽，以颜色作为区分，饲料分为1分，2分和3分三种，每轮每个饲料槽随机地添加一个饲料。同时每个玩家手上都有六张颜色不尽相同的手牌，分为三类：禽鸟，狐狸和小偷。简单地说，禽鸟的主要作用是抢食饲料槽中的饲料，而狐狸就是吃掉同颜色的禽鸟。而小偷牌比较复杂，后面再说。每种颜色的手牌只与相同颜色的饲料槽或其他玩家打出的手牌起作用。也就是说，黄色的禽鸟不能拿到红色饲料槽的食物，也不会被蓝色的狐狸给吃掉。 每一轮大家都是同时亮出一张牌，所以就有一点博弈的味道了：如果你打出的禽鸟碰到了相同颜色的狐狸，只能乖乖就范；如果狐狸没有碰到同颜色禽鸟，那么只能空手而归。如果有两个玩家同时打出了相同颜色的禽鸟或者狐狸，就要掷骰子拼点决定谁是赢家——或者协商分配所得也行。禽鸟牌和狐狸牌上都有一个3~6的数字，拼点的时候是比较这个数字加上你掷出的骰子点数，所以写了6的禽鸟比写了3的禽鸟赢得拼点的机会大得多。但是狐狸吃掉禽鸟所得到的分数也正是禽鸟牌上的数字，6点的禽鸟被吃掉就养肥了那只狐狸~正所谓机会越大，风险越大。 因为有可能几轮下来没有任何玩家打出某一个颜色，所以那个颜色的饲料槽不断地堆积着饲料，终于，大家都盯上了这个颜色，纷纷打出禽鸟准备拼点肉搏，但是如果有一个人看准时机打出了狐狸，那那些禽鸟就都被吃掉了，狐狸大丰收。或者说有一个人赌一把打出禽鸟，发现其实大家都不敢要那一堆饲料，反而大丰收。这种时候用来制约狐狸的小偷拍就要登场了。小偷牌在没有竞争对手的时候就可以当作是正常的禽鸟拿走饲料槽所有的饲料，面对禽鸟的时候只能是偷走一个一分的饲料就赶快走人，而面对狐狸的时候也会被抓住吃掉，但是狐狸却扣掉两分~这下小偷就可以去做投机取巧的搅局者了。可以小偷当禽鸟用，也可以让狐狸偷鸡不成蚀把米。 当所有的饲料都加完之后，游戏就结束了，谁的分最高就是胜利者。 这个游戏更多的是揣度对手的心理，看准时机钻空子大捞一笔，或者是打出饿狸扑食，不要让自己的狐狸无功而返，也不要让自己的禽鸟变成饿死鬼哦~ 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：把多米诺放平来玩 推荐时间：以色列麻将(Rummikub) 推荐时间：Bugbrain
相关文章：<ol>
<li><a href='http://blog.programet.org/2008/08/blog-post_27-2.html' rel='bookmark' title='推荐时间：把多米诺放平来玩'>推荐时间：把多米诺放平来玩</a></li>
<li><a href='http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html' rel='bookmark' title='推荐时间：以色列麻将(Rummikub)'>推荐时间：以色列麻将(Rummikub)</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>恩……掉出首页许久了。最近从家到学校，再搬了校区，弄到一个只能上q的网络，最近才弄好。最近玩的桌游比较多，所以今天再推荐一个我玩过的桌游：鸡同鸭抢。</p>
<p><span id="more-3184"></span></p>
<p>这是一个很休闲的策略小游戏，与很多策略性桌游需要的精密思考相比，鸡同鸭抢更多的是对对手心理的揣摩，甚至可以看成是猜拳游戏的升级版。</p>
<p>玩家在游戏中的目标就是用手中的鸡鸭鹅尽可能地抢饲料，同时避免自己的禽鸟被对手的狐狸吃掉。一共有六个饲料槽，以颜色作为区分，饲料分为1分，2分和3分三种，每轮每个饲料槽随机地添加一个饲料。同时每个玩家手上都有六张颜色不尽相同的手牌，分为三类：禽鸟，狐狸和小偷。简单地说，禽鸟的主要作用是抢食饲料槽中的饲料，而狐狸就是吃掉同颜色的禽鸟。而小偷牌比较复杂，后面再说。每种颜色的手牌只与相同颜色的饲料槽或其他玩家打出的手牌起作用。也就是说，黄色的禽鸟不能拿到红色饲料槽的食物，也不会被蓝色的狐狸给吃掉。</p>
<p>每一轮大家都是同时亮出一张牌，所以就有一点博弈的味道了：如果你打出的禽鸟碰到了相同颜色的狐狸，只能乖乖就范；如果狐狸没有碰到同颜色禽鸟，那么只能空手而归。如果有两个玩家同时打出了相同颜色的禽鸟或者狐狸，就要掷骰子拼点决定谁是赢家——或者协商分配所得也行。禽鸟牌和狐狸牌上都有一个3~6的数字，拼点的时候是比较这个数字加上你掷出的骰子点数，所以写了6的禽鸟比写了3的禽鸟赢得拼点的机会大得多。但是狐狸吃掉禽鸟所得到的分数也正是禽鸟牌上的数字，6点的禽鸟被吃掉就养肥了那只狐狸~正所谓机会越大，风险越大。</p>
<p>因为有可能几轮下来没有任何玩家打出某一个颜色，所以那个颜色的饲料槽不断地堆积着饲料，终于，大家都盯上了这个颜色，纷纷打出禽鸟准备拼点肉搏，但是如果有一个人看准时机打出了狐狸，那那些禽鸟就都被吃掉了，狐狸大丰收。或者说有一个人赌一把打出禽鸟，发现其实大家都不敢要那一堆饲料，反而大丰收。这种时候用来制约狐狸的小偷拍就要登场了。小偷牌在没有竞争对手的时候就可以当作是正常的禽鸟拿走饲料槽所有的饲料，面对禽鸟的时候只能是偷走一个一分的饲料就赶快走人，而面对狐狸的时候也会被抓住吃掉，但是狐狸却扣掉两分~这下小偷就可以去做投机取巧的搅局者了。可以小偷当禽鸟用，也可以让狐狸偷鸡不成蚀把米。</p>
<p>当所有的饲料都加完之后，游戏就结束了，谁的分最高就是胜利者。</p>
<p>这个游戏更多的是揣度对手的心理，看准时机钻空子大捞一笔，或者是打出饿狸扑食，不要让自己的狐狸无功而返，也不要让自己的禽鸟变成饿死鬼哦~</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2008/08/blog-post_27-2.html' rel='bookmark' title='推荐时间：把多米诺放平来玩'>推荐时间：把多米诺放平来玩</a></li>
<li><a href='http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html' rel='bookmark' title='推荐时间：以色列麻将(Rummikub)'>推荐时间：以色列麻将(Rummikub)</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e9%b8%a1%e5%90%8c%e9%b8%ad%e6%8a%a2.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>推荐时间：以色列麻将(Rummikub)</title>
		<link>http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html</link>
		<comments>http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html#comments</comments>
		<pubDate>Sun, 22 Aug 2010 04:07:22 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[计算机]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[桌游]]></category>
		<category><![CDATA[策略]]></category>
		<category><![CDATA[递归]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=3078</guid>
		<description><![CDATA[暑假~哎，没有写文动力的暑假……马上就要结束了。这段时间主要是星际2去了，难得前天叫了两个人和我出门转转，就转到了桌游店里面。三个人嘛，老板又推荐了以色列麻将（又称Rummikub，拉密）。发现这个游戏很不错，于是在这里推荐给大家。 牌的构成： 以色列麻将其实也可以看成是一种牌类游戏，一共106张牌，两张笑脸（类似扑克牌里面的Joker），红黑蓝绿四种颜色的1~13各两张。其实可以用两副完整的扑克牌去掉两张Joker来代替标准游戏牌。 出牌规则： 1.顺子，至少三个同色的连续数字组成的牌组，如同为红色的1，2，3，4； 2.同数，至少三个同数字但是颜色互不相同的牌组成的牌组，如红、蓝、黑的3； 3.重构，所有已经被打出的牌都是可以被利用的，即，如果你能将已打出的牌与自己刚刚打出的牌重新组织成同样符合前述两个规则的牌组群，那么你刚刚打出的牌就算是有效的，例如现在场面上有四色的9，四色的8，如果我手上有一张黑色的7，那么我可以从上面两张牌组中调出黑色的9和8，与我的7组成黑色的7，8，9，剩下的是红、蓝、绿的8和9，于是便从两个牌组变成了三个牌组。 4.惩罚，如果无法出牌或者选择不出牌就摸一张牌并跳过出牌，如果是出牌之后一阵忙活发现无法进行重构，摸三张牌并跳过出牌。 5.笑脸，那两张Joker（在标准的以色列麻将牌中是一红一黑两个笑脸）可以代表任意颜色的任意数字并入某一个牌组之中。如果你想再次利用被打出的Joker，那么只能打出与Joker所在位置完全吻合的手牌来替换之，否则只能在Joker所在的牌组两端添加牌构成顺子，无法从中截断。 游戏流程： 刚开始每位玩家拿14张牌，接着想办法决定第一个出牌的人（比如从牌库中随机抽牌比点数），逆时针按顺序出牌。这里有一个“破冰”的说法，即每位玩家的第一组打出的牌不能利用重构规则（即规则3），使得这组牌的点数相加大于等于30，如果无法达到破冰的要求，便只能摸牌了。当你完成破冰之后，就可以按照上述的出牌规则进行活动，谁先出完自己的牌就是胜利。有玩家胜利后便开始计分——这是一个零和游戏，所有输家扣去和剩余手牌点数之和相等的分数，而赢家得到所有他们扣去的分数之和。注意，笑脸算30分！ 实例分析： 说了这么多不妨来分析一个游戏的片段，然后再看看我到底喜欢上了这个游戏的什么地方。 比如现在已经打出了的牌有： 顺子： 红：(5,6,7,8) 黑：(6,7,8),(10,11,12) 绿：(4,5,6) 蓝：(7,8,9,10,11) 同数： (红黑蓝绿) (4 ,4 ,4 ,  ) 接下来我想打出一张蓝5，应该怎么办？ 让我们来进行重构。如果我打出了蓝5，那么场上还有两个5给我组成一组同数，但是这样一来拆散了绿色的顺子，绿4落单了，我们可以将它并到场上已经存在的4的同数组。还有绿6，我们将红6和黑6都抽出来并成一组同数，这么一来却又多出了红和黑的7和8。没关系，我们将蓝色的7和8抽出来再并成两组同数就行了。经过这一轮重构，现在场面上的牌构成是： 顺子： 黑：(10,11,12) 蓝：(9,10,11) 同数： (红黑蓝绿) (4,4,4,4) (5,   ,5,5) (6,   ,6,6) (7,7,7,  ) (8,8,8,   ) 至少我来说，这样的重构过程是复杂而奇妙的——这也是这个游戏最大的乐趣所在！！由于规则4的存在，我们不能进行实际操作来尝试可能的重构方法，而是只能在脑海中对重构过程进行想象，这就极大地考验了观察力和记忆力。在实际的游戏中常常会出现比上述情况更加复杂的重构过程，有时候即使有可能存在一种重构方法，我们的大脑却在找到它之前便栈溢出了——每一个拆分过程就像是一个压栈的过程，重构成功便是递归完成，每一张拆分出来多余的牌都可以变成一个子问题继续进行重构，有时候一旦做出了一个牵涉到五六个牌组的重构时真是忍不住大呼过瘾！即使只是为了出一张牌，有时也会搅得场上风云突变，弄乱牌组可能也让你的下家无从下手~ 在最后，大家如果找不到志同道合的好友一起游戏，不妨先来体验一下和电脑对战的快乐——这种程度的堆栈对于电脑来说就是小菜一碟，于是我现在还处于被电脑虐的状态……猛击此处下载 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：鸡同鸭抢 推荐时间：Bugbrain 推荐时间：Llama Adventure
相关文章：<ol>
<li><a href='http://blog.programet.org/2010/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e9%b8%a1%e5%90%8c%e9%b8%ad%e6%8a%a2.html' rel='bookmark' title='推荐时间：鸡同鸭抢'>推荐时间：鸡同鸭抢</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2009/07/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9allama-adventure.html' rel='bookmark' title='推荐时间：Llama Adventure'>推荐时间：Llama Adventure</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>暑假~哎，没有写文动力的暑假……马上就要结束了。这段时间主要是星际2去了，难得前天叫了两个人和我出门转转，就转到了桌游店里面。三个人嘛，老板又推荐了以色列麻将（又称Rummikub，拉密）。发现这个游戏很不错，于是在这里推荐给大家。<span id="more-3078"></span></p>
<h3>牌的构成：</h3>
<p>以色列麻将其实也可以看成是一种牌类游戏，一共106张牌，两张笑脸（类似扑克牌里面的Joker），红黑蓝绿四种颜色的1~13各两张。其实可以用两副完整的扑克牌去掉两张Joker来代替标准游戏牌。</p>
<h3>出牌规则：</h3>
<p>1.顺子，至少三个同色的连续数字组成的牌组，如同为红色的1，2，3，4；</p>
<p>2.同数，至少三个同数字但是颜色互不相同的牌组成的牌组，如红、蓝、黑的3；</p>
<p>3.重构，所有已经被打出的牌都是可以被利用的，即，如果你能将已打出的牌与自己刚刚打出的牌重新组织成同样符合前述两个规则的牌组群，那么你刚刚打出的牌就算是有效的，例如现在场面上有四色的9，四色的8，如果我手上有一张黑色的7，那么我可以从上面两张牌组中调出黑色的9和8，与我的7组成黑色的7，8，9，剩下的是红、蓝、绿的8和9，于是便从两个牌组变成了三个牌组。</p>
<p>4.惩罚，如果无法出牌或者选择不出牌就摸一张牌并跳过出牌，如果是出牌之后一阵忙活发现无法进行重构，摸三张牌并跳过出牌。</p>
<p>5.笑脸，那两张Joker（在标准的以色列麻将牌中是一红一黑两个笑脸）可以代表任意颜色的任意数字并入某一个牌组之中。如果你想再次利用被打出的Joker，那么只能打出与Joker所在位置完全吻合的手牌来替换之，否则只能在Joker所在的牌组两端添加牌构成顺子，无法从中截断。</p>
<h3>游戏流程：</h3>
<p>刚开始每位玩家拿14张牌，接着想办法决定第一个出牌的人（比如从牌库中随机抽牌比点数），逆时针按顺序出牌。这里有一个“破冰”的说法，即每位玩家的第一组打出的牌不能利用重构规则（即规则3），使得这组牌的点数相加大于等于30，如果无法达到破冰的要求，便只能摸牌了。当你完成破冰之后，就可以按照上述的出牌规则进行活动，谁先出完自己的牌就是胜利。有玩家胜利后便开始计分——这是一个零和游戏，所有输家扣去和剩余手牌点数之和相等的分数，而赢家得到所有他们扣去的分数之和。注意，笑脸算30分！</p>
<h3>实例分析：</h3>
<p>说了这么多不妨来分析一个游戏的片段，然后再看看我到底喜欢上了这个游戏的什么地方。</p>
<p>比如现在已经打出了的牌有：</p>
<blockquote><p><strong>顺子：</strong></p>
<p>红：(5,6,7,8)</p>
<p>黑：(6,7,8),(10,11,12)</p>
<p>绿：(4,5,6)</p>
<p>蓝：(7,8,9,10,11)</p>
<p><strong>同数：</strong></p>
<p>(红黑蓝绿)</p>
<p>(4 ,4 ,4 ,  )</p></blockquote>
<p>接下来我想打出一张蓝5，应该怎么办？</p>
<p>让我们来进行重构。如果我打出了蓝5，那么场上还有两个5给我组成一组同数，但是这样一来拆散了绿色的顺子，绿4落单了，我们可以将它并到场上已经存在的4的同数组。还有绿6，我们将红6和黑6都抽出来并成一组同数，这么一来却又多出了红和黑的7和8。没关系，我们将蓝色的7和8抽出来再并成两组同数就行了。经过这一轮重构，现在场面上的牌构成是：</p>
<blockquote><p><strong>顺子：</strong></p>
<p>黑：(10,11,12)</p>
<p>蓝：(9,10,11)</p>
<p><strong>同数：</strong></p>
<p>(红黑蓝绿)</p>
<p>(4,4,4,4)</p>
<p>(5,   ,5,5)</p>
<p>(6,   ,6,6)</p>
<p>(7,7,7,  )</p>
<p>(8,8,8,   )</p></blockquote>
<p>至少我来说，这样的重构过程是复杂而奇妙的——这也是这个游戏最大的乐趣所在！！由于规则4的存在，我们不能进行实际操作来尝试可能的重构方法，而是只能在脑海中对重构过程进行想象，这就极大地考验了观察力和记忆力。在实际的游戏中常常会出现比上述情况更加复杂的重构过程，有时候即使有可能存在一种重构方法，我们的大脑却在找到它之前便栈溢出了——每一个拆分过程就像是一个压栈的过程，重构成功便是递归完成，每一张拆分出来多余的牌都可以变成一个子问题继续进行重构，有时候一旦做出了一个牵涉到五六个牌组的重构时真是忍不住大呼过瘾！即使只是为了出一张牌，有时也会搅得场上风云突变，弄乱牌组可能也让你的下家无从下手~</p>
<p>在最后，大家如果找不到志同道合的好友一起游戏，不妨先来体验一下和电脑对战的快乐——这种程度的堆栈对于电脑来说就是小菜一碟，于是我现在还处于被电脑虐的状态……<a href="http://www.laziofly.com/forum.php?mod=viewthread&amp;tid=65851">猛击此处下载</a></p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2010/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e9%b8%a1%e5%90%8c%e9%b8%ad%e6%8a%a2.html' rel='bookmark' title='推荐时间：鸡同鸭抢'>推荐时间：鸡同鸭抢</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2009/07/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9allama-adventure.html' rel='bookmark' title='推荐时间：Llama Adventure'>推荐时间：Llama Adventure</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/08/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e4%bb%a5%e8%89%b2%e5%88%97%e9%ba%bb%e5%b0%86rummikub.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>推荐时间：初探思维导图</title>
		<link>http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html</link>
		<comments>http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html#comments</comments>
		<pubDate>Sat, 17 Apr 2010 18:36:54 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[科普]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[思维]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[策略]]></category>
		<category><![CDATA[自由]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2327</guid>
		<description><![CDATA[（准确地说应该是）昨天，xxy发给我一个软件Mindjet MindManager Pro 6——是一个帮助制作思维导图的软件。思维导图我以前就听说过了，但是一直都没有认真地去研究和使用这个东西。不过昨天我确实是意识到了这个玩意的强大之处。 华东数模邀请赛17号开始，于是我和zxy以及wzq开始了青涩的数模之路的第一天——杯具的是题目前一天晚上就发布了……不过对于我们这种大一的来说，选题其实是一个很简单的事情。于是我们断断续续地开始了讨论。下午和wzq在宿舍讨论了一个多小时，他就有事闪人了（一个星期的数模比赛时间真是……轻松啊）。我留在宿舍又无所事事，正好xxy把这个东西（- -附带了keygen的）丢给了我。 这个软件还挺和谐的，有着比较详细的上手动画教程，令我等新手马上就可以知道用法与最基本的快捷键。之前我和wzq讨论时将东西都列在草稿纸上，感觉很散乱。所以我尝试了一下用思维导图的方式来表达我们的讨论结果。感想就是：虽然思维导图本身的想法简单，但是却与按行文格式来思考的传统方式有着很大的区别。思维导图最大的优点就是他的散射状。一旦所有的句子与陈述都铺排在一张大大的纸上，我就突然感觉到了各个东西之间的关联。估计还是因为普通列表的结构本质上是一维的，所以各个部分之间如果有着复杂的联系难以关联起来，只能像代码缩进一样标示某一块相关联内容的层级。而思维导图本身是二维的，同时长得有点像多叉树，无论是视觉上还是逻辑上都有很清晰的层次结构。个人认为二维结构带来的最大好处就是对内容的变化可以很好的控制，比如我在使用传统列表的方式进行记录整理，突然间想加入一个关键的二级内容，突然发现该插入的地方已经写下了其他的东西，怎么办？只能加个插入号然后往旁边挤着塞进去，这样一来既不美观又破坏了原有的代码缩进式的层次表示。用思维导图就不会遇到这样的问题，直接画一条线延伸到空地，然后该写啥写啥。下面这图就是一个纯粹展示结构的例子，topic部分没有作修改——有没有很直观很清晰的感觉？ 我鼓捣完这些东西就去排球队训练了（果然一个星期很闲……）。晚上三个人终于一起凑在我宿舍，开始头脑风暴——这种信息量暴涨的思维模式，使用思维导图来管理自然比在纸上列表要清晰很多。不知不觉中，我们的导图已经丰满出了各种的枝条——想想要是我们的草稿已经列了3张纸，那整理思维的时候应该是多么的悲剧！ 所以我推荐给每一个要进行创作的童鞋尝试一下思维导图这种帮助自己管理杂乱思绪的有趣方式。虽然最开始的导图都是用手绘的，但是为了方便起见我还是推荐使用电脑上的软件来制作管理。我使用的MindManager功能还不错，除了本身的默认编辑格式外，这个软件还能够将自己的导图保存成pdf,png,bmp,jpg等各种格式，方便随处研究与转移。在上面给出的维基词条里也附了一串软件，其中也不乏优秀的开源软件。这里是Tony Buzan——导图的发明人所写的六本关于使用导图的书，大家也可以去进阶地学习一下。希望我的推荐对各位读者的学习工作有所帮助。 P.S:我好像很久没有写blog了~主要是最近忙乱不堪，而且疲于作业，没有碰见什么让我眼前一亮的东西……前两天叶子还警告我我的文章已经退出首页了，大惊——我千万不要变成Malloc。正好今日有感于导图，遂夜中写下此文。 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：与机器人对话 推荐时间：Bugbrain 推荐时间：把多米诺放平来玩
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2008/08/blog-post_27-2.html' rel='bookmark' title='推荐时间：把多米诺放平来玩'>推荐时间：把多米诺放平来玩</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>（准确地说应该是）昨天，xxy发给我一个软件Mindjet MindManager Pro 6——是一个帮助制作<a href="http://zh.wikipedia.org/zh-cn/%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE">思维导图</a>的软件。思维导图我以前就听说过了，但是一直都没有认真地去研究和使用这个东西。不过昨天我确实是意识到了这个玩意的强大之处。</p>
<p><span id="more-2327"></span></p>
<p>华东数模邀请赛17号开始，于是我和zxy以及wzq开始了青涩的数模之路的第一天——杯具的是题目前一天晚上就发布了……不过对于我们这种大一的来说，选题其实是一个很简单的事情。于是我们断断续续地开始了讨论。下午和wzq在宿舍讨论了一个多小时，他就有事闪人了（一个星期的数模比赛时间真是……轻松啊）。我留在宿舍又无所事事，正好xxy把这个东西（- -附带了keygen的）丢给了我。</p>
<p>这个软件还挺和谐的，有着比较详细的上手动画教程，令我等新手马上就可以知道用法与最基本的快捷键。之前我和wzq讨论时将东西都列在草稿纸上，感觉很散乱。所以我尝试了一下用思维导图的方式来表达我们的讨论结果。感想就是：虽然思维导图本身的想法简单，但是却与按行文格式来思考的传统方式有着很大的区别。思维导图最大的优点就是他的散射状。一旦所有的句子与陈述都铺排在一张大大的纸上，我就突然感觉到了各个东西之间的关联。估计还是因为普通列表的结构本质上是一维的，所以各个部分之间如果有着复杂的联系难以关联起来，只能像代码缩进一样标示某一块相关联内容的层级。而思维导图本身是二维的，同时长得有点像多叉树，无论是视觉上还是逻辑上都有很清晰的层次结构。个人认为二维结构带来的最大好处就是对内容的变化可以很好的控制，比如我在使用传统列表的方式进行记录整理，突然间想加入一个关键的二级内容，突然发现该插入的地方已经写下了其他的东西，怎么办？只能加个插入号然后往旁边挤着塞进去，这样一来既不美观又破坏了原有的代码缩进式的层次表示。用思维导图就不会遇到这样的问题，直接画一条线延伸到空地，然后该写啥写啥。下面这图就是一个纯粹展示结构的例子，topic部分没有作修改——有没有很直观很清晰的感觉？<img class="alignleft size-full wp-image-2333" title="思维导图样例" src="http://blog.programet.org/wp-content/uploads/Map2.gif" alt="" width="444" height="240" /></p>
<p>我鼓捣完这些东西就去排球队训练了（果然一个星期很闲……）。晚上三个人终于一起凑在我宿舍，开始头脑风暴——这种信息量暴涨的思维模式，使用思维导图来管理自然比在纸上列表要清晰很多。不知不觉中，我们的导图已经丰满出了各种的枝条——想想要是我们的草稿已经列了3张纸，那整理思维的时候应该是多么的悲剧！</p>
<p>所以我推荐给每一个要进行创作的童鞋尝试一下思维导图这种帮助自己管理杂乱思绪的有趣方式。虽然最开始的导图都是用手绘的，但是为了方便起见我还是推荐使用电脑上的软件来制作管理。我使用的MindManager功能还不错，除了本身的默认编辑格式外，这个软件还能够将自己的导图保存成pdf,png,bmp,jpg等各种格式，方便随处研究与转移。在上面给出的维基词条里也附了一串软件，其中也不乏优秀的开源软件。<a href="ed2k://|file|%E3%80%90%E6%80%9D%E7%BB%B4%E5%AF%BC%E5%9B%BE%E4%B8%9B%E4%B9%A6(%E5%85%A8%E5%85%AD%E5%86%8C)(PDF)%E3%80%91.rar|35558169|FF9235CDD566854EA16B2A7A1C5A8A57|/">这里</a>是Tony Buzan——导图的发明人所写的六本关于使用导图的书，大家也可以去进阶地学习一下。希望我的推荐对各位读者的学习工作有所帮助。</p>
<p>P.S:我好像很久没有写blog了~主要是最近忙乱不堪，而且疲于作业，没有碰见什么让我眼前一亮的东西……前两天叶子还警告我我的文章已经退出首页了，大惊——我千万不要变成Malloc。正好今日有感于导图，遂夜中写下此文。</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2008/08/blog-post_27-2.html' rel='bookmark' title='推荐时间：把多米诺放平来玩'>推荐时间：把多米诺放平来玩</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>挑战你的直觉</title>
		<link>http://blog.programet.org/2010/03/%e6%8c%91%e6%88%98%e4%bd%a0%e7%9a%84%e7%9b%b4%e8%a7%89.html</link>
		<comments>http://blog.programet.org/2010/03/%e6%8c%91%e6%88%98%e4%bd%a0%e7%9a%84%e7%9b%b4%e8%a7%89.html#comments</comments>
		<pubDate>Fri, 19 Mar 2010 17:10:31 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[意外]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[趣题]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2210</guid>
		<description><![CDATA[3月份的《环球科学》（科学美国人的中文版）上星期入手的，结果一直拖到今天的C++课我才看完。看之前我还和zxy说，加德纳为其写专栏的那个年代的SA是我最想收藏的，因为相比于现在，数学方面的有趣内容真是太丰富了。不过，这次的SA倒算是“意外”，有一篇文章写了几个颇为有趣的问题，让我忍不住在这里和大家分享一下。 1.最后的叶子看着Malloc，Malloc看着寺雷颠。假设最后的叶子已婚而寺雷颠未婚，那么是否有一个已婚人士看着未婚人士？A.有的 B.没有 C.不能确定 你会选哪一个呢？是不是AC？ 如果你选择了AC的话，那么你就中计了~虽然说我们不知道Malloc的婚姻状况，但是仔细想一想，无论他已婚还是未婚，都存在“有一个已婚人士看着未婚人士”这样的情况——或者是最后的叶子看着Malloc，或者是Malloc看着寺雷颠，这两束目光总会有一束满足要求的。 2.假设有一种病叫做SH综合症（看了南方公园S14E01的都懂），这是一种发病率为千分之一的严重疾病。现在假设有一种检测手段绝对不会误诊真正的病人——即如果你的了这种病，那么一定会被检查出来。但是这种手段却有5%的概率将一个正常人误诊为发病的人。那么假设你的检查结果显示你患有这种病，那么实际上你患病的概率是多大？ 你会说95%吗？80%？其实都不对。首先注意到，1000个人里面只有1个患病，那么对于剩下的999个人来说，他们有5%的概率“被患病”，也就是差不多50个人，这样，每1000份报告当中就会产生51个阳性，那么这些报告其实只有一份是正确的——所以，一份阳性报告得到正确结果的概率其实只有1/51，还不到2%！其实这就是一个很容易让人误解的概率问题（其实说起来，概率问题虽然分析起来不难但是最广为流传的就是蒙特霍尔山羊问题）。这里有一篇相关的文章，里面提到了贝叶斯公式，大家可以去进一步学习~ 3.桌上有四张卡片，每张卡片的一面是数字，另一面是字母。现在，你看到的四张卡片朝上的一面分别写着 &#8216;A&#8217;，&#8217;K'，&#8217;8&#8242;和&#8217;5&#8242;。假如严酷的魔王说：这些卡片中若字母面为元音，则数字面是偶数。那么，你要翻开哪些卡片来检验这条规则的正确性呢？ SA上面号称大约有一半的人回答应该翻开A和8 。翻开A自然没有什么问题，但是你想想，翻开8真的能起到什么检验的作用吗？其实这个游戏的原理使用了这样的一条规则：“逆否命题与原命题等价”。所以说，对于原来的规则，它相应的逆否命题就是“如果数字面是奇数，那么字母面就不是元音。”照这样的规则，我们应该检查一下5的反面是不是元音，如果不是的话这条规则就成立了。那翻开8为什么不对？其实是因为通过8来检验字母面其实相当于原命题的逆命题：即若数字面是偶数，那么字母面就是元音。仔细地想一想就会发现，逆命题的正确性和原命题的正确性是没有多大关系的。比如，“如果一个人从20层自由落体到地面，那么他就会死掉”以及它的逆命题“如果一个人死掉了，那么他就是从20层自由落体到地面的”，相比之下，后者显然不能因为前者是比较正确地从而推出自己也是正确的。 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 用极限证明伯努利不等式 素数有无穷多个的另类证明（四）：拓扑——或者称为巧妙的集合论方法 无穷中的二分（一）
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/09/%e7%94%a8%e6%9e%81%e9%99%90%e8%af%81%e6%98%8e%e4%bc%af%e5%8a%aa%e5%88%a9%e4%b8%8d%e7%ad%89%e5%bc%8f.html' rel='bookmark' title='用极限证明伯努利不等式'>用极限证明伯努利不等式</a></li>
<li><a href='http://blog.programet.org/2010/01/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e5%9b%9b%ef%bc%89%ef%bc%9a%e6%8b%93%e6%89%91%e2%80%94%e2%80%94%e6%88%96%e8%80%85.html' rel='bookmark' title='素数有无穷多个的另类证明（四）：拓扑——或者称为巧妙的集合论方法'>素数有无穷多个的另类证明（四）：拓扑——或者称为巧妙的集合论方法</a></li>
<li><a href='http://blog.programet.org/2009/10/%e6%97%a0%e7%a9%b7%e4%b8%ad%e7%9a%84%e4%ba%8c%e5%88%86%ef%bc%88%e4%b8%80%ef%bc%89.html' rel='bookmark' title='无穷中的二分（一）'>无穷中的二分（一）</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>3月份的《环球科学》（科学美国人的中文版）上星期入手的，结果一直拖到今天的C++课我才看完。看之前我还和zxy说，加德纳为其写专栏的那个年代的SA是我最想收藏的，因为相比于现在，数学方面的有趣内容真是太丰富了。不过，这次的SA倒算是“意外”，有一篇文章写了几个颇为有趣的问题，让我忍不住在这里和大家分享一下。</p>
<p><span id="more-2210"></span></p>
<p>1.最后的叶子看着Malloc，Malloc看着寺雷颠。假设最后的叶子已婚而寺雷颠未婚，那么是否有一个已婚人士看着未婚人士？A.有的   B.没有  C.不能确定</p>
<p><span style="color: #888888;">你会选哪一个呢？是不是<span style="color: #ffffff;"><span style="text-decoration: line-through;">A</span></span>C？</span></p>
<p><span style="color: #888888;">如果你选择了<span style="color: #ffffff;"><span style="text-decoration: line-through;">A</span></span>C的话，那么你就中计了~虽然说我们不知道Malloc的婚姻状况，但是仔细想一想，无论他已婚还是未婚，都存在“有一个已婚人士看着未婚人士”这样的情况——或者是最后的叶子看着Malloc，或者是Malloc看着寺雷颠，这两束目光总会有一束满足要求的。</span></p>
<p>2.假设有一种病叫做SH综合症（看了南方公园S14E01的都懂），这是一种发病率为千分之一的严重疾病。现在假设有一种检测手段绝对不会误诊真正的病人——即如果你的了这种病，那么一定会被检查出来。但是这种手段却有5%的概率将一个正常人误诊为发病的人。那么假设你的检查结果显示你患有这种病，那么实际上你患病的概率是多大？</p>
<p><span style="color: #888888;">你会说95%吗？80%？其实都不对。首先注意到，1000个人里面只有1个患病，那么对于剩下的999个人来说，他们有5%的概率“被患病”，也就是差不多50个人，这样，每1000份报告当中就会产生51个阳性，那么这些报告其实只有一份是正确的——所以，一份阳性报告得到正确结果的概率其实只有1/51，还不到2%！其实这就是一个很容易让人误解的概率问题（其实说起来，概率问题虽然分析起来不难但是最广为流传的就是蒙特霍尔山羊问题）。<a href="http://www.eaglefantasy.com/archives/613">这里</a>有一篇相关的文章，里面提到了贝叶斯公式，大家可以去进一步学习~</span></p>
<p>3.桌上有四张卡片，每张卡片的一面是数字，另一面是字母。现在，你看到的四张卡片朝上的一面分别写着 &#8216;A&#8217;，&#8217;K'，&#8217;8&#8242;和&#8217;5&#8242;。假如严酷的魔王说：这些卡片中若字母面为元音，则数字面是偶数。那么，你要翻开哪些卡片来检验这条规则的正确性呢？</p>
<p><span style="color: #888888;">SA上面号称大约有一半的人回答应该翻开A和8 。翻开A自然没有什么问题，但是你想想，翻开8真的能起到什么检验的作用吗？其实这个游戏的原理使用了这样的一条规则：“逆否命题与原命题等价”。所以说，对于原来的规则，它相应的逆否命题就是“如果数字面是奇数，那么字母面就不是元音。”照这样的规则，我们应该检查一下5的反面是不是元音，如果不是的话这条规则就成立了。那翻开8为什么不对？其实是因为通过8来检验字母面其实相当于原命题的逆命题：即若数字面是偶数，那么字母面就是元音。仔细地想一想就会发现，逆命题的正确性和原命题的正确性是没有多大关系的。比如，“如果一个人从20层自由落体到地面，那么他就会死掉”以及它的逆命题“如果一个人死掉了，那么他就是从20层自由落体到地面的”，相比之下，后者显然不能因为前者是比较正确地从而推出自己也是正确的。</span></p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/09/%e7%94%a8%e6%9e%81%e9%99%90%e8%af%81%e6%98%8e%e4%bc%af%e5%8a%aa%e5%88%a9%e4%b8%8d%e7%ad%89%e5%bc%8f.html' rel='bookmark' title='用极限证明伯努利不等式'>用极限证明伯努利不等式</a></li>
<li><a href='http://blog.programet.org/2010/01/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e5%9b%9b%ef%bc%89%ef%bc%9a%e6%8b%93%e6%89%91%e2%80%94%e2%80%94%e6%88%96%e8%80%85.html' rel='bookmark' title='素数有无穷多个的另类证明（四）：拓扑——或者称为巧妙的集合论方法'>素数有无穷多个的另类证明（四）：拓扑——或者称为巧妙的集合论方法</a></li>
<li><a href='http://blog.programet.org/2009/10/%e6%97%a0%e7%a9%b7%e4%b8%ad%e7%9a%84%e4%ba%8c%e5%88%86%ef%bc%88%e4%b8%80%ef%bc%89.html' rel='bookmark' title='无穷中的二分（一）'>无穷中的二分（一）</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/03/%e6%8c%91%e6%88%98%e4%bd%a0%e7%9a%84%e7%9b%b4%e8%a7%89.html/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>推荐时间：宇宙战争联盟</title>
		<link>http://blog.programet.org/2010/03/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%ae%87%e5%ae%99%e6%88%98%e4%ba%89%e8%81%94%e7%9b%9f.html</link>
		<comments>http://blog.programet.org/2010/03/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%ae%87%e5%ae%99%e6%88%98%e4%ba%89%e8%81%94%e7%9b%9f.html#comments</comments>
		<pubDate>Mon, 08 Mar 2010 06:48:49 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[推荐]]></category>
		<category><![CDATA[游戏]]></category>
		<category><![CDATA[人工智能]]></category>
		<category><![CDATA[智慧]]></category>

		<guid isPermaLink="false">http://blog.programet.org/?p=2185</guid>
		<description><![CDATA[服务器倒下后好久没发文了~ 昨天在幻想游戏网上看到了一个游戏：Galcon Fusion，觉得描述不错，就去下载下来了——如果不想安装幻想游戏的东西其实也无所谓，这个游戏电驴上面到处有挂。 体验了一下，还是感觉独立游戏就是不一样，类似的概念游戏作者可以发展出很多不同的玩法。这个游戏的模子应该是按照即时战略的形式来做的，但是省略了很多枝节，只剩下最重要的元素：出兵和占地。 游戏是在一个屏幕看得完的几十颗星球之间展开的（位置和大小都是随机摆放的），一开始你和对手各有一个拥有100兵力的星球，然后其他的星球都是有着当地居民守护者的中立星球。你的目标是拿下所有对手占领的星球。每一颗被占领了的星球都能够作为一个拥有生产力的兵工厂，而且星球越大出兵速度越快，而占领星球就是要发兵清除原住民（这是拆迁么=_=）。游戏中没有兵种差异，所以说要发出多余原住民的兵才能占领之并且成为你的生产地。占领对手的星球也是同样的道理，只不过要考虑你出兵那一刻直到你攻打到他的星球时他的兵力会有所增长的，而且你看不到他的星球上到底留有多少兵。除了攻占的顺序，还有一个要考虑的就是出兵的数量，你可以控制每次出兵占选中星球总兵力的百分比，看家还是冲击，这是一个问题。游戏的面貌大概就是这样，然后就是先分析地图看看对自己是否有利，然后决定出兵顺序和数量，然后就可以开始与电脑交战了。每一次战斗的时间应该都很短暂，一分多钟就可以结束一次厮杀。电脑的AI分成了很多等，而且最高等的AI很厉害……我打不过它……估计是操作不到位。 游戏还有一些其他的模式，比如Vacuum模式就需要你在1min左右的时间将屏幕上面的所有星球都占领掉，而在Stealth模式里你看不到对方放出来的兵，3-Way则是三国混战，你要迅速决定插手战局还是坐山观虎斗…… 这里是galcon的官方网站，上面有很多漂亮的对战截图，大家可以前去围观。BTW，这款游戏还有iPhone版本，同时借此获得了09年独立游戏节的最具创意的手机游戏奖。 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：与机器人对话 推荐时间：Bugbrain 推荐时间：Llama Adventure
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2009/07/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9allama-adventure.html' rel='bookmark' title='推荐时间：Llama Adventure'>推荐时间：Llama Adventure</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>服务器倒下后好久没发文了~</p>
<p>昨天在<a href="http://hx.hxgame.net/showdown.asp?ID=3182">幻想游戏网</a>上看到了一个游戏：<a href="http://en.wikipedia.org/wiki/Galcon">Galcon Fusion</a>，觉得描述不错，就去下载下来了——如果不想安装幻想游戏的东西其实也无所谓，这个游戏电驴上面到处有挂。</p>
<p><span id="more-2185"></span></p>
<p>体验了一下，还是感觉独立游戏就是不一样，类似的概念游戏作者可以发展出很多不同的玩法。这个游戏的模子应该是按照即时战略的形式来做的，但是省略了很多枝节，只剩下最重要的元素：出兵和占地。</p>
<p>游戏是在一个屏幕看得完的几十颗星球之间展开的（位置和大小都是随机摆放的），一开始你和对手各有一个拥有100兵力的星球，然后其他的星球都是有着当地居民守护者的中立星球。你的目标是拿下所有对手占领的星球。每一颗被占领了的星球都能够作为一个拥有生产力的兵工厂，而且星球越大出兵速度越快，而占领星球就是要发兵清除原住民（这是拆迁么=_=）。游戏中没有兵种差异，所以说要发出多余原住民的兵才能占领之并且成为你的生产地。占领对手的星球也是同样的道理，只不过要考虑你出兵那一刻直到你攻打到他的星球时他的兵力会有所增长的，而且你看不到他的星球上到底留有多少兵。除了攻占的顺序，还有一个要考虑的就是出兵的数量，你可以控制每次出兵占选中星球总兵力的百分比，看家还是冲击，这是一个问题。游戏的面貌大概就是这样，然后就是先分析地图看看对自己是否有利，然后决定出兵顺序和数量，然后就可以开始与电脑交战了。每一次战斗的时间应该都很短暂，一分多钟就可以结束一次厮杀。电脑的AI分成了很多等，而且最高等的AI很厉害……我打不过它……估计是操作不到位。</p>
<p>游戏还有一些其他的模式，比如Vacuum模式就需要你在1min左右的时间将屏幕上面的所有星球都占领掉，而在Stealth模式里你看不到对方放出来的兵，3-Way则是三国混战，你要迅速决定插手战局还是坐山观虎斗……</p>
<p><a href="http://www.galcon.com/fusion/">这里</a>是galcon的官方网站，上面有很多漂亮的对战截图，大家可以前去围观。BTW，这款游戏还有iPhone版本，同时借此获得了09年独立游戏节的最具创意的手机游戏奖。</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2009/01/bugbrain.html' rel='bookmark' title='推荐时间：Bugbrain'>推荐时间：Bugbrain</a></li>
<li><a href='http://blog.programet.org/2009/07/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9allama-adventure.html' rel='bookmark' title='推荐时间：Llama Adventure'>推荐时间：Llama Adventure</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/03/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%ae%87%e5%ae%99%e6%88%98%e4%ba%89%e8%81%94%e7%9b%9f.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>素数有无穷多个的另类证明（四）：拓扑——或者称为巧妙的集合论方法</title>
		<link>http://blog.programet.org/2010/01/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e5%9b%9b%ef%bc%89%ef%bc%9a%e6%8b%93%e6%89%91%e2%80%94%e2%80%94%e6%88%96%e8%80%85.html</link>
		<comments>http://blog.programet.org/2010/01/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e5%9b%9b%ef%bc%89%ef%bc%9a%e6%8b%93%e6%89%91%e2%80%94%e2%80%94%e6%88%96%e8%80%85.html#comments</comments>
		<pubDate>Mon, 25 Jan 2010 09:06:21 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[意外]]></category>
		<category><![CDATA[拓扑]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[证明]]></category>
		<category><![CDATA[趣题]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=1959</guid>
		<description><![CDATA[这个标题的“拓扑”两个字可能会吓到人——其实我看书的时候就吓到我了~这个证明的作者是Furstenberg（我不确定是不是我给出的维基链接的那个人），他在1953年给出了一篇短文，现引用原文如下： 在这篇短文中我们将对于素数无穷性给出一个初等的“拓扑”证明。我们在整数集合S中，取所有算数级数的基，S可成为一个拓扑空间。事实上，对于这个拓扑，可以证明S是正则空间，并且是可距离化的。每个算数级数是又开又闭的集合。因为它的补集是具有同样公差的其他算数级数的并，于是，任意有限个算数级数的并也是闭集。 对素数，令是的全部倍数组成的集合。现在考虑集合，其中取遍全部素数。则是不在中的整数。由于{1,-1}显然不是开集，从而不是闭集。这表明素数有无穷多个。 不知道读者怎么看这段“原文”，反正我很晕乎……经过努力后终于弄懂了大概意思，所以我将在下面对此进行逐句的解释。 首先，算数级数就是等差数列，我们不妨从线性空间里面学到的基的定义拓展一下，等差数列的基就是能够结合参数表示出等差数列的“产生元”，那么可以这样定义：就是等差数列，其中(a,b)是一个基——因为当我的n作为参数取遍所有整数的时候，可以根据固定了的a和b得到一个等差数列，其中a是公差，b是一个起点。另外，当a和b取遍整数集时，必然可以取到算数级数的所有的基。 拓扑空间的定义可以参阅维基百科上的资料，而对这个命题真正重要的其实是开集和闭集的概念（这里的开集和闭集并不是如同熟知的数轴上区间开闭的定义），所以在这里我就忽略掉“正则空间”等装B字眼。 我们的讨论是在整数集上进行，所以可以这样定义开集： 开集属于整数集且对于开集中的每一个整数b，总能够找到一个合适的公差a，使得仍然属于该集。 显然，在这里所有的开集都是无限的——除了空集{}。比如，{&#8230;,-7,-5,-3,-1,1,3,5,7,9,&#8230;}就是一个开集，对于其中的每一个整数（奇数），我们总能找到固定的a=2使得扩展出来的等差数列属于原集合——其实是等于原集合了。又比如，{&#8230;&#8230;,-2,-1,1,2,4,5,7,8,10,11,&#8230;&#8230;}这个集合，直观规律是每两个数就跳过一个数。那么我们也可以找到公差a=3，那么也能够证明此集合是开集。 闭集的定义就简单了：一个开集对于整数集的补集。比如上面的例一中开集的补集就是闭集，即偶数集。 好了，定义到这里，我们可以解释第一段的最后两句话了。根据定义可得每一个算数级数显然是开集，然而它的补集也是一个开集，则它本身又是一个闭集——那么可得每一个算数级数是又开又闭的集合。那么要证明“任意有限个算数级数的并也是闭集”，我们只需证明任意有限个闭集的并也是闭集。借助德摩根定律，就相当于他们的补集的交集的补集(有点绕口啊~)，即。他们的补集显然是开集，那么如果开集的交集仍然是开集，那么就是闭集了。现在假设A和B是两个开集，那么假设有和分别属于A和B，那么显然可以找到一个e，使得e属于交集，同时可以看出属于——所以得到开集的交也是开集。综上一大段所述，闭集的并也是闭集。可以将上述结论推广到有限多个开(闭)集的交(并)集。 上面一大段可以总结为一句话：有限多个闭集的并集仍然为闭集。 关于“拓扑”的知识已经铺垫完了，下面我们开始进入正题。等价于这个集合：。那么令p取遍所有的素数，得到了一个集合A。由定义得到A的补集就是{-1,1}。假设素数是有限个的，那么由“闭集的并也是闭集”可以得到A是一个闭集——那么A的补集是一个开集，但是开集要么为空，要么为无穷集合。所以矛盾，证毕。 虽然说这个证明号称为拓扑学的证明方法，但是有点“浅尝辄止”的感觉，倒更像一次对德摩根定律的巧妙应用——不过似乎切入点仍然是从拓扑中对“开集”与“闭集”的定义得来的。这次看上去有点风马牛不相及的结合让我感到非常神奇，非常牛B~ 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 素数有无穷多个的另类证明（二）：素数的某个求和式 素数有无穷多个的另类证明（三）：被遗忘的证明 素数有无穷多个的另类证明（一）：两两互素的无穷序列
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%ba%8c%ef%bc%89%ef%bc%9a%e7%b4%a0%e6%95%b0%e7%9a%84%e6%9f%90%e4%b8%aa%e6%b1%82.html' rel='bookmark' title='素数有无穷多个的另类证明（二）：素数的某个求和式'>素数有无穷多个的另类证明（二）：素数的某个求和式</a></li>
<li><a href='http://blog.programet.org/2009/12/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e8%a2%ab%e9%81%97%e5%bf%98%e7%9a%84%e8%af%81%e6%98%8e.html' rel='bookmark' title='素数有无穷多个的另类证明（三）：被遗忘的证明'>素数有无穷多个的另类证明（三）：被遗忘的证明</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%80%ef%bc%89%ef%bc%9a%e4%b8%a4%e4%b8%a4%e4%ba%92%e7%b4%a0%e7%9a%84%e6%97%a0.html' rel='bookmark' title='素数有无穷多个的另类证明（一）：两两互素的无穷序列'>素数有无穷多个的另类证明（一）：两两互素的无穷序列</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>这个标题的“拓扑”两个字可能会吓到人——其实我看书的时候就吓到我了~这个证明的作者是<a href="http://en.wikipedia.org/wiki/Hillel_Furstenberg">Furstenberg</a>（我不确定是不是我给出的维基链接的那个人），他在1953年给出了一篇短文，现引用原文如下：<span id="more-1959"></span></p>
<blockquote><p>在这篇短文中我们将对于素数无穷性给出一个初等的“拓扑”证明。我们在整数集合S中，取所有算数级数<img src='http://s.wordpress.com/latex.php?latex=%28-%5Cinfty%20%5Csim%20%2B%5Cinfty%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='(-\infty \sim +\infty)' title='(-\infty \sim +\infty)' class='latex' />的基，S可成为一个拓扑空间。事实上，对于这个拓扑，可以证明S是正则空间，并且是可距离化的。每个算数级数是又开又闭的集合。因为它的补集是具有同样公差的其他算数级数的并，于是，任意有限个算数级数的并也是闭集。</p>
<p>对素数<img src='http://s.wordpress.com/latex.php?latex=p&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='p' title='p' class='latex' />，令<img src='http://s.wordpress.com/latex.php?latex=A_p&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A_p' title='A_p' class='latex' />是<img src='http://s.wordpress.com/latex.php?latex=p&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='p' title='p' class='latex' />的全部倍数组成的集合。现在考虑集合<img src='http://s.wordpress.com/latex.php?latex=A%3D%5Cbigcup%20_p%20A_p&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A=\bigcup _p A_p' title='A=\bigcup _p A_p' class='latex' />，其中<img src='http://s.wordpress.com/latex.php?latex=p&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='p' title='p' class='latex' />取遍全部素数。则<img src='http://s.wordpress.com/latex.php?latex=%5Cpm1&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\pm1' title='\pm1' class='latex' />是不在<img src='http://s.wordpress.com/latex.php?latex=A&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A' title='A' class='latex' />中的整数。由于{1,-1}显然不是开集，从而<img src='http://s.wordpress.com/latex.php?latex=A&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A' title='A' class='latex' />不是闭集。这表明素数有无穷多个。</p></blockquote>
<p>不知道读者怎么看这段“原文”，反正我很晕乎……经过努力后终于弄懂了大概意思，所以我将在下面对此进行逐句的解释。</p>
<p>首先，算数级数就是等差数列，我们不妨从线性空间里面学到的基的定义拓展一下，等差数列的基就是能够结合参数表示出等差数列的“产生元”，那么可以这样定义：<img src='http://s.wordpress.com/latex.php?latex=E%28a%2Cb%29%3D%5C%7Ban%2Bb%5Cmid%20a%2Cb%2Cn%5Cin%20Z%5C%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(a,b)=\{an+b\mid a,b,n\in Z\}' title='E(a,b)=\{an+b\mid a,b,n\in Z\}' class='latex' />就是等差数列，其中(a,b)是一个基——因为当我的n作为参数取遍所有整数的时候，可以根据固定了的a和b得到一个等差数列，其中a是公差，b是一个起点。另外，当a和b取遍整数集时，必然可以取到算数级数的所有的基。</p>
<p>拓扑空间的定义可以参阅<a href="http://zh.wikipedia.org/zh-cn/%E6%8B%93%E6%89%91%E7%A9%BA%E9%97%B4#.E6.8B.93.E6.89.91.E7.A9.BA.E9.97.B4.E7.9A.84.E6.9E.84.E9.80.A0">维基百科</a>上的资料，而对这个命题真正重要的其实是开集和闭集的概念（这里的开集和闭集并不是如同熟知的数轴上区间开闭的定义），所以在这里我就忽略掉“正则空间”等装B字眼。</p>
<p>我们的讨论是在整数集上进行，所以可以这样定义开集：</p>
<blockquote><p>开集属于整数集且对于开集中的每一个整数b，总能够找到一个合适的公差a，使得<img src='http://s.wordpress.com/latex.php?latex=E%28a%2Cb%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(a,b)' title='E(a,b)' class='latex' />仍然属于该集。</p></blockquote>
<p>显然，在这里所有的开集都是无限的——除了空集{}。比如，{&#8230;,-7,-5,-3,-1,1,3,5,7,9,&#8230;}就是一个开集，对于其中的每一个整数（奇数），我们总能找到固定的a=2使得<img src='http://s.wordpress.com/latex.php?latex=E%282%2C2k%2B1%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(2,2k+1)' title='E(2,2k+1)' class='latex' />扩展出来的等差数列属于原集合——其实是等于原集合了。又比如，{&#8230;&#8230;,-2,-1,1,2,4,5,7,8,10,11,&#8230;&#8230;}这个集合，直观规律是每两个数就跳过一个数。那么我们也可以找到公差a=3，那么也能够证明此集合是开集。</p>
<p>闭集的定义就简单了：一个开集对于整数集的补集。比如上面的例一中开集的补集就是闭集，即偶数集。</p>
<p>好了，定义到这里，我们可以解释第一段的最后两句话了。根据定义可得每一个算数级数显然是开集，然而它的补集也是一个开集，则它本身又是一个闭集——那么可得每一个算数级数是又开又闭的集合。那么要证明“任意有限个算数级数的并也是闭集”，我们只需证明任意有限个闭集的并也是闭集。借助德摩根定律，<img src='http://s.wordpress.com/latex.php?latex=A%5Cbigcup%20B&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A\bigcup B' title='A\bigcup B' class='latex' />就相当于他们的补集的交集的补集(有点绕口啊~)，即<img src='http://s.wordpress.com/latex.php?latex=A%5Cbigcup%20B%3D%5Csim%20%28%28%5Csim%20A%29%5Cbigcap%20%28%5Csim%20B%29%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A\bigcup B=\sim ((\sim A)\bigcap (\sim B))' title='A\bigcup B=\sim ((\sim A)\bigcap (\sim B))' class='latex' />。他们的补集显然是开集，那么如果开集的交集仍然是开集，那么<img src='http://s.wordpress.com/latex.php?latex=A%5Cbigcup%20B&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A\bigcup B' title='A\bigcup B' class='latex' />就是闭集了。现在假设A和B是两个开集，那么假设有<img src='http://s.wordpress.com/latex.php?latex=E%28c%2Ca%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(c,a)' title='E(c,a)' class='latex' />和<img src='http://s.wordpress.com/latex.php?latex=E%28d%2Cb%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(d,b)' title='E(d,b)' class='latex' />分别属于A和B，那么显然可以找到一个e，使得e属于交集，同时可以看出<img src='http://s.wordpress.com/latex.php?latex=E%28c%2Ad%2Ce%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(c*d,e)' title='E(c*d,e)' class='latex' />属于<img src='http://s.wordpress.com/latex.php?latex=A%5Cbigcup%20B&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A\bigcup B' title='A\bigcup B' class='latex' />——所以得到开集的交也是开集。综上一大段所述，闭集的并也是闭集。可以将上述结论推广到有限多个开(闭)集的交(并)集。</p>
<p>上面一大段可以总结为一句话：有限多个闭集的并集仍然为闭集。</p>
<p>关于“拓扑”的知识已经铺垫完了，下面我们开始进入正题。<img src='http://s.wordpress.com/latex.php?latex=A_p&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='A_p' title='A_p' class='latex' />等价于这个集合：<img src='http://s.wordpress.com/latex.php?latex=E%28p%2C0%29&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='E(p,0)' title='E(p,0)' class='latex' />。那么令p取遍所有的素数，得到了一个集合A。由定义得到A的补集就是{-1,1}。假设素数是有限个的，那么由“闭集的并也是闭集”可以得到A是一个闭集——那么A的补集是一个开集，但是开集要么为空，要么为无穷集合。所以矛盾，证毕。</p>
<p>虽然说这个证明号称为拓扑学的证明方法，但是有点“浅尝辄止”的感觉，倒更像一次对德摩根定律的巧妙应用——不过似乎切入点仍然是从拓扑中对“开集”与“闭集”的定义得来的。这次看上去有点风马牛不相及的结合让我感到非常神奇，非常牛B~</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%ba%8c%ef%bc%89%ef%bc%9a%e7%b4%a0%e6%95%b0%e7%9a%84%e6%9f%90%e4%b8%aa%e6%b1%82.html' rel='bookmark' title='素数有无穷多个的另类证明（二）：素数的某个求和式'>素数有无穷多个的另类证明（二）：素数的某个求和式</a></li>
<li><a href='http://blog.programet.org/2009/12/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%89%ef%bc%89%ef%bc%9a%e8%a2%ab%e9%81%97%e5%bf%98%e7%9a%84%e8%af%81%e6%98%8e.html' rel='bookmark' title='素数有无穷多个的另类证明（三）：被遗忘的证明'>素数有无穷多个的另类证明（三）：被遗忘的证明</a></li>
<li><a href='http://blog.programet.org/2009/11/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e4%b8%80%ef%bc%89%ef%bc%9a%e4%b8%a4%e4%b8%a4%e4%ba%92%e7%b4%a0%e7%9a%84%e6%97%a0.html' rel='bookmark' title='素数有无穷多个的另类证明（一）：两两互素的无穷序列'>素数有无穷多个的另类证明（一）：两两互素的无穷序列</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/01/%e7%b4%a0%e6%95%b0%e6%9c%89%e6%97%a0%e7%a9%b7%e5%a4%9a%e4%b8%aa%e7%9a%84%e5%8f%a6%e7%b1%bb%e8%af%81%e6%98%8e%ef%bc%88%e5%9b%9b%ef%bc%89%ef%bc%9a%e6%8b%93%e6%89%91%e2%80%94%e2%80%94%e6%88%96%e8%80%85.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<series:name><![CDATA[素数有无穷多个的另类证明]]></series:name>
	</item>
		<item>
		<title>推荐时间：数学家的情歌</title>
		<link>http://blog.programet.org/2010/01/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e6%83%85%e6%ad%8c.html</link>
		<comments>http://blog.programet.org/2010/01/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e6%83%85%e6%ad%8c.html#comments</comments>
		<pubDate>Tue, 05 Jan 2010 06:18:43 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[数学]]></category>
		<category><![CDATA[音乐]]></category>
		<category><![CDATA[Geek]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[视频]]></category>
		<category><![CDATA[非严肃]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=1918</guid>
		<description><![CDATA[突然发现好久没有写我的推荐时间系列了~大概是这个学期关注的东西有所不同吧，没有什么新东西可以拿来和大家分享的…不过今天我终于有东西可以放在这里和大家同乐了~ 这个是我刚才在校内上看TJK分享的，顿时觉得非常的赞~以下是视频来源的童鞋描述： 美国西北大学数学系的The Klein Four乐队创作,转自YouTube,自翻英文字幕,欢迎数学系同学指正&#8230; 下面是我根据字幕简单整理出来的英文歌词，中文歌词则仁者见仁智者见智了。 Three,four,two,one The path of love is never smooth But mine&#8217;s continuous for you You&#8217;re the upper bound in the chains of my heart You&#8217;re my Axiom of Choice,you know it&#8217;s true But lately out relation&#8217;s not so well-defined And I just can&#8217;t function without you I&#8217;ll prove my proposition [...]
相关文章：<ol>
<li><a href='http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html' rel='bookmark' title='推荐时间：初探思维导图'>推荐时间：初探思维导图</a></li>
<li><a href='http://blog.programet.org/2010/05/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%85%b3%e4%ba%8e%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e7%ba%b5%e6%a8%aa%e5%a1%ab%e8%af%8d.html' rel='bookmark' title='推荐时间：关于数学家的纵横填词'>推荐时间：关于数学家的纵横填词</a></li>
<li><a href='http://blog.programet.org/2008/09/lhc-in-rap.html' rel='bookmark' title='推荐时间：LHC in Rap'>推荐时间：LHC in Rap</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>突然发现好久没有写我的推荐时间系列了~大概是这个学期关注的东西有所不同吧，没有什么新东西可以拿来和大家分享的…不过今天我终于有东西可以放在这里和大家同乐了~</p>
<p><span id="more-1918"></span></p>
<p>这个是我刚才在校内上看TJK分享的，顿时觉得非常的赞~以下是<a href="http://v.youku.com/v_show/id_XMTQxNzg2ODU2.html">视频来源</a>的童鞋描述：</p>
<blockquote><p>美国西北大学数学系的The Klein Four乐队创作,转自YouTube,自翻英文字幕,欢迎数学系同学指正&#8230;</p></blockquote>
<p><span class="force-left"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMTQxNzg2ODU2/v.swf" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://player.youku.com/player.php/sid/XMTQxNzg2ODU2/v.swf" quality="high" align="middle"></embed></object></span><br />
下面是我根据字幕简单整理出来的英文歌词，中文歌词则仁者见仁智者见智了。</p>
<blockquote><p>Three,four,two,one<br />
The path of love is never smooth<br />
But mine&#8217;s continuous for you<br />
You&#8217;re the upper bound in the chains of my heart<br />
You&#8217;re my Axiom of Choice,you know it&#8217;s true<br />
But lately out relation&#8217;s not so well-defined<br />
And I just can&#8217;t function without you<br />
I&#8217;ll prove my proposition and I&#8217;m sure you&#8217;ll find<br />
We&#8217;re a finite simple group of order two<br />
I&#8217;m losing my identity<br />
I&#8217;m getting tensor every day<br />
And without loss of generality<br />
I will assume that you feel the same way<br />
Since every time I see you,you just quotient out<br />
The faithful image that I map into<br />
But when we&#8217;re one-to-one<br />
you&#8217;ll see what I&#8217;m about<br />
&#8216;Cause we&#8217;re a finite simple group of order two</p>
<p>Our equivalence was stable<br />
A principal love bundle sitting deep inside<br />
But then you drove a wedge between our two-forms<br />
Now everything is so complexified<br />
When we first met,we simply connected<br />
My heart was open but too dense<br />
Our system was already directed<br />
To have a finite limit,in some sense<br />
I&#8217;m living in the kernel of a rank-one map<br />
From my domain,it&#8217;s image looks so blue<br />
&#8216;Cause all I ee are zeroes,it&#8217;s a cruel trap<br />
But we&#8217;re a finite simple group of order two<br />
I&#8217;m not the smoothest operator in my class<br />
But we&#8217;re a mirror pair,me and you<br />
So let&#8217;s apply forgetful functors to the past<br />
And be a finite simple group<br />
a finite simple group<br />
Let&#8217;s be a finite simple group of order two(Why no three)</p>
<p>I&#8217;ve proved my proposition now,as you can see,<br />
So let&#8217;s both be associative and free<br />
And by corollary,this shows you and I to be<br />
Purely inseparable.Q.E.D.</p></blockquote>
<p>估计我回家前也就发这一篇了，复习几代去也。</p>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2010/04/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%88%9d%e6%8e%a2%e6%80%9d%e7%bb%b4%e5%af%bc%e5%9b%be.html' rel='bookmark' title='推荐时间：初探思维导图'>推荐时间：初探思维导图</a></li>
<li><a href='http://blog.programet.org/2010/05/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e5%85%b3%e4%ba%8e%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e7%ba%b5%e6%a8%aa%e5%a1%ab%e8%af%8d.html' rel='bookmark' title='推荐时间：关于数学家的纵横填词'>推荐时间：关于数学家的纵横填词</a></li>
<li><a href='http://blog.programet.org/2008/09/lhc-in-rap.html' rel='bookmark' title='推荐时间：LHC in Rap'>推荐时间：LHC in Rap</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2010/01/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9a%e6%95%b0%e5%ad%a6%e5%ae%b6%e7%9a%84%e6%83%85%e6%ad%8c.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>译：ACM中队员的合作策略</title>
		<link>http://blog.programet.org/2009/12/%e8%af%91%ef%bc%9aacm%e4%b8%ad%e9%98%9f%e5%91%98%e7%9a%84%e5%90%88%e4%bd%9c%e7%ad%96%e7%95%a5.html</link>
		<comments>http://blog.programet.org/2009/12/%e8%af%91%ef%bc%9aacm%e4%b8%ad%e9%98%9f%e5%91%98%e7%9a%84%e5%90%88%e4%bd%9c%e7%ad%96%e7%95%a5.html#comments</comments>
		<pubDate>Tue, 15 Dec 2009 06:15:50 +0000</pubDate>
		<dc:creator>严酷的魔王</dc:creator>
				<category><![CDATA[原创博文]]></category>
		<category><![CDATA[推荐]]></category>
		<category><![CDATA[程序]]></category>
		<category><![CDATA[计算机]]></category>
		<category><![CDATA[思维]]></category>
		<category><![CDATA[智慧]]></category>
		<category><![CDATA[笔记]]></category>

		<guid isPermaLink="false">http://blog.programet.cn/?p=1781</guid>
		<description><![CDATA[最近刚刚开始认真的ACM…于是去网上找了找关于合作方面的内容，找到一篇E文的，不知道作者是谁。我看了看，感觉还不错，准备收藏。但是一想总觉得看E文的水平毕竟欠佳，没有中文一目十行的那种快感。于是我将其简单地翻译了一下，懒得润色了，还是贴了出来，方便大家的阅读与交流。因为翻译上的缺陷在所难免，所以我已经做好了被拍砖的准备TT……原文的txt版点击这里下载。 简介 自1977以来就有了ACM。这项由资格赛和决赛逐级递进的竞赛为大学生提供了磨砺自己的机会。三个学生要在5小时内用一台电脑解出尽可能多的问题。解出最多问题的队伍就是冠军——解出问题指的是对每个输入都给出了正确的输出。虽然说队员的个人能力很重要，但是如果想要登峰造极，队员们之间还需要有效地配合。我们作为1995年世界决赛的参赛者（我们仨中的两人还参加了1994年的），倒是总结出了不少团队合作的策略。 我们准备在这篇文章里总结我们这么多场比赛的经验，希望这对想参加ACM（或者其他比赛）的你有用。 最基础的东西：练习，练习，练习！！ 因为三个人手头只有一台电脑，所以良好的合作是非常必要的。当然，为了让策略更有效，你首先必须尽力提高自己的能力。你不一定要是一个天才，因为勤奋与刻苦也可以让你走得很远。我们认为，一个队伍是否出色取决于下面三点： 对经典算法的了解以及找到每一个问题的算法的能力； 编码实现算法的能力； 队友之间有效的沟通策略。 这篇文章将重点阐述第三点。不过仍然会有一些提高个人能力的建议。 我们分析了以前的比赛题目，发现同类型的题目不断地出现——可以分类为以下五个类型： 搜索类题目。这些题目需要对很多的情况进行考察以找出最佳的一种。因为搜索最头疼的是时间限制，所以说你应该多注意算法的时间复杂度。 图论问题。这些问题有特殊的可以转化为一个图的性质，所以可以用经典算法来解决。 几何问题。主要是形状，线段以及角度的问题。 模拟题。这些题目的算法很容易想到，但是细致的编码则常常需要很长的时间。 杂题。 你可以在各种资料里面找到前三类问题的算法，你要做的就是事先编好他们的代码然后带到赛场。这样你就可以避免总是犯下同样的（小）错误，然后集中精力对付问题真正困难的那部分。 练习的另一个目的是高效地编程。这并不意味着你要飞速地敲打键盘然后花上海量时间进行调试。相反，应该把问题想清楚，考虑每一种有可能出现的情况，然后开始编码，要保证你的编码能够将调试的时间减少至最低——通常调试都会用掉大量的宝贵时间。 为了磨合一个队伍，做大量的仿真练习是必要的：5小时，一台机器，三个人以及一个评测系统。 团队合作策略的理论 当你的算法和编码水平到了一个难以进一步提高的境界时，改善你们的合作策略会在你冲顶的助你一臂之力。我们和很多不同的队友使用不同的策略练习比赛很多年了，同时发现很多其他队伍也这样做。从中我们归纳出了一套如何让一个队伍最优化的理论。不过，改良策略不一定是必要的：1995年的世界冠军弗赖堡大学只是一支新手队，1994年的西北欧冠军华沙大学的队员们在赛前2个星期才互相认识。 为什么合作策略这么重要？比赛的时候只有一台电脑，所以大家要共用它。问题要被分成几块。为什么不让全队人共同参与呢？“各有所长”(Specialization)是一个很好的分工合作的依据。如果每一个队员都是解决某一类问题的专家，那么他们自然对这类问题的编码更确定，也有可能实现的动作更迅速。对于其他方面，“各有所长”也是很有用的。比如某一个队员是击打键盘的好手但是对设计算法不是很擅长，而另一个队员是算法专家但是不能很流畅地实现算法——他们合作的成果就是能够流畅解决复杂问题的代码！ 另一个分工合作的办法就是让两个人分析所有的问题。两双眼睛看得更清楚，也能更准确地判断一道题目的难度。在早期形成一个“思维坦克”(Think Tank)对找到最合适的题目以及对应的算法非常有帮助。不过，一旦把算法分析透彻了，就只能让一个人进行编码。 经验告诉我们，最有效的编码方式就是一个人完成。这样可以避免相互交流的时候由编程风格的差异造成的混乱——即使你们尽量使用相同的变量名和函数风格，这样的差异仍然是不可避免的。一个人编码能让3*1等于4. 其他的注意事项 因为最后的排名是根据AC的题目数量以及（如果数量相等）运行所有程序花去的时间之和。所以一支队伍应该在5小时里面尽可能地AC，将耗时视为其次的目标。每一次比赛都有队伍在前三个小时内都处在前六名的位置上，但是最后连前十都没有进，相反的过程也经常发生。因此一个长期的策略非常重要：尽量最优化15个人力小时以及5小时的计算机时间，而不要去担心如何最快AC前两题。 为了珍惜宝贵的时间，尽量完成每一个已经动手了的问题。一个已经解决了99%的问题对你们来说没有任何意义。一开始就应该分析清楚题目难易（比如使用“思维坦克”策略）以避免你本就无法完成的题目，或者是防止放过一道伪装得很好的水题。你需要对问题的难度有一个很好的嗅觉，这是选出5小时内你能完成的问题的唯一方法。 因为永远不可能得到最准确的信息，所以你必须冒险。如果你采取了高风险的策略——准备着手解决大量的问题，可能最后你的排名位于后半区，同时电脑上有一堆解决了90%的题目——或者你会笑到最后。反过来，选择比较平稳的策略——选择少量问题，一般就会让你在前4个半小时内完美地AC他们，但是剩下的时间对于一个新问题来说又太短了，这样就浪费了10%的比赛时间。 时间规划应该成为你的策略的一部分。如果你准备对一个难题问题下手，那么请立刻动手，否则你难以完成它。虽然这听起来没什么，但是有很多队伍刚开始选择了小问题，迅速切掉，然后比赛结束时一共也就AC了三题——因为他们没有解决难题。我们认为最后的一个半小时内应该最优先考虑调试而不是新题。如果你在比赛的晚期又开始了一题，那么比赛的最后时刻（最后一个半小时）将成为一个瓶颈。 显然，对最后时刻的安排是决定性的。虽然绝大部分的程序都比较小（不超过100行），最后时刻仍然是一个瓶颈：三个人都想好好利用电脑来做自己的程序。怎么样解决这个问题？首先要记住：坐在电脑前永远只能打字，而不能思考。将你的程序写在纸上，一直到最后一个分号。这样一来你通常都会有一个更好的全局观念，同时你可以仔细考虑每一种特殊情况而不必担心旁边有人虎视眈眈你掌控着的电脑。一旦你写完了整个程序，录入进电脑就不会超过15分钟。虽然你应该避免调试（如果你在纸上写得很认真，那么这是有可能的），但你真正调试的时候应该这样做：从你的程序中收集尽可能多的数据然后和你的代码一起打印出来，然后进行分析。动态跟踪调试是无比罪恶的事情。 一些策略样例： 1.最简单的策略 这条策略对于新手或者是不想沉沦于题海中的人来说非常实用，当然这条策略基本没有什么很好的效果。基本思想就是各做个的题目然后将交流的时间降至最低。每一个人都读一道题，然后挑出一个进行编码。完成一个之后就接着下一个。 这种方法的好处就在于基本上不用练习，程序运行耗时被降到最低——因为最简单的问题最先被解决。但是有几个缺点很明显：因为最早被解决的问题通常都是一样水的题目，那么三个人都会在差不多的时间内完成他的程序，所以在最后，电脑的使用权就会引起冲突。另外，只有最简单的程序被解决因为没有时间剩给难题了。最后可以得出这样的结论：假设你的编程水平不算差，那么你们队就应该能解决三到四题。这会使你的耗时很少，可能进入前十，但是不太可能进入前三。 2.终结者策略 在终结者策略中，只有一位队员T在使用电脑。另外两位则负责分析问题，将算法和代码的关键部分写下，然这时后T应该要完成必要的输入输出部分。当算法完成时，T就开始打字，如果必要还应该简单调试一下。如果bug难以发现那么这题算法的设计者就过来一起调试。 这种方法的好处在于最后时刻不再是瓶颈，同时解决问题的不同过程交给了不同的人。这个方法的一个缺点就是T在打字之外没能发挥任何的作用，只是像一个秘书一样。如果你是唯一一个比较熟悉编程环境的人，那么这可能是一个好方法。你可以一开始在队友思考的时候打出大段大段的基础代码作为热身。是否选择这个方法与你在这支队伍中的地位关系密切。 3.思维坦克 我们自己赛前练习以及在1995年总决赛上使用的策略就是前文提到的“思维坦克”策略（Think Tank,TT——套套？）。我们感觉在早期选择和分析问题是一个决定性的步骤，所以不能只让一个人来完成。队内两名最擅长问题分析的人组成了套套，同时开始读题，同时第三个人就在电脑上面打一些常用的程序段以及所有的测试数据，并且要确定准确无误。15分钟过后，套套简单地讨论了一下问题同时选出最适合第三个人的题目。交流过核心思想之后他们就可以开始工作了。然后套套将所有的问题都彻底讨论一遍，并将主要思想写下来。我们发现两个人讨论一道难题经常会出现富有创造性的方法。估计一个小时后，套套对整个问题都有了了解，同时找到了所有的算法。接下来的关键就是你想解决多少问题。最短或者最容易的问题通常都交给第三个人，然后套套就瓜分了剩下的问题。 最后时刻只是用来将纸上的代码誊到电脑上，或者是解决一个有bug的程序。如果一个程序没有AC却又找不到错误，那么就将其放到一边直至最后一个小时。原则上最后一个半小时都不应该再输入新代码了。此时整个队伍应该简短地讨论一下当下情况，然后对剩下的代码制定一个调试方案。 这个策略的优点就在于：基本上每一题都可以被解决，因为套套在早期就开始考虑难题。一个明显的缺点就是你们的开头会比较落后，同时耗时不一定最少，所以你们要比其他组多AC一题才能获胜。我们觉得对于一个队员水平相对均衡的队伍来说，这套策略能够帮助你们解决尽可能多的问题。 本文由 严酷的魔王 创作，转载或引用前请联系我们。相关文章： 推荐时间：与机器人对话 关于《生命游戏》和细胞自动机 推荐时间：maTHmU
相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2008/08/blog-post_28.html' rel='bookmark' title='关于《生命游戏》和细胞自动机'>关于《生命游戏》和细胞自动机</a></li>
<li><a href='http://blog.programet.org/2009/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9amathmu.html' rel='bookmark' title='推荐时间：maTHmU'>推荐时间：maTHmU</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>最近刚刚开始认真的ACM…于是去网上找了找关于合作方面的内容，找到<a href="http://bbs.oursdu.com/thread-139802-1-1.html">一篇E文的</a>，不知道作者是谁。我看了看，感觉还不错，准备收藏。但是一想总觉得看E文的水平毕竟欠佳，没有中文一目十行的那种快感。于是我将其简单地翻译了一下，懒得润色了，还是贴了出来，方便大家的阅读与交流。因为翻译上的缺陷在所难免，所以我已经做好了被拍砖的准备TT……原文的txt版<a href="http://blog.programet.cn/wp-content/uploads/ACM.txt">点击这里下载</a>。<span id="more-1781"></span></p>
<blockquote>
<h4><strong>简介</strong></h4>
<p>自1977以来就有了ACM。这项由资格赛和决赛逐级递进的竞赛为大学生提供了磨砺自己的机会。三个学生要在5小时内用一台电脑解出尽可能多的问题。解出最多问题的队伍就是冠军——解出问题指的是对每个输入都给出了正确的输出。虽然说队员的个人能力很重要，但是如果想要登峰造极，队员们之间还需要有效地配合。我们作为1995年世界决赛的参赛者（我们仨中的两人还参加了1994年的），倒是总结出了不少团队合作的策略。<br />
我们准备在这篇文章里总结我们这么多场比赛的经验，希望这对想参加ACM（或者其他比赛）的你有用。</p>
<h4><strong>最基础的东西：练习，练习，练习！！</strong></h4>
<p>因为三个人手头只有一台电脑，所以良好的合作是非常必要的。当然，为了让策略更有效，你首先必须尽力提高自己的能力。你不一定要是一个天才，因为勤奋与刻苦也可以让你走得很远。我们认为，一个队伍是否出色取决于下面三点：</p>
<ul>
<li> 对经典算法的了解以及找到每一个问题的算法的能力；</li>
<li> 编码实现算法的能力；</li>
<li> 队友之间有效的沟通策略。</li>
</ul>
<p>这篇文章将重点阐述第三点。不过仍然会有一些提高个人能力的建议。<br />
我们分析了以前的比赛题目，发现同类型的题目不断地出现——可以分类为以下五个类型：</p>
<ol>
<li> 搜索类题目。这些题目需要对很多的情况进行考察以找出最佳的一种。因为搜索最头疼的是时间限制，所以说你应该多注意算法的时间复杂度。</li>
<li> 图论问题。这些问题有特殊的可以转化为一个图的性质，所以可以用经典算法来解决。</li>
<li> 几何问题。主要是形状，线段以及角度的问题。</li>
<li> 模拟题。这些题目的算法很容易想到，但是细致的编码则常常需要很长的时间。</li>
<li> 杂题。</li>
</ol>
<p>你可以在各种资料里面找到前三类问题的算法，你要做的就是事先编好他们的代码然后带到赛场。这样你就可以避免总是犯下同样的（小）错误，然后集中精力对付问题真正困难的那部分。<br />
练习的另一个目的是高效地编程。这并不意味着你要飞速地敲打键盘然后花上海量时间进行调试。相反，应该把问题想清楚，考虑每一种有可能出现的情况，然后开始编码，要保证你的编码能够将调试的时间减少至最低——通常调试都会用掉大量的宝贵时间。<br />
为了磨合一个队伍，做大量的仿真练习是必要的：5小时，一台机器，三个人以及一个评测系统。</p>
<h4><strong>团队合作策略的理论</strong></h4>
<p>当你的算法和编码水平到了一个难以进一步提高的境界时，改善你们的合作策略会在你冲顶的助你一臂之力。我们和很多不同的队友使用不同的策略练习比赛很多年了，同时发现很多其他队伍也这样做。从中我们归纳出了一套如何让一个队伍最优化的理论。不过，改良策略不一定是必要的：1995年的世界冠军弗赖堡大学只是一支新手队，1994年的西北欧冠军华沙大学的队员们在赛前2个星期才互相认识。<br />
为什么合作策略这么重要？比赛的时候只有一台电脑，所以大家要共用它。问题要被分成几块。为什么不让全队人共同参与呢？“各有所长”(Specialization)是一个很好的分工合作的依据。如果每一个队员都是解决某一类问题的专家，那么他们自然对这类问题的编码更确定，也有可能实现的动作更迅速。对于其他方面，“各有所长”也是很有用的。比如某一个队员是击打键盘的好手但是对设计算法不是很擅长，而另一个队员是算法专家但是不能很流畅地实现算法——他们合作的成果就是能够流畅解决复杂问题的代码！<br />
另一个分工合作的办法就是让两个人分析所有的问题。两双眼睛看得更清楚，也能更准确地判断一道题目的难度。在早期形成一个“思维坦克”(Think Tank)对找到最合适的题目以及对应的算法非常有帮助。不过，一旦把算法分析透彻了，就只能让一个人进行编码。<br />
经验告诉我们，最有效的编码方式就是一个人完成。这样可以避免相互交流的时候由编程风格的差异造成的混乱——即使你们尽量使用相同的变量名和函数风格，这样的差异仍然是不可避免的。一个人编码能让3*1等于4.</p>
<h4><strong>其他的注意事项</strong></h4>
<p>因为最后的排名是根据AC的题目数量以及（如果数量相等）运行所有程序花去的时间之和。所以一支队伍应该在5小时里面尽可能地AC，将耗时视为其次的目标。每一次比赛都有队伍在前三个小时内都处在前六名的位置上，但是最后连前十都没有进，相反的过程也经常发生。因此一个长期的策略非常重要：尽量最优化15个人力小时以及5小时的计算机时间，而不要去担心如何最快AC前两题。<br />
为了珍惜宝贵的时间，尽量完成每一个已经动手了的问题。一个已经解决了99%的问题对你们来说没有任何意义。一开始就应该分析清楚题目难易（比如使用“思维坦克”策略）以避免你本就无法完成的题目，或者是防止放过一道伪装得很好的水题。你需要对问题的难度有一个很好的嗅觉，这是选出5小时内你能完成的问题的唯一方法。<br />
因为永远不可能得到最准确的信息，所以你必须冒险。如果你采取了高风险的策略——准备着手解决大量的问题，可能最后你的排名位于后半区，同时电脑上有一堆解决了90%的题目——或者你会笑到最后。反过来，选择比较平稳的策略——选择少量问题，一般就会让你在前4个半小时内完美地AC他们，但是剩下的时间对于一个新问题来说又太短了，这样就浪费了10%的比赛时间。<br />
时间规划应该成为你的策略的一部分。如果你准备对一个难题问题下手，那么请立刻动手，否则你难以完成它。虽然这听起来没什么，但是有很多队伍刚开始选择了小问题，迅速切掉，然后比赛结束时一共也就AC了三题——因为他们没有解决难题。我们认为最后的一个半小时内应该最优先考虑调试而不是新题。如果你在比赛的晚期又开始了一题，那么比赛的最后时刻（最后一个半小时）将成为一个瓶颈。<br />
显然，对最后时刻的安排是决定性的。虽然绝大部分的程序都比较小（不超过100行），最后时刻仍然是一个瓶颈：三个人都想好好利用电脑来做自己的程序。怎么样解决这个问题？首先要记住：坐在电脑前永远只能打字，而不能思考。将你的程序写在纸上，一直到最后一个分号。这样一来你通常都会有一个更好的全局观念，同时你可以仔细考虑每一种特殊情况而不必担心旁边有人虎视眈眈你掌控着的电脑。一旦你写完了整个程序，录入进电脑就不会超过15分钟。虽然你应该避免调试（如果你在纸上写得很认真，那么这是有可能的），但你真正调试的时候应该这样做：从你的程序中收集尽可能多的数据然后和你的代码一起打印出来，然后进行分析。动态跟踪调试是无比罪恶的事情。</p>
<h4><strong>一些策略样例：</strong></h4>
<p><strong>1.最简单的策略</strong><br />
这条策略对于新手或者是不想沉沦于题海中的人来说非常实用，当然这条策略基本没有什么很好的效果。基本思想就是各做个的题目然后将交流的时间降至最低。每一个人都读一道题，然后挑出一个进行编码。完成一个之后就接着下一个。<br />
这种方法的好处就在于基本上不用练习，程序运行耗时被降到最低——因为最简单的问题最先被解决。但是有几个缺点很明显：因为最早被解决的问题通常都是一样水的题目，那么三个人都会在差不多的时间内完成他的程序，所以在最后，电脑的使用权就会引起冲突。另外，只有最简单的程序被解决因为没有时间剩给难题了。最后可以得出这样的结论：假设你的编程水平不算差，那么你们队就应该能解决三到四题。这会使你的耗时很少，可能进入前十，但是不太可能进入前三。<br />
<strong>2.终结者策略</strong><br />
在终结者策略中，只有一位队员T在使用电脑。另外两位则负责分析问题，将算法和代码的关键部分写下，然这时后T应该要完成必要的输入输出部分。当算法完成时，T就开始打字，如果必要还应该简单调试一下。如果bug难以发现那么这题算法的设计者就过来一起调试。<br />
这种方法的好处在于最后时刻不再是瓶颈，同时解决问题的不同过程交给了不同的人。这个方法的一个缺点就是T在打字之外没能发挥任何的作用，只是像一个秘书一样。如果你是唯一一个比较熟悉编程环境的人，那么这可能是一个好方法。你可以一开始在队友思考的时候打出大段大段的基础代码作为热身。是否选择这个方法与你在这支队伍中的地位关系密切。<br />
<strong>3.思维坦克</strong><br />
我们自己赛前练习以及在1995年总决赛上使用的策略就是前文提到的“思维坦克”策略（Think Tank,TT——套套？）。我们感觉在早期选择和分析问题是一个决定性的步骤，所以不能只让一个人来完成。队内两名最擅长问题分析的人组成了套套，同时开始读题，同时第三个人就在电脑上面打一些常用的程序段以及所有的测试数据，并且要确定准确无误。15分钟过后，套套简单地讨论了一下问题同时选出最适合第三个人的题目。交流过核心思想之后他们就可以开始工作了。然后套套将所有的问题都彻底讨论一遍，并将主要思想写下来。我们发现两个人讨论一道难题经常会出现富有创造性的方法。估计一个小时后，套套对整个问题都有了了解，同时找到了所有的算法。接下来的关键就是你想解决多少问题。最短或者最容易的问题通常都交给第三个人，然后套套就瓜分了剩下的问题。<br />
最后时刻只是用来将纸上的代码誊到电脑上，或者是解决一个有bug的程序。如果一个程序没有AC却又找不到错误，那么就将其放到一边直至最后一个小时。原则上最后一个半小时都不应该再输入新代码了。此时整个队伍应该简短地讨论一下当下情况，然后对剩下的代码制定一个调试方案。<br />
这个策略的优点就在于：基本上每一题都可以被解决，因为套套在早期就开始考虑难题。一个明显的缺点就是你们的开头会比较落后，同时耗时不一定最少，所以你们要比其他组多AC一题才能获胜。我们觉得对于一个队员水平相对均衡的队伍来说，这套策略能够帮助你们解决尽可能多的问题。</p></blockquote>
<p><small>本文由 严酷的魔王 创作，转载或引用前请<a href="mailto:programet.org@gmail.com">联系我们</a>。</small></p><p>相关文章：<ol>
<li><a href='http://blog.programet.org/2009/01/blog-post_01.html' rel='bookmark' title='推荐时间：与机器人对话'>推荐时间：与机器人对话</a></li>
<li><a href='http://blog.programet.org/2008/08/blog-post_28.html' rel='bookmark' title='关于《生命游戏》和细胞自动机'>关于《生命游戏》和细胞自动机</a></li>
<li><a href='http://blog.programet.org/2009/09/%e6%8e%a8%e8%8d%90%e6%97%b6%e9%97%b4%ef%bc%9amathmu.html' rel='bookmark' title='推荐时间：maTHmU'>推荐时间：maTHmU</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.programet.org/2009/12/%e8%af%91%ef%bc%9aacm%e4%b8%ad%e9%98%9f%e5%91%98%e7%9a%84%e5%90%88%e4%bd%9c%e7%ad%96%e7%95%a5.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

