<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.7" -->
<rss version="0.92">
<channel>
	<title>Matrix67: My Blog</title>
	<link>http://www.matrix67.com/blog</link>
	<description>50% Informatics, 50% Mathematics, and 50% Imagination</description>
	<lastBuildDate>Wed, 08 Feb 2012 04:45:52 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>经典证明：星际争霸是NP-hard的</title>
		<description>&#160;&#160;&#160;&#160;今天看到这里给出了一个“星际争霸是 NP-hard 问题”的一个证明。具体地说，给定一个初始布局（包括地图、双方已有资源、双方已有建筑、双方已有兵力），判断其中一方是否能获胜，这个问题是 NP-hard 的。当然，考虑到即时战略游戏的复杂性，这个结论并不出人意料；真正有趣的，则是如何巧妙地利用游戏中的元素，构造出极其精巧的初始局面，从而转化成某个已知的 NP-complete 问题。下面是原文中给出的证明。这个证明有没有什么漏洞？你还能想到哪些别的证明方法？欢迎在下面留言一同分享。


&#160;&#160;&#160;&#160;假设初始时有 A 、 B 两位玩家，他们分别位于两个孤岛上。玩家 B 有非常多的地面兵力，但没有空中单位，并且已有资源为 0 ，而且还没有任何经济来源。他只能坐等玩家 A 来攻打他。玩家 A 一开始则完全没有兵力，但他有不少可以生产作战单位的建筑，也有一定的经济来源，理论上有获胜的希望。地图上还有第三个孤岛，孤岛周边放满 B 的对空防御，玩家 A 即使派遣空中部队也无法进入该孤岛。

&#160;&#160;&#160;&#160;初始时，玩家 A 的资源刚好够造一个农民，玩家 A 还需要收集额外的 x 个单位的资源才足以消灭玩家 B 。但是，玩家 A 的所有可采集资源都在第三个孤岛上。这个孤岛上有 n 个采矿点，每个采矿点都配备有一个基地，以及 x/n 个单位的矿石资源。每个采矿点也都还预先配备了一个农民，只不过这个农民被矿石围在里面出不来了。采矿点与采矿点之间靠一些小路连接，每条路上都有玩家 B 的防御塔，保证一个农民走过去必死无疑，但是两个农民走过去恰好能活一个。

&#160;&#160;&#160;&#160;游戏开始后，玩家 A 唯一获胜的途径便是，在某个采矿点建造一个农民，采完这个采矿点的矿，把被困的农民救出来，然后选择某条小路走到下一个采矿点（途中死掉一个农民），继续采矿并解救农民，以此类推，直到走遍每一个采矿点，采完所有的矿。很容易看到，玩家 A 相当于要解决一个 Hamilton 路的问题（注意，即使平面图的 Hamilton 路问题也是 NP-complete 的）。因此，星际争霸是 NP-hard ...</description>
		<link>http://www.matrix67.com/blog/archives/4897</link>
			</item>
	<item>
		<title>Fibonacci数列性质的组合证明</title>
		<description>&#160;&#160;&#160;&#160;数列 1, 1, 2, 3, 5, 8, 13, 21, 34, … 叫做 Fibonacci 数列。这个数列有很多神奇的性质，其中一个性质是，每一个 Fibonacci 数的平方与它前后两个 Fibonacci 数的乘积一定正好相差 1 。具体地说，如果把第 n 个 Fibonacci 数记做 Fn ，那么有：

&#160;&#160;&#160;&#160;&#160;&#160;Fn+1 · Fn+1 - Fn · Fn+2 = (-1)n

&#160;&#160;&#160;&#160;今天看到了这个定理的一个组合数学证明，觉得非常有意思，在这里和大家分享。


&#160;&#160;&#160;&#160;Fibonacci 数有很多组合数学上的意义。比如说，用 1 × 1 和 1 × 2 的积木覆盖一个 1 × n 的棋盘，总的方案数恰好是 Fn+1 。下图显示的就是 n ...</description>
		<link>http://www.matrix67.com/blog/archives/4891</link>
			</item>
	<item>
		<title>12个经典的行程问题</title>
		<description>&#160;&#160;&#160;&#160;无论是小学奥数，还是公务员考试，还是公司的笔试面试题，似乎都少不了行程问题——题目门槛低，人人都能看懂；但思路奇巧，的确会难住不少人。平时看书上网与人聊天和最近与小学奥数打交道的过程中，我收集到很多简单有趣而又颇具启发性的行程问题，在这里整理成一篇文章，和大家一同分享。这些题目都已经非常经典了，绝大多数可能大家都见过；希望这里能有至少一个你没见过的题目，也欢迎大家来信提供更多类似的问题。

