读《数学:确定性的丧失》的心得
今早刚刚在公车上读完这本书,现在把最原始的理解书写下来:
1、 我们周围的客观世界是极其复杂的,它复杂到只能服从统计规律。因此我们所发现的使 用数学方法表达的物理规律都是对它的一种简化所得到的,是对这种统计 规律的一种平均的反应,而且还需要实验的检测。那么为什么这种复杂的客观世界的某种简化会符合数学定律呢?我认为拉姆塞定理(参见费玛大定理一书)可以解 释这一切,就是当事物具有足够的复杂度时,它可以表现出任意的规律,而我们看到的就是这种规律,而对自然界的复杂度,我们只能敬仰,不能描述。
2、 数学本身是人类从实践经验总结出的,并根据自己思维的演化、推理、推演而不断丰富的。但是它的根基是不牢固的,也是无法牢固的,原因就在于自然界的复 杂我们无法描述而只能简化,就是说我们对自然界的抽象肯定会丧失掉一些东西而不能完全反应自然界。数学的基础来自于我们对自然的简化。当然数学界自身分为 逻辑主义、直觉主义、形式主义、公理化主义,但是他们都不能完全的建立数学牢固的基础。比如在集合论里不断发现的悖论,以及歌德尔定理都说明了这一点,即 我们对自然界的抽象是不完善的,因此所有的定理都不能在完备性和相容性上达到和谐一致。
3、数学的基础来自对自然界的简化可以用几何的发展作为例 证,从欧几里德几何的平行公理到非欧几何的平行公理,可以看作是人类对客观世界观察的进步,所造 成的对客观世界的简化更接近于客观世界的结果。当然从欧几里德几何到非欧几何的进步并不严格遵循这一过程,非欧几何的产生是后人持续不断的对欧式几何的平 行公理的怀疑的结果,之所以会产生这一怀疑,就在于最初的简化不是严格的反应了客观世界,就是说这种简化是在无法认识到客观世界的复杂性面目的基础上进 行的,因此无法使平行公理与其他公理和谐相处。
4、从人类在认识数学与客观世界的关系的整个历史上看,人类无疑是在进步,从客观世界无法认识都是 神在掌控--客观世界是上帝按照数学原理创造的人的任务 就是了解神的旨意--数学的基础是不牢固的为什么?--上帝是不掷谷子的--数学是对客观世界的简化客观世界服从统计规律
卡尔·萨根《魔鬼出没的世界》读后感
上个月读了卡尔·萨根的《魔鬼出没的世界》对于科学精神有了更好的认识:
1、现在的伪科学包括遭遇外星人、超能力等等都和欧洲中世纪的基督教邪说有很大的联系,有些甚至只是对于中世纪的说法进行场景变换的产物。作者通过研究这些历史问题,使读者能够对于伪科学有了透彻的认识,知道伪科学的来龙去脉对于识别新兴的伪科学是极有好处。
2、西方文明的兴起不是因为基督教的缘故,而恰恰是基督教使希腊的文明差点夭折。所以中国要学习西方的文明,绝对不能搬移所有的上层建筑,尤其是宗教。
3、 科学的精神包含两个方面:一个是要有开放的头脑,能够容纳各种学说,不因为这种学说是否与传统大相径庭,不因为对提出学说的学者的主观印象等因素而排斥。 第二是要有一个怀疑的头脑,在某个学说不能被证据所证明的时候就应该对其一直保持怀疑,不能因为主观因素比如提出学说的人的权威性而盲目相信。
4、交流思想甚或相互批判时切忌空对空,交流思想应该从最坚实的基础开始。
解决一般问题的思路
这个思路主要是在解决一般的文字性描述的问题时,应该遵循的实践法则:
1、读懂题目
2、为题目建立一个 模型,比如一个量化模型(以数字描述变量),或者是一个图形化的模型(以图形描述变量),甚至是量化和图形相结合的模型(以数字表示变量,以图形表示关系)。
在 很多时候,要想完全读懂题目必须和建立模型相结合,否则还是要处在云里雾里,不得其要旨。对于一般问题模型是对问题的一种提炼和更精确的表达,而对于复杂 的非线性问题模型是对问题的简化,我这里不针对后一种模型。注意对于一般的问题而言,如果不建立模型有时候也能找到解,但由于在思考中会有大量的非必要信 息,所以在思考比较复杂的问题时,肯定会比通过模型思考要慢得多,而且也更容易走偏。
3、对于模型中的变量或者图形,要搞清他们的关系, 也就是弄清他们的约束条件。因为这些题目的要素不可能全部相互发生关系,那将是一个具有指数复杂度的问题,基本是不可解的。所以在变量间肯定会有某种特定 的关系比较紧密,要找到他们,对于比较简单的问题,找到了这些约束关系也就解决了问题。
4、对这些关系进行变换、类比、分割,以最终解决 问题。如果是比较复杂的问题,在理清关系之后还不能够解决问题,就是说在已知条件和解之间还有障碍,因此我们需要对已知条件(约束关系)进行变换、类比、 分割(或重组),来得到一些能够得到解的充分必要条件。这一步可能是最难的。
5、解毕。
科学的革命
1、何为已知
科学的起点、基础是我们已知的东西,科学不是空中楼阁。如何去除我们已知的东西里虚假的东西?步步求证?从无疑处建立基础,类似欧氏几何的公理系统。
2、如何得知
实验、演绎推理、归纳推理(猜测)。孰重孰轻?伽利略的实验,波意尔的实验(气体的压强和体积是一常数),牛顿对于力学的演绎(牛顿光学做过一些实验例如 多棱镜分光实验,但他的实验在当时条件下不易复现),爱因斯坦对于相对论的演绎推理(爱因斯坦没做过什么实验,但是其他人有一些实验事实,洛仑兹实验,光 速不变实验)。
3、知者何用
重大的科学成果和技术成果哪个对人类的社会影响更大,推动更大?牛顿力学还是蒸汽机,麦克斯韦方程还是燃气机。科学革命,技术革命。
作者一再强调的重点,科学在可考察的近代史中没有发生革命
解题招数
解题最有效的几招:
常用:
特例:从各种条件的一个特例出发,看在这个特例条件下的答案。因为一般题目的答案在特例下肯定成立,所以如果没有矛盾则答案成立。例如解参加宴会的握手问题。
倒推(归约):从问题出发推出问题成立时的结论或场景,最后看结论或场景中是否有已知条件,如果有,则问题的解。例如两个杯子一个9L一个4L,要盛出6L水。
试错:最常用的一般方法,从已知条件出发推出结论或场景,再从结论推出结论,直至推出解答。最差的时候将遍历解题空间(所有条件、推论的组合),最佳的时候一次就可以到达答案。
不常用:
找到关键条件:找到所有条件中最关键的那个,此条件将把解题空间极大缩小,或者把问题重构为一个更简单的问题
求解类似题目:
换一种思路或解法:如果一个常见的解法的计算量很大看看有没有简单的方法,不过有时很难想到,因为思维定式的束缚。例子:100个人比赛,要决出冠军至少需要赛多少场。常见方法是列出一棵树来后一个个数非叶子结点。简单的方法是100人比赛要淘汰99人,一场比赛淘汰一人因此需要99场比赛
使用更简单的模型:比如宇宙飞船在太空中加速的问题,可以通过作用力和反作用力的模型解释也可以通过动量守恒的模式,但是毫无疑问动量守恒的模型更简单,更易理解。复杂的模型导致复杂的方法,我们知道复杂到一定程度将是不可计算的,因此要选择更简单的模型。
好书列表,虽不能尽读,心向往之
AIMA = Artificial Intelligence a Modern Approach by Stuart Russell and Peter Norvig
AMOP = The Art of the Meta Object Protocol by Gregor Kiczales
ATTAPL = Advanced Topics in Types and Programming Languages by Benjamin C. Pierce
AWDWR = Agile Web Development with Rails by by Dave Thomas and David Heinemeier Hansson
EOPL = Essentials of Programming Languages by Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes
CLRS = Introduction to Algorithms, 2nd Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Cliff Stein
CLtL = Common Lisp the Language by Guy L. Steele Jr.
CTM = Concepts, Techniques, and Models of Computer Programming by Peter Van Roy and Seif Haridi
GOF = Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides
HTDP = How To Design Programs by Matthias Felleisen, Robert Bruce Findler, Matthew Flatt and Shriram Krishnamurthi
K&R = The C Programming Language by Brian Kernighan and Dennis Ritchie
LiSP = Lisp In Small Pieces by Christian Queinnec
LL = Lessons Learned in Software Testing by Cem Kaner, James Bach and Bret Pettichord
PAIP = Paradigms of Artificial Intelligence Programming by Peter Norvig
PCL = Practical Common Lisp by Peter Seibel
PLP = Programming Language Pragmatics by Michael L. Scott
SICP = Structure and Interpretation of Computer Programs by Hal Abelson and Gerald J. Sussman, with Julie Sussman
TAOCP = The Art Of Computer Programming by Donald E. Knuth
TAPL = Types And Programming Languages by Benjamin C. Pierce
TCPL = The C++ Programming Language by Bjarne Stroustrup
TCS = Testing Computer Software by Cem Kaner, Jack Falk, and Hung Quoc Nguyen
TLS = The Little Schemer by Daniel P. Friedman and Matthias Felleisen
TSPL = The Scheme Programming Language by R. Kent Dybvig
TSS = The Seasoned Schemer by Daniel P. Friedman and Matthias Felleisen
TRS = The Reasoned Schemer by Daniel P. Friedman, William E. Byrd and Oleg Kiselyov
WELC = Working Effectively with Legacy Code by Michael Feathers