﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-_ _ I _ _ _ _ _ E R-随笔分类-~/note</title><link>http://www.cppblog.com/dingounan/category/4567.html</link><description>It is NOT me that cause the accident.It is YOU.</description><language>zh-cn</language><lastBuildDate>Tue, 20 May 2008 03:08:30 GMT</lastBuildDate><pubDate>Tue, 20 May 2008 03:08:30 GMT</pubDate><ttl>60</ttl><item><title>Algebra笔记(4):Equivalence Relations &amp; Partitions &amp; Cosets</title><link>http://www.cppblog.com/dingounan/archive/2008/05/06/48997.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Tue, 06 May 2008 06:00:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/05/06/48997.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/48997.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/05/06/48997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/48997.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/48997.html</trackback:ping><description><![CDATA[<p>这两章弄死我了.有很多的问题.而且,还找不到Algebra这本书的网站.<br>Page 57,就是Artin举的那个例子.我不知道是不是他搞错了.<br><br>首先说例子中提到的那个symmetric group S<sub>3</sub>,设:x=[0 1 0;0 0 1;1 0 0],y=[0 1 0;1 0 0;0 0 1]<br>则G={1,x,x<sup>2</sup>,y,xy,x<sup>2</sup>y},order=6.到这里都是没有问题的.<br><br>然后就是最让我不解的一句话:<br></p>
<fieldset>The element xy has order 2</fieldset>
<p>&nbsp;</p>
这个...我的想法是这样,一个element的order,就是它generate的cyclic group的order,所以,我认为,<br>"The element xy has order 6."<br>要是按照Artin的想法,order=2的那个element因该是y.为什么呢?因为y<sup>2</sup>=1.<br><br>于是,按我的想法,书中是不是应该这样写呢?<br>
<fieldset>The element y has order 2, and so it generates a cyclic subgroup H={1,y} of order 2.The left cosets of H in G are the three sets<br>(6.7) {x,xy}=xH, {1,y}=yH, {x<sup>2</sup>,x<sup>2</sup>y}=x<sup>2</sup>H</fieldset>这样的话,才能够得出:<br>|G|=|H|[G:H]=2&#215;3=6<br><br>再者,如果一定要拿xy举例,那就应该这样说:<br>
<fieldset>
<p>The element xy has order 6, and so it generates a cyclic subgroup H={1,xy,x<sup>2</sup>y<sup>2</sup>,x<sup>3</sup>y<sup>3</sup>,x<sup>4</sup>y<sup>4</sup>,x<sup>5</sup>y<sup>5</sup>} of order 6.</p>
Note that we can rewrite&nbsp;it as H={1,xy,x<sup>2</sup>,y,x,x<sup>2</sup>y} because&nbsp;x<sup>3</sup>=1 and y<sup>2</sup>=1.<br>The left cosets of H in G is exactly the G itself.<br>1H=={1,xy,x<sup>2</sup>,y,x,x<sup>2</sup>y}</fieldset>这样的话,得出的结果是这个:<br>|G|=|H|[G:H]=6&#215;1=6<br><br>我也不知道自己这样说对不对.<br>但是Artin应该是有错误的吧.至少,Partition要求是non-empty,non-overlapped,同时还能通过union得出G.他的最后一点没有满足.<br><br>还望高人指点.谢谢. 
<img src ="http://www.cppblog.com/dingounan/aggbug/48997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-05-06 14:00 <a href="http://www.cppblog.com/dingounan/archive/2008/05/06/48997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自学者言</title><link>http://www.cppblog.com/dingounan/archive/2008/04/24/48075.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Thu, 24 Apr 2008 13:24:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/04/24/48075.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/48075.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/04/24/48075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/48075.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/48075.html</trackback:ping><description><![CDATA["在这里,我们希望读者拥有较高的线性代数技巧"<br>---来自一本微积分书籍.<br><br>"下面的论述,将假定读者已经掌握微积分的相关技术"<br>---来自一本线性代数书籍.<br><br>我不知道是不是自己的学习方法不对,但是像这样的交叉引用,真的是能够难死一个自学者.我只能硬着头皮读下去.<br><br><strong>1.Calculus &amp; Analysis</strong><br>"从前,有一个人练习箭术,在墙上绘制箭靶,向其射击. 天明,邻居见到墙上的痕迹:箭箭穿靶心,即问此人射术要领.<br>此人回答:先射箭,后绘靶."<br><br>无穷边数逼近的正多边形是不是一个圆?可能会永远徘徊于无穷小和0这样的概念之间吧.<br>于是,直接定义:圆,就是正多边形的无穷逼近.<br><br>什么是&#8730;3? &#8730;3就是这样的一个无穷数列:{1,1.7,1.73,1.732,...}<br><br>存在性在Calculus占了很大的空间.这是因为初等数学中的相等的概念已经被存在性替换了.<br>初等数学中的'a=3'这样的表达式,用存在性来描述:对于给出的任意(小)的&#949;,一定存在一个n,使得|a<sub>n</sub>-3|&lt;&#949;.<br>'3'这样的物件,在这里,也是一个无穷数列逼近的结果.<br><br><strong>2.Algebra</strong><br>"神:我可以满足你一个愿望.<br>我:我的愿望是:你可以满足我无数个愿望."<br><br>group中原本只有identity,但具有Closure的组合方式,使得更复杂的element出现在这样的group中.<br><br><br>这些,就是我所理解的世界. 
<img src ="http://www.cppblog.com/dingounan/aggbug/48075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-04-24 21:24 <a href="http://www.cppblog.com/dingounan/archive/2008/04/24/48075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Algebra笔记(3):Terms</title><link>http://www.cppblog.com/dingounan/archive/2008/04/20/47669.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Sun, 20 Apr 2008 08:08:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/04/20/47669.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/47669.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/04/20/47669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/47669.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/47669.html</trackback:ping><description><![CDATA[不仅是Algebra要用.<br><br><strong>1.Range,Image,Codomain</strong><br>Domain很好理解,即为定义域.而Range,Image,Codomain的意思很容易混淆.<br>Range,Image是等价的,都为值域.Codomain一般可以理解为Range/Image的superset.<br>比如说,R是e<sup>x</sup>的Domain,R<sup>+</sup>是其Image/Range,R可以作为它的Codomain<br><br><strong>2.Surjective,Injective,Bijective<br></strong>Surjective保证的是:对于所有的Codomain中的y,总有至少一个Domain中的x,使得f(x)=y.<br>如果Range/Image=Codomain,那么Surjective也称为onto<br><br>Injective保证映射不同的x到不同的y上.<br><br>Bijective则承继了Surjective,Injective两者的特性:对于任何一个Codomain中的y,有且只有一个Domain中的x,使得f(x)=y,这个也称为one-to-one
<img src ="http://www.cppblog.com/dingounan/aggbug/47669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-04-20 16:08 <a href="http://www.cppblog.com/dingounan/archive/2008/04/20/47669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Algebra笔记(2):cyclic subgroup 之 复分析方法</title><link>http://www.cppblog.com/dingounan/archive/2008/04/17/47440.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Thu, 17 Apr 2008 13:36:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/04/17/47440.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/47440.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/04/17/47440.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/47440.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/47440.html</trackback:ping><description><![CDATA[这里不想重复书上的内容.只说说我自己的理解.连带复习一下以前学习的复分析的内容.<br>再一次,充满崇敬的,严重推荐Tristan Needham 的Visual Complex Analysis.<br><br>在这里没有用LaTeX,所以矩阵的格式使用MATLAB的记法.<br><br>1. 'cyclic'<br>这个词不是没有根据的.它确实是真真正正cyclic的.<br>在复平面上,z<sup>n</sup>=1的解就是单位圆的n等分点.<br><br>2. order<br>怎样求出order呢?就比如说书上举的例子:[1 1;-1 0].一遍一遍算肯定特别慢,这还仅仅是一个6阶的.<br>想到eigenvalue.这样就能进入复平面,在复的单位圆上求出order.<br>解出&#955;=(1&#177;i&#8730;3)/2,注意到这个正好是cos(pi/3)+i sin(pi/3),幅角为pi/3,单位圆上的等分点为6.<br><br>3. infinite order<br>如果eigenvalue不为complex,那么这个矩阵的效果其实就是一次缩放,显然不会cyclic的回旋.<br>还是书上的例子:[1 1;0 1], &#955;=0,2<br><br>4.quaternion group不是cyclic!!!!!<br>被计算机图形学用的泛滥的quaternion竟然不是cyclic!<br>其实多注意一下,quaternion用于Rotate的时候,其实是用的这样的形式: v<sup>'</sup>=qvq<sup>-1<br></sup>Geometry Tools的那个网站上曾经以纯粹Matrix的方式模拟了quaternion,讨论了quaternion的一种可能的起源.<br>看过那个之后,就会发现单独的使用quaternion与v相乘并不是一个简简单单的旋转,它还修改了另一个方向的分量.所以并不是cyclic.<br><br>但是...quaternion的那种很有Homomorphisms风格的变换是不是为了将其转成了一个cyclic subgroup呢?? 
<img src ="http://www.cppblog.com/dingounan/aggbug/47440.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-04-17 21:36 <a href="http://www.cppblog.com/dingounan/archive/2008/04/17/47440.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Algebra笔记(1):the integers with addition</title><link>http://www.cppblog.com/dingounan/archive/2008/04/17/47432.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Thu, 17 Apr 2008 13:03:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/04/17/47432.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/47432.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/04/17/47432.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/47432.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/47432.html</trackback:ping><description><![CDATA[Endorphin说看不懂.看来还是没有表达清楚.争取在这些笔记里做得更好.<br><br>对于group和subgroup的判定,是差不多的,对比一下:<br><span style="COLOR: #0000ff">Group:</span><br>A group is a set G together with&nbsp;a law of composition which is associative and has an identity element, and such that every element of G has an inverse.<br>要点:(1)associative (2)identity element (3)every element of G has an inverse,这个是Cancellation Law的基石<br><span style="COLOR: #0000ff">Subgroup: <br></span>A subset H of a group G is called subgroup if it has the following properties:<br>(a) Closure: If a &#8712; H and b &#8712; H, then ab &#8712; H.<br>(b) Identity: 1 &#8712; H.<br>(c) Inverse: If a &#8712; H, then a<sup>-1 </sup>&#8712; H.<br><br>首先定义:<br>bZ={n &#8712; Z | n= bk for some k &#8712; Z}<br><br>最关键的Proposition:<br>
<fieldset>For any integer b, the subset bZ is a subgroup of Z<sup>+</sup>. Moreover, every subgroup H of Z<sup>+</sup> is of the type H=bZ for some integer b.</fieldset>分两步证明:(1)bZ&nbsp;为 H子集(2)H&nbsp;为 bZ子集&nbsp; <br>最后得出H=bZ,也就是所有Z<sup>+</sup>的subgroup都具有bZ的形式,同时具有bZ形式的group都是Z<sup>+</sup>的subgroup.可以假设b是H中的最小正整数.<br>要点:<br>针对(1):可以利用H作为一个subgroup的性质.在证明了0,-b,b都在H内之后,利用subgroup的Closure,递推bk=b+b+b...<br>针对(2):即证明对所有n &#8712;H,都具有bZ的形式.使用带余除法:n=bq+r , 其中0&#8804;r&lt;b .由(1),知道bq&#8712;H. 综上:n,bq&#8712;H,并有Closure和Inverse性质的保证,得出r=n-bq&#8712;H.由对于b的假设,以及0&#8804;r&lt;b,所以r=0<br><br>随后:<br>aZ+bZ={n &#8712; Z | n=ar+bs for some integers r,s}<br>这个利用Closure立即得证<br><br>现在,既然aZ+bZ是Z<sup>+</sup>的一个subgroup,那么它就会具有dZ的形式.(时刻记住H=bZ)<br><br>最后,即可得出<br>Let a, b be integers, not both zero, and let d be the positive integer which generates the subgroup aZ+bZ. Then<br>(a) d can be written in the form d=zr+bs for some integers r and s.<br>(b) d divides a and b.<br>(c) If an interger e divides a and b, it also divides d. 
<img src ="http://www.cppblog.com/dingounan/aggbug/47432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-04-17 21:03 <a href="http://www.cppblog.com/dingounan/archive/2008/04/17/47432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Algebra笔记(0)</title><link>http://www.cppblog.com/dingounan/archive/2008/04/16/47320.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Wed, 16 Apr 2008 12:49:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/04/16/47320.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/47320.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/04/16/47320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/47320.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/47320.html</trackback:ping><description><![CDATA[从今天起详细对这本书做笔记.<br>按照以前的习惯,都是完全读过一本书才写一些备忘,为的是这样能够融会贯通,高屋建瓴.<br>但是今天看起来...情况不太好,读Algebra读到恶心,头晕目眩.所以要每天都记下一点思路.<br><br>用的是Michael Artin的Algebra<br><br>首先,就是基本的线性代数.没有什么特别.但是,当讲到Determinants的时候,提到了det(A)是一种映射:<br>det : R<sup>n&#215;m</sup> &#8594; R<br>(这个是每一本书上都应该讲的.)<br>接着,说到:det这种映射在矩阵的行元素上呈线性性.(The function det(A) is linear in the rows of the matrix)<br>再接着,就是那条众所周知的Determinants的性质:<br>
<fieldset><legend>Theorem</legend>Let A,B be any tow n &#215; n matrices.Then<br>det(AB)=(det A)(det B)</fieldset>到这里,依然还是一般线性代数的东西.<br><br>然后的东西,就是Algebra所特有的了.ISOMORPHISMS<br>Isomorphisms这种东西啊,查了字典也没用.叫做'同构'.举几个例子来说明.<br>早期的航海,需要进行很多的乘法运算(比如说乘以正弦),大量运算很费时.于是人们开始想,要是能使用加法就好了,这样就能快很多.于是,对数表应时而生.这里的原因,就是在R<sup>&#215;</sup>上存在一个到R<sup>+</sup>的Isomorphisms,而其中的log函数,则充当了bijective map的角色.<br><br>我一直困惑Determinants,似乎这种东西产生于虚幻之间.现在,我的想法是,Determinants仅仅是一个映射,但是它为了满足对于行元素的线性性;为了满足det(AB)=(det A)(det B)这样的Isomorphisms性质,所以才有了今天这样的形式.<br>与此类似的,还有Quaternion<br><br>另外的,关于那个公约数定理很有的可说.Tom M.Apostol的Mathematical Analysis使用归纳法.这里使用子群理论(subgroup).两种风格.另外,归纳法的证明方法很有点genreralized induction的形式. <br>-----------------------------------------<br>EDIT:<br>更改一下啊,det这个函数是HOMOMORPHISMS.上面说错了.因为不满足bijective 
<img src ="http://www.cppblog.com/dingounan/aggbug/47320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-04-16 20:49 <a href="http://www.cppblog.com/dingounan/archive/2008/04/16/47320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Calculus,我的理解</title><link>http://www.cppblog.com/dingounan/archive/2008/04/05/46305.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Sat, 05 Apr 2008 06:41:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2008/04/05/46305.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/46305.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2008/04/05/46305.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/46305.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/46305.html</trackback:ping><description><![CDATA[<p>从二月以来,我能够全心阅读我的数学书籍.看得过快过多,就会严重地影响效果.从书本知识到实际应用再到经济产出,是一个需要时间与失败的过程.<br>在这里为自己写下最近一点点思维的框架.<br><br>Calculus(不是Analysis)的教学过程似乎和人类对于Calculus的认知历程有着一个很不同的顺序.我所读到的有齐民友先生写到的<a href="http://www.douban.com/subject/1239791/" target=_blank>重温微积分</a>对历史上的种种认知做了很多的总结.而Tom M.Apostol的两卷Calculus与Linear Algebra的结合,则体现了人类对于Calculus的一种很自然的思维过程.<br><br>很久很久以前,Calculus从"求不规则曲线面积"这样的integral类型的议题引出,随之相应的解决方案如"exhaustion"诞生.但是此时的exhaustion并没有引进Infinitesimal.(对exhaustion的详细内容我没有特别认真想,家里还有一本Archimedes全集没有看.但是我没有特别的感受到它和现在的用矩形逼近曲线求定积分的方法有什么区别,是不是我哪里没有注意到?)</p>
<p><br>就我的理解看来,一般Calculus教材的前几章里介绍的continuity,mean value theorem,rolle's theorem等,都是为了解决后面integral的可行性问题来提出的.我的理解是这样:<br>首先,会有这样一个最直观的想法:"使用矩形面积来逼近那个曲线".一般来讲,大多数人都会一厢情愿的认为"随着矩形数量的增多,其面积和就越接近于曲线,最终,就能以无穷小底边的矩形的面积和,来得出那个曲线的面积."<br>这里面的问题在于,当我用矩形逼近曲线的时候,会有很多"边角残料",我何以就能认为"随着矩形数量的增多",那些边角残料就能够消失呢?或者,用很series的话来说,remainder是-&gt;0.<br><br>这样,为了验证remainder是-&gt;0,这才会引出Mean Value Theorem登场(对大多数Calculus教材,应该是在验证Taylor Series是convergent的时候用到的),而Mean Value Theorem就可以看作Rolle's Theorem的一种泛化情况.<br><br>其实呢,在我看来,Mean Value Theorem本身并不和"Taylor Series有convertence特性"这个议题有非常直接的因果关系,Mean Value Theorem只是使这个证明过程便利化.说的具体一点,就是在证明Taylor Series存在的时候,要使用一个特殊的sample point(sample point就是在计算矩形高度的时候用到的x坐标,一般都会是矩形的左右肩坐标,但是这里所选择的sample point不是那么显而易见的了),目的是使这个sample point携带上一种很自然的归纳特性,使得我们可以用归纳法去验证n-order的Taylor Series项都满足一个Taylor Inequalities.于是,利用这个Taylor Inequalities,再配合上Squeeze Rule,就可以轻松验证Taylor Series存在(remainder-&gt;0,再或者,说它convergent)<br><br>再深入一点,就会发现在证明Mean Value Theorem(或者是Rolle's Theorem)的时候,是依赖于continuity特性的(对于continuity这种特性,我感到自己理解的最差了,就不瞎说了)<br><br>到这里,应该就把One-Variable Calculus的一些内容带了一下吧,现在我只能理解到这里.<br>顺便说一下,我总说"大部分Calculus教材",其实我就认真看过一本,就James Stewart的Calculus 5th那套上下卷的.我的好多话说得都是很片面.<br>说实话,我感觉,James Stewart的Calculus 5th下卷虽然是高级Calculus的内容,但是对于认知上的冲击就比上卷小多了,读起来也比较顺利了.尤其到了后面,Vector Calculus,就很符合直观的思路.Line Integral的思想简直就是呼之欲出.<br>下卷的首章,Series,到了证明Taylor Series存在的时候,我感觉书上的论述不太适合我理解,如果您也有同感的话,在作者的网站上,additional topic中还附有从Lagrange Remainder的角度来论述存在性的,可以免费下载,我感觉那个比书上的好.此外,那里还有一个Fourier Series的入门读物,也是很浅显易懂,很掰开揉碎的.</p>
<img src ="http://www.cppblog.com/dingounan/aggbug/46305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2008-04-05 14:41 <a href="http://www.cppblog.com/dingounan/archive/2008/04/05/46305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++之 犄角旮旯(1)</title><link>http://www.cppblog.com/dingounan/archive/2007/08/20/30462.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Mon, 20 Aug 2007 15:00:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/08/20/30462.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/30462.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/08/20/30462.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/30462.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/30462.html</trackback:ping><description><![CDATA[1.P632. "Only the <span style="color: red;">declaration</span> needs the <span style="font-weight: bold;">virtual</span> keyword,not the definition."<br>2.P660. "...if you override one of the overloaded member functions in the base class,the other overloaded versions become hidden in the derived class."<br>3.P668. "While pure <span style="font-weight: bold;">virtual</span> destructors are <span style="color: red;">legal</span> in Standard C++,there is an added constraint when using them:you must provide a <span style="color: red;">function body</span> for the pure <span style="font-weight: bold;">virtual</span> destructor."<br>4.P664 &amp; P670: (1):"If you call a <span style="font-weight: bold;">virtual</span> function inside a constructor,only the <span style="color: red;">local</span> version of the function is used." (2):"Inside a destructor,only the "<span style="color: red;">local</span>" version of the member function is called."<br><img src ="http://www.cppblog.com/dingounan/aggbug/30462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-08-20 23:00 <a href="http://www.cppblog.com/dingounan/archive/2007/08/20/30462.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++之 犄角旮旯(0)</title><link>http://www.cppblog.com/dingounan/archive/2007/08/18/30299.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Sat, 18 Aug 2007 03:37:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/08/18/30299.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/30299.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/08/18/30299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/30299.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/30299.html</trackback:ping><description><![CDATA[这些天重读Thinking in C++(第二版,第一卷,影印),对于一些细节做了笔记.<br><br>1.P92. "...the <span><strong>using</strong></span> directive expose only those names for the <span style="COLOR: #ff0000">current</span> file...".<br>2.P114. "void func();" in C++:<span style="COLOR: #ff0000">no</span> argument; in C:<span style="COLOR: #ff0000">indeterminate</span> number of arguments.这样的声明/定义阻止了语言对于静态型别安全的保证.<br>3.P52. "Global variables and function names have <span style="COLOR: #ff0000">external</span> linkage"(<span style="COLOR: #ff0000">除了</span><span style="COLOR: #ff0000">const</span>).<br>4.P165. "The comma operator "it produces only the value of the last expression"逗号运算符只返回最后一个表达式的值.<br>5.P173. <strong>sizeof</strong>是一个运算符,而非函式,因此当以型别作为引数时,要加括号,而以变量作为引数时则不必.<br>6.P175. ① int* a,b;//a是int指针,b是int变量②typedef int* IntPtr;IntPtr a,b;//a,b都是int*<br>7.P288. "...setjump() and longjump() <span style="COLOR: #ff0000">dosen't</span> cause destructors to be called."<br>8.P323. "Default arguments are only placed in the <span style="COLOR: #ff0000">declaration </span>of a function(typically placed in a header file)..."<br>9.P335. "A <strong>const</strong> <span style="COLOR: #ff0000">in C++</span> defaults to<span style="COLOR: #ff0000"> internal linkage</span>."<br>10.P347. "Only the<span style="COLOR: #ff0000"> non-const</span> return value can be used as an lvalue."<br>11.P347. "...all temporaries automatically <strong>const</strong>."<br>12.P360. Class中的const成员函式,必须在声明以及定义中写明其为<strong>const</strong>.其中的原因在于,仅仅通过声明中的<strong>const</strong>不能断定其实现真的没有改变类的成员.所以还要在定义中写明<strong>const</strong>,以进一步检查.<br>13.P363. "...use the <strong>mutable</strong> keyword in the class declaration..."<br>14.P409. 不要在destructor中调用Standard C Library的exit(),否则将引起无限递归.(大多数系统在main()返回时自动调用exit(),而此时正是destructor调用时刻).Standard C Library的abort()将不会调用destructor而退出.<br>15.P425. 对于一个类中的static成员,要在类外定义,此为赘言.但是,"the entire initialization expression for a <strong>static</strong> member is <span style="COLOR: #ff0000">in the scope of the class</span>."<br>
<fieldset><legend>例子</legend>int x=100;<br>class WithStatic {<br>&nbsp;&nbsp;&nbsp;static int x;<br>&nbsp;&nbsp;&nbsp;static int y;<br>};<br>int WithStatic::x=1;<br>int WithStatic::y=x+1;//this 'x' is WithStatic::x,&nbsp;&nbsp;&nbsp;y=2</fieldset>
<img src ="http://www.cppblog.com/dingounan/aggbug/30299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-08-18 11:37 <a href="http://www.cppblog.com/dingounan/archive/2007/08/18/30299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>差分方程笔记(1)(End)</title><link>http://www.cppblog.com/dingounan/archive/2007/08/09/29674.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Thu, 09 Aug 2007 15:47:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/08/09/29674.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/29674.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/08/09/29674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/29674.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/29674.html</trackback:ping><description><![CDATA[继续上次的笔记,推广到更一般的情形.<br><a href="http://uploader.polorix.net//files/258/documents/DifferenceEquation_note1.pdf" target=_blank>差分方程笔记(1)</a>
<img src ="http://www.cppblog.com/dingounan/aggbug/29674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-08-09 23:47 <a href="http://www.cppblog.com/dingounan/archive/2007/08/09/29674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线性方程迭代算法,及使用Microsoft Excel计算</title><link>http://www.cppblog.com/dingounan/archive/2007/08/09/29638.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Thu, 09 Aug 2007 05:49:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/08/09/29638.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/29638.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/08/09/29638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/29638.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/29638.html</trackback:ping><description><![CDATA[最近在看关于数学规划的书籍,比如说这本:<br><a href="http://www.china-pub.com/computers/common/info.asp?id=428039" target=_blank>运筹学：应用范例与解法(第4版)</a>&nbsp;<br>才发现Excel有那么多用法,我真是太土了......<br>在这里附上一个分别利用雅克比,和高斯-赛德尔求解的实例.<br>看的是这本书:<a href="http://www.china-pub.com/computers/common/info.asp?id=27304" target=_blank>数值分析</a><br>方程是:<br>
<fieldset>
<p>7x<sub>1</sub>-6x<sub>2</sub>=3</p>
-8x<sub>1</sub>+9x<sub>2</sub>=-4</fieldset>附上利用Microsoft Excel 2003制作的<a href="http://uploader.polorix.net//files/258/documents/LinearSystemIterativeSolution.xls" target=_blank>计算方程与数据</a>.
<img src ="http://www.cppblog.com/dingounan/aggbug/29638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-08-09 13:49 <a href="http://www.cppblog.com/dingounan/archive/2007/08/09/29638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>差分方程笔记(0)</title><link>http://www.cppblog.com/dingounan/archive/2007/08/08/29590.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Wed, 08 Aug 2007 10:52:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/08/08/29590.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/29590.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/08/08/29590.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/29590.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/29590.html</trackback:ping><description><![CDATA[介绍了一下差分方程,是一个简单的例子,更一般的结论将在以后的笔记中给出.<br><a href="http://uploader.polorix.net//files/258/documents/DifferenceEquation_note0.pdf" target=_blank>差分方程笔记(0)</a><br>
<img src ="http://www.cppblog.com/dingounan/aggbug/29590.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-08-08 18:52 <a href="http://www.cppblog.com/dingounan/archive/2007/08/08/29590.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Lagrange Interpolation Formula 笔记</title><link>http://www.cppblog.com/dingounan/archive/2007/07/24/28677.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Tue, 24 Jul 2007 01:54:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/07/24/28677.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/28677.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/07/24/28677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/28677.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/28677.html</trackback:ping><description><![CDATA[在Blog上写关于数学的东西太麻烦了,那些符号挺难弄的,就算是有WordPress那样的内置LaTex也未必解决多少问题.我就在本地写了文章,上载到这里.(第二次用LaTex写东西)<br><br><a href="http://uploader.polorix.net//files/258/documents/LagrangeInterpolationFormula_note.pdf" target=_blank>Lagrange Interpolation Formula笔记</a><br><br>这个笔记是我看了项武义先生的代数学讲义之后做的,感觉从韩信点兵法(中国剩余定理)引入Lagrange Interpolation Formula很是特别. 
<img src ="http://www.cppblog.com/dingounan/aggbug/28677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-07-24 09:54 <a href="http://www.cppblog.com/dingounan/archive/2007/07/24/28677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Minkowski Sum笔记</title><link>http://www.cppblog.com/dingounan/archive/2007/07/23/28636.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Mon, 23 Jul 2007 08:50:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/07/23/28636.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/28636.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/07/23/28636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/28636.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/28636.html</trackback:ping><description><![CDATA[1.凸体(convex polytope)<br>这个概念有很多种理解方法,首先,是以后证明"Minkowski Sum为凸体"时用到的方法(定义):<br>
<fieldset>给出一个多边形上面的点A={a<sub>1</sub>,a<sub>2</sub>,...,a<sub>n</sub>},x<sub>1</sub>&#8712;A且x<sub>2</sub>&#8712;A,定义点p=&#955;<sub>1</sub>x<sub>1</sub>+&#955;<sub>2</sub>x<sub>2</sub> (&#955;<sub>1</sub>+&#955;<sub>2</sub>=1,&#955;<sub>1</sub>,&#955;<sub>2</sub>&#8805;0),若对任意符合条件的x<sub>1</sub>,x<sub>2</sub>都有p&#8712;A,那么A就定义为凸体.</fieldset>另外的,还有计算几何上的理解方法:<br>
<fieldset>指定沿多边形的边逆时针遍历为正方向,那么,在遍历过程中经过任意一条边的时候,多边形的所有点都位于此边的左侧,那么这个多边形就被定义为凸体.</fieldset>"左侧"这个概念,可以由向量叉积的正负来判定:<br>设多边形A,点p&#8712;A,边向量e&#8712;A(暂且用这个记号,那个找不到),那么如果p&#215;e&#8805;0,则可以判定为左侧.这里面的实质其实就是,sin函数在区间[2k&#960;,2k&#960;+&#960;]是非负值.在以(1,0)为中心线,那么[2k&#960;,2k&#960;+&#960;]就在左侧.<br><br>2.Minkowski Sum<br>定义很简单:<br>
<fieldset><legend>定义</legend>A+B={x+y:x&#8712;A,y&#8712;B}</fieldset>最为重要的是证明,若A,B均为凸体,那么相应的Minkowski Sum亦为凸体.<br>
<fieldset><legend>Theorem</legend>Let A and B be convex objects.Then,A+B is also convex.</fieldset><br>证明:<br>取任意x<sub>1</sub>,x<sub>2</sub>&#8712;A,y<sub>1</sub>,y<sub>2</sub>&#8712;B,由Minkowski Sum定义w<sub>1</sub>=x<sub>1</sub>+y<sub>1</sub>,w<sub>2</sub>=x<sub>2</sub>+y<sub>2</sub><br>根据凸体的判定条件,定义w=&#955;<sub>1</sub>w<sub>1</sub>+&#955;<sub>2</sub>w<sub>2</sub>,那么即需证明:w&#8712;A+B.(&#955;<sub>1</sub>+&#955;<sub>2</sub>=1,&#955;<sub>1</sub>,&#955;<sub>2</sub>&#8805;0)<br>展开w的表达式:<br>w=&#955;<sub>1</sub>(x<sub>1</sub>+y<sub>1</sub>)+&#955;<sub>2</sub>(x<sub>2</sub>+y<sub>2</sub>)=(&#955;<sub>1</sub>x<sub>1</sub>+&#955;<sub>2</sub>x<sub>2</sub>)+(&#955;<sub>1</sub>y<sub>1</sub>+&#955;<sub>2</sub>y<sub>2</sub>)=x+y,这里根据凸体的判定条件,因为A,B俱为凸体,可知x&#8712;A,y&#8712;B.<br>于是:w=x+y&#8712;A+B<br><br>3.CSO<br>再定义negation:<br>
<fieldset><legend>定义</legend>-B={-y:y&#8712;B}</fieldset>可知这个东西也一定是凸体.因为,-y操作可以看成是将多边形以原点为中心的镜像.镜像又是一个刚体变换,因此可知-B亦为凸体.<br><br>定义CSO:<span style="COLOR: #ffef00">C</span>onfiguration <span style="COLOR: #ffef00">S</span>pace <span style="COLOR: #ffef00">O</span>bstacle<br>A+(-B)<br><br>于是由上面的定理可知CSO为凸体.CSO有一些关键的性质,比如:如果0&#8712;A,B的CSO,那么A,B相交.再比如,A,B之间的最短距离,就是A,B的CSO中最接近0的点的向量长度.<br>最重要的,它将被用于GJK算法中.<br>
<img src ="http://www.cppblog.com/dingounan/aggbug/28636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-07-23 16:50 <a href="http://www.cppblog.com/dingounan/archive/2007/07/23/28636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>组合数学笔记(3):加强型Pigeonhole Principle应用举例</title><link>http://www.cppblog.com/dingounan/archive/2007/07/16/28080.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Mon, 16 Jul 2007 01:56:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/07/16/28080.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/28080.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/07/16/28080.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/28080.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/28080.html</trackback:ping><description><![CDATA[<p>目前的情况是这样,大多数应用中,容器内的物体个数是相同的,利用上一次笔记中使用的记号来说,就是:<br>q<sub>1</sub>=q<sub>2</sub>=...=q<sub>n</sub><br>在这里统一设容器内的物体个数为r,于是此时Pigeonhole Principle退化为稍显特化的形式:</p>
<fieldset>把数量为n(r-1)+1的物体放入n个容器中,那么可以断言:<br>至少有一个容器内的物体数量不小于r.</fieldset> 另外,还有Pigeonhole Principle的平均值表达形式:<br>
<fieldset>若n个非负整数m<sub>1</sub>,m<sub>2</sub>,...,m<sub>n</sub>的平均值大于r-1,那么可以断言:<br>这n个非负整数之中至少有一个不小于r.</fieldset>
<fieldset><legend>证明</legend>这里利用此文开头得出的那个退化式,将式子n(r-1)+1除以n,得出<br>r-1+1/n<br>可知1/n&lt;1,又由于问题中的数目只涉及整数,所以利用缩放不等式,得出结论.</fieldset>同理,还有:<br>
<fieldset>若n个非负整数m<sub>1</sub>,m<sub>2</sub>,...,m<sub>n</sub>的平均值小于r+1,那么可以断言:<br>至少有一个容器内的物体数量小于r+1.</fieldset> <br><br><br>
<fieldset><legend>应用</legend>Show that every sequence a<sub>1</sub>,a<sub>2</sub>,...,a<sub>n<sup>2</sup>+1</sub> of n<sup>2</sup>+1 real numbers contains either an increasing subsequence of length n+1 or a devreasing subsequence of length n+1.</fieldset> 证明的思路是假定不存在这样长度为n+1的升序列,证明在这种情况下必存在长度为n+1的降序列.<br>设:b<sub>i</sub>为以a<sub>i</sub>开始的序列的最大升序列长度(i=1,2,...,n<sup>2</sup>+1). <br>因为我假定不存在长度为n+1的升序列,因此b<sub>i</sub>的取值在[1,n]上,(i=1,2,...,n).<br>因此,b<sub>i</sub>这n<sup>2</sup>+1个数只能取得n个值,根据加强型Pigeonhole Principle的思路,n<sup>2</sup>+1=n*n+1,可以假想这n<sup>2</sup>+1个数放入n个盒子中,初始状态下每个盒子都有n个数,然后再添入一个物体,于是得出:<br>必存在一个盒子中有n+1个数. 回到这个题,也即存在有n+1个子序列,它们的b<sub>i</sub>值相同.<br>b<sub>j1</sub>=b<sub>j2</sub>=...=b<sub>jn+1</sub>(不妨设j1&lt;j2&lt;...&lt;jn+1)<br>由此可知:<br>a<sub>j1</sub>&gt;a<sub>j2</sub>&gt;...&gt;a<sub>jn+1</sub>(否则a<sub>j1</sub>&lt;a<sub>j2</sub>,又将构成一个升序列,使得b<sub>1</sub>应当再加一,而b<sub>i</sub>已经是<strong>最长</strong>升序列的长度,矛盾! 对其它同理) <br>而a<sub>j1</sub>,a<sub>j2</sub>,...,a<sub>jn+1</sub>即是我想要的长度为n+1的降序列! 
<img src ="http://www.cppblog.com/dingounan/aggbug/28080.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-07-16 09:56 <a href="http://www.cppblog.com/dingounan/archive/2007/07/16/28080.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>组合数学笔记(2):加强型Pigeonhole Principle</title><link>http://www.cppblog.com/dingounan/archive/2007/07/15/28074.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Sun, 15 Jul 2007 14:58:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/07/15/28074.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/28074.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/07/15/28074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/28074.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/28074.html</trackback:ping><description><![CDATA[虽然是加强型,Pigeonhole Principle依然还是很简单.虽然,细密掌握它,却是利器.(就像<a href="http://mitpress.mit.edu/sicp/full-text/book/book.html" target=_blank>SICP</a>一样)<br>在这里记录我的思维过程.<br>先是一些很简单的事实.<br>
<fieldset>给出n个容器,每一个容器中都装有r件物体,现在引进一件物体,将其放入这n个容器中任意的一个.<br>那么可以断言:当前在这n个容器中必有一个放有r+1件物体.</fieldset> 另外有更一般的论断:<br>
<fieldset>给出n个容器:C<sub>1</sub>,C<sub>2</sub>,...,C<sub>n</sub>,每一个容器中都装有q<sub>1</sub>,q<sub>2</sub>,...,q<sub>n</sub>件物体,现在引进一件物体,将其放入这n个容器中任意的一个.<br>那么可以断言:当前C<sub>1</sub>中装有q<sub>1</sub>+1件物体,或者C<sub>2</sub>中装有q<sub>2</sub>+1件物体,...,或者C<sub>n</sub>中装有q<sub>n</sub>+1件物体.</fieldset> 现在,给出加强型的Pigeonhole Principle:<br>
<fieldset>给出n个正整数q<sub>1</sub>,q<sub>2</sub>,...,q<sub>n</sub>,如果<br>q<sub>1</sub>+q<sub>2</sub>+...+q<sub>n</sub>-n+1<br>件物体放入n个容器,那么可以断言:<br>第一个容器之中至少有q<sub>1</sub>件物体,或者第二个容器之中至少有q<sub>2</sub>件物体,...,或者第n个容器之中至少有q<sub>n</sub>件物体.</fieldset>
<fieldset><legend>证明</legend>现在假设每一个容器内都已经有q<sub>i</sub>-1件物体(i=1,2,...,n),然后引入一件物体放入这些容器中的任意一个,那么根据上面那些列出的简单事实,可以得出结论.<br>那个表达物体个数的式子是由此得出的:<br>=(q<sub>1</sub>-1)+(q<sub>2</sub>-1)+...+(q<sub>n</sub>-1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //每个盒子中目前只有q<sub>i</sub>-1件物体(i=1,2,...,n)<br>+1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //引入的那个新物体<br>=q<sub>1</sub>+q<sub>2</sub>+...+q<sub>n</sub>-n+1</fieldset> 
<img src ="http://www.cppblog.com/dingounan/aggbug/28074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-07-15 22:58 <a href="http://www.cppblog.com/dingounan/archive/2007/07/15/28074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>组合数学笔记(1): Pigeonhole Principle简单形式应用</title><link>http://www.cppblog.com/dingounan/archive/2007/07/01/27316.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Sun, 01 Jul 2007 04:04:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/07/01/27316.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/27316.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/07/01/27316.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/27316.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/27316.html</trackback:ping><description><![CDATA[1.&nbsp;&nbsp;&nbsp;13个人中至少有两个人的生日在同一月份.<br><br>2.&nbsp;&nbsp;&nbsp;问题:有n对夫妇,在这2n个人中要选取多少个人,才能保证所选取的人中至少有一对夫妇?<br>
<div style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid">A:视n对夫妇为pigeonhole,从每一对夫妇中选取一人,共n个,然后从剩下的人中再任意选一人,则此人必与先前所选的n人构成夫妻. 所以,要n+1人才能保证.</div>
<br>3.&nbsp;&nbsp;&nbsp;有m个整数:a<sub>1</sub>,a<sub>2</sub>,...,a<sub>m</sub>,则存在:<sub>ak+1</sub>+<sub>ak+2</sub>+...+a<sub>l</sub>能被m整除.(0&lt;=k&lt;l&lt;=m).&nbsp; 或者更简单地说:存在一个部分序列和,它能被m整除.<br>
<div style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid">A:观察如下序列:a<sub>1</sub>,a<sub>1</sub>+a<sub>2</sub>,a<sub>1</sub>+a<sub>2</sub>+a<sub>3</sub>,...,a<sub>1</sub>+a<sub>2</sub>+a<sub>3</sub>+...+a<sub>m</sub>,如果其中有任何一个元素被m除后余数为0,则命题成立.否则:这个序列被m除后的余数只能是1,2,...,m-1,共有m-1个,而那个序列有m个元素,所以可以有Pigeonhole Principle断定必然至少有两个元素关于m同余,设这两个元素为S<sub>k</sub>&nbsp; S<sub>l</sub>,它们的差S<sub>l</sub>-S<sub>k</sub>=a<sub>k+1</sub>+...+a<sub>l</sub>被m除后余数为0,即为所求.</div>
<br>4.&nbsp;&nbsp;&nbsp;象棋大师有一个持续11周的比赛,他打算每一天至少赛一盘,但为了不至于疲劳,限定每一周他只能最多赛12盘,证明:比存在连续的几天他恰比赛了21盘.<br>
<div style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid">与上一个问题有相似的地方,也是要找一个满足条件的部分序列.于是采取类似的方法.<br>A:构造序列:A<sub>1</sub>,A<sub>2</sub>,...A<sub>77</sub>,分别表示前n天比赛的盘数,因为每天至少赛一盘,所以A<sub>n</sub>严格递增,又因每周最多赛12盘,所以A<sub>77</sub>&lt;=12*11=132.<br>1&lt;=A<sub>1</sub>&lt;A<sub>2</sub>&lt;...&lt;A<sub>77</sub>&lt;=132<br>同时,也有如下序列:<br>22&lt;=A<sub>1</sub>+21&lt;A<sub>2</sub>+21&lt;...&lt;A<sub>77</sub>+21&lt;=153<br>这样就构造出154个数:<br>A<sub>1</sub>,A<sub>2</sub>,...,A<sub>77</sub>,A<sub>1</sub>+21,A<sub>2</sub>+21,...,A<sub>77</sub>+21<br>范围是[1,153],所以断定:比存在两个数相等.但是由于A<sub>n</sub>这个子序列严格递增,A<sub>n</sub>+21这个子序列也严格递增,所以那两个相等的数目必然是分在两个子序列中.比如说A<sub>i</sub>=A<sub>j</sub>+21,与上个问题类似的思路可以知道,A<sub>i</sub>-A<sub>j</sub>即为符合要求的连续的那几天的比赛盘数.<br></div>
<br>5.&nbsp;&nbsp;&nbsp;从1到200这200个数中选取其中的101个,证明:必有两个存在倍数关系.<br>
<div style="BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; BORDER-LEFT: #666666 1px solid; BORDER-BOTTOM: #666666 1px solid">A:以2<sup>k</sup>作为分组条件,则每一个pigeonhole中放置a*2<sup>k</sup>,其中a就为奇数,而[1,200]中的奇数有100个,所以如果取出的101个数,则可以断言:必有两个数,设为a<sub>1</sub>*2<sup>k<sub>1</sub></sup>与a<sub>2</sub>*2<sup>k<sub>2</sub></sup>,满足a<sub>1</sub>=a<sub>2</sub>,于是这两个数存在倍数关系(倍数是2<sup>k<sub>2</sub>-k<sub>1</sub></sup>,若k<sub>2</sub>&gt;k<sub>1</sub>)</div>
<img src ="http://www.cppblog.com/dingounan/aggbug/27316.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-07-01 12:04 <a href="http://www.cppblog.com/dingounan/archive/2007/07/01/27316.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>组合数学笔记(0)</title><link>http://www.cppblog.com/dingounan/archive/2007/06/19/26649.html</link><dc:creator>丁欧南</dc:creator><author>丁欧南</author><pubDate>Tue, 19 Jun 2007 12:38:00 GMT</pubDate><guid>http://www.cppblog.com/dingounan/archive/2007/06/19/26649.html</guid><wfw:comment>http://www.cppblog.com/dingounan/comments/26649.html</wfw:comment><comments>http://www.cppblog.com/dingounan/archive/2007/06/19/26649.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dingounan/comments/commentRss/26649.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dingounan/services/trackbacks/26649.html</trackback:ping><description><![CDATA[我用的是这本书:Introductory Combinatorics,Fourth Edition (ISBN 0-13-100119-1)<br>Exercises 3<br>Imagine a prison consisting of 64 cells arranged like the squares of an 8-by-8 chessboard. There are doors between all adjoining cells. A prisoner in one of the corner cells is told that he will be released, provided he can get into the diagonally opposite corner cell after passing through every other cell exactly once. Can the prisoner obtain his freedom?<br><br>注意到从一个角到另一个对角,一定需要在竖直方向上平移7步,一定要在水平方向上平移7步,总共14步.<br>同时又因为要"passing through every other cell exactly once",所以囚犯必须经过64个牢室,可知总共要经过64-1=63个门.<br><br>设向上或向下走a步,向下或向左走b步,于是:<br>a+b=63<br>a-b=14<br><br>解出的结果并非整数,所以推出矛盾.结论:囚犯不能自由.<br><br><img src ="http://www.cppblog.com/dingounan/aggbug/26649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dingounan/" target="_blank">丁欧南</a> 2007-06-19 20:38 <a href="http://www.cppblog.com/dingounan/archive/2007/06/19/26649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>