&#160;&#160;&#160;&#160;让我们先从一些最经典最经典的问题说起吧。选中空白部分显示答案。

&#160;&#160;&#160;&#160;甲、乙两人分别从相距 100 米的 A 、B 两地出发，相向而行，其中甲的速度是 2 米每秒，乙的速度是 3 米每秒。一只狗从 A 地出发，先以 6 米每秒的速度奔向乙，碰到乙后再掉头冲向甲，碰到甲之后再跑向乙，如此反复，直到甲、乙两人相遇。问在此过程中狗一共跑了多少米？


&#160;&#160;&#160;&#160;这可以说是最经典的行程问题了。不用分析小狗具体跑过哪些路程，只需要注意到甲、乙两人从出发到相遇需要 20 秒，在这 20 秒的时间里小狗一直在跑，因此它跑过的路程就是 120 米。
&#160;&#160;&#160;&#160;说到这个经典问题，故事可就多了。下面引用某个经典的数学家八卦帖子： John von Neumann 曾被问起一个中国小学生都很熟的问题：两个人相向而行，中间一只狗跑来跑去，问两个人相遇后狗走了多少路。诀窍无非是先求出相遇的时间再乘以狗的速度。 Neumann 当然瞬间给出了答案。提问的人失望地说你以前一定听说过这个诀窍吧。 Neumann 惊讶道：“什么诀窍？我就是把狗每次跑的都算出来，然后计算无穷级数⋯⋯”

&#160;&#160;&#160;&#160;某人上午八点从山脚出发，沿山路步行上山，晚上八点到达山顶。不过，他并不是匀速前进的，有时慢，有时快，有时甚至会停下来。第二天，他早晨八点从山顶出发，沿着原路下山，途中也是有时快有时慢，最终在晚上八点到达山脚。试着说明：此人一定在这两天的某个相同的时刻经过了山路上的同一个点。

&#160;&#160;&#160;&#160;这个题目也是经典中的经典了。把这个人两天的行程重叠到一天去，换句话说想像有一个人从山脚走到了山顶，同一天还有另一个人从山顶走到了山脚。这两个人一定会在途中的某个地点相遇。这就说明了，这个人在两天的同一时刻都经过了这里。

&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;甲从 A 地前往 B 地，乙从 B 地前往 A 地，两人同时出发，各自匀速地前进，每个人到达目的地后都立即以原速度返回。两人首次在距离 A 地 700 米处相遇，后来又在距离 B 地 400 米处相遇。求 A 、 B 两地间的距离。

&#160;&#160;&#160;&#160;答案： 1700 米。第一次相遇时，甲、乙共同走完一个 ...</description>
		<link>http://www.matrix67.com/blog/archives/4881</link>
			</item>
	<item>
		<title>漫话中文自动分词和语义识别（下）：句法结构和语义结构</title>
		<description>&#160;&#160;&#160;&#160;这篇文章是漫话中文分词算法的续篇。在这里，我们将紧接着上一篇文章的内容继续探讨下去：如果计算机可以对一句话进行自动分词，它还能进一步整理句子的结构，甚至理解句子的意思吗？这两篇文章的关系十分紧密，因此，我把前一篇文章改名为了《漫话中文自动分词和语义识别（上）》，这篇文章自然就是它的下篇。我已经在很多不同的地方做过与这个话题有关的演讲了，在这里我想把它们写下来，和更多的人一同分享。

&#160;&#160;&#160;&#160;什么叫做句法结构呢？让我们来看一些例子。“白天鹅在水中游”，这句话是有歧义的，它可能指的是“白天有一只鹅在水中游”，也可能指的是“有一只白天鹅在水中游”。不同的分词方案，产生了不同的意义。有没有什么句子，它的分词方案是唯一的，但也会产生不同的意思呢？有。比如“门没有锁”，它可能是指的“门没有被锁上”，也有可能是指的“门上根本就没有挂锁”。这个句子虽然只能切分成“门／没有／锁”，但由于“锁”这个词既有可能是动词，也有可能是名词，因而让整句话产生了不同的意思。有没有什么句子，它的分词方案是唯一的，并且每个词的词义也都不再变化，但整个句子仍然有歧义呢？有可能。看看这句话：“咬死了猎人的狗”。这句话有可能指的是“把猎人的狗咬死了”，也有可能指的是“一只咬死了猎人的狗”。这个歧义是怎么产生的呢？仔细体会两种不同的意思后，你会发现，句子中最底层的成分可以以不同的顺序组合起来，歧义由此产生。


