网站用户告知书,wordpress图片页面模板下载,长春百度seo排名,给网站做导流前言
你相信算法吗#xff1f;对于这个问题的答案#xff0c;我们并不关心#xff0c;因为无论你信不信#xff0c;不可否认的是算法席卷了你我的生活。 通信聊天时词汇的联想输入、网络购物时商品的关联推荐和下班回家时家电的智能声控#xff0c;其算法早己悄无声息地进…前言
你相信算法吗对于这个问题的答案我们并不关心因为无论你信不信不可否认的是算法席卷了你我的生活。 通信聊天时词汇的联想输入、网络购物时商品的关联推荐和下班回家时家电的智能声控其算法早己悄无声息地进入我们的世界。但你是否知道算法是什么呢
什么是算法
很多时候比自己更了解自己的不是你的父母和伴侣也不是你的朋友而是算法。算法就像一位智者那般似乎只要我们有还没解决的问题它便可以为我们提供这个问题的可行解。
算法的概念
算法即计算之法是一串指令一个方案也是一个过程。算法就是一系列规范化的计算步骤它对一个或多个输入值先进行计算然后转换成所请求的结果再输出。当然需要强调的是所谓的“请求的结果”并非请求一个精确的结果而是算法根据我们的请求运行后得出一个结果。 简单地说就是我们可以要求算法输出一个“请求的结果”如“11”的结果但我们无法要求当输入“11”时算法必然输出“2”如果你直接把答案告诉算法那就另当别论了的结果。就像考试时老师要求你在试卷上填上正确的答案但老师并不能确保你所认为的正确答案便是正确的答案。 运行算法时我们从一个初态开始经过一系列有限、清晰且有明确定义的状态转化最终产生并止步于一个终态。初态到终态的转化是无法确定的甚至初态与终态之间多种状态的转化也是无法确定的。 或者换一个角度我们可以这样理解算法是由一系列数据对象的一系列运算和操作组成的。 运算包括算术运算、逻辑运算和关系运算。算术运算有加、减、乘、除逻辑运算有或、与、非关系运算有大于、小于、等于、不等于。操作包括输入、输出和赋值等。这么一看是不是就了然于胸了呢那什么是数据对象呢它其实就是指数据。至于数据类型则是一个十分庞杂的问题后续的文章将会详细地讲解。
算法的特征
通常来讲算法有5个特征即我们所说的“两项三性”。
输入项Input有一个或多个初始输入包括人为输入和算法定义输出项Output有一个或多个输出没有输出就没有任何意义确切性Definiteness每个步骤都要清晰明确有穷性Finiteness算法的步骤必须是有限个可执行性Effectiveness每个步骤都是可执行的。
除了以上5个强制特性外算法还有以下5个非强制特性
正确性可读性健壮性鲁棒性可移植性。
正确性、可读性和可移植性很容易理解就是字面意思。至于健壮性和鲁棒性就有点意思了。鲁棒是 Robust 的音译而Robust 是健壮的意思因此二者虽然不尽相同但却是息息相关的而且容易弄混。下面我们就来具体讲一下鲁棒性和健壮性的区别。
鲁棒性和健壮性的区别 健壮性也称容错性是指一个程序算法对不合理的输入的反应能力和处理能力。 而鲁棒性又分为稳定鲁棒性和性能鲁棒性。稳定鲁棒性指小偏差只能产生小影响大偏差不能产生大影响。而性能鲁棒性更简单就是指高精度和有效性。 可以这样理解健壮性的偏差是意料之外的超出规定的外偏差而鲁棒性的偏差是范围之内的可预料的内偏差。 算法的应用
也许细心的你已经发现前面讲到算法时用到了“席卷”一词。是的毫不夸张地讲由于算法的“神通广大”它几乎被应用于人们生活的方方面面。当然是几乎而不是完全毕竟算法还不是无所不能的而且算法所引起的人们的不同价值观也是极具争议的热点。算法必然会继续发展但我们也需要清醒地意识到现阶段它的局限性和问题不要夸大和渲染它的神奇性。 例如识别算法可以隔离垃圾邮件和骚扰信息量子算法可以在短时间内破译密钥关联算法可以发现客户想买的或需要买的东西……这就是算法的“神通”。当然对于这类高级算法是需要设计数学模型的。不同的问题还需要设计不同的数学模型这对于新手来说无疑有很高的门槛。要真正学会算法有很长的路要走最重要的就是走好脚下的每一步。
算法的设计策略
一般来讲算法的设计策略主要有遍历、迭代、递归、回溯、贪心和分治等。这些策略大部分都是本专栏要讲的。不仅要讲还要详细地讲。毕竟知识体系环环相扣没有丰富的基础知识体系就会漏洞百出。只懂表面不懂原理的话一道题稍稍变动一下就做不出来了。如果学算法却连算法的策略都无法掌握那么和学数学不会加减乘除有什么区别呢