首页 > 代码库 > 算法的迷惑

算法的迷惑

人应该算是智力高等的虫子了,有些问题还是一个办法:没办法。比如一个排序算法,当你确定了以后,针对不同数据集其时空占用肯定不一样,正如同针对同一数据集不同排序算法其时空占用不一样,是一个道理。不过,变的一个是数据集,一个是算法罢了,自然是容易明白的。

但是人就是不容易服气,偏想弄个唯一出来。其实初中时候老师就叫我们,发散思维,一题多解。这时候也就有些明白另辟溪径的原来,本就存了那些路通着罗马的,你不过充当了一回发现者而已。而作为发现者有着一个主要目的,选路,还是最短的或者说最合适的。这个过程,变的是路,不变的是择路的方法。还有一个,打工挣钱。路自然是迷茫的,但是工钱的要价在内心却还是有个标准的。然后就通过不断地跳,达到目的才静的下来。这也算一个排序过程,变的是工种,不变是要价。也许你会说,其实要价也存有变的。这里其实还是存有一个不变的,劳动的相对价值。你的技能时间精力总是相对有限的,所以你的市场估值自然也是相对有限的。这和你的期望之间有一个妥协过程。最终是市场选择你,而非你选择市场。

不变的就叫决定量。我们唯一要做的,不是试图去改变决定量,而是依着它来改变我们的办法,使之能更懒汉些就好。但是,在最合适和通用之间,有时就只能没办法了。比如,小高斯对1+2+3+...+100的办法,目前被人们认为是这个数列累加的最简办法了,但是,对于任何数列的累加他的办法却显然无法说是能够通用的。那么如何找到或者存不存在适应所有数列累加的简便办法呢?在试过更多可能后,最后可能得出的结论,却只能是一个一般的概率选择结果,而无法做非此即彼的简单结论。所以,对于确定的数据集,最有效率的办法是必然存在的,当然不一定是通用的。但有一点是明确的,不变量决定着解决问题的基本思路。所以我们也许应该变一变说法,叫做“技术适应世界”,而不是改变世界。

我们总是希望办法能够是最简的同时又是通用的,但这种想望显然是相矛盾的,对于这种没办法,人也有些办法,比如西方人说概率,东方人讲骑墙,道的意思大致都是一回事的。许多简单确定的东西放在一起却变出一个复杂而不确定的结果出来,的确是有些怪。那么概率有没有用?答案是肯定的,因为概率概念是建立在整体概念上,当思维将之视为一个更大系统中的一个基本单位时,它的一个总的作用结果(历史)依然能够通过线性描述得到确定结论。

至此可以得出一个结论,确定的数据集或者算法,存在着一个最简的算法或者最适当的数据集,应该分析归纳种种不同的对象,找出所谓“规律”--也就是一些大致不变的因素,从而得出相应的限于自己能力的办法来。

抄一回毛语录:

--具体问题具体分析;

--没有调查没有发言权;

--办法就藏在问题中;

--一把钥匙一把锁。