&#160;&#160;&#160;&#160;在前一篇文章中，我们看到了，利用概率转移的方法，我们可以有效地给一句话分词。事实上，利用相同的模型，我们也能给每一个词标注词性。更好的做法则是，我们直接把同一个词不同词性的用法当作是不同的词，从而把分词和词性标注的工作统一起来。但是，所有这样的工作都是对句子进行从左至右线性的分析，而句子结构实际上比这要复杂多了，它是这些词有顺序有层次地组合在一起的。计算机要想正确地解析一个句子，在分词和标注词性后，接下来该做的就是分析句法结构的层次。

&#160;&#160;&#160;&#160;在计算机中，怎样描述一个句子的句法结构呢？ 1957 年， Noam Chomsky 出版了《句法结构》一书，把这种语言的层次化结构用形式化的方式清晰地描述了出来，这也就是所谓的“生成语法”模型。这本书是 20 世纪为数不多的几本真正的著作之一，文字非常简练，思路非常明晰，震撼了包括语言学、计算机理论在内的多个领域。记得 Quora 上曾经有人问 Who are the best minds of the world today ，投出来的答案就是 Noam Chomsky 。

&#160;&#160;&#160;&#160;随便取一句很长很复杂的话，比如“汽车被开车的师傅修好了”，我们总能至顶向下地一层层分析出它的结构。这个句子最顶层的结构就是“汽车修好了”。汽车怎么修好了呢？汽车被师傅修好了。汽车被什么样的师傅修好了呢？哦，汽车被开车的师傅修好了。当然，我们还可以无限地扩展下去，继续把句子中的每一个最底层的成分替换成更详细更复杂的描述，就好像小学语文中的扩句练习那样。这就是生成语法的核心思想。

&#160;&#160;&#160;&#160;熟悉编译原理的朋友们可能知道“上下文无关文法”。其实，上面提到的扩展规则本质上就是一种上下文无关文法。例如，一个句子可以是“什么怎么样”的形式，我们就把这条规则记作

&#160;&#160;&#160;&#160;&#160;&#160;句子 → 名词性短语＋动词性短语

&#160;&#160;&#160;&#160;其中，“名词性短语”指的是一个具有名词功能的成分，它有可能就是一个名词，也有可能还有它自己的内部结构。例如，它有可能是一个形容词性短语加上“的”再加上另一个名词性短语构成的，比如“便宜的汽车”；它还有可能是由“动词性短语＋的＋名词性短语”构成的，比如“抛锚了的汽车”；它甚至可能是由“名词性短语＋的＋名词性短语”构成的，比如“老师的汽车”。我们把名词性短语的生成规则也都记下来：

&#160;&#160;&#160;&#160;&#160;&#160;名词性短语 → 名词
&#160;&#160;&#160;&#160;&#160;&#160;名词性短语 → 形容词性短语＋的＋名词性短语
&#160;&#160;&#160;&#160;&#160;&#160;名词性短语 → 动词性短语＋的＋名词性短语
&#160;&#160;&#160;&#160;&#160;&#160;名词性短语 → 名词性短语＋的＋名词性短语
&#160;&#160;&#160;&#160;&#160;&#160;⋯⋯

&#160;&#160;&#160;&#160;类似地，动词性短语也有诸多具体的形式：

&#160;&#160;&#160;&#160;&#160;&#160;动词性短语 → 动词
&#160;&#160;&#160;&#160;&#160;&#160;动词性短语 → 动词性短语＋了
&#160;&#160;&#160;&#160;&#160;&#160;动词性短语 → 介词短语＋动词性短语
&#160;&#160;&#160;&#160;&#160;&#160;⋯⋯

&#160;&#160;&#160;&#160;上面我们涉及到了介词短语，它也有自己的生成规则：

&#160;&#160;&#160;&#160;&#160;&#160;介词短语 → 介词＋名词性短语 
&#160;&#160;&#160;&#160;&#160;&#160;⋯⋯

&#160;&#160;&#160;&#160;我们构造句子的任务，也就是从“句子”这个初始结点出发，不断调用规则，产生越来越复杂的句型框架，然后从词库中选择相应词性的单词，填进这个框架里：

