当前位置:首页 » 操作系统 » 算法实际应用

算法实际应用

发布时间: 2025-02-08 03:53:07

‘壹’ 计算机算法在实际生活中的应用

在这一周的《吴军的谷歌方法论》中,老师讲了地址(addressing)的重要性,并在此基础上介绍了地址的查找,数据的访问。对于地址的查找,在数据量较小时,可以采用顺序查找法和字典查找法;当数据量达到一定程度后,则需要为数据建立索引。而对于已经建立的索引进行查找,老师又详细介绍了具体方法的演进过程,引出随机性在索引查找中的应用。

通过上一周的学习,有如下几点收获:

1.理清问题,确定算法,选择语言

在这周的文章中读到,以前的人把计算当作目的,图灵是把计算当作手段,实现一些功能才是他的目的,回想起自己做研究生课题时遇到的一个问题。当时自己做的是机油滤芯过滤阻力和过滤精度的模拟计算,开始阶段采用二维模型来模拟圆筒状的滤芯。实际生产的滤芯是用木屑做的,填充率为31.8%,自己模拟计算也希望达到这个数值,但是初步的计算达不到这个数值,就向博士毕业的堂姐请教了这个问题:

堂姐的回复如下:

当时并没有非常理解她说的话,现在回过头来看,能更加明白她的意思了。对于一个具体的问题,可以采用的算法其实是非常多的,对于每一种算法又可以选择很多种实现的语言。但是我们解决问题的时候,一定要从问题这个根本出发,对于问题本身有足够深入的思考。在此基础上,明白解决这个问题采用怎样的算法最简洁高效,这是关键。至于选择那种语言或者工具,会对算法的实现效率产生一定影响,但不是最核心的。

2.从多个维度建立索引

对于算法的介绍中,老师强调了索引的重要性。关于建立索引,想到的两个应用的例子,一个是微信好友的标签,一个是印象笔记的标签。

对于我们在工作场合或者意外状况下认识的朋友,也许后期的联系会很少,那么建立细致的备注信息就很有必要。通过对聊天记录的梳理,在标签中注明行业,公司,家乡,甚至爱好,并且备注一些印象深的细节。这样不仅可以通过标签很快找到对应的人,而且在以后再次约见的时候,能通过这些标签信息,谈一些对方熟悉的话题,迅速拉近彼此的距离,对于我们的社交会有很大的帮助。

另外一个就是在印象笔记中建立新笔记时,可以建立尽量详细的标签。这在当时可能费事一点,但是后面随着笔记数量的增多,在海量笔记中通过标签来进行筛选,将是一件非常提升效率的事情。说到印象笔记,就像多说两句,因为真的很好用。建立标签就点击F3就可以开始建立新标签。

3.问题规模的增大会导致性质的变化

读到这句话时,想到之前脱不花和罗振宇两位老师在周二例会时讲得到的发展。当时得到总共的人数是157个人,刚刚超过邓巴数(人类智力允许人类拥有稳定社交网络的人数,为148)。

在邓巴数以内,公司里面的人可以彼此认识并且维持稳定的关系,不需要太明确的部门和上下级关系。但是两位老师讲到,随着公司里的人数超过邓巴数,那么部门化和层级化是不可避免的趋势,因为这样可以提高效率。但部门和层级的建立,会导致利益变形,之前大家是向市场要收益,更关注如何把自己的工作做好;之后是向上级要收益,更容易出现溜须拍马的现象。

不过正如老师所说,本着遇到问题解决问题的态度,即便问题转化了,只要大家发挥主动性,认真去面对问题,总会有解决方法。而且Google,苹果这样的公司树立了很好的榜样,现在已经非常大了,依然保持很好的运作和增长。

而作为个人,我们应该更多关注自己如何在企业不断扩大的过程中,保持自己本身的不断成长,为公司解决新的更复杂的问题,让自己一直拥有竞争力。这也是《领导梯队》中想要告诉我们的,在领导梯队的上升过程中,面对的不是更多同类的问题,而是全新的问题。我们要让自己学会转化思维模式,这样在旧问题已经转变成新问题时,可以更好去应对。

‘贰’ 算法在实际生活中的应用

