您的位置:首页 > 其它

关于“2”这个数字

2013-04-02 22:48 411 查看
        突然意识到最近思考的很多问题里面都有“2”在作怪。今天写一篇文章,记录下来我的这些闪念,

         首先计算机是二进制的,最起码我们现在接触到的计算机是这样。

        第一次接触二进制的时候,就觉得无比奇怪。因为以前的思维里都被十进制占据了,一时无法接受它。我们的老师一如既往的只告诉我们我们神奇的计算机是用的神奇的二进制,但却不解释究竟是为什么。不知道各位当初有没有和我一样的困惑。

        后来学组成原理,学到里面的运算的时候,发现在二进制里,只需要一些与非运算和移位,就可以实现加减乘除。当然这里面需要一些技巧,比如乘三需要当前一步减一,染后下一步加一;以及除法的加减交替法等等。前人很巧妙的解决了这些问题。

         能存,能取,能进行各种运算,如果将这些数字对应到实际的事物,计算机就可以解决很多人脑不容易解决的问题。

         再仔细想一下,这简简单单的0和1,它却几乎能表示万物。

         如此巧妙,让我很好奇到底是谁聪明至此,发明了它。然后我google到二进制的发明者是莱布尼茨,而他最初的灵感是源于《易经》里的阴阳学的一些理论。

         恍然大悟,0和1,恰好对应到阴和阳。

         这时又突然想到中国的一句古语;“太极生两仪,两仪生四象,四象生八卦。”而古代中国八个卦象是可以去计算一切我们所碰到或即将碰到的事物的。当然你可能不信这套,但我只想说它不是迷信,是有科学依据的。具体的依据也不是我所能解释的。

          想到这里,不禁觉得妙不可言。

          回到最近,     这几天在学习算法。发现了一些共性。

          关于算法,我们研究最多的就是排序问题。

          大部分普通的排序算法是n的平法阶的,比较快的一些呢,一般都是nlogn阶的。当然有线性的排序算法我们不去考虑。

          这些比较快的算法里面,如分治策略的排序,快速排序等,递归的时候都是将整个问题一分为二,将可能性落在其中的一个子问题里,每次递归代价缩小一半(当然这里对快排指的是随机快排)。仔细回想一下,我们很多递归的问题都是用的分治策略,一分为二,分而治之。然后,就起到了意象不到的效果。

           为什么是“2”?为什么只分成2份?既然分成二份以后算法得到优化,那么其他的划分呢?分成三份或者十份行不行?这里的二份一边是十分之一,一边是十分之九又会怎样呢?

           先说为什么不分成更多的份数吧。我的理解是,既然我们想分成更多份,不妨取一个极端,对n个数排序,分成n份。哦,谁都看的出来,这么一分,效果和没分一模一样。那么至少能说明趋近于这个想法的这个趋势是不好的,它渐进地弱化了我们划分所取得的优化效果。

           而不均匀的划分呢,如一边是十分之一,另一边是十分之九,这样递归以后,你会发现,它的步骤和将其均等的分成十份是一模一样的。

           用一句话来总结呢,就是如果你分的很细,那么你在遍历每个子问题的代价会变大。大到什么程度呢,在n个数分成n份时,我们的划分已经无效了。

           神奇的“2”进制,神奇的“2”分天下。

          

       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