&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;而分析句法结构的任务，则是已知一个句子从左到右各词的词性，要反过来求出一棵满足要求的“句法结构树”。这可以用 Earley parser 来实现。

&#160;&#160;&#160;&#160;这样看来，句法结构的问题似乎就已经完美的解决了。其实，我们还差得很远。生成语法有两个大问题。首先，句法结构正确的句子不见得都是好句子。 Chomsky 本人给出了一个经典的例子： Colorless green ideas ...</description>
		<link>http://www.matrix67.com/blog/archives/4870</link>
			</item>
	<item>
		<title>趣题：这些词有什么共同点？</title>
		<description>&#160;&#160;&#160;&#160; 据说，爱出题也是 Geek 的一种特征。这几天在做语言工程课的期末大作业时，再一次见识了汉语里各种诡异的语法规则，然后突然想到了这样一种好玩的题型，于是竟然暂时放下手中的作业，花时间编了几个这样的题目来（感谢 Geek 小美女 localhost_8080 的帮助）。
&#160;&#160;&#160;&#160;下面的每一组词中，前五个词都具有某种共同的性质，这种性质是后面五个词都不具有的。你能猜出每组词所对应的那个性质吗？

&#160;&#160;&#160;&#160;&#160;&#160;(1) 反复、高兴、磨蹭、说笑、许多 &#124; 地震、动静、金黄、巨大、雕刻
&#160;&#160;&#160;&#160;&#160;&#160;(2) 鱼、路、船、裙子、短信 &#124; 山、剑、伞、文章、水母
&#160;&#160;&#160;&#160;&#160;&#160;(3) 锁、画、挂钩、标志、爱好 &#124; 钟、鞋、密码、学问、照片
&#160;&#160;&#160;&#160;&#160;&#160;(4) 腿、门、气味、鱼刺、笔记本 &#124; 手、电、建筑、铅笔、地球仪
&#160;&#160;&#160;&#160;&#160;&#160;(5) 车、地、桌子、屁股、筷子 &#124; 水、胃、位置、大陆、晚餐


&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;

&#160;&#160;&#160;&#160;答案：(1) 可以 AABB 式重叠 (2) 量词是“条” (3) 可兼类作动词 (4) 可以儿化 (5) 可以在前面加“一”作临时量词
&#160;&#160;&#160;&#160;如果你喜欢这几个小问题，你或许会喜欢这里的第一题。
&#160; </description>
		<link>http://www.matrix67.com/blog/archives/4858</link>
			</item>
	<item>
		<title>趣题：用最少的点挡住所有可能的反射路径</title>
		<description>&#160;&#160;&#160;&#160;有一个正方形的房间，房间的四壁都是镜子。房间里有一个天使和一个恶魔。假设房间是一个单位正方形 [0, 1] × [0, 1] ，那么天使和恶魔便是这个正方形内的两个点 (a, b) 和 (c, d) 。恶魔想要在原地发射致命激光杀死天使（激光可以无限地在镜子间反射）。天使可以根据恶魔的位置，预先在房间里放置一些守卫为自己挡住激光（守卫实际上也是一个个点）。当然，天使可以在自己周围密密麻麻地放一圈守卫，围成一个封闭的圆形，从而让恶魔不管朝什么方向发射激光，最终都无法击中天使。我们的问题是，能把守卫的数量减少到可数个点吗？能把守卫的数量减少到有限个点吗？

&#160;&#160;&#160;&#160;这是一个非常经典的问题，我已经见过不止一次了。它可以重新叙述为很多更有趣的实际问题。去年的这个时候，网友 Spark 发来邮件，分享了他在看台球比赛时想到的一个问题：最少需要摆放多少个球，才能挡住白球到目标球的所有可能的路线，迫使对手犯规？如果我们把台球也抽象成一个一个的点，问题就和前面提到的情况一样了。

&#160;&#160;&#160;&#160;今天，我终于看到了这个问题的答案，颇为激动，在此和大家分享。


&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;解决这类问题的一个常用技巧便是利用多次翻折把反射路线变为直线。现在，把这个房间不断地翻折，让它平铺整个平面；各种复杂的反射路径，就变成了一条一条的直线段。这样，我们便可认为恶魔的激光并不是在反射，而是径直穿过镜面射入房间的“虚像”。恶魔的目标，便是直接对准某个天使的虚像射击。由于天使的虚像只有可数个，因此天使可以在恶魔周围摆放可数个守卫，一一挡住射向每一个天使虚像的激光（有觉得下图中的网格线弯曲得异常严重吗？那是你的错觉）。

