载入中。。。 'S bLog
 
载入中。。。
 
载入中。。。
载入中。。。
载入中。。。
载入中。。。
载入中。。。
 
填写您的邮件地址,订阅我们的精彩内容:


 
关于算法的完备性(is complete)的理解
[ 2011/7/14 15:30:00 | By: 梦翔儿 ]
 
算法是解决问题的办法,那么解决问题的办法又是什么呢?
  看个实例:拨号,拿起听筒,讲话,挂机。这是一个算法,它打出了一个电话。拨号、拿起听筒、讲话、挂机,他们也是算法,他们分别实现了什么,显而易见。那拨号这个算法又可以是:按1,按2,按3等组成,这些又都是算法。接着考虑按键,它又是由那些算法组成的呢?……
  因此,不妨说算法是由一些更简单的算法组成的。这些简单的算法的组合是顺序相关的,比如,洗澡、穿衣服,反过来,我就得湿淋淋的去工作了。有些顺序则是可以调换的,比如洗澡和叠被。两者先做哪一个都无关紧要。这种可以调换次序的算法,是可以同时执行的,比如我在洗澡,我的爱人帮我叠的好了被子,完全可以。这种情形称为算法的并行处理。具有这样性质的算法成为可并行算法。
  好,截至目前,我们可以说算法是一些更为简单的算法的序列。这是一个典型的递归定义。因为递归在算法中是一个重要的概念,这里先插一下,什么是递归呢?上面的例子就告诉我们,用自己解释自己就是递归。这里有个更经典的问题:问,什么是鸡?鸡蛋孵出来的。问,什么是鸡蛋?鸡生出来的……如此循环,就是逻辑上的先有鸡还是先有蛋的难题。它用鸡来解释鸡蛋,又用鸡蛋来解释鸡,应该算是一个递归,不过我们总是刻意的把这种情形排除,不只是因为这是一个逻辑悖论,更是因为他对解决问题没有任何帮助。星星还是那个星星,问题还是那个问题。我们的算法的递归定义却不然。“更简单”三个字就把问题规模改变了,也就是说问题的复杂度减小了(当然数量变大了),这时我们就讲这个递归在复杂度上是收敛的。递归的收敛性直接决定了这个算法是否可行。可行的递归算法一定是收敛的,不收敛的递归一定不是算法。递归定义的最後一个问题,他收敛于何处?递归的本质使得他必然是一个死循环,即使它是收敛的,因此我们必须定义一个递归的下限,也就是递归的逻辑收敛点。上面的算法定义,我们定义为当算法足够简单时递归终止。那么下面给出这个完整的递归定义,这里使用经典的四段递归式给出。
1、一些足够简单的方法是算法。
2、算法是一些更简单的算法的序列。
3、由以上1、2两条规则生成的是算法。
4、其他都不是算法。

  关于递归就谈到这里。上面的定义不准确。什么叫足够简单?不同情形下,有不同的理解,不同层次的应用有不同层次的思考。用户可以只提要求,他们把这认为是足够简单的。架构人员只划分层次,他们认为这足够简单。实现人员更进一步,达到系统调用。底层开发人员可能需要递归更多层,不过最多不会超过cpu的指令集。当然还可以接着向下,下面是电路组成,量子物理的内容,我们只讲算法,指令集是我们递归的终点。
  总而言之,算法是一系列cpu指令执行的序列,那么请问,计算机能够解决多少问题?这是一个组合问题。cpu的指令集是有限的,最长的指令也不会超过一个字长。事实上,现行的指令集往往仅有一两个字节。目前通用的IA-32体系便是如此,因为指令还要为操作数提供空间,如果执行一个操作还得读取两次,那么计算速度就要大打折扣。这里可以参考Java标准定义的指令集,由于它完全不用考虑底层电路的问题,他的指令集更规则些。由于组成最终算法的状态(指令)是有限的,那么有限的状态能否组成无限的算法,即有限的基本操作能否解决无限的问题呢?古语有云,“道生一,一生二,二生万物。”两个状态的组合就能组成万物。计算机更是希望零幺生成万物。上面的问题看似是肯定的,其实不然。要表示无限的状态,那么就需要无限的组合长度,而这是计算机不可接受的,不只是空间上,也是时间上。计算机硬件按照摩尔定律飞速前进了几十年,其唯一目的,就是大大增加这个组合量。然而以有限对无限,计算机的能力可以增强,但永远不会无所不能。算法执行的基础告诉我们,总有算法解决不了的问题,总有计算机解决不了的问题,总有人解决不了的问题,总有永远解决不了的问题。这就是算法的不完备性。

梦翔儿理解总结:完备就是要最终收敛,递归要有阈值,最终算法要计算机在有限程度上能解。一个人随着学识的增加,会发现不懂的东西会越来越多,为什么?因为知识的圈子大了,扩展的知识就越多了,所以学习是终身的,永远不会结束,就这是不完备性。但计算机要处理,要学习的东西必需是完备的,所以我们设计一个算法的同时,一定要考虑并证明其完备性!

http://space.itpub.net/?uid-15822571-action-viewspace-itemid-606040

 
 
  • 标签:完备性 
  • 发表评论:
    载入中。。。

     
     
     

    梦翔儿网站 梦飞翔的地方 http://www.dreamflier.net
    中华人民共和国信息产业部TCP/IP系统 备案序号:辽ICP备09000550号

    Powered by Oblog.