求解问题类的、机械的、统一的方法,它由有限多个步骤组成,对于问题类中的每个给定的具体问题,机械地执行这些步骤就可以得到问题的解答。算法的这种特性,使得计算不仅可以由人,而且可以由计算机来完成。用计算机解决问题的过程可以分成三个阶段:分析问题、设计算法和实现算法。
中国古代的筹算口决与珠算口决及其执行规则就是算法的雏形,这里,所解决的问题类是算术运算。古希腊数学家欧几里得在公元前3世纪就提出了一个算法,来寻求两个正整数的最大公约数,这就是有名的欧几里得算法,亦称辗转相除法。中国早已有“算术“、“算法”等词汇,但是它们的含义是指当时的全部数学知识和计算技能,与现代算法的含义不尽相同。英文algorithm(算法)一词也经历了一个演变过程,最初的拼法为algorism或algoritmi,原意为用阿拉伯数字进行计算的过程。这个词源于公元 9世纪波斯数字家阿尔·花拉子米的名字的最后一部分。
在古代,计算通常是指数值计算。现代计算已经远远地突破了数值计算的范围,包括大量的非数值计算,例如检索、表格处理、判断、决策、形式逻辑演绎等。
在20世纪以前,人们普遍地认为,所有的问题类都是有算法的。20世纪初,数字家们发现有的问题类是不存在算法的,遂开始进行能行性研究。在这一研究中,现代算法的概念逐步明确起来。30年代,数字家们提出了递归函数、图灵机等计算模型,并提出了丘奇-图灵论题(见可计算性理论),这才有可能把算法概念形式化。按照丘奇-图灵论题,任意一个算法都可以用一个图灵机来实现,反之,任意一个图灵机都表示一个算法。
按照上述理解,算法是由有限多个步骤组成的,它有下述两个基本特征:每个步骤都明确地规定要执行何种操作;每个步骤都可以被人或机器在有限的时间内完成。人们对于算法还有另一种不同的理解,它要求算法除了上述两个基本特征外,还要具有第三个基本特征:虽然有些步骤可能被反复执行多次,但是在执行有限多次之后,就一定能够得到问题的解答。也就是说,一个处处停机(即对任意输入都停机)的图灵机才表示一个算法,而每个算法都可以被一个处处停机的图灵机来实现
算法分类
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法。
算法可以宏泛的分为三类:
有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。算法特征一个算法应该具有以下五个方面的重要特征:1、输入。一个算法有零个或多个输入,以刻画运算对象的初始情况。例如,在欧几里得算法中,有两个输入,即m和n。2、确定性。算法的每一个步骤必须要确切地定义。即算法中所有有待执行的动作必须严格而不含混地进行规定,不能有歧义性。例如,欧几里得算法中,步骤1中明确规定“以m除以n,而不能有类似以m除n以或n除以m这类有两种可能做法的规定。3、有穷性,一个算法在执行有穷步滞后必须结束。也就是说,一个算法,它所包含的计算步骤是有限的。例如,在欧几里得算法中,m和n均为正整数,在步骤1之后,r必小于n,若r不等于0,下一次进行步骤1时,n的值已经减小,而正整数的递降序列最后必然要终止。因此,无论给定m和n的原始值有多大,步骤1的执行都是有穷次。4、输出。算法有一个或多个的输出,即与输入有某个特定关系的量,简单地说就是算法的最终结果。例如,在欧几里得算法中只有一个输出,即步骤2中的n。5、能行性。算法中有待执行的运算和操作必须是相当基本的,换言之,他们都是能够精确地进行的,算法执行者甚至不需要掌握算法的含义即可根据该算法的每一步骤要求进行操作,并最终得出正确的结果。算法的描述1、用自然语言描述算法前面关于欧几里得算法以及算法实例的描述,使用的都是自然语言。自然语言是人们日常所用的语言,如汉语、英语、德语等。使用这些语言不用专门训练,所描述的算法也通俗易懂。2、用流程图描述算法在数学课程里,我们学习了用程序框图来描述算法。在程序框图中流程图是描述算法的常用工具由一些图形符号来表示算法。3、用伪代码描述算法伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法的工具。它不用图形符号,因此,书写方便、格式紧凑,易于理解,便于向计算机程序设计语言过度。

热点内容
c语言的打印函数 发布:2025-02-08 06:43:54 浏览:786
海康威视局域网访问 发布:2025-02-08 06:41:16 浏览:965
html5移动端源码下载 发布:2025-02-08 06:20:45 浏览:150
外网访问黑群晖 发布:2025-02-08 05:45:59 浏览:562
中央存储服务器公司地址 发布:2025-02-08 05:38:48 浏览:822
服务器如何查询表空间的文件路径 发布:2025-02-08 05:38:00 浏览:163
宏基4741g哪个配置好 发布:2025-02-08 05:37:56 浏览:811
混合料运输车的配置是如何计算的 发布:2025-02-08 05:31:35 浏览:294
android红包插件 发布:2025-02-08 05:31:34 浏览:366
ea服务器怎么连接 发布:2025-02-08 05:16:45 浏览:464