&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;守卫的数量还能进一步减少到有限个点吗？注意到，即使只有有限的守卫，经过翻折之后也将会产生无穷多个守卫的虚像，每一个虚像都可以帮忙挡住激光。因此，只使用有限的守卫是完全有可能的。事实上，不管天使的位置 (a, b) 和恶魔的位置 (c, d) 在哪儿，摆放 16 个守卫总是足够的。下面我们给出一个具体的方案。

&#160;&#160;&#160;&#160;容易看出，所有天使虚像的坐标都形如 (2m ± a, 2n ± b) ，其中 m 和 n 都是整数（可以为负）。我们先来考察其中一类虚像，即所有形如 (2m - a, 2n + b) 的点。对于任意确定的 m 和 n ，恶魔 (c, d) 和天使虚像 (2m - ...</description>
		<link>http://www.matrix67.com/blog/archives/4831</link>
			</item>
	<item>
		<title>对角线方法之后的故事</title>
		<description>&#160;&#160;&#160;&#160;同样是无穷集合，如果集合里的元素能够与全体正整数构成一一对应的关系，我们就说它是可数的，否则就说它是不可数的。 1874 年， Cantor 发表了一篇重要的论文，论文中证明了全体有理数甚至是全体代数数都是可数的，但全体实数却是不可数的。换句话说，同样是无穷多，实数的数量比有理数、代数数的数量都高出了一个级别。不过，当时 Cantor 证明实数集不可数的方法并不容易理解。 1891 年， Cantor 发表了另一篇论文，给出了实数集不可数的另一种证明方法。此后，这个简单到不可思议的证明不断地震撼着每一个初学集合论的人：

&#160;&#160;&#160;&#160;事实上，实数区间 (0, 1) 就已经是一个不可数的集合了。换句话说，你绝不可能用“第一个数是某某某，第二个数是某某某”的方式把 0 到 1 之间的所有实数一个不漏地列举出来。我们大致的证明思路是，假设你把实数区间 (0, 1) 里的所有数按照某种顺序排列起来，那么我总能找到至少一个 0 到 1 之间的实数，它不在你的列表里，从而说明你的列表并不全。把你的列表上的数全写成 0 到 1 之间的无限小数（如果是有限小数，可以在其后面添加数字 0 ，把它变成无限小数）：

a1 = 0.0147574628...
a2 = 0.3721111111...
a3 = 0.2323232323...
a4 = 0.0004838211...
a5 = 0.0516000000...
.........

&#160;&#160;&#160;&#160;那么我就构造这么一个小数，小数点后第一位不等于 a1 的第一位，小数点后第二位不等于 a2 的第二位，总之小数点后第 i 位不等于 ai 的第 i ...</description>
		<link>http://www.matrix67.com/blog/archives/4812</link>
			</item>
	<item>
		<title>趣题：舞台里的狮子</title>
		<description>&#160;&#160;&#160;&#160;有一个半径为 10 米的圆形舞台，初始时舞台上的某个地方有一头狮子。这头狮子在舞台上以折线段的方式跑了 30 千米。求证：在整个过程中，这头狮子至少转了 2998 个弧度。

&#160;&#160;&#160;&#160;有时候，换一个角度思考，问题就会迎刃而解。



&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;

&#160;&#160;&#160;&#160;现在，让我们站在狮子的角度，用狮子的眼光来看周围的世界。这样的话，狮子本身就是静止不动的，运动的其实是整个舞台；再假设狮子的头也是始终朝北的，狮子原地旋转实际上就是整个舞台绕着它做圆周运动。这样一来，舞台中心的运动就只有两种形式：竖直向下的直线运动，以及以狮子为中心的圆弧运动。如下图，左图就是在我们看来，狮子的移动轨迹，其中圆心代表舞台中心；右图就是在狮子的眼中，舞台中心的移动轨迹，其中圆心代表狮子。注意到，由于舞台始终包含了狮子，因此舞台中心绝不可能跑出狮子周围 10 米的范围。因此，每段直线运动都不能持续太久。我们需要不断靠圆弧运动上调舞台中心的位置，让它有继续竖直向下移动的空间。

