什么是算法
通俗来说,算法是任何定义良好的计算过程,包含了一些输入值input,和一些输出值ouput,算法是描述输入与输出关系的计算过程的实现。
为什么算法是值得学习的
这需要从算法能解决什么问题说起,算法的应用无所不在,不仅仅局限于计算机领域。
- 人类基因工程要在三亿基因对中识别100000个组成人体的DNA信息。保存这些信息到数据库,开发数据分析工具,每一步都需要复杂的算法。
- 因特网能够在全世界快速的访问和检索大量信息,借助聪明的算法的帮助,因特网上的网站能够管理和维护大量的数据。算法来发现更好的数据传输路径。针对特定问题搜索引擎快速的发现页面。
- 电子商务中货物和服务能够被线上交换和协商。它依赖的个人隐私信息例如:卡号,密码,开户行信息 。被用于电子商务的核心技术包括公钥密码和数字签名,是基于数字算法和数字理论。
- 制造业和其他的实体经济常常需要以最优方式分配有效的资源,一家石油公司可能希望知道哪个地方获利最大,一个潜在的获选人可能需要去决定为了最大化的赢得选举机会把钱花在哪里来购买竞选广告。一家航空公司有可能希望分配它们的员工到航班以尽可能的方式最小化人员开支,来保证每个航班都有人员覆盖,并且符合政府关于人员调度的规定。一个网络服务的提供者可能需要去决定往哪个地方分配额外的资源以便更高效的服务客户。所有的这些问题都将在线性规划问题中被解决。
- 一个道路地图,从A点到B点,有无数种到达方案,哪一条路是最短的,算法将解决这一问题。
算法和其他计算机相关技术的关系是什么
如果计算机的运行可以无限快并且存储空间是无限的,你是否还需要算法呢,答案是YES,因为你不只是想在计算资源的边界内做事,你还常常想找出哪些方法是最容易实现的方式。
然而,计算机的运行时间是有边界的,存储空间也一样。如何更聪明的使用这些资源,算法将帮助我们如何更高效的利用时间和空间。
算法和计算机硬件一样,是一种技术,整个系统的性能既依赖于快速硬件也依赖于高效的算法。正如其他计算机技术在快速发展,算法也一样。
你可能会惊讶,算法在现代计算机上,与其他先进技术相比是否真的重要,例如:
- 先进的计算机结构和制作技术
- 易用、直观,图形化的用户界面
- 对面对象系统
- 集成的web技术
- 快速的网络,有线和无线
答案是YES,虽然一些应用没有在应用层面直接明确的要求算法(例如一些简单的,基于web的应用)。但很多需要,例如,考虑一个基于web的服务决定如何从一个位置传递到另一端。它的实现依赖于快速硬件,一个图形化的界面,广域网络,并且也可能依赖于面对对象系统。然而,对于具体的操作,也依赖于算法,例如发现路由(可能使用最短路径算法),渲染地图,插值处理。
此外,即使一个应用不在应用层面要求算法也严重依赖上面的算法。应用依赖快速硬件吗,硬件就是用算法设计的。应用依赖于图形界面吗?任何图形界面的设计都依赖于算法。应用依赖于网络吗?网络中的路由严重依赖算法。应用是用一种语言编写而不是机器码?然后他可能被编译器、解释器或汇编器处理,所有这些都广泛的使用算法。算法是被用于当代计算机的最核心技术。
更进一步,不断增长的计算机容量,我们可以使用他们去解决比以前更大的问题。例如,当数据量变大的时候,插入排序与合并排序在效率上有显著的不同。
拥有稳固的算法基础和技术是将新手和真正有技术的程序员区分开的标志。用现代计算机技术你能完成一些任务而不用知道太多的算法知识,但有一个好的算法背景,使你可以做更多的事情。