[节选]知其所以然(续)

[来自] http://mindhacks.cn/2010/11/14/the-importance-of-knowing-why-part2/

1,一个你不明白其证明的定理在我看来比不知道这个定理还要糟糕,因它给你造成一种懂了的错觉。

2,所以我还有一个习惯,就是看到美妙的证明和解法总是会去一遍又一遍的去反复揣摩,试图理解想出这个证明的人到底是怎么想出来的,有没有什么一般性的方法可循,很多时候,在这样揣摩的过程中,你会理解到更深刻的东西
举例:
证明素数无最大,谁都会第一时间想到去反证:假设存在一个最大的素数P,那么找到比P大的素数就是证明中最关键的一步,怎么找的?一般书上是不会说的,你会看到书上这样说:假设P是最大的素数,那么我们考虑P’ = 小于等于P的所有素数的乘积+1。那么P’一来显然大于P,二来不能被小于它的所有素数整除,那么P’就成了大于P的素数。
我们想要构造一个更大的素数,而 素数的等价定义就是“不能被小于它的所有素数整除“,为了达到这个目的,构造的方法就较明显了
引用
我们应该更多地思考别人是怎么想到这个方法的。


3,简单地说,如果你对于每个问题都能真正弄清以下这几个问题的答案,那么可以肯定的是,你的理解,记忆,以及学习的效率都会得到质的提高:

    * 为什么这种解法是对的?
    * 为什么那种解法是错的?
    * 为什么这种解法不是最优的?
    * 证明为什么没有更优的解法。

4,算法本质上可以看做是在一个解空间当中的搜索问题,所以要分析一个算法的好坏,首先弄清楚它的解空间的结构,然后分析它是怎么探索这个解空间的。
(1)努力让答案的任何一个分支都是等概率的

你可能感兴趣的:(算法)