&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;由于舞台中心一共下降了 30000 米，但舞台中心的初始位置最多只能比终点位置高出 20 米，因而在整个过程中，舞台中心的高度至少还要靠圆弧运动上调 29980 米。因此，圆弧运动的总路程也就至少有 29980 米（事实上，由于两点之间直线段最短，走弧线绕了弯路，因此实际路程比 29980 米大得多）。如果每段圆弧的半径都是 10 米，那么所有圆弧的度数之和就应该有至少 2998 弧度；何况绝大多数圆弧的半径都小于 10 米，因此圆弧的总度数就更大了。这就说明了，在整个过程中，狮子至少转了 2998 个弧度。

题目来源：http://www.cs.cmu.edu/puzzle/puzzle16.html </description>
		<link>http://www.matrix67.com/blog/archives/4793</link>
			</item>
	<item>
		<title>2011年度最变态的迷宫难题</title>
		<description>&#160;&#160;&#160;&#160;下面大家将会看到的是一个极其简单而又极其复杂的“迷宫”，这无疑是我在本年度见到的最变态的谜题：从左边入口处的 2011 进去，在迷宫里转悠，最后变成 2012 从右边出来。你可以在迷宫里转圈，可以重复之前走过的路，但不能往回退着走。

&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;你能成功走出来吗？


&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;
&#160;&#160;&#160;&#160;放弃吧，答案是

2011 +7 ÷2 +7 ÷2 +7 -5 ×3 ÷2 +7 ÷2 +7 ×3 -5 ÷2 +7 ÷2 +7 -5 ×3 -5 ×3 ÷2 +7 -5 ×3 ÷2 +7 -5 = 2012

&#160;&#160;&#160;&#160;这个变态的谜题来自 Holiday Puzzles 2011 ，作者是 Erich Friedman 。
&#160;&#160;&#160;&#160;提前祝大家新年快乐。 </description>
		<link>http://www.matrix67.com/blog/archives/4790</link>
			</item>
	<item>
		<title>经典证明：不断把凹的部分翻出来，总能把凹多边形变凸吗？</title>
		<description>&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;左图是一个凹多边形，而且凹得相当厉害。作为一个完美主义者，我很难容忍这么一个图形，总想着要把凹进去的部分翻出来，把它还原为一个凸多边形。不幸的是，翻折之后的结果仍然不是凸多边形，图中又产生了新的凹陷。于是，我们想继续把凹进去的部分往外翻，直到整个图形变成凸多边形为止。问题是，这个过程有完吗？换句话说，我们一定能通过有限多步翻折，把凹多边形变成凸的吗？

&#160;&#160;&#160;&#160;这个问题有着非常纠结复杂的历史。这个问题最早可能是由数学家 Paul Erdős 正式提出的。 1935 年，他在 American Mathematical Monthly 上猜想，经过有限步翻折之后，凹多边形一定能变凸。 1939 年， Béla Szőkefalvi-Nagy 给出了一个证明。因此，这个结论又叫做 Erdős-Nagy 定理。有趣的是，这个问题是如此的自然，以至于在此之后，又有一大堆人重新提出并研究了这个问题，而且他们明显并不知道相互之间的已有研究。这事儿给我们带来的好处就是，我们有了 Erdős-Nagy 定理的好几种截然不同的证明方法。不过，这些证明或者太长，或者太高深，或者又有些漏洞。 1999 年， Godfried Toussaint 从这些证明中取长补短，给出了一个比较初等的证明。


&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;在下面的讨论中，我们可能会遇到上图所示的情况：某次翻折之后，三个相邻顶点正好共线，构成了一整条长边。那么，今后中间的那个点将永远位于这条边上，因此我们可以放心地把它从顶点集里去掉。于是，我们可以默认，下面讨论的所有多边形，边上都不会有“废”的顶点。

&#160;&#160;&#160;&#160;让我们先来看一个引理：任意给定一个凸多边形后，我们总能找到一个 ε ，使得只要该凸多边形的每一个顶点都移动了不超过 ε 的距离，得到的新多边形仍然是凸的。

&#160;&#160;&#160;&#160;&#160;&#160;

&#160;&#160;&#160;&#160;让我们考虑凸多边形上的某个顶点 Vi ，以及它的两个相邻顶点 Vi-1 和 Vi+1 。把 Vi-1Vi 的中点和 ViVi+1 的中点的连线记为 l 。于是， Vi 、 Vi-1 、 Vi+1 这三个顶点到 l 的距离都是相等的。让我们把这个距离值为 r 。现在，以 ...</description>
		<link>http://www.matrix67.com/blog/archives/4780</link>
			</item>
</channel>
</rss>

