算法原意(2)输入与输出

算法原意(2)输入与输出

  算法是解决问题的方法,它必须正确、高效、可行。另外两方面,它需要有处理的材料、目标,称为输入。算法的执行必然会对现实产生影响或是生产出新的“产品”,这叫输出。输入、输出及前文中提到的算法的三个必要要求,在一些书中称作算法的五个特征。
  前三个我们称作必要要求,那么输入与输出是否是必需的呢?
  不少书中讲:算法需要零个或多个输入,壹个或多个输出。可见人们认为输出是必需的而输入是可有可无的。
  输入是必需的。巧妇难为无米之炊,输入作为算法执行的材料、对象、目标,没有输入那么算法就是写在纸上,存在磁盘上的空话而已。输入提供了算法处理的对象、算法需要参考的信息、算法执行的初始条件等,没有这些,算法如何执行呢?因此,输入是必需的。
  那又是什么原因致使不少书中得到了输入可有可无的呢?如果我们不承认一些输入是隐含在算法中的,而只是认为由调用者提供是输入的唯一来源的话,那么输入确实可有可无,因为有些算法将这些需要的信息包含在双方本身中,并不需要调用者提供,这就是零个输入的来源,那么再一个问题,为什么会出现这样的情况?
  下面谈谈算法的封装性。封装就是包起来,里面的东西流不出来,外面的东西也不能进去。当然也不可能完全包起来,因为算法可能会有显式的输入及显式的输出,对他们得开一扇门,这个门就称作接口,算法的封装使我们可以在更高的层次上看算法:我们只需了解算法提供了解决什么问题的方法;如何使用它;使用它会产生什么结果,有什么含义。我们不需要了解算法的实现过程及细节,更多的情况下,您不被授权来了解这些。封装的算法使得我们可以在一个“用”的级别上来看待。小小的收音机都有一个相当复杂的线路板。但是我只知道它可以接收无线电信号;我知道打开开关,调谐频率就可以使用;我知道它的输出就是音频化的无线电信号。对于收音机,对于使用者,这就足够了。另外封装性保证了算法的安全性,使其必需的内部信息不暴露在外,使得固定输入不因调用者的错误调用而变化。一个封装的算法暴露的接口要尽量的少,要保证所有暴露的接口都是必需的。这是封装的原则之一。
  算法的输入由于封装的要求,显式的输入越来越少直至没有,然而输入必然是存在的。
  同样输出也可能不是显式的,但他必然是存在的。这个问题可以用算法的本质予以说明。算法的输出就是算法的执行结果。每个算法的实施必然会对现实造成一定的影响,因此算法的输出必然存在。算法输出的形式多种多样,一个简单的形式是输出一个“产品”,这是显式的输出。第一节中的孩子就是这样的输出。有的输出则改变现实的状态,比如你打人,给你的对手留下伤痕若干,这是对输入的影响;倒垃圾,使我的屋里没有垃圾了,这是对环境的影响。算法的输出可以是各种情形的组合,可能是相当复杂的。
  人们常把算法当作黑箱,下面就是它的一个形象化表述。
bb

fj.png图片3副本.gif

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15822571/viewspace-606036/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15822571/viewspace-606036/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值