<?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"
	>

<channel>
	<title>Charlesgao数学博客</title>
	<atom:link href="http://www.charlesgao.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.charlesgao.com</link>
	<description>又一个 WordPress Blog</description>
	<pubDate>Mon, 08 Mar 2010 11:20:56 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>关于可去奇点</title>
		<link>http://www.charlesgao.com/?p=265</link>
		<comments>http://www.charlesgao.com/?p=265#comments</comments>
		<pubDate>Thu, 26 Nov 2009 10:20:16 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[数值方法(Numeric)]]></category>

		<category><![CDATA[数学分析(Analysis)]]></category>

		<category><![CDATA[复变函数]]></category>

		<category><![CDATA[奇点]]></category>

		<category><![CDATA[插值]]></category>

		<category><![CDATA[极限]]></category>

		<category><![CDATA[洛必达法则]]></category>

		<category><![CDATA[连续]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=265</guid>
		<description><![CDATA[在估计函数f(x)的n次拉格朗日插值多项式近似代替f(x)所产生的误差时，我们的课本上首先假设了一个误差函数：

由于在n+1个插值节点处误差为0，故误差函数至少有n+1个零点。课本上于是设

其中为插值节点。
当初看到这里的时候觉得有点不对劲，难道一个函数有这些零点，就可以表示成如上形式吗？假如f(x)=log(x)，那么误差函数就是log(x)减去一个多项式，怎么可能展开成上述形式？实际上，这么假设是没有问题的。注意到此时

它在这些点没有定义。而后面的证明却用到了K(x)的连续性。之所以可以这么设，是因为可以被视作“可去奇点”，我们可以自然的定义

上面的式子其实是应用了洛必达法则，由于分子分母有公共零点，所以当时极限存在。
事实上，在复变函数中也有可去奇点的定义，和这里的思想是完全相同的。比如函数

零点就是它的可去奇点，因为如果我们定义f(0)=1，则f(z)在整个复平面内解析。
[English Version of This Post]
]]></description>
			<content:encoded><![CDATA[<p>在估计函数f(x)的n次拉格朗日插值多项式近似代替f(x)所产生的误差时，我们的课本上首先假设了一个误差函数：<br />
<img src="http://latex.codecogs.com/gif.latex?R_n(x)=f(x)-L_n(x)" alt="" /><br />
由于在n+1个插值节点处误差为0，故误差函数至少有n+1个零点。课本上于是设<br />
<img src="http://latex.codecogs.com/gif.latex?R_n(x)=K(x)(x-x_0)(x-x_1)...(x-x_n)" alt="" /></p>
<p>其中<img src="http://latex.codecogs.com/gif.latex?x_0,x_1,...,x_n" alt="" />为插值节点。<br />
当初看到这里的时候觉得有点不对劲，难道一个函数有<img src="http://latex.codecogs.com/gif.latex?x_0,x_1,...,x_n" alt="" />这些零点，就可以表示成如上形式吗？假如f(x)=log(x)，那么误差函数就是log(x)减去一个多项式，怎么可能展开成上述形式？实际上，这么假设是没有问题的。注意到此时<br />
<img src="http://latex.codecogs.com/gif.latex?K(x)=\frac{R_n(x)}{(x-x_0)(x-x_1)...(x-x_n)}" alt="" /></p>
<p>它在<img src="http://latex.codecogs.com/gif.latex?x_0,x_1,...,x_n" alt="" />这些点没有定义。而后面的证明却用到了K(x)的连续性。之所以可以这么设，是因为<img src="http://latex.codecogs.com/gif.latex?x_0,x_1,...,x_n" alt="" />可以被视作“可去奇点”，我们可以自然的定义<br />
<img src="http://latex.codecogs.com/gif.latex?K(x_i)=\frac{R_n'(x_i)}{(x-x_0)...(x-x_{i-1})(x-x_{i+1})...(x-x_n)}" alt="" /></p>
<p>上面的式子其实是应用了洛必达法则，由于分子分母有公共零点<img src="http://latex.codecogs.com/gif.latex?x_i" alt="" />，所以当<img src="http://latex.codecogs.com/gif.latex?x\to x_i" alt="" />时极限存在。<br />
事实上，在复变函数中也有可去奇点的定义，和这里的思想是完全相同的。比如函数<br />
<img src="http://latex.codecogs.com/gif.latex?f(z)=\frac{sinz}{z}" alt="" /><br />
零点就是它的可去奇点，因为如果我们定义f(0)=1，则f(z)在整个复平面内解析。</p>
<p>[<a href="http://www.charlesgao.com/en/?p=76">English Version of This Post</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=265</wfw:commentRss>
		</item>
		<item>
		<title>关于同胚的定义</title>
		<link>http://www.charlesgao.com/?p=264</link>
		<comments>http://www.charlesgao.com/?p=264#comments</comments>
		<pubDate>Thu, 24 Sep 2009 14:37:42 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[几何学(Geometry)]]></category>

		<category><![CDATA[拓扑学(Topology)]]></category>

		<category><![CDATA[数学分析(Analysis)]]></category>

		<category><![CDATA[反例]]></category>

		<category><![CDATA[同胚]]></category>

		<category><![CDATA[微分几何]]></category>

		<category><![CDATA[拓扑]]></category>

		<category><![CDATA[映射]]></category>

		<category><![CDATA[连续]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=264</guid>
		<description><![CDATA[在微分几何中，两个度量空间之间的同胚映射的是这样定义的(WIKI)：
在两个度量空间X和Y上建立的一个映射f:X-&#62;Y，如果满足以下三条：
1.f是双射
2.f是连续的
3.f的逆映射f-1也是连续的
则称f为同胚映射。
当看到这个定义时，我产生了一个疑问：第3条性质的声明有意义吗？存在满足1,2但不满足3的映射吗？模糊的说，f连续的意思不就是当X中两个元素的距离足够小的时候，Y中两个元素的距离也足够小吗？这样看来，f的连续与f-1的连续好像是对称的，因为如果上一句话满足，那么当Y中两个元素的距离也足够小的时候，X中两个元素的距离不也足够小吗？
今天大牛胡勇给我举了一个反例：
定义两个集合
X={1, 2 , 3 , &#8230; , n , &#8230;}
Y={1 , 1/2 , 1/3 , &#8230; , 1/n , &#8230;}
它们中的距离都定义为d(x,y)=&#124;x-y&#124;(不难验证这样定义的确实是一个距离)
定义X到Y的映射f:x -&#62; 1/x
任意的ε &#62; 0，取δ=1/2，则当d(m,n)=&#124;m-n&#124;&#60;δ时(在X中，此时只能m=n)，都有d(f(m),f(n))=&#124;f(m)-f(n)&#124;=&#124;1/m - 1/n&#124;=0&#60;ε，所以f是一致连续的(当然更是连续的)。
而反过来，考虑f-1，对于Y中任意一点1/m，取ε=1，对任意的δ&#62;0，不论如何选取d(1/m,1/n)=&#124;1/m - 1/n&#124;&#60;δ的1/n(在Y中)，都有d(f-1(1/m),f-1(1/n))=&#124;m - n&#124;&#62;=1，所以f-1 是不连续的。
]]></description>
			<content:encoded><![CDATA[<p>在微分几何中，两个度量空间之间的同胚映射的是这样定义的(WIKI)：<br />
在两个度量空间X和Y上建立的一个映射f:X-&gt;Y，如果满足以下三条：<br />
1.f是双射<br />
2.f是连续的<br />
3.f的逆映射f<sup>-1</sup>也是连续的<br />
则称f为同胚映射。<br />
当看到这个定义时，我产生了一个疑问：第3条性质的声明有意义吗？存在满足1,2但不满足3的映射吗？模糊的说，f连续的意思不就是当X中两个元素的距离足够小的时候，Y中两个元素的距离也足够小吗？这样看来，f的连续与f<sup>-1</sup>的连续好像是对称的，因为如果上一句话满足，那么当Y中两个元素的距离也足够小的时候，X中两个元素的距离不也足够小吗？<br />
今天大牛胡勇给我举了一个反例：</p>
<p>定义两个集合<br />
X={1, 2 , 3 , &#8230; , n , &#8230;}<br />
Y={1 , 1/2 , 1/3 , &#8230; , 1/n , &#8230;}<br />
它们中的距离都定义为d(x,y)=|x-y|(不难验证这样定义的确实是一个距离)<br />
定义X到Y的映射f:x -&gt; 1/x<br />
任意的ε &gt; 0，取δ=1/2，则当d(m,n)=|m-n|&lt;δ时(在X中，此时只能m=n)，都有d(f(m),f(n))=|f(m)-f(n)|=|1/m - 1/n|=0&lt;ε，所以f是一致连续的(当然更是连续的)。<br />
而反过来，考虑f<sup>-1</sup>，对于Y中任意一点1/m，取ε=1，对任意的δ&gt;0，不论如何选取d(1/m,1/n)=|1/m - 1/n|&lt;δ的1/n(在Y中)，都有d(f<sup>-1</sup>(1/m),f<sup>-1</sup>(1/n))=|m - n|&gt;=1，所以f<sup>-1</sup> 是不连续的。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=264</wfw:commentRss>
		</item>
		<item>
		<title>Google PageRank算法</title>
		<link>http://www.charlesgao.com/?p=157</link>
		<comments>http://www.charlesgao.com/?p=157#comments</comments>
		<pubDate>Tue, 14 Jul 2009 16:23:25 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[应用数学(Application)]]></category>

		<category><![CDATA[概率统计(Prob&amp;Stat)]]></category>

		<category><![CDATA[google]]></category>

		<category><![CDATA[图论]]></category>

		<category><![CDATA[建模]]></category>

		<category><![CDATA[概率]]></category>

		<category><![CDATA[状态空间]]></category>

		<category><![CDATA[马氏链]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=157</guid>
		<description><![CDATA[Google应用PageRank算法给每个网站分配了一个从0～10的数字，它代表了一个网站的重要性。PageRank根据网页之间的超链接来确定一个页面的等级。大家在我博客的右边栏中搜索框的下方可以看到我博客的PageRank，也可以在一些信息查询网站上查询任意网站的PageRank。那么，这个数值是如何计算出来的呢？
其实，PageRank算法的计算过程可以形象的看作“投票”过程。比如我的网站上挂了Wikipedia的超链接，那么我就给Wikepedia投了一票，那么他的PageRank值就会升高。粗略的说，每个网站的PageRank值就是其他各个网站给它“投票”的总和。如果简单的把每一个网站所投的票都看成相同的，这样又会不公平。因为重要的网站所投的票应该有较大的分量。那么，如何确定哪个网站重要，哪个网站不重要呢？还是要根据PageRank。这就产生了一个看似矛盾的过程，我们需要用PageRank值来衡量一个网站的重要性，而它本身的计算中又需要用到PageRank值！
这听起来很像递归，或迭代。PageRank的算法正是基于这种思考产生的。
我们定义PR(A)为A网站的PageRank。为了叙述方便，我们不再使用google的0~10度量，而是使用0~1度量。这和概率的取值范围是一致的。事实上，PageRank就是一个概率(它反映了一个人在网络中不同的页面上随机点击链接会到达某个特定网站的概率)。只不过因为人们不太喜欢看小数，google才更改了度量。
在计算的开始，我们假设考虑的所有网站的PageRank是均匀分布的。这意味着，如果互联网上共有N个网站，那么每个网站的PageRank都是1/N。现在，假设我们仅仅考虑4个网站A,B,C,D组成的一个小网络。初始时，它们的PageRank都是1/4。假如B,C,D的网站上都有且仅有A的链接，那么它们每个人都为A贡献了0.25的PageRank。
（图1）
定义

则PR(A)=0.75
现在假设B网站上还有C的链接，网站D上有其它三个网站的链接。如下图所示：
（图2）
此时，对于B来讲，他把自己的总价值分散投给了两个网站A和C，那么每个网站就应该得到一半的PageRank，即0.125。只有1/3的PR(D)给了A。在这种情况下，

所以，按如此定义，一个网站X上有网站Y的链接，那么它给Y贡献的PageRank等于它的PageRank除以它网站的所有外部链接。（在这里我们做了一个假定，即X网站上对Y站的多个链接不重复计算。不难发现，这样的假定是很合理的。否则像http://worlds-highest-website.com/这样的一个网站上从头到尾全是www.charlesgao.com的链接，那我博客的PageRank就不会这么惨了。&#8212;&#8211;当然，这是不公平的。）
一个网站u的PageRank的普遍表达式为：

其中Bu是所有链接到u的网站的集合。v为相应网站所链接到的网站总数。
有一点值得注意的是：所有PageRank的计算是同时的。即在计算之前，类似上面的一个有向图已经确定了。然后所有网站的PageRank同时用上面这个公式计算。迭代过程如下：
初始：所有网站的PageRank均等
第一次迭代：每个网站得到了一个新的PageRank
第二次迭代：用这组新的PageRank再按上述公式迭代形成另一组新的PageRank
&#8230;
我们最关心的问题是：
如此迭代下去，这些网站的PageRank值最终会收敛么？
大家再回头看我们一开始提到的两个例子。对于图1所示的例子来说，很显然第二次迭代所有的PageRank就都是0了。过程如下：




PR(A)
PR(B)
PR(C)
PR(D)


初始
0.25
0.25
0.25
0.25


第一次迭代后
0.75
0
0
0


第二次迭代后
0
0
0
0



图2所示的情况也将导致最后所有网站的PageRank变为0。因为没有网站链接到D，那么第一次迭代后PR(D)=0。这将导致PR(B)=0，继而导致PR(C)=0,and then PR(A)=0:




PR(A)
PR(B)
PR(C)
PR(D)


初始
0.25
0.25
0.25
0.25


第一次迭代后
0.4583
0.0833
0.2083
0


第二次迭代后
0.25
0
0.0417
0


第三次迭代后
0.0417
0
0
0


第四次迭代后
0
0
0
0



咦？如果PageRank算法是这样的话，那岂不是每个网站的PR都是0了？
为了讨论上面情况发生的条件，我们暂时抛开网站，把问题抽象出来——研究有向图。
首先说明一点，对于如下这种不连通的图：

我们可以分别研究每一部分，而并不影响各个部分的收敛性。
设有向图G的顶点集合为V={V1,V2,&#8230;,Vn}，边的集合为E={Eij}。我们把有向图G的每个顶点都给定一个权值P(Vi)，即为它的PR值。有向边AB的权值定义为A为B贡献的PageRank，也即网站A链接到网站B的概率。这样，对于一个顶点，若它的出度大于0，则从它出去的权值和为1。
一个很显然的结论是，如果连通图中有一个顶点的出度是0，那么经过有限次迭代后所有顶点的PR值都将变为0。形象的说，这个顶点就像一个黑洞一样，把整体的PR值慢慢的“吸收”了。由于它不对外贡献任何PR，所以整体的PR总和在不断减少，最终减为0。
那么google如何防止这类图的产生呢？毕竟，一个网站没有外链是完全有可能的。这里有一种合理的解决方案(但谁知道google是怎么做的呢？)，即如果一个网站没有外链，那么就假定它对其余所有的网站都有链接。这样我们就避免了整体的PR被吸收的现象。
当一个连通图的每一个顶点的出度都大于0时，不难看出，PR值在内部流通，整体的PR是守恒的。有的朋友可能会问，如果存在一个顶点的入度为0会如何呢？通过一次迭代，它的PR就会变成0，而把它的那部分PR贡献给了图中剩余的部分。所以，最终入度为0的顶点的PR都将是0，而整体的PR仍然守恒。
那么，整体的PR守恒就能保证每个顶点的PR值最终会收敛么？
看下面一个简单的例子：

迭代过程如下：




PR(A)
PR(B)
PR(C)
PR(D)


初始
0.25
0.25
0.25
0.25


第一次迭代后
0
0.375
0.25
0.375


第二次迭代后
0
0.375
0.375
0.25


第三次迭代后
0
0.25
0.375
0.375


第四次迭代后
0
0.375
0.25
0.375


第五次迭代后
0
&#8230;
&#8230;
&#8230;



上述过程将无限循环下去，而最终无法收敛。
其实我们同样可以用矩阵来表示这个问题，因为本质上有向图和矩阵是可以相互转化的。令Aij表示从顶点i到达顶点j的概率，那么上图用矩阵来表示就是

如果我们给定初始向量

做第一次迭代，就相当于用初始向量乘以上面的矩阵。第二次迭代就相当于用第一迭代的结果再乘以上面的矩阵&#8230;&#8230;实际上，在随机过程的理论中，上述矩阵被称为“转移概率矩阵”。这种离散状态按照离散时间的随机转移过程称为马氏链(或马尔可夫链,Markov chain)。设转移概率矩阵为P，若存在正整数N，使得PN&#62;0(每一个元素大于0)，这种链被称作正则链，它存在唯一的极限状态概率，并且与初始状态无关。(详见随机过程理论)
在这里，我们仅仅是非常简单的讨论了一下PageRank的原理，这与Google PageRank的实际算法相差甚远。域名数据，内容质量，用户数据，建站时间等等都有可能被考虑进去，从而形成一个完善的算法。这里最神奇的地方就是面对如此庞大的数据量和网页如此实时的变化，google却能在有限的时间内计算出所有网站的PR！这里面的学问可真不少呀！
参考资料：
http://en.wikipedia.org/wiki/PageRank
http://en.wikipedia.org/wiki/Markov_chain
《数学模型（第三版）》姜启源,谢金星,叶俊编, 高等教育出版社
[English Version of This Post]
]]></description>
			<content:encoded><![CDATA[<p>Google应用PageRank算法给每个网站分配了一个从0～10的数字，它代表了一个网站的重要性。PageRank根据网页之间的超链接来确定一个页面的等级。大家在我博客的右边栏中搜索框的下方可以看到我博客的PageRank，也可以在一些信息查询网站上查询任意网站的PageRank。那么，这个数值是如何计算出来的呢？<br />
其实，PageRank算法的计算过程可以形象的看作“投票”过程。比如我的网站上挂了Wikipedia的超链接，那么我就给Wikepedia投了一票，那么他的PageRank值就会升高。粗略的说，每个网站的PageRank值就是其他各个网站给它“投票”的总和。如果简单的把每一个网站所投的票都看成相同的，这样又会不公平。因为重要的网站所投的票应该有较大的分量。那么，如何确定哪个网站重要，哪个网站不重要呢？还是要根据PageRank。这就产生了一个看似矛盾的过程，我们需要用PageRank值来衡量一个网站的重要性，而它本身的计算中又需要用到PageRank值！<br />
这听起来很像递归，或迭代。PageRank的算法正是基于这种思考产生的。<br />
我们定义PR(A)为A网站的PageRank。为了叙述方便，我们不再使用google的0~10度量，而是使用0~1度量。这和概率的取值范围是一致的。事实上，PageRank就是一个概率(它反映了一个人在网络中不同的页面上随机点击链接会到达某个特定网站的概率)。只不过因为人们不太喜欢看小数，google才更改了度量。<br />
在计算的开始，我们假设考虑的所有网站的PageRank是均匀分布的。这意味着，如果互联网上共有N个网站，那么每个网站的PageRank都是1/N。现在，假设我们仅仅考虑4个网站A,B,C,D组成的一个小网络。初始时，它们的PageRank都是1/4。假如B,C,D的网站上都<strong>有且仅有</strong>A的链接，那么它们每个人都为A贡献了0.25的PageRank。<br />
<img class="alignnone size-medium wp-image-159" title="bcd-a" src="http://www.charlesgao.com/wp-content/uploads/2008/12/bcd-a.jpg" alt="" width="219" height="161" />（图1）<br />
定义<br />
<img class="alignnone size-medium wp-image-158" title="pra" src="http://www.charlesgao.com/wp-content/uploads/2008/12/pra.jpg" alt="" width="327" height="26" /><br />
则PR(A)=0.75<br />
现在假设B网站上还有C的链接，网站D上有其它三个网站的链接。如下图所示：<br />
<img class="alignnone size-medium wp-image-160" title="graph1" src="http://www.charlesgao.com/wp-content/uploads/2008/12/graph1.jpg" alt="" width="221" height="182" />（图2）<br />
此时，对于B来讲，他把自己的总价值分散投给了两个网站A和C，那么每个网站就应该得到一半的PageRank，即0.125。只有1/3的PR(D)给了A。在这种情况下，<br />
<img class="alignnone size-medium wp-image-161" title="pra1" src="http://www.charlesgao.com/wp-content/uploads/2008/12/pra1.jpg" alt="" width="339" height="52" /><br />
所以，按如此定义，一个网站X上有网站Y的链接，那么它给Y贡献的PageRank等于它的PageRank除以它网站的所有外部链接。（在这里我们做了一个假定，即X网站上对Y站的多个链接不重复计算。不难发现，这样的假定是很合理的。否则像<a href="http://worlds-highest-website.com/">http://worlds-highest-website.com/</a>这样的一个网站上从头到尾全是w<a href="http://www.charlesgao.com">ww.charlesgao.com</a>的链接，那我博客的PageRank就不会这么惨了。&#8212;&#8211;当然，这是不公平的。）<br />
一个网站u的PageRank的普遍表达式为：<br />
<img class="alignnone size-medium wp-image-162" title="generalterm" src="http://www.charlesgao.com/wp-content/uploads/2008/12/generalterm.jpg" alt="" width="187" height="57" /><br />
其中B<sub>u</sub>是所有链接到u的网站的集合。v为相应网站所链接到的网站总数。<br />
有一点值得注意的是：所有PageRank的计算是同时的。即在计算之前，类似上面的一个有向图已经确定了。然后所有网站的PageRank同时用上面这个公式计算。迭代过程如下：<br />
初始：所有网站的PageRank均等<br />
第一次迭代：每个网站得到了一个新的PageRank<br />
第二次迭代：用这组新的PageRank再按上述公式迭代形成另一组新的PageRank<br />
&#8230;<br />
我们最关心的问题是：<br />
如此迭代下去，这些网站的PageRank值最终会收敛么？<br />
大家再回头看我们一开始提到的两个例子。对于图1所示的例子来说，很显然第二次迭代所有的PageRank就都是0了。过程如下：</p>
<table id="v_dk" border="1" cellspacing="0" cellpadding="3" bordercolor="#ff0000">
<tbody>
<tr>
<td width="20%"></td>
<td width="20%">PR(A)</td>
<td width="20%">PR(B)</td>
<td width="20%">PR(C)</td>
<td width="20%">PR(D)</td>
</tr>
<tr>
<td width="20%">初始</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
</tr>
<tr>
<td width="20%">第一次迭代后</td>
<td width="20%">0.75</td>
<td width="20%">0</td>
<td width="20%">0</td>
<td width="20%">0</td>
</tr>
<tr>
<td width="20%">第二次迭代后</td>
<td width="20%">0</td>
<td width="20%">0</td>
<td width="20%">0</td>
<td width="20%">0</td>
</tr>
</tbody>
</table>
<p>图2所示的情况也将导致最后所有网站的PageRank变为0。因为没有网站链接到D，那么第一次迭代后PR(D)=0。这将导致PR(B)=0，继而导致PR(C)=0,and then PR(A)=0:</p>
<table id="v_dk" border="1" cellspacing="0" cellpadding="3" bordercolor="#ff0000">
<tbody>
<tr>
<td width="20%"></td>
<td width="20%">PR(A)</td>
<td width="20%">PR(B)</td>
<td width="20%">PR(C)</td>
<td width="20%">PR(D)</td>
</tr>
<tr>
<td width="20%">初始</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
</tr>
<tr>
<td width="20%">第一次迭代后</td>
<td width="20%">0.4583</td>
<td width="20%">0.0833</td>
<td width="20%">0.2083</td>
<td width="20%">0</td>
</tr>
<tr>
<td width="20%">第二次迭代后</td>
<td width="20%">0.25</td>
<td width="20%">0</td>
<td width="20%">0.0417</td>
<td width="20%">0</td>
</tr>
<tr>
<td width="20%">第三次迭代后</td>
<td width="20%">0.0417</td>
<td width="20%">0</td>
<td width="20%">0</td>
<td width="20%">0</td>
</tr>
<tr>
<td width="20%">第四次迭代后</td>
<td width="20%">0</td>
<td width="20%">0</td>
<td width="20%">0</td>
<td width="20%">0</td>
</tr>
</tbody>
</table>
<p>咦？如果PageRank算法是这样的话，那岂不是每个网站的PR都是0了？<br />
为了讨论上面情况发生的条件，我们暂时抛开网站，把问题抽象出来——研究有向图。<br />
首先说明一点，对于如下这种不连通的图：<br />
<img class="alignnone size-medium wp-image-163" title="notconnected" src="http://www.charlesgao.com/wp-content/uploads/2008/12/notconnected.jpg" alt="" width="277" height="167" /><br />
我们可以分别研究每一部分，而并不影响各个部分的收敛性。<br />
设有向图G的顶点集合为V={V<sub>1</sub>,V<sub>2</sub>,&#8230;,V<sub>n</sub>}，边的集合为E={Eij}。我们把有向图G的每个顶点都给定一个权值P(V<sub>i</sub>)，即为它的PR值。有向边AB的权值定义为A为B贡献的PageRank，也即网站A链接到网站B的概率。这样，对于一个顶点，若它的出度大于0，则从它出去的权值和为1。<br />
一个很显然的结论是，如果连通图中有一个顶点的出度是0，那么经过有限次迭代后所有顶点的PR值都将变为0。形象的说，这个顶点就像一个黑洞一样，把整体的PR值慢慢的“吸收”了。由于它不对外贡献任何PR，所以整体的PR总和在不断减少，最终减为0。<br />
那么google如何防止这类图的产生呢？毕竟，一个网站没有外链是完全有可能的。这里有一种合理的解决方案(但谁知道google是怎么做的呢？)，即如果一个网站没有外链，那么就假定它对其余所有的网站都有链接。这样我们就避免了整体的PR被吸收的现象。<br />
当一个连通图的每一个顶点的出度都大于0时，不难看出，PR值在内部流通，整体的PR是守恒的。有的朋友可能会问，如果存在一个顶点的入度为0会如何呢？通过一次迭代，它的PR就会变成0，而把它的那部分PR贡献给了图中剩余的部分。所以，最终入度为0的顶点的PR都将是0，而整体的PR仍然守恒。<br />
那么，整体的PR守恒就能保证每个顶点的PR值最终会收敛么？<br />
看下面一个简单的例子：<br />
<img class="alignnone size-medium wp-image-261" title="div_ex" src="http://www.charlesgao.com/wp-content/uploads/2009/07/div_ex.png" alt="" width="157" height="172" /><br />
迭代过程如下：</p>
<table id="v_dk" border="1" cellspacing="0" cellpadding="3" bordercolor="#ff0000">
<tbody>
<tr>
<td width="20%"></td>
<td width="20%">PR(A)</td>
<td width="20%">PR(B)</td>
<td width="20%">PR(C)</td>
<td width="20%">PR(D)</td>
</tr>
<tr>
<td width="20%">初始</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
<td width="20%">0.25</td>
</tr>
<tr>
<td width="20%">第一次迭代后</td>
<td width="20%">0</td>
<td width="20%">0.375</td>
<td width="20%">0.25</td>
<td width="20%">0.375</td>
</tr>
<tr>
<td width="20%">第二次迭代后</td>
<td width="20%">0</td>
<td width="20%">0.375</td>
<td width="20%">0.375</td>
<td width="20%">0.25</td>
</tr>
<tr>
<td width="20%">第三次迭代后</td>
<td width="20%">0</td>
<td width="20%">0.25</td>
<td width="20%">0.375</td>
<td width="20%">0.375</td>
</tr>
<tr>
<td width="20%">第四次迭代后</td>
<td width="20%">0</td>
<td width="20%">0.375</td>
<td width="20%">0.25</td>
<td width="20%">0.375</td>
</tr>
<tr>
<td width="20%">第五次迭代后</td>
<td width="20%">0</td>
<td width="20%">&#8230;</td>
<td width="20%">&#8230;</td>
<td width="20%">&#8230;</td>
</tr>
</tbody>
</table>
<p>上述过程将无限循环下去，而最终无法收敛。<br />
其实我们同样可以用矩阵来表示这个问题，因为本质上有向图和矩阵是可以相互转化的。令A<sub>ij</sub>表示从顶点i到达顶点j的概率，那么上图用矩阵来表示就是<br />
<img class="alignnone size-medium wp-image-262" title="ex_mat" src="http://www.charlesgao.com/wp-content/uploads/2009/07/ex_mat.png" alt="" width="149" height="130" /><br />
如果我们给定初始向量<br />
<img class="alignnone size-medium wp-image-263" title="initial_vector" src="http://www.charlesgao.com/wp-content/uploads/2009/07/initial_vector.png" alt="" width="155" height="36" /><br />
做第一次迭代，就相当于用初始向量乘以上面的矩阵。第二次迭代就相当于用第一迭代的结果再乘以上面的矩阵&#8230;&#8230;实际上，在随机过程的理论中，上述矩阵被称为“转移概率矩阵”。这种离散状态按照离散时间的随机转移过程称为马氏链(或马尔可夫链,Markov chain)。设转移概率矩阵为P，若存在正整数N，使得P<sup>N</sup>&gt;0(每一个元素大于0)，这种链被称作正则链，它存在唯一的极限状态概率，并且与初始状态无关。(详见随机过程理论)</p>
<p>在这里，我们仅仅是非常简单的讨论了一下PageRank的原理，这与Google PageRank的实际算法相差甚远。域名数据，内容质量，用户数据，建站时间等等都有可能被考虑进去，从而形成一个完善的算法。这里最神奇的地方就是面对如此庞大的数据量和网页如此实时的变化，google却能在有限的时间内计算出所有网站的PR！这里面的学问可真不少呀！<br />
参考资料：<br />
<a href="http://en.wikipedia.org/wiki/PageRank">http://en.wikipedia.org/wiki/PageRank<br />
</a><a href="http://en.wikipedia.org/wiki/Markov_chain">http://en.wikipedia.org/wiki/Markov_chain<br />
《</a>数学模型（第三版）》姜启源,谢金星,叶俊编, 高等教育出版社</p>
<p>[<a href="http://www.charlesgao.com/en/?p=84">English Version of This Post</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=157</wfw:commentRss>
		</item>
		<item>
		<title>用另一种函数列构造方法证明Levi定理</title>
		<link>http://www.charlesgao.com/?p=231</link>
		<comments>http://www.charlesgao.com/?p=231#comments</comments>
		<pubDate>Tue, 26 May 2009 08:38:00 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[数学分析(Analysis)]]></category>

		<category><![CDATA[levi]]></category>

		<category><![CDATA[函数]]></category>

		<category><![CDATA[可测]]></category>

		<category><![CDATA[实变]]></category>

		<category><![CDATA[简单函数]]></category>

		<category><![CDATA[证明]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=231</guid>
		<description><![CDATA[在实变函数中，Levi定理，又名Levi单调收敛定理，是说非负可测函数的求极限和积分运算可以交换顺序。具体表述如下：
设和 都是可测集D上的非负可测函数，而且对几乎所有的，单调增加收敛于，则
在周性伟编著的《实变函数》一书中，上述定理的证明思想如下：由于非负可测函数的Lebesgue积分是由单调增加的非负简单函数列的积分的极限来定义的，所以对每一个，都用一列单增非负简单函数列来逼近，设为。然后，按下图所示的方式构造一个新的函数列 ：

即令

这样得到具有两个重要的性质：
(1)单调增加
(2)
在第(2)条性质中，我们先令 ，再令便可得到的极限即为，又根据第(1)条性质，的积分可以用的积分的极限来定义。
这个证明颇具启发性，它的关键在于非负简单函数列的构造。其实，的构造方法并不是唯一的，只要构造出的函数列满足上述两条性质便可。在这里，我们采用如下图所示的构造方式（是否似曾相识？还记得上篇博客中“至多可数个可数集的并是可数集”的证明方法吗？）：

证明：,设的积分由单调增加的非负简单函数列定义。现令


&#8230;

则为非负简单函数，且满足
(1)单调增加
(2) 
由(2)，得
(3) 
在(2),(3)中，令(则 )，得到
(4)
(5) 
在(4),(5)中，令，得


则

参考资料：周性伟，《实变函数》，科学出版社
[English Version of This Post]
]]></description>
			<content:encoded><![CDATA[<p>在实变函数中，Levi定理，又名Levi单调收敛定理，是说非负可测函数的求极限和积分运算可以交换顺序。具体表述如下：<br />
设<img class="alignnone size-medium wp-image-239" title="f" src="http://www.charlesgao.com/wp-content/uploads/2009/05/f.jpg" alt="" width="14" height="20" />和<img class="alignnone size-medium wp-image-233" title="fn" src="http://www.charlesgao.com/wp-content/uploads/2009/05/fn.jpg" alt="" width="58" height="23" /> 都是可测集D上的非负可测函数，而且对几乎所有的<img class="alignnone size-medium wp-image-234" title="xbltd" src="http://www.charlesgao.com/wp-content/uploads/2009/05/xbltd.jpg" alt="" width="37" height="18" />，<img class="alignnone size-medium wp-image-235" title="fnx_" src="http://www.charlesgao.com/wp-content/uploads/2009/05/fnx_.jpg" alt="" width="49" height="24" />单调增加收敛于<img class="alignnone size-medium wp-image-236" title="fx" src="http://www.charlesgao.com/wp-content/uploads/2009/05/fx.jpg" alt="" width="36" height="22" />，则<img class="alignnone size-medium wp-image-237" title="rest" src="http://www.charlesgao.com/wp-content/uploads/2009/05/rest.jpg" alt="" width="89" height="41" /><br />
在周性伟编著的《实变函数》一书中，上述定理的证明思想如下：由于非负可测函数的Lebesgue积分是由单调增加的非负简单函数列的积分的极限来定义的，所以对每一个<img class="alignnone size-medium wp-image-240" title="fn1" src="http://www.charlesgao.com/wp-content/uploads/2009/05/fn1.jpg" alt="" width="15" height="22" />，都用一列单增非负简单函数列来逼近，设为<img class="alignnone size-medium wp-image-241" title="faikn" src="http://www.charlesgao.com/wp-content/uploads/2009/05/faikn.jpg" alt="" width="38" height="29" />。然后，按下图所示的方式构造一个新的函数列<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" /> ：<br />
<img class="alignnone size-medium wp-image-243" title="old_levi" src="http://www.charlesgao.com/wp-content/uploads/2009/05/old_levi.jpg" alt="" width="234" height="207" /></p>
<p>即令<br />
<img class="alignnone size-medium wp-image-244" title="def_kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/def_kesaik.jpg" alt="" width="179" height="29" /><br />
这样得到<a href="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg"><img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" /></a>具有两个重要的性质：<br />
(1)<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />单调增加<br />
(2)<img class="alignnone size-medium wp-image-245" title="con2" src="http://www.charlesgao.com/wp-content/uploads/2009/05/con2.jpg" alt="" width="152" height="24" /><br />
在第(2)条性质中，我们先令<img class="alignnone size-medium wp-image-246" title="ktoinf" src="http://www.charlesgao.com/wp-content/uploads/2009/05/ktoinf.jpg" alt="" width="45" height="18" /> ，再令<img class="alignnone size-medium wp-image-247" title="ntoinf" src="http://www.charlesgao.com/wp-content/uploads/2009/05/ntoinf.jpg" alt="" width="46" height="20" />便可得到<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />的极限即为<img class="alignnone size-medium wp-image-239" title="f" src="http://www.charlesgao.com/wp-content/uploads/2009/05/f.jpg" alt="" width="14" height="20" />，又根据第(1)条性质，<img class="alignnone size-medium wp-image-239" title="f" src="http://www.charlesgao.com/wp-content/uploads/2009/05/f.jpg" alt="" width="14" height="20" />的积分可以用<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />的积分的极限来定义。<br />
这个证明颇具启发性，它的关键在于非负简单函数列<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />的构造。其实，<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />的构造方法并不是唯一的，只要构造出的函数列满足上述两条性质便可。在这里，我们采用如下图所示的构造方式（是否似曾相识？还记得上篇博客中“至多可数个可数集的并是可数集”的证明方法吗？）：<br />
<img class="alignnone size-medium wp-image-248" title="new_levi" src="http://www.charlesgao.com/wp-content/uploads/2009/05/new_levi.jpg" alt="" width="264" height="181" /><br />
证明：<img class="alignnone size-medium wp-image-249" title="foralln1" src="http://www.charlesgao.com/wp-content/uploads/2009/05/foralln1.jpg" alt="" width="43" height="17" />,设<img class="alignnone size-medium wp-image-240" title="fn1" src="http://www.charlesgao.com/wp-content/uploads/2009/05/fn1.jpg" alt="" width="15" height="22" />的积分由单调增加的非负简单函数列<img class="alignnone size-medium wp-image-241" title="faikn" src="http://www.charlesgao.com/wp-content/uploads/2009/05/faikn.jpg" alt="" width="38" height="29" />定义。现令<br />
<img class="alignnone size-medium wp-image-250" title="kesai1" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesai1.jpg" alt="" width="56" height="24" /><br />
<img class="alignnone size-medium wp-image-251" title="kesai2" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesai2.jpg" alt="" width="132" height="27" /><br />
&#8230;<br />
<img class="alignnone size-medium wp-image-252" title="kesaikk" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaikk.jpg" alt="" width="181" height="30" /></p>
<p>则<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />为非负简单函数，且满足<br />
(1)<img class="alignnone size-medium wp-image-242" title="kesaik" src="http://www.charlesgao.com/wp-content/uploads/2009/05/kesaik.jpg" alt="" width="18" height="22" />单调增加<br />
(2) <img class="alignnone size-medium wp-image-253" title="newcon2" src="http://www.charlesgao.com/wp-content/uploads/2009/05/newcon2.jpg" alt="" width="241" height="24" /><br />
由(2)，得<br />
(3) <img class="alignnone size-medium wp-image-254" title="con3" src="http://www.charlesgao.com/wp-content/uploads/2009/05/con3.jpg" alt="" width="277" height="39" /></p>
<p>在(2),(3)中，令<img class="alignnone size-medium wp-image-255" title="stoinf" src="http://www.charlesgao.com/wp-content/uploads/2009/05/stoinf.jpg" alt="" width="42" height="19" />(则<img class="alignnone size-medium wp-image-246" title="ktoinf" src="http://www.charlesgao.com/wp-content/uploads/2009/05/ktoinf.jpg" alt="" width="45" height="18" /> )，得到<br />
(4)<img class="alignnone size-medium wp-image-256" title="con4" src="http://www.charlesgao.com/wp-content/uploads/2009/05/con4.jpg" alt="" width="157" height="29" /><br />
(5) <img class="alignnone size-medium wp-image-257" title="con5" src="http://www.charlesgao.com/wp-content/uploads/2009/05/con5.jpg" alt="" width="208" height="38" /><br />
在(4),(5)中，令<img class="alignnone size-medium wp-image-247" title="ntoinf" src="http://www.charlesgao.com/wp-content/uploads/2009/05/ntoinf.jpg" alt="" width="46" height="20" />，得<br />
<img class="alignnone size-medium wp-image-258" title="final1" src="http://www.charlesgao.com/wp-content/uploads/2009/05/final1.jpg" alt="" width="73" height="28" /><br />
<img class="alignnone size-medium wp-image-259" title="final2" src="http://www.charlesgao.com/wp-content/uploads/2009/05/final2.jpg" alt="" width="123" height="40" /><br />
则<br />
<img class="alignnone size-medium wp-image-260" title="final" src="http://www.charlesgao.com/wp-content/uploads/2009/05/final.jpg" alt="" width="152" height="40" /></p>
<p>参考资料：周性伟，《实变函数》，科学出版社</p>
<p>[<a href="http://www.charlesgao.com/en/?p=89">English Version of This Post</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=231</wfw:commentRss>
		</item>
		<item>
		<title>构造正整数和正有理数之间的一一映射</title>
		<link>http://www.charlesgao.com/?p=214</link>
		<comments>http://www.charlesgao.com/?p=214#comments</comments>
		<pubDate>Sat, 07 Mar 2009 14:11:03 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[数学分析(Analysis)]]></category>

		<category><![CDATA[函数]]></category>

		<category><![CDATA[可数]]></category>

		<category><![CDATA[实变]]></category>

		<category><![CDATA[整数]]></category>

		<category><![CDATA[映射]]></category>

		<category><![CDATA[有理数]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=214</guid>
		<description><![CDATA[如果集合A和集合B之间存在一个一一映射(双射)，则称A和B等价。如果A和正整数集N等价，我们称A是可数的。换句话说，A可数的充要条件是A中的全体元素可以排列成a1,a2,&#8230;,an,..的形状。
根据这个定义，我们很容易得出整数集是可数的。因为我们可以构造如下正整数集到整数集的一一映射：

一个更有意思的命题是：
可数个可数集的并是可数集。
它的证明使用了经典的“对角线”法，这种方法被各种实变函数或集合论的书广泛采用。
证明：假设{Am}是一列可数集，其中Am={am1,am2,&#8230;}，把它们按如下顺序排列

可以按如图箭头所指的方向数U{Am}中的元素，即把U{Am}中元素排列成a11,a21,a12,a31,&#8230;}，于是U{Am}是可数的，命题得证。
上述证明虽然已经说明U{Am}可数，却没有给出它与正整数之间的一一映射关系。能否写出这个映射呢？
仔细观察发现，每个“对角线”上元素amn的下标之和m+n是一个常数。于是我们可以得到，按上图所示的排列方法，amn所处的位置为：

其中m+n≥3，a11=1
这样我们就得到了U{Am}到正整数集的一个一一映射：

这个命题的一个应用就是：有理数集是可数的。因为有理数可以被看作一个二元有序对(p,q)。但当我们用类似的方法排列有理数时，却发现了上述映射的一个致命错误：

(图片来自维基百科，它采用了“蛇状”的盘旋数法)
注意到图中红色的有理数，它们的分子和分母有公约数，这些数都已经被数过了。也就是说，我们上面构造的映射中忽略了amn中会有重复元素的情况。
我试图把重复的情况考虑进去，构建从正有理数到正整数的一一映射，但发现这时问题变得异常复杂，最终没能写出一个通式来。
那么，到底能不能找到这样的一个映射关系呢？我google了一下，还真有人找到了[1]。他的方法用到了二进制和Pierce展开式。大概思想是通过建立正整数和n元有序对之间的双射，再建立Pierce展开式和n元有序对之间的双射，进而得到正整数和Pierce展开式之间的双射。而每个Pierce展开式又唯一的对应着一个正有理数。
参考资料：
[1]http://www.springerlink.com/content/u13v0143126t5785/
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.charlesgao.com/wp-content/uploads/2009/03/bijection_integer1.jpg"></a>如果集合A和集合B之间存在一个一一映射(双射)，则称A和B等价。如果A和正整数集N等价，我们称A是可数的。换句话说，A可数的充要条件是A中的全体元素可以排列成a<sub>1</sub>,a<sub>2</sub>,&#8230;,a<sub>n</sub>,..的形状。<br />
根据这个定义，我们很容易得出整数集是可数的。因为我们可以构造如下正整数集到整数集的一一映射：<br />
<a href="http://www.charlesgao.com/wp-content/uploads/2009/03/bijection_integer1.jpg"><img class="alignnone size-medium wp-image-215" title="bijection_integer1" src="http://www.charlesgao.com/wp-content/uploads/2009/03/bijection_integer1.jpg" alt="" width="189" height="82" /></a><br />
一个更有意思的命题是：<br />
可数个可数集的并是可数集。<br />
它的证明使用了经典的“对角线”法，这种方法被各种实变函数或集合论的书广泛采用。<br />
证明：假设{A<sub>m</sub>}是一列可数集，其中A<sub>m</sub>={a<sub>m1</sub>,a<sub>m2</sub>,&#8230;}，把它们按如下顺序排列<br />
<img class="alignnone size-medium wp-image-216" title="diagonal" src="http://www.charlesgao.com/wp-content/uploads/2009/03/diagonal.jpg" alt="" width="170" height="159" /></p>
<p>可以按如图箭头所指的方向数U{A<sub>m</sub>}中的元素，即把U{A<sub>m</sub>}中元素排列成a<sub>11</sub>,a<sub>21</sub>,a<sub>12</sub>,a<sub>31</sub>,&#8230;}，于是U{A<sub>m</sub>}是可数的，命题得证。<br />
上述证明虽然已经说明U{A<sub>m</sub>}可数，却没有给出它与正整数之间的一一映射关系。能否写出这个映射呢？<br />
仔细观察发现，每个“对角线”上元素a<sub>mn</sub>的下标之和m+n是一个常数。于是我们可以得到，按上图所示的排列方法，a<sub>mn</sub>所处的位置为：<br />
<img class="alignnone size-medium wp-image-217" title="label_amn" src="http://www.charlesgao.com/wp-content/uploads/2009/03/label_amn.jpg" alt="" width="101" height="68" /><br />
其中m+n≥3，a<sub>11</sub>=1<br />
这样我们就得到了U{A<sub>m</sub>}到正整数集的一个一一映射：<br />
<img class="alignnone size-medium wp-image-218" title="bijection_unionam_n" src="http://www.charlesgao.com/wp-content/uploads/2009/03/bijection_unionam_n.jpg" alt="" width="233" height="74" /><br />
这个命题的一个应用就是：有理数集是可数的。因为有理数可以被看作一个二元有序对(p,q)。但当我们用类似的方法排列有理数时，却发现了上述映射的一个致命错误：<br />
<img class="alignnone size-medium wp-image-220" title="rational_diagnal" src="http://www.charlesgao.com/wp-content/uploads/2009/03/rational_diagnal.jpg" alt="" width="433" height="392" /><br />
(图片来自维基百科，它采用了“蛇状”的盘旋数法)<br />
注意到图中红色的有理数，它们的分子和分母有公约数，这些数都已经被数过了。也就是说，我们上面构造的映射中忽略了a<sub>mn</sub>中会有重复元素的情况。<br />
我试图把重复的情况考虑进去，构建从正有理数到正整数的一一映射，但发现这时问题变得异常复杂，最终没能写出一个通式来。<br />
那么，到底能不能找到这样的一个映射关系呢？我google了一下，还真有人找到了<sup>[1]</sup>。他的方法用到了二进制和Pierce展开式。大概思想是通过建立正整数和n元有序对之间的双射，再建立Pierce展开式和n元有序对之间的双射，进而得到正整数和Pierce展开式之间的双射。而每个Pierce展开式又唯一的对应着一个正有理数。<br />
参考资料：<br />
[1]<a href="http://www.springerlink.com/content/u13v0143126t5785/">http://www.springerlink.com/content/u13v0143126t5785/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=214</wfw:commentRss>
		</item>
		<item>
		<title>平方根节</title>
		<link>http://www.charlesgao.com/?p=208</link>
		<comments>http://www.charlesgao.com/?p=208#comments</comments>
		<pubDate>Wed, 04 Mar 2009 13:29:24 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[娱乐数学(Recreation)]]></category>

		<category><![CDATA[新闻]]></category>

		<category><![CDATA[节日]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=208</guid>
		<description><![CDATA[
图片来源：http://a.abcnews.com/
2009年3月3日被全球不少数学迷称作“平方根节”(Square Root Day),一些地区数学迷开展形式多样的庆祝活动。
每逢“平方根节”,月份和日期的数字正好是当年最后两位数字的平方根。这一节日每个世纪只出现9次,对数学迷而言相当珍贵。有人把块根类蔬菜切成正方体以示庆祝,有人则把食物制成根号模样。
美国加利福尼亚州教师罗恩·戈登特意举办一场小型竞赛,获胜者可得339美元的奖励。戈登说:“这些日子(平方根日)就像日历中的彗星。人们等啊等,它们点亮你的生活后又突然消失。
上一个“平方根节”出现在2004年2月2日。要想庆祝下一个“平方根节”,数学迷需等到7年后的2016年4月4日。
cnBeta报道 
]]></description>
			<content:encoded><![CDATA[<p><span class="Apple-style-span" style="word-spacing: 0px; font: 13px/19px 'Lucida Grande'; text-transform: none; color: #000000; text-indent: 0px; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><span><img class="alignnone size-medium wp-image-209" title="abc_square_root_day" src="http://www.charlesgao.com/wp-content/uploads/2009/03/abc_square_root_day.jpg" alt="" width="320" height="240" /><br />
图片来源：<a href="http://a.abcnews.com/">http://a.abcnews.com/</a><br />
2009年3月3日被全球不少数学迷称作“平方根节”(Square Root Day),一些地区数学迷开展形式多样的庆祝活动。</span><br />
每逢“平方根节”,月份和日期的数字正好是当年最后两位数字的平方根。这一节日每个世纪只出现9次,对数学迷而言相当珍贵。有人把块根类蔬菜切成正方体以示庆祝,有人则把食物制成根号模样。<br />
美国加利福尼亚州教师罗恩·戈登特意举办一场小型竞赛,获胜者可得339美元的奖励。戈登说:“这些日子(平方根日)就像日历中的彗星。人们等啊等,它们点亮你的生活后又突然消失。<br />
上一个“平方根节”出现在2004年2月2日。要想庆祝下一个“平方根节”,数学迷需等到7年后的2016年4月4日。<br />
<a href="http://www.cnbeta.com/articles/78498.htm">cnBeta报道</a> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=208</wfw:commentRss>
		</item>
		<item>
		<title>∞-范数定义的来源</title>
		<link>http://www.charlesgao.com/?p=200</link>
		<comments>http://www.charlesgao.com/?p=200#comments</comments>
		<pubDate>Sun, 01 Mar 2009 06:01:23 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[代数学(Algebra)]]></category>

		<category><![CDATA[数学分析(Analysis)]]></category>

		<category><![CDATA[极限]]></category>

		<category><![CDATA[欧式空间]]></category>

		<category><![CDATA[范数]]></category>

		<category><![CDATA[证明]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=200</guid>
		<description><![CDATA[范数(norm)是在向量空间上定义的一个实值函数：V-&#62;R，一般用记号&#124;&#124;x&#124;&#124;表示，它满足以下三个性质：
(1) &#124;&#124;x&#124;&#124;≥0, &#124;&#124;x&#124;&#124;=0 ‹=› x=0
(2) &#124;&#124;ax&#124;&#124;=&#124;a&#124;•&#124;&#124;x&#124;&#124; (a为数域F中的数)
(3)&#124;&#124;x+y&#124;&#124;≤&#124;&#124;x&#124;&#124;+&#124;&#124;y&#124;&#124; 
对于实数p≥1，定义p-范数

1-范数又被称为“出租车范数”。这个名字很形象，指一个出租车沿着&#8221;水平&#8221;和&#8221;竖直&#8221;的街道从向量x起点开到终点所走过的路程。
2-范数又被称为“欧几里德范数”。在欧式空间里，它表示两点间的距离(向量x的模长)。所以性质(3)在欧式空间里就是我们熟知的“两点之间线段最短”
此外，定义∞-范数为：

当看到这个定义时，我们很自然的产生疑问：为什么如此定义∞-范数？它和p-范数有什么关系？
实际上，它们之间是有关系的。p-范数的定义中，令p-&#62;∞便得到∞-范数，也即

证明：令

则有

由于

所以原命题得证。
]]></description>
			<content:encoded><![CDATA[<p><span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><a href="http://en.wikipedia.org/wiki/Norm_(mathematics)">范数(norm)</a>是在向量空间上定义的一个实值函数：V-&gt;R，一般用记号||<strong class="Apple-style-span" style="font-weight: bold;">x</strong>||表示，它满足以下三个性质：<br />
(1) ||<strong class="Apple-style-span" style="font-weight: bold;">x</strong>||≥0, ||<strong class="Apple-style-span" style="font-weight: bold;">x</strong>||=0 ‹=› <strong class="Apple-style-span" style="font-weight: bold;">x</strong>=<strong class="Apple-style-span" style="font-weight: bold;">0<br />
<span class="Apple-style-span" style="font-weight: normal;">(2)</span> </strong>||a<strong class="Apple-style-span" style="font-weight: bold;">x</strong>||=|a|•||<strong class="Apple-style-span" style="font-weight: bold;">x</strong>|| (a为数域F中的数)<br />
(3)||<strong class="Apple-style-span" style="font-weight: bold;">x</strong>+<strong class="Apple-style-span" style="font-weight: bold;">y</strong>||≤||<strong class="Apple-style-span" style="font-weight: bold;">x</strong>||+||<strong class="Apple-style-span" style="font-weight: bold;">y</strong>|| <br />
对于实数p≥1，定义p-范数<br />
<span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><img class="alignnone size-medium wp-image-201" title="p-norm" src="http://www.charlesgao.com/wp-content/uploads/2009/03/p-norm.jpg" alt="" width="156" height="60" /><br />
1-范数又被称为“出租车范数”。这个名字很形象，指一个出租车沿着&#8221;水平&#8221;和&#8221;竖直&#8221;的街道从向量<strong>x</strong>起点开到终点所走过的路程。<br />
2-范数又被称为“欧几里德范数”。在欧式空间里，它表示两点间的距离(向量<strong>x</strong>的模长)。所以性质(3)在欧式空间里就是我们熟知的“两点之间线段最短”<br />
此外，定义∞-范数为：<br />
<span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><img class="alignnone size-medium wp-image-202" title="infinity-norm" src="http://www.charlesgao.com/wp-content/uploads/2009/03/infinity-norm.jpg" alt="" width="238" height="27" /><br />
当看到这个定义时，我们很自然的产生疑问：为什么如此定义∞-范数？它和p-范数有什么关系？<br />
实际上，它们之间是有关系的。p-范数的定义中，令p-&gt;∞便得到∞-范数，也即<br />
<span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><img class="alignnone size-medium wp-image-203" title="limit" src="http://www.charlesgao.com/wp-content/uploads/2009/03/limit.jpg" alt="" width="292" height="60" /><br />
证明：令<br />
<span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><img class="alignnone size-medium wp-image-204" title="denotea" src="http://www.charlesgao.com/wp-content/uploads/2009/03/denotea.jpg" alt="" width="180" height="21" /><br />
则有<br />
<span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><img class="alignnone size-medium wp-image-205" title="twosides" src="http://www.charlesgao.com/wp-content/uploads/2009/03/twosides.jpg" alt="" width="270" height="61" /><br />
由于<br />
<span class="Apple-style-span" style="word-spacing: 0px; text-transform: none; color: #000000; text-indent: 0px; font-family: 'Lucida Grande'; white-space: normal; letter-spacing: normal; border-collapse: separate; orphans: 2; widows: 2; webkit-border-horizontal-spacing: 0px; webkit-border-vertical-spacing: 0px; webkit-text-decorations-in-effect: none; webkit-text-size-adjust: auto; webkit-text-stroke-width: 0;"><img class="alignnone size-medium wp-image-206" title="limit-of-two-sides" src="http://www.charlesgao.com/wp-content/uploads/2009/03/limit-of-two-sides.jpg" alt="" width="178" height="59" /><br />
所以原命题得证。</span></span></span></span></span></span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=200</wfw:commentRss>
		</item>
		<item>
		<title>一个集合上的集族个数</title>
		<link>http://www.charlesgao.com/?p=194</link>
		<comments>http://www.charlesgao.com/?p=194#comments</comments>
		<pubDate>Mon, 23 Feb 2009 06:11:54 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[数学根基(Foundation)]]></category>

		<category><![CDATA[离散数学(Discrete)]]></category>

		<category><![CDATA[幂集]]></category>

		<category><![CDATA[排列组合]]></category>

		<category><![CDATA[集合]]></category>

		<category><![CDATA[集合论]]></category>

		<category><![CDATA[集族]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=194</guid>
		<description><![CDATA[如果集合A的每个元素都是集合B的子集，则称A是B上的一个集族。
那么，给定一个集合S，S上的集族共有多少个呢？
设&#124;S&#124;=n,考察S的幂集P(S)，它是S所有子集所组成的集合。P(S)中元素的个数为

其中，表示的是空集，表示集合S本身。
P(S)中任意个元素的组合都是集合S上的一个集族，所以集合S上的集族个数为：

这里规定空集也为S上的一个集族。（如果规定空集不是，那么再减一就是了。）
从这里看出，P(P(S))是集合S上的所有集族所组成的集合。
]]></description>
			<content:encoded><![CDATA[<p>如果集合A的每个元素都是集合B的子集，则称A是B上的一个集族。<br />
那么，给定一个集合S，S上的集族共有多少个呢？<br />
设|S|=n,考察S的<a href="http://en.wikipedia.org/wiki/Power_set">幂集</a>P(S)，它是S所有子集所组成的集合。P(S)中元素的个数为<br />
<img class="alignnone size-medium wp-image-195" title="pa" src="http://www.charlesgao.com/wp-content/uploads/2009/02/pa.jpg" alt="" width="211" height="24" /><br />
其中，<img class="alignnone size-medium wp-image-196" title="cn0" src="http://www.charlesgao.com/wp-content/uploads/2009/02/cn0.jpg" alt="" width="22" height="24" />表示的是空集，<img class="alignnone size-medium wp-image-197" title="cnn" src="http://www.charlesgao.com/wp-content/uploads/2009/02/cnn.jpg" alt="" width="23" height="21" />表示集合S本身。<br />
P(S)中任意个元素的组合都是集合S上的一个集族，所以集合S上的集族个数为：<br />
<img class="alignnone size-medium wp-image-198" title="22n" src="http://www.charlesgao.com/wp-content/uploads/2009/02/22n.jpg" alt="" width="41" height="38" /><br />
这里规定空集也为S上的一个集族。（如果规定空集不是，那么再减一就是了。）<br />
从这里看出，P(P(S))是集合S上的所有集族所组成的集合。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=194</wfw:commentRss>
		</item>
		<item>
		<title>一道有趣的奥数题</title>
		<link>http://www.charlesgao.com/?p=171</link>
		<comments>http://www.charlesgao.com/?p=171#comments</comments>
		<pubDate>Fri, 20 Feb 2009 03:54:48 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[应用数学(Application)]]></category>

		<category><![CDATA[离散数学(Discrete)]]></category>

		<category><![CDATA[图论]]></category>

		<category><![CDATA[奥数]]></category>

		<category><![CDATA[程序]]></category>

		<category><![CDATA[证明]]></category>

		<category><![CDATA[趣题]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=171</guid>
		<description><![CDATA[某班有30个学生，每个学生在班内都有相同个数的朋友。朋友是相互的。班里进行了一次测验，结果大家的成绩均不相同。一个学生被称为“好学生”，当且仅当他的朋友中有超过一半(不包括正好一半)的朋友成绩低于他。试问：班里最多有多少“好学生”?
拿到这个问题，我首先想哪些因素能确定好学生数。恩，两个因素：
1.每个学生的朋友数
2.每个人都有哪些朋友
注意到，必须先确定1才能继续分析2。那么，朋友数是多少的时候好学生数可以达到最多呢？这个关系很难看出来。首先，如果这30个学生的集合能够用朋友关系分类，那就好做了。可惜朋友关系不具有传递性，它不是一个等价关系，所以不能分类。
但并不是所有情况都不能分类。当朋友数是1的时候就可以。因为朋友是相互的，这样就两两成了一组，一共15组，此时不论朋友怎么结对都是15个好学生。
这是一种极端的情况。于是我很自然的想到另外一种极端的情况：每个学生的朋友数为29，即整个班的同学彼此之间都是朋友。此时好学生数也是确定的——15个。
两端的情况结果相等，我想会不会是朋友数为15个的时候好学生数会最多。这时，我想先确定朋友数是15个试试看。如何表现出同学之间的朋友关系呢？此时我想到了一种数学工具——图。
用图论的语言重述一下原问题：一个图有30个顶点，分别有权值1,2,3…,30(用权值表示相应学生考试的名次)，每个顶点的度数相同。一个顶点为”好点”当且仅当与它相邻的顶点中有超过一半的顶点权值小于它的权值。问”好点”数最多是多少？
这时，我就可以通过在顶点间连线来确定它们之间的关系了。假设每个顶点的度数为15，我连线…-_-‘无奈这30个学生实在是太多了，要连30*15/2=225条线。想到这里我就崩溃了。况且，即使找到了一种连线方法也不能确定它就是最优的，因为假设朋友数为15本身就站不住脚。
朋友数和好学生数之间到底有着怎样的关系呢？
我在这里被困了很长时间。后来发现自己的思路被局限在对整体的考虑上。当我从个体来考虑问题时，豁然开朗，发现了重要的突破点。
用x表示班里的好学生数，m表示每个人的朋友数。
当m为偶数时，一个好学生要有至少m/2 + 1 个朋友成绩比他差。注意到，好学生所组成的集合是有界的，并且也存在序关系(排名)。所以好学生集合里一定存在一个排名最靠后(成绩最差)的好学生。那么他的朋友中比他成绩差的朋友肯定是”坏学生”(这里我把非好学生简称坏学生)。这样就得到了关系

当m为奇数时，同理可以得到

此外，朋友对的总数为30m/2=15m对。把朋友对中成绩相对较好的学生叫G，相对较差的学生叫B。当m为偶数时，在一个好学生的m个朋友对中，他至少在m/2 + 1 个朋友对中是G，所有的朋友对中 好学生是G的 朋友对的个数应该大于等于(m/2 + 1)x，它应该小于朋友对的总数：

当m为奇数时，同理可以得到

综合奇偶数情况下的条件，我们知道下面两式是肯定成立的

解得

即在下图中，好学生数x一定在两条曲线的下方

可以看出，好学生数一定小于26，而且只有当m=7时才可能取得26。于是我就开始画7个朋友数的情况，但是怎么也画不出只有4个坏学生的情况，甚至5个坏学生的情况都画不出。这时我发觉自己定的界还是不够紧，这个条件还可以再缩紧一些。因为1号(用号表示其排名)的所有朋友对中他都是G，2号至少在m-1个朋友对中是G。当然还可以继续下去，3号至少在m-2个朋友对中是G，不过这时就要保证朋友数m要大于等于2了。而我现在还无法严密的说明朋友数是2的情况好朋友数不能达到最多。于是我就不能进行到3号。这样条件变为解得,。这时第一条线变成了下图中的红线：

看来刚才是白尝试了，好学生数最多就25个，且只能在m=7或m=8或m=9时取得。在m=9的情况下，25个好学生是可以达到的(下图只是一种情况，并不是唯一能够达到25的情况)：

这样，我们证明了25是上界，又证明了25是可以达到的，所以25是上确界。问题也就解决了。
大家可能会好奇上图中为什么我有的线用红色画。仔细观察，我的连线方式是有规律的。每个好学生都与他相邻的8个学生连线(左边4条，右边4条)，再有一条线(红线)连到坏学生那里。当然这样的连法有很多种，我只是找了一种对称的。
一般的来说，已知了朋友数m，我的连线方法如下：
1. 把学生按名次排列围成一圈
2. 确定坏学生数为并令坏学生为排名最后的那几位
3. 每个好学生与其相邻的个学生连线，左边条，右边条。然后剩余的base条线连到坏学生那里
4. 如果第3步进行不下去(每个坏学生的朋友数都已达到m但还不能容纳每个好学生过来的base条线)，那么坏学生数加一，回到第3步。
如果第3步能够进行下去，那么此时的好学生数为最多。若此时坏学生的线数还不够，则在他们之间连线使得每个坏学生的朋友数均为m。
为什么这种连线方法能使好学生数达到最多？直观上看，如果我们想要使好学生数达到最多，每个好学生应该“刚好”成为好学生才行(排名前几的除外)。而上面这种算法达到了这一要求。我一直想严格证明这种算法肯定能使好学生数达到最多，但这几天都没有做出来。希望阅读这篇博客的朋友们能留言给我一些思路。
为什么我把坏学生默认定为排名最后的那几位？
可以证明，只要有坏学生不是排在最后几名的情况，我都可以在不改变其他条件的前提下把它转化为坏学生就是最后几名的情况。也就是说，好学生数能够达到最多的所有情况中，一定存在一种情况使得所有坏学生都排在最后。
假设A与B的排名相邻，A比B成绩好，而A为坏学生，B为好学生。可以证明在不改变其他条件的前提下，把上述情况转化为A为好学生，B为坏学生。
证明：
1. 假设A和B是朋友，如图所示。

A的朋友中，比A排名靠前的有m1个，靠后的有m2 + 1个。B的朋友中比B靠前的有m3 + 1 个，比B靠后的有m4个。假设朋友数为m，此时有m1+m2+1=m3+m4+1=m，m1&#62;m2+1,m3+1&#60;m4。
此时交换A与B的其他的好友(A和B之间仍是好友)，如图所示

交换后，A的好朋友中比A排名靠前的有m3个，靠后的有m4+1个。由于m3+1&#60;m4，所以m3&#60;m4 - 1&#60;m4 + 1，因此A为好学生。同理，B的好朋友中比B排名靠前的有m1+1个，靠后的有m2个。由于m1&#62;m2+1，所以m1+1&#62;m2+2&#62;m2，因此B为坏学生。
2. 假设A与B不是朋友。
此时直接交换A,B的朋友即可，证法与1类似。
有了上面的结论，我们就可以通过下图所示的方式把坏学生都逐次移动到最后。

按照刚才提到的算法，可以求出任意朋友数m所对应的最多好学生数x。程序(ActionScirpt2)如下：
[coolcode lang=&#8221;actionscript&#8221; linenum=&#8221;off&#8221;]
peoples=30;//班级总人数
trace(&#8221;班级人数:&#8221; + peoples);
maxfriends=0;
for(friends=1;friends
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.charlesgao.com/wp-content/uploads/2009/02/relation11.jpg"></a><a href="http://www.charlesgao.com/wp-content/uploads/2009/02/relation11.jpg"></a><a href="http://www.charlesgao.com/wp-content/uploads/2009/02/relation11.jpg"></a>某班有30个学生，每个学生在班内都有相同个数的朋友。朋友是相互的。班里进行了一次测验，结果大家的成绩均不相同。一个学生被称为“好学生”，当且仅当他的朋友中有超过一半(不包括正好一半)的朋友成绩低于他。试问：班里最多有多少“好学生”?<br />
拿到这个问题，我首先想哪些因素能确定好学生数。恩，两个因素：<br />
1.每个学生的朋友数<br />
2.每个人都有哪些朋友<br />
注意到，必须先确定1才能继续分析2。那么，朋友数是多少的时候好学生数可以达到最多呢？这个关系很难看出来。首先，如果这30个学生的集合能够用朋友关系分类，那就好做了。可惜朋友关系不具有传递性，它不是一个等价关系，所以不能分类。<br />
但并不是所有情况都不能分类。当朋友数是1的时候就可以。因为朋友是相互的，这样就两两成了一组，一共15组，此时不论朋友怎么结对都是15个好学生。<br />
这是一种极端的情况。于是我很自然的想到另外一种极端的情况：每个学生的朋友数为29，即整个班的同学彼此之间都是朋友。此时好学生数也是确定的——15个。<br />
两端的情况结果相等，我想会不会是朋友数为15个的时候好学生数会最多。这时，我想先确定朋友数是15个试试看。如何表现出同学之间的朋友关系呢？此时我想到了一种数学工具——图。<br />
用图论的语言重述一下原问题：一个图有30个顶点，分别有权值1,2,3…,30(用权值表示相应学生考试的名次)，每个顶点的度数相同。一个顶点为”好点”当且仅当与它相邻的顶点中有超过一半的顶点权值小于它的权值。问”好点”数最多是多少？<br />
这时，我就可以通过在顶点间连线来确定它们之间的关系了。假设每个顶点的度数为15，我连线…-_-‘无奈这30个学生实在是太多了，要连30*15/2=225条线。想到这里我就崩溃了。况且，即使找到了一种连线方法也不能确定它就是最优的，因为假设朋友数为15本身就站不住脚。<br />
朋友数和好学生数之间到底有着怎样的关系呢？<br />
我在这里被困了很长时间。后来发现自己的思路被局限在对整体的考虑上。当我从个体来考虑问题时，豁然开朗，发现了重要的突破点。<br />
用x表示班里的好学生数，m表示每个人的朋友数。<br />
当m为偶数时，一个好学生要有至少m/2 + 1 个朋友成绩比他差。注意到，好学生所组成的集合是有界的，并且也存在序关系(排名)。所以好学生集合里一定存在一个排名最靠后(成绩最差)的好学生。那么他的朋友中比他成绩差的朋友肯定是”坏学生”(这里我把非好学生简称坏学生)。这样就得到了关系<br />
<img class="alignnone size-medium wp-image-172" title="relation1" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation1.jpg" alt="" width="70" height="37" /><br />
当m为奇数时，同理可以得到<br />
<img class="alignnone size-medium wp-image-173" title="relation2" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation2.jpg" alt="" width="70" height="32" /><br />
此外，朋友对的总数为30m/2=15m对。把朋友对中成绩相对较好的学生叫G，相对较差的学生叫B。当m为偶数时，在一个好学生的m个朋友对中，他至少在m/2 + 1 个朋友对中是G，所有的朋友对中 好学生是G的 朋友对的个数应该大于等于(m/2 + 1)x，它应该小于朋友对的总数：<br />
<img class="alignnone size-medium wp-image-174" title="relation3" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation3.jpg" alt="" width="87" height="34" /><br />
当m为奇数时，同理可以得到<br />
<img class="alignnone size-medium wp-image-175" title="relation4" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation4.jpg" alt="" width="88" height="39" /><br />
综合奇偶数情况下的条件，我们知道下面两式是肯定成立的<br />
<img class="alignnone size-medium wp-image-176" title="relation5" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation5.jpg" alt="" width="93" height="78" /><br />
解得<br />
<img class="alignnone size-medium wp-image-177" title="relation6" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation6.jpg" alt="" width="79" height="75" /><br />
即在下图中，好学生数x一定在两条曲线的下方<br />
<img class="alignnone size-medium wp-image-178" title="figure1" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure1.jpg" alt="" width="560" height="420" /><br />
可以看出，好学生数一定小于26，而且只有当m=7时才可能取得26。于是我就开始画7个朋友数的情况，但是怎么也画不出只有4个坏学生的情况，甚至5个坏学生的情况都画不出。这时我发觉自己定的界还是不够紧，<img class="alignnone size-medium wp-image-175" title="relation4" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation4.jpg" alt="" width="88" height="39" />这个条件还可以再缩紧一些。因为1号(用号表示其排名)的所有朋友对中他都是G，2号至少在m-1个朋友对中是G。当然还可以继续下去，3号至少在m-2个朋友对中是G，不过这时就要保证朋友数m要大于等于2了。而我现在还无法严密的说明朋友数是2的情况好朋友数不能达到最多。于是我就不能进行到3号。这样条件<img class="alignnone size-medium wp-image-175" title="relation4" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation4.jpg" alt="" width="88" height="39" />变为<img class="alignnone size-medium wp-image-179" title="relation7" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation7.jpg" alt="" width="180" height="33" />解得,<img class="alignnone size-medium wp-image-180" title="relation8" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation8.jpg" alt="" width="91" height="37" />。这时第一条线变成了下图中的红线：<br />
<img class="alignnone size-medium wp-image-182" title="figure3" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure3.jpg" alt="" width="560" height="420" /><br />
看来刚才是白尝试了，好学生数最多就25个，且只能在m=7或m=8或m=9时取得。在m=9的情况下，25个好学生是可以达到的(下图只是一种情况，并不是唯一能够达到25的情况)：<br />
<img class="alignnone size-medium wp-image-184" title="final" src="http://www.charlesgao.com/wp-content/uploads/2009/02/final.jpg" alt="" width="594" height="587" /><br />
这样，我们证明了25是上界，又证明了25是可以达到的，所以25是上确界。问题也就解决了。<br />
大家可能会好奇上图中为什么我有的线用红色画。仔细观察，我的连线方式是有规律的。每个好学生都与他相邻的8个学生连线(左边4条，右边4条)，再有一条线(红线)连到坏学生那里。当然这样的连法有很多种，我只是找了一种对称的。<br />
一般的来说，已知了朋友数m，我的连线方法如下：<br />
1. 把学生按名次排列围成一圈<br />
2. 确定坏学生数为<img class="alignnone size-medium wp-image-185" title="relation9" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation9.jpg" alt="" width="202" height="40" />并令坏学生为排名最后的那几位<br />
3. 每个好学生与其相邻的<img class="alignnone size-medium wp-image-186" title="relation10" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation10.jpg" alt="" width="58" height="34" />个学生连线，左边<img class="alignnone size-medium wp-image-187" title="relation11" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation11.jpg" alt="" width="41" height="33" />条，右边<img class="alignnone size-medium wp-image-187" title="relation11" src="http://www.charlesgao.com/wp-content/uploads/2009/02/relation11.jpg" alt="" width="41" height="33" />条。然后剩余的base条线连到坏学生那里<br />
4. 如果第3步进行不下去(每个坏学生的朋友数都已达到m但还不能容纳每个好学生过来的base条线)，那么坏学生数加一，回到第3步。<br />
如果第3步能够进行下去，那么此时的好学生数为最多。若此时坏学生的线数还不够，则在他们之间连线使得每个坏学生的朋友数均为m。<br />
为什么这种连线方法能使好学生数达到最多？直观上看，如果我们想要使好学生数达到最多，每个好学生应该“刚好”成为好学生才行(排名前几的除外)。而上面这种算法达到了这一要求。我一直想严格证明这种算法肯定能使好学生数达到最多，但这几天都没有做出来。希望阅读这篇博客的朋友们能留言给我一些思路。<br />
为什么我把坏学生默认定为排名最后的那几位？<br />
可以证明，只要有坏学生不是排在最后几名的情况，我都可以在不改变其他条件的前提下把它转化为坏学生就是最后几名的情况。也就是说，好学生数能够达到最多的所有情况中，一定存在一种情况使得所有坏学生都排在最后。<br />
假设A与B的排名相邻，A比B成绩好，而A为坏学生，B为好学生。可以证明在不改变其他条件的前提下，把上述情况转化为A为好学生，B为坏学生。<br />
证明：<br />
1. 假设A和B是朋友，如图所示。<br />
<img class="alignnone size-medium wp-image-186" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure4.jpg" alt="" /><br />
A的朋友中，比A排名靠前的有m1个，靠后的有m2 + 1个。B的朋友中比B靠前的有m3 + 1 个，比B靠后的有m4个。假设朋友数为m，此时有m1+m2+1=m3+m4+1=m，m1&gt;m2+1,m3+1&lt;m4。<br />
此时交换A与B的其他的好友(A和B之间仍是好友)，如图所示<br />
<img class="alignnone size-medium wp-image-188" title="figure5" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure5.jpg" alt="" width="88" height="110" /><br />
交换后，A的好朋友中比A排名靠前的有m3个，靠后的有m4+1个。由于m3+1&lt;m4，所以m3&lt;m4 - 1&lt;m4 + 1，因此A为好学生。同理，B的好朋友中比B排名靠前的有m1+1个，靠后的有m2个。由于m1&gt;m2+1，所以m1+1&gt;m2+2&gt;m2，因此B为坏学生。<br />
2. 假设A与B不是朋友。<br />
此时直接交换A,B的朋友即可，证法与1类似。<br />
有了上面的结论，我们就可以通过下图所示的方式把坏学生都逐次移动到最后。<br />
<img class="alignnone size-medium wp-image-189" title="figure6" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure6.jpg" alt="" width="246" height="208" /><br />
按照刚才提到的算法，可以求出任意朋友数m所对应的最多好学生数x。程序(ActionScirpt2)如下：<br />
[coolcode lang=&#8221;actionscript&#8221; linenum=&#8221;off&#8221;]<br />
peoples=30;//班级总人数<br />
trace(&#8221;班级人数:&#8221; + peoples);<br />
maxfriends=0;<br />
for(friends=1;friends
<peoples;friends++){//每个人的朋友数<br />
 base=(friends%2==0)?2:1;//计算基数<br />
 num=Math.floor((friends-1)/2);//[(m-1)/2]<br />
 initial=num*(num+1);//坏学生两端的好学生(好学生中最好的几个和最差的几个)起始连到坏学生中的线数<br />
 for(bads=num+base;bads<peoples/2;bads++){//坏学生数循环,bads起始值=num+base<br />
  if((bads*friends-initial)/base>=peoples-bads){//连线正好或有富余，好学生数达到最多<br />
   break;<br />
  }<br />
 }<br />
 trace(&#8221;朋友数:&#8221;+String(friends)+&#8221;,对应的最多好学生数:&#8221;+String(peoples-bads));<br />
}<br />
[/coolcode]<br />
用直方图和杆图表示结果：<br />
<img class="alignnone size-medium wp-image-190" title="figure7" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure7.jpg" alt="" width="625" height="510" /><br />
另附上m=8,10,11时的连线：<br />
<img class="alignnone size-medium wp-image-191" title="figure8" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure8.jpg" alt="" width="593" height="593" /><br />
朋友数m=8，好学生数为22。<br />
<img class="alignnone size-medium wp-image-192" title="figure9" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure9.jpg" alt="" width="592" height="589" /><br />
 <br />
朋友数m=10，好学生数为23。<br />
 <img class="alignnone size-medium wp-image-193" title="figure10" src="http://www.charlesgao.com/wp-content/uploads/2009/02/figure10.jpg" alt="" width="594" height="590" /></p>
<p>朋友数m=11,好学生数为24。(25不是好学生)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=171</wfw:commentRss>
		</item>
		<item>
		<title>你考试舞弊了吗？&#8211;一种对敏感信息的调查方法讨论</title>
		<link>http://www.charlesgao.com/?p=170</link>
		<comments>http://www.charlesgao.com/?p=170#comments</comments>
		<pubDate>Mon, 02 Feb 2009 15:33:39 +0000</pubDate>
		<dc:creator>Charlesgao</dc:creator>
		
		<category><![CDATA[应用数学(Application)]]></category>

		<category><![CDATA[概率统计(Prob&amp;Stat)]]></category>

		<category><![CDATA[全概率公式]]></category>

		<category><![CDATA[敏感信息]]></category>

		<category><![CDATA[概率]]></category>

		<category><![CDATA[调查]]></category>

		<category><![CDATA[问卷]]></category>

		<guid isPermaLink="false">http://www.charlesgao.com/?p=170</guid>
		<description><![CDATA[如果你在学生会工作，想了解同学们在考试中舞弊的严重程度，当然不好找到一些同学问：“你们中谁有舞弊行为？”下面介绍一种估计严重程度的数学方法。
假定要在100位同学中作调查，就做100张小纸条，其中40张纸条上写：你有舞弊行为吗？剩下60张纸条上写：你没有舞弊行为吗？让被调查的同学像抓阄那样每个人任取一张小纸条，并回答“是”或“不是”：一个有舞弊行为的同学，他如果拿到的是问题：你有舞弊行为吗？他应该回答：是。如果拿到另一个问题则回答：不是。也就是大家都如实回答问题。你的工作就是记录有多少人回答“是”，有多少人回答“不是”。假定有45人回答“是”，剩下55个人回答“不是”，你如何根据这样的方法算出舞弊学生所占的比例？
答：
根据全概率公式，下面的等式成立：
45/100 = p * 40/100 + (1-p) * (60/100)
其中p为有舞弊行为的学生所占的比例。
这个公式上直观上可以这么理解：记“你有作弊行为吗？”的问卷为问卷A，“你没有舞弊行为吗？”的问卷为问卷B。那么一个人回答“是”的概率等于收到A卷的概率乘以作弊的概率加上收到B卷的概率乘以没作弊的概率。然而，一个人回答“是”的概率宏观上就表现为这100个人中回答“是”的人数。一个人作弊的概率宏观上表现为100个人中作弊的人数。
当然，这样一次计算出来的p是不准确的，因为调查所得到的结果45并不一定是理论值。也就是说，固定一个p,我们可以算出回答“是”的人数的理论值。那么多次调查回答“是”的人数将在理论值附近波动。换个角度来说，我们可以通过多次调查，取p的平均值作为结果就比较准确了。
考虑一个极端情况，我们把(40,60)换为(50,50)，那么通过上面全概率公式算得的回答“是”的人数应该为50(右端p被削掉)。此时尽管我们无法通过实验来测得p值，但这个式子依然是成立的。因为一个人收到A,B卷是等可能的，所以他回答“是”，“不是”也是等可能的，所以整体上回答“是”的人数会接近一半。也就意味着这是一张毫无意义的问卷。
从另一个角度讲，A,B卷的数量差越大结果的误差就越小。极端情况：A=100,B=0(或A=0,B=100)那么假设所有人都说真话的话，测量结果就是实际结果。
参考资料：《数学建模》，华南理工大学出版社
]]></description>
			<content:encoded><![CDATA[<p>如果你在学生会工作，想了解同学们在考试中舞弊的严重程度，当然不好找到一些同学问：“你们中谁有舞弊行为？”下面介绍一种估计严重程度的数学方法。<br />
假定要在100位同学中作调查，就做100张小纸条，其中40张纸条上写：你有舞弊行为吗？剩下60张纸条上写：你没有舞弊行为吗？让被调查的同学像抓阄那样每个人任取一张小纸条，并回答“是”或“不是”：一个有舞弊行为的同学，他如果拿到的是问题：你有舞弊行为吗？他应该回答：是。如果拿到另一个问题则回答：不是。也就是大家都如实回答问题。你的工作就是记录有多少人回答“是”，有多少人回答“不是”。假定有45人回答“是”，剩下55个人回答“不是”，你如何根据这样的方法算出舞弊学生所占的比例？</p>
<p>答：<br />
根据全概率公式，下面的等式成立：<br />
45/100 = p * 40/100 + (1-p) * (60/100)<br />
其中p为有舞弊行为的学生所占的比例。<br />
这个公式上直观上可以这么理解：记“你有作弊行为吗？”的问卷为问卷A，“你没有舞弊行为吗？”的问卷为问卷B。那么一个人回答“是”的概率等于收到A卷的概率乘以作弊的概率加上收到B卷的概率乘以没作弊的概率。然而，一个人回答“是”的概率宏观上就表现为这100个人中回答“是”的人数。一个人作弊的概率宏观上表现为100个人中作弊的人数。<br />
当然，这样一次计算出来的p是不准确的，因为调查所得到的结果45并不一定是理论值。也就是说，固定一个p,我们可以算出回答“是”的人数的理论值。那么多次调查回答“是”的人数将在理论值附近波动。换个角度来说，我们可以通过多次调查，取p的平均值作为结果就比较准确了。<br />
考虑一个极端情况，我们把(40,60)换为(50,50)，那么通过上面全概率公式算得的回答“是”的人数应该为50(右端p被削掉)。此时尽管我们无法通过实验来测得p值，但这个式子依然是成立的。因为一个人收到A,B卷是等可能的，所以他回答“是”，“不是”也是等可能的，所以整体上回答“是”的人数会接近一半。也就意味着这是一张毫无意义的问卷。<br />
从另一个角度讲，A,B卷的数量差越大结果的误差就越小。极端情况：A=100,B=0(或A=0,B=100)那么假设所有人都说真话的话，测量结果就是实际结果。<br />
参考资料：《数学建模》，华南理工大学出版社</p>
]]></content:encoded>
			<wfw:commentRss>http://www.charlesgao.com/?feed=rss2&amp;p=170</wfw:commentRss>
		</item>
	</channel>
</rss>
