以算法为视角
① 如何解决算法多样化带来的问题
提倡算法多样化是新课标倡导的重要思想,是指尊重学生的独立思考,鼓励学生探索解题的不同方法。我在教学中也进行了算法多样化的尝试。
在教学时,我创设了一个情景:出示铅笔,“这是一盒铅笔,里面装了10支铅笔,这里还有5支铅笔,老师这里一共有多少支铅笔?”学生很快算出来是15支,我又问:“我有15支铅笔,要送给小朋友9支,还剩多少支?”并写出算式:15-9= 我让学生通过从15支铅笔中拿走9支铅笔的办法来解这个算式,问学生“谁愿意来拿走9支?并说说你是怎么拿的?”
生1:我是先拿走5支,再从10里拿4支。15-5=10 10-4=6
生2:我是从10里拿走9支。10-9=1 1+5=6
生3:我是先从10里拿走4支,再拿走外面的5支。10-4=6
生4:我还有不同的方法。我从外面拿走4支,再从10里面拿走5支。
5-4=1 10-5=5 1+5=6
生5:我从外面拿走1支,再从10里拿走8支。5-1=4 10-8=2 4+2=6
生6:我从10里面拿走7支,从5里拿走2支。10-7=3 5-2=3 3+3=6
生7:因为9+6=15 所以15-9=6
学生热闹的发言给出了多种不同的方法,确实可以说是做到算法多样化了,可是面对这许多种算法,我心里有点着急。一急:这每一种方法都要给学生一一介绍吗?光是第一种方法,如果要学生掌握,大概需要半节课。每一种方法都介绍,课怎么上得完呢?二急:要不要从这众多的算法中选出优算法?如何选?三急:如果要选优算法,应重点选择哪种方法?四急:还有一部分学生连一种方法都不清楚,我要不要讲解?五急:如果不把每一种算法都讲清楚,学生怎么会知道这种方法是否适合他?也许没讲到的那种方法刚好就是最适合他的呢?六急:对一部分学生,如果不把一些思维方式强加于他,他可能一直会用数手指头的方法,难道就让他一直这样吗?……
但是,课堂教学的紧迫容不得我的茫然,我选择了介绍了生1和生2的方法,并着重让学生通过摆小棒的办法领悟第2种方法。
这个处理过程可以说是我把我个人的看法和思想强加给了学生,这不是我希望看到的情形。学习是为了什么?要不要学到一定的知识?答案是肯定的。可是当不是所有的学生都能主动建构知识的时候,教师该如何做呢?
算法多样化的教学思考及其策略把握
“鼓励算法的多样化”是新课程标准的一个重要理念。当前,根据新课程标准编制的各种版本的教材,都将这个重要理念摆在突出的位置。算法多样化已得到广大教师的极大关注和积极实践,但在算化多样化的理解和把握上则各不相同:有的教师要求学生对各种方法都要理解掌握,有的教师认为应该从中选取一种最好的方法,还有的教师认为应尊重学生的“原创算法”,让学生“你想怎么算就怎么算”。可见,在算法多样化的教学中确实存在着急需解决的实践问题。
以“20以内退位减法”为例,叙述了自己在教学中进行算法多样化的尝试,并提出了自己的教学困惑(即文中的“六急”)。回顾我镇实施新课程的起步阶段,我镇基层教师在进行算法多样化教学时也曾经历过,因此她的困惑具有一定的普遍意义。下面就结合我镇在算法多样化上的研究和实践,谈谈我们对算法多样化的教学认识以及策略把握。
一、为什么要提倡算法多样化
1.这是计算教学的价值所在
随着计算机(器)的普及,计算教学的要求正在逐步降低,计算教学的目的正在发生转变,不仅是原先要求学生熟练、正确的计算技能(实际上新课程标准已降低了计算要求);更重要的是,计算教学的价值是突出算法思维,在倡导算法多样化的过程中,培养学生的创新精神、探索意识和解决问题的能力。我国着名数学家吴文俊院士在数学机械化领域的开创性工作,引发了国际数学界对中国古代数学的传统(即算法化思想)的重新审视。当前我们的中小学数学教学应当继承和挖掘我国古代数学传统之精华。因而有学者提出,身处信息社会的学生必须掌握两种重要的思维方法,即批判性思维和算法思维。长期以来,我国的小学数学教学把培养学生的计算能力作为小学数学基础的核心,但面对计算机信息技术的迅猛发展以及国际数学教育的改革潮流,小学数学的基础不能仅仅停留在“熟练的计算能力上”。对于计算教学,应当从传统的“方法统一和过分强调计算技能”转变为“尊重学生的个性特点、关注学生思维能力的培养”。所以,计算教学不仅仅是培养学生的计算技能,还要培养学生推理计算的能力,强调算法思维的多样性。算法多样化的本质是让学生从自己已有的知识与经验出发学习新知识,鼓励学生通过独立思考而探寻解题的方法。对于“15 -9”的算法探索,体现了“知识再发现”的要求,这对培养学生的创新精神和探索意识是极其有利的。
2.这是尊重学生不同认知方式的体现
以往的数学教学中,过分地强调解题方法的唯一性或计算方法的最优化,而忽视了学生解决问题过程中不同的思维方式和不同解决策略的探索。实际上,在计算教学中,由于学生认知方式的不同,在探索过程中必然会引发计算方法的多样性。认知方式是个体在知觉、思维、记忆和解决问题等认知活动中加工和组织信息时所显示出来的独特而稳定的风格。认知方式没有优劣之分,只是表现为学生对信息加工方式的某种偏爱。教学中,特别是在新知识的探索阶段,理应尊重每一个学生的个性特征,允许不同的学生从不同的角度认识问题,采用不同的方式表达自己的想法,用不同的知识与方法解决问题。面对新知识,学生用自己过去的经验与本领来加以解决,教师给予适当的鼓励和评价,这是尊重学生不同认知方式的体现。
二、如何把握算法多样化
1.注意算法的简约化和优化
一方面,学生认知水平各有高低,这决定了其解决问题的方法必然存在优劣之分。有时学生的方法会显得过于繁琐,如生4、生5和生6的方法;有时学生的方法缺乏思维的共性,无法作为基本方法而供学生选用等。另一方面,推动数学发展的内在动力之一,就是数学家探索方法的简单化和最优化。因此,教师在教学中倡导算法多样化的同时,还要引导学生对多样化的方法进行一定的简化与优化(不是指最优化),把简化与优化的过程作为学生反思以及进一步探索的过程。如果在教学中对学生良莠并存的各种思维方式以及算法视而不见,对影响学生后继学习的核心基础知识和基本方法放任不管,那么就会失去教师“教”的真正意义,学生也就失去了自我反思、比较、交流和提升的机会。
2.明确每个教学阶段的目的
(1)探索阶段,重在倡导算法的多样化。教学中,让学生通过自主探索、独立思考,提出自己解决问题的方法。如果有的学生有困难,允许学生之间进行一定的讨论与交流;对于认知水平较高的学生,还要鼓励他们提出不同的解决方法。这一阶段,教师教学的重要策略就是启发、引导、鼓励学生,让学生“你想怎么算就怎么算”。学生主要通过自主探索,提出解决问题的方法,培养学生的探索意识和解决问题的能力。需指出的是:其一,算法多样化不等同于“一题多解”。在教学中,有的老师往往把算法多样化等同于“一题多解”,要求所有学生尽可能地探索出几种方法,结果使一部分认知水平较低的学生产生畏惧情绪,也增加了学生不必要的负担。对此,北京师范大学周玉仁教授指出两者是有区别的。她认为,“一题多解”是面向学生个体,尤其是中等以上水平的学生,遇到同一道题可有多种思路多种解法,目的是为了发展学生思维的灵活性。而“多样化”是面向学生群体的,学生可以用自己喜欢或能理解的算法,对学生个体来说,不要求每人都想出或掌握两种或更多种算法;同时在群体多样化时,通过交流、评价可以吸收或改变自己原有的算法。这对我们广大教师来说,具有很强的实践指导意义。其二,算法多样化应防止陷入形式化的误区。我们强调自主探究,倡导算法多样化是以关注学生的独立思考,尊重学生的个性为重要目标的。教学中,教师不必煞费苦心“索要”多样化的算法,片面追求算法多样化的探究,那只能是造成学生低层次思维的重复,或者“依他人之样画瓢”而已。生4、生5和生6的计算方法,反映出教师在算法多样化的处理上有这样的影子,教师还没有准确把握操作和思维的关系。
(2)总结阶段,重在对算法进行归纳与优化。在学生自主探索的基础上,把自己解决问题的方法进行交流与汇总。这里要强调的是,教师一定要引导学生在交流与汇总的基础上对学生提出的各种解题方法给予分析、归纳与优化。不然,算法的多样化有时往往会让一些中、差生感到眼花缭乱,无所适从,以致方法越多越糊涂,达不到算法多样化的教学目的。事件中学生通过自己的探索,全班交流得出的计算方法有7种之多,但很可惜,教师没有引导学生对各种方法进行一定的分析与归纳、简化与优化。
其实在这一阶段,教师要引导学生对各种方法进行一定的考察,分析各种方法的特点,并对各种方法进行一定的归类。事件中生1的计算方法是“平十法”(又称“连减法”);生2的计算方法是“破十法”;生3、生4、生5和生6的计算方法都是通过把15和9进行分拆,再利用原有的不退位减法和加法知识加以解决的,属于同一类;生7的计算方法是利用加减法之间的关系,即“做减法,想加法”而加以解决的。在此基础上,对于各类方法可以作进一步分析,让学生感悟、理解探索和解决问题的数学思想方法,即把要解决的新知转化为学过的旧知而加以顺利解决。对于生3、生4、生5和生6的计算方法,引导学生去分析这些方法的缺点和弱点而加以舍弃,以突出基本原理和通用方法,切实加强数学课程的基础性。通过上述的教学处理,即在倡导算法多样化的基础上,引导学生对多样化的算法进行分析与归纳、简化与优化。
(3)应用阶段,则应当鼓励算法的个性化。即尊重学生的不同认知风格,允许学生“你喜欢用什么方法就用什么方法计算”。我们倡导算法的多样化,决不是简单地让学生“你想怎么算就怎么算”,而是在对多样化算法的分析与总结的基础上,倡导科学、合理的方法,舍弃不科学、不合理的方法,再让学生“你想怎么算就怎么算”,真正体现出算法多样化的本质要求。在应用阶段,教师鼓励学生算法个性化,自主选择经过大家归纳、优化后自己所理解、认可和喜欢的一种方法;但同时不排斥一部分认知水平较高的学生,用自己喜欢的多种计算方法计算;同样,也允许个别学习困难的学生暂时保留经过优化已遭淘汰的方法。当然,这里允许个别特殊学生保留已遭淘汰的方法,并不是说教师可以迁就学生的现有发展水平,放弃教师的主导作用,而是必须因势利导,不失时机地启发学生超越自我,真正体现教学是为了促进学生发展的宗旨。
视角2
对算法多样化的几点思考与建议
思考一:
到底什么是算法多样化?为什么要鼓励算法多样化?算法多样化不是对学生个体的要求,而是面向学生群体的。学习是学生在已有知识经验基础上的自主建构活动,而学生之间的差异是客观存在的,对于同一道计算题,解题思路往往不尽相同。面对全班学生,教师只讲解一种算法的教学,容易忽视学生的个别差异,遏制学生的创造性。鼓励算法多样化,是让每个学生用自己最能理解的方法进行计算,通过交流评价从中得到启发,在各自的基础上得到发展。
思考二:
算法多样化,是不是算法越多越好?在学生回答完一种方法后,教师常会不停地追问“还有吗?”,于是,学生有时会为算法的多样而挖空心思。案例中的学生,有从10里拿走9支的,也从10里拿走8支、拿走7支、拿走4支的。我想,在老师的“还有吗”下,可能有学生会从10里拿走6支、拿走5支的。上述每一种拿法应该是有区别的,但不是我们所要鼓励的算法多样化。其实,教师在这里应该适时引导:”小朋友们这几种拿法是不同的,但是,我们的想法其实是一样的,都是——“,引导学生归类,让他们体会到这些想法属于同一类,并进一步比较发现,从10里拿走9的方法,计算最简单方便。注意,算法多样化,关注的不是形式的多样,而是想法的多样。对于学生形式的多样,教师要作引导。算法多样化,绝不是算法越多越好。
思考三:
多样的算法要不要优化?在学生出现了多种算法后,教师常会说“你们可以用自己喜欢的方法进行计算”,看似非常尊重学生的选择,其实是一种简单化的处理。如若学生喜欢扳手指计算,教师也任其喜欢?数学是讲“优化”的,教师应该引导学生对多种算法进行比较,让学生体会到哪种算法是最简捷、最容易的方法。当然,有些算法很难说出孰优孰劣,就让学生凭经验自己做选择。
建议:
对本节课的教学,有三点建议:(1)“谁愿意来拿走9支?并说说你是怎么拿的?”这一提问会妨碍学生自己的思考,学生在拿的过程中不太会有“用加算减”的想法,然而,这也是应该让学生学会的一种算法;(2)问题出示后,教师要给出一定的时间让学生独立思考、尝试计算,最好能让学生在小组内交流自己的想法,而不是要求学生迅速做出反应,因为那样往往是少部分学优生积极参与,其余学生被动旁听,很难真正做到算法多样化;(3)教师要适时介入(特别是当学生中出现从10中拿几的想法一致、拿法不同的时侯),及时地引导,让学生在交流、比较中获得新的认识,思维得到发展。
② 什么是算法,它的五大特性是什么,算法和程序的关系是什么
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
一个算法应该具有以下五个重要的特征:
有穷性(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性(Definiteness)
算法的每一步骤必须有确切的定义;
输入项(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性(Effectiveness)
算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
算法和程序的关系是:
算法就是程序的灵魂,一个需要实现特定功能的程序,实现它的算法可以有很多种,所以算法的优劣决定着程序的好坏。
程序就是遵循一定规则的、为完成指定工作而编写的代码。有一个经典的等式阐明了什么叫程序:程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具和环境 。
③ 大学计算思维视角学什么
大学计算机-计算思维视角》是学校非计算机类专业通识教育必修课程,是学习其他计算机相关课程的基础课,属于通识教育人工智能与信息技术课程模块。该课程包括计算机与计算思维、计算机信息表示、计算机系统、算法与程序设计、数据库与大数据、计算机网络概述与人工智能概述等7个部分内容,旨在传授计算科学知识,培养学生计算思维和信息素养,提高应用计算机解决问题能力和计算机应用水平。课程采用“线上+线下+实验”混合式教学方式,线上学习者通过观看视频、教辅材料,并结合相关作业练习以及测试的形式进行自学,鼓励学生通过智慧树平台与同学、老师学习交流,帮助自身掌握和巩固所学知识,线下定期进行翻转课堂模式教学,课堂上以小组讨论互动交流等多种形式促进学生知识的吸收内化,并根据教学内容安排一定学时的上机实验,进一步提高学生计算机操作及解决问题的能力。
④ 优化算法笔记(二)优化算法的分类
(以下描述,均不是学术用语,仅供大家快乐的阅读)
在分类之前,我们先列举一下常见的优化算法(不然我们拿什么分类呢?)。
1遗传算法Genetic algorithm
2粒子群优化算法Particle Swarm Optimization
3差分进化算法Differential Evolution
4人工蜂群算法Artificial Bee Colony
5蚁群算法Ant Colony Optimization
6人工鱼群算法Artificial Fish Swarm Algorithm
7杜鹃搜索算法Cuckoo Search
8萤火虫算法Firefly Algorithm
9灰狼算法Grey Wolf Optimizer
10鲸鱼算法Whale Optimization Algorithm
11群搜索算法Group search optimizer
12混合蛙跳算法Shuffled Frog Leaping Algorithm
13烟花算法fireworks algorithm
14菌群优化算法Bacterial Foraging Optimization
以上优化算法是我所接触过的算法,没接触过的算法不能随便下结论,知之为知之,不知为不知。其实到目前为止优化算法可能已经有几百种了,我们不可能也不需要全面的了解所有的算法,而且优化算法之间也有较大的共性,深入研究几个之后再看其他优化算法上手速度会灰常的快。
优化算法从提出到现在不过50-60年(遗传算法1975年提出),虽种类繁多但大多较为相似,不过这也很正常,比较香蕉和人的基因相似度也有50%-60%。当然算法之间的相似度要比香蕉和人的相似度更大,毕竟人家都是优化算法,有着相同的目标,只是实现方式不同。就像条条大路通罗马,我们可以走去,可以坐汽车去,可以坐火车去,也可以坐飞机去,不管使用何种方式,我们都在去往罗马的路上,也不会说坐飞机去要比走去更好,交通工具只是一个工具,最终的方案还是要看我们的选择。
上面列举了一些常见的算法,即使你一个都没见过也没关系,后面会对它们进行详细的介绍,但是对后面的分类可能会有些许影响,不过问题不大,就先当总结看了。
再对优化算法分类之前,先介绍一下算法的模型,在笔记(一)中绘制了优化算法的流程,不过那是个较为简单的模型,此处的模型会更加复杂。上面说了优化算法有较大的相似性,这些相似性主要体现在算法的运行流程中。
优化算法的求解过程可以看做是一个群体的生存过程。
有一群原始人,他们要在野外中寻找食物,一个原始人是这个群体中的最小单元,他们的最终目标是寻找这个环境中最容易获取食物的位置,即最易存活下来的位置。每个原始人都去独自寻找食物,他们每个人每天获取食物的策略只有采集果实、制作陷阱或者守株待兔,即在一天之中他们不会改变他们的位置。在下一天他们会根据自己的策略变更自己的位置。到了某一天他们又聚在了一起,选择了他们到过的最容易获取食物的位置定居。
一群原始人=优化算法中的种群、群体;
一个原始人=优化算法中的个体;
一个原始人的位置=优化算法中个体的位置、基因等属性;
原始人变更位置=优化算法中总群的更新操作;
该位置获取食物的难易程度=优化算法中的适应度函数;
一天=优化算法中的一个迭代;
这群原始人最终的定居位置=优化算法所得的解。
优化算法的流程图如下:
对优化算法分类得有个标准,按照不同的标准分类也会得到不一样的结果。首先说一下我所使用的分类标准(动态更新,有了新的感悟再加):
按由来分类比较好理解,就是该算法受何种现象启发而发明,本质是对现象分类。
可以看出算法根据由来可以大致分为有人类的理论创造而来,向生物学习而来,受物理现象启发。其中向生物学习而来的算法最多,其他类别由于举例有偏差,不是很准确,而且物理现象也经过人类总结,有些与人类现象相交叉,但仍将其独立出来。
类别分好了,那么为什么要这么分类呢?
当然是因为要凑字数啦,啊呸,当然是为了更好的理解学习这些算法的原理及特点。
向动物生存学习而来的算法一定是一种行之有效的方法,能够保证算法的效率和准确性,因为,如果使用该策略的动物无法存活到我们可以对其进行研究,我们也无法得知其生存策略。(而这也是一种幸存者偏差,我们只能看到行之有效的策略,但并不是我们没看到的策略都是垃圾,毕竟也发生过小行星撞地球这种小概率毁灭性事件。讲个冷笑话开cou心一shu下:一只小恐龙对他的小伙伴说,好开心,我最喜欢的那颗星星越来越亮了(完)。)但是由于生物的局限性,人们所创造出的算法也会有局限性:我们所熟知的生物都生存在三维空间,在这些环境中,影响生物生存的条件比较有限,反应到算法中就是这些算法在解决较低维度的问题时效果很好,当遇到超高维(维度>500)问题时,结果可能不容乐观,没做过实验,我也不敢乱说。
按更新过程分类相对复杂一点,主要是根据优化算法流程中更新位置操作的方式来进行分类。更新位置的操作按我的理解可大致分为两类:1.跟随最优解;2.不跟随最优解。
还是上面原始人的例子,每天他有一次去往其他位置狩猎的机会,他们采用何种方式来决定今天自己应该去哪里呢?
如果他们的策略是“跟随最优解”,那么他们选取位置的方式就是按一定的策略向群体已知的最佳狩猎位置(历史最佳)或者是当前群体中的最佳狩猎位置(今天最佳)靠近,至于是直线跑过去还是蛇皮走位绕过去,这个要看他们群体的策略。当然,他们的目的不是在最佳狩猎位置集合,他们的目的是在过去的途中看是否能发现更加好的狩猎位置,去往已经到过的狩猎地点再次狩猎是没有意义的,因为每个位置获取食物的难易程度是固定的。有了目标,大家都会朝着目标前进,总有一日,大家会在谋个位置附近相聚,相聚虽好但不利于后续的觅食容易陷入局部最优。
什么是局部最优呢?假设在当前环境中有一“桃花源”,拥有上帝视角的我们知道这个地方就是最适合原始人们生存的,但是此地入口隐蔽“山有小口,仿佛若有光”、“初极狭,才通人。”,是一个难以发现的地方。如果没有任何一个原始人到达了这里,大家向着已知的最优位置靠近时,也难以发现这个“桃源之地”,而当大家越聚越拢之后,“桃源”被发现的可能性越来越低。虽然原始人们得到了他们的解,但这并不是我们所求的“桃源”,他们聚集之后失去了寻求“桃源”的可能,这群原始人便陷入了局部最优。
如果他们的策略是“不跟随最优解”,那么他们的策略是什么呢?我也不知道,这个应该他们自己决定。毕竟“是什么”比“不是什么”的范围要小的多。总之不跟随最优解时,算法会有自己特定的步骤来更新个体的位置,有可能是随机在自己附近找,也有可能是随机向别人学习。不跟随最优解时,原始人们应该不会快速聚集到某一处,这样一来他们的选择更具多样性。
按照更新过程对上面的算法分类结果如下
可以看出上面不跟随最优解的算法只有遗传算法和差分进化算法,他们的更新策略是与进化和基因的重组有关。因此这些不跟随最优解的算法,他们大多依据进化理论更新位置(基因)我把他们叫做进化算法,而那些跟随群体最优解的算法,他们则大多依赖群体的配合协作,我把这些算法叫做群智能算法。
目前我只总结了这两种,分类方法,如果你有更加优秀的分类方法,我们可以交流一下:
目录
上一篇 优化算法笔记(一)优化算法的介绍
下一篇 优化算法笔记(三)粒子群算法(1)
⑤ 视角怎么计算
人眼到视平面的距离视固定的(视距),视平面左右两个边缘到人眼的连线得到的角度是视角。 一般我们设置视角来计算视距。 为了方便,我们一般取人眼位置为 z 轴原点,这样,物体距离眼睛的距离(物距)还有物体在视平面上投影的长度(像长)以及 物体的实际长度(物长)的关系就是这样: 像长:像距 = 物长:物距 即 像长 = 物长 * 像距 / 物距 (1) 假设我们的视角宽度用x方向(一般哺乳类都是如此,因为两眼是x方向排列的),那么有这样的关系: (视平面宽度/2) /像距 = tan(视角/2) 于是: 像距 = (2/视平面宽度) * tan(视角/2) (2) (2) 带入 (1) 就可以得到: 像长 = 物长 * (2/视平面宽度) * tan(视角/2) / 物距 这样我们就可以知道,当视角已知的时候,一个高为 h 的物体在视平面上的投影是多高了。
这是正投影的做法,但是实际上人类的眼睛看到的世界不是这样的。把视平面当成是一个球面,每一点的计算公式仍然和上面的一样,这样计算出来的结果才能更准确地反映宽视角地情形,一般人类地视角是120度的,但是用正投影的话,视角一般只能设置到75度左右。
这就是为什么我们玩 CS 的时候总是觉得视角有点窄,看不到旁边的人的缘故缘故。 没有余光对人类来说是很不方便的。 在手机游戏里面广泛使用的视线跟踪算法,用的就是第二种算法。
远的东西看起来小是因为物距比较大,像比较小,视角是视力范围的衡量标准。
⑥ 在计算机中,算法是指什么
计算机算法是以一步接一步的方式来详细描述计算机如何将输入转化为所要求的输出的过程,或者说,算法是对计算机上执行的计算过程的具体描述。
一个算法必须具备以下性质:
(1)算法首先必须是正确的,即对于任意的一组输入,包括合理的输入与不合理的输入,总能得到预期的输出。如果一个算法只是对合理的输入才能得到预期的输出,而在异常情况下却无法预料输出的结果,那么它就不是正确的。
(2)算法必须是由一系列具体步骤组成的,并且每一步都能够被计算机所理解和执行,而不是抽象和模糊的概念。
(3)每个步骤都有确定的执行顺序,即上一步在哪里;下一步是什么,都必须明确,无二义性。
(4)无论算法有多么复杂,都必须在有限步之后结束并终止运行;即算法的步骤必须是有限的。在任何情况下,算法都不能陷入无限循环中。
一个问题的解决方案可以有多种表达方式;但只有满足以上4个条件的解才能称之为算法。
(6)以算法为视角扩展阅读:
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
算法可以宏泛的分为三类:
一,有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
二,有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
三,无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。
⑦ 如何计算视角
人眼到视平面的距离视固定的(视距),视平面左右两个边缘到人眼的连线得到的角度是视角。
一般我们设置视角来计算视距。
为了方便,我们一般取人眼位置为 z 轴原点,这样,物体距离眼睛的距离(物距)还有物体在视平面上投影的长度(像长)以及 物体的实际长度(物长)的关系就是这样:
像长:像距 = 物长:物距
即 像长 = 物长 * 像距 / 物距 (1)
假设我们的视角宽度用x方向(一般哺乳类都是如此,因为两眼是x方向排列的),那么有这样的关系:
(视平面宽度/2) /像距 = tan(视角/2)
于是:
像距 = (2/视平面宽度) * tan(视角/2) (2)
(2) 带入 (1)
就可以得到:
像长 = 物长 * (2/视平面宽度) * tan(视角/2) / 物距
这样我们就可以知道,当视角已知的时候,一个高为 h 的物体在视平面上的投影是多高了。
这是正投影的做法,但是实际上人类的眼睛看到的世界不是这样的。把视平面当成是一个球面,每一点的计算公式仍然和上面的一样,这样计算出来的结果才能更准确地反映宽视角地情形,一般人类地视角是120度的,但是用正投影的话,视角一般只能设置到75度左右。
这就是为什么我们玩 CS 的时候总是觉得视角有点窄,看不到旁边的人的缘故缘故。没有余光对人类来说是很不方便的。
在手机游戏里面广泛使用的视线跟踪算法,用的就是第二种算法。
远的东西看起来小是因为物距比较大,像比较小,视角是视力范围的衡量标准
⑧ 算法分析的目的是什么
算法分析的目的是,分析算法的效率以求改进。算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。
算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中,算法要用计算机算法语言描述,算法代表用计算机解一类问题的精确、有效的方法。
算法带来的影响
在大数据时代,数字已经成为敏感信息,更被大家关注。每个人只要是有关于信息的填写都开始变得谨慎起来。然而看起来如此小心的我们,却在不知不觉中陷入“算法崇拜”。算法就是以数据为基础的技术原理,很多人还不知道自己依赖了数字和算法。
比如早上很多会打开APP查看今天的天气,提醒穿什么衣服,出门要不要带伞。又比如打开地图,查看今天路上有没有堵车,是否限行等等。
这种行为主要是APP内核的算法导致的,是一种轻度的“算法依赖”,但是如果我们过度的依赖算法为我们的工作和生活做决策时,你可能就陷入了“算法崇拜”,被算法左右你的内心而迷失方向。
⑨ 如何深入理解无人机硬件与算法
常见飞行器机型系列告一段落后,MR.城堡专栏的“城堡里学无人机系列”将逐渐深入到算法、硬件、无人机设计等内容。首先面对的问题就是如何选择合适的“过渡切入点”,即如何找到一个切入点能够让喜欢无人机的朋友们容易过渡到无人机的专业内容,这个环节非常重要。因为大家虽然都很喜欢无人机,但现实情况是每个人的教育背景,对无人机的需求,看待问题和事物的习惯与角度等都有很大区别。
同样的,无论采用随身tracker还是内置传感系统的地面站式遥控器抑或直接采用手机,都可以传输回被跟踪目标的“外环状态信息”。
两者比较,形成状态误差,通过IMU等传感器反馈无人机内环姿态信息,与目标姿态形成状态误差,并以此计算得出控制量。
通过状态视角,可以很清晰的理解不同产品的硬件意义,并以此设计自己的无人机控制系统。
围绕着无人机状态反馈信息的处理和使用,算法可以走向两个不同的分支:数据融合(数据滤波)和自动控制。根据不同的状态特点,围绕数学模型建立系统框架,根据算法以及反馈状态信息的要求选择相关的硬件搭建无人机系统等内容是无人机控制系统设计的清晰脉络。MR.城堡会在后续系列文章中逐渐搭建这个系统架构中的各个部分,帮助不同行业喜欢无人机的朋友走入奇妙的无人机世界。
⑩ 算法管理:组织管理转型、企业高效决策的制胜利器
以下文章来源于蜜蜂学堂
“小李,你本周的表现非常出色。您的销售额增长了70%,从而帮助你的团队在排行榜中取得第一的好成绩。但是你仍然有很多开放的机会,所以请继续努力哦!”
接收绩效反馈有助于员工成长,它鼓励学习并奖励良好的表现。 但是,如果是算法提供反馈而不是人,该怎么办?这就是组织中算法管理的基础。
什么是算法管理?
算法管理是通过算法对员工进行战略跟踪、评估和管理。组织通过算法接管了过去由管理者执行的任务。
这种管理创新在零工经济中尤为常见。 例如,Uber,Deliveroo和UpWork之类的平台使用算法来管理和密切监视其全球员工。
算法给员工分配任务并评估其绩效。他们还提供反馈和有关如何提高绩效的建议。
但是,使用算法管理员工慢慢地不再局限于零工经济。传统组织越来越发现提高效率和以数据为依据的决策的好处。
大数据和自动化已成为大多数业务部门变革的首要方向,而人力资源部门也将其重点放在了数据驱动的决策上。
人力资源中使用的算法可以提高效率,甚至胜过人类的决策制定。 实际上,根据普华永道的研究报告,跨国公司中已有40%的人力资源部门使用基于AI的工具 (相关报告可以私聊我获取)。
例如,算法的使用在员工选拔中变得非常普遍,该算法被用于简历筛选,使求职者与职位匹配之中。
他们正在通过自然语言处理来分析视频面试中的面部表情或申请人的书面申请中所体现的动机。此外,算法还向员工和经理提供关于绩效方面的反馈。
随着算法在组织决策中的影响力越来越大,这样就容易导致一个问题:利用算法的决策是否具备相应的客观性和准确性?
像其它辅助决策的技术一样,算法决策也是一把双刃剑,它会带来一系列的挑战。
• 求职者会如何看待一家通过机器自动完成部分面试和人员选拔过程的公司?
• 员工对自动绩效反馈有何反应(反馈不再来源于直接上级)?员工在多大程度上会接受这类反馈?
• 管理者在多大程度上会依赖算法做出的决策?
事实是:实施算法会改变组织和人际关系的动态。 因此,必须仔细研究算法管理的优势和挑战,并搞清楚组织实现算法管理的最佳做法。
我们将在下面详细讨论在您的组织中实施算法管理的建议。
01
组织实施算法管理的三大优势
1.启动组织绩效
提高生产率和工作效率是算法管理的最重要优势之一。例如,一个小时内,比较算法与一个招聘人员可以扫描的简历数?
结果是:算法基本能把人类招聘者按在地上摩擦,两者之间的差异巨大,这样可以帮助公司在人才竞争中保持领先地位。
将手动的任务转变为自动化,将为管理人员腾出更多的时间和资源,以专注于有更高战略影响力的任务,从而帮助提高组织绩效。 未能将分析和人工智能集成到其战略事务中的公司将面临落后他人的风险。
欧莱雅集团,是一间总部位于法国巴黎的皮肤护理、化妆品公司,在全球拥有80000名员工,每个职位空缺平均会收到130份职位申请。
欧莱雅每年开放约15000个职位,需要处理近百万份申请,因此其开始尝试利用AI技术帮助招聘人员摆脱令人头痛的简历筛选工作。
Mya是一款聊天机器人,它能够处理候选人提出的问题,从而在招聘早期帮助欧莱雅节约大量宝贵的时间。 此外,它还能够检查各项重要细节,例如求职者是否尚未找到工作,以及签证的当前状态等。
接下来,求职者需要面对Seedlink,这款AI软件负责评估他们在开放式面试问题中给出的答案。 这款工具能够找到在简历评审过程中被忽略的求职者。
该公司招聘人员表示,在一次从12000名候选人中选出80名实习生的过程中,该软件帮助他们节约了200个小时的工作时间。AI技术帮助欧莱雅能够更快地招聘10倍的员工,并增加25%的求职者面试机会。
2.改善管理决策和远程管理
近年来,基于证据和数据驱动的决策已变得越来越普遍。算法可以帮助处理管理者每天面对的日益复杂的问题。算法系统的数据处理能力远远超出了人类的能力范围。
他们可以考虑所有相关数据并排除不相关因素。这样就可以进行客观、公正、数据驱动的决策。而且,它可以减少决策过程中的偏见。
例如,认知偏见可能会导致零售商相信需要对其员工进行不稳定的安排。零售中不稳定的安排是指零售商通过工作计划的变化来减少人工成本。
许多零售商认为这种类型的计划是有效的,因为他们看到了直接的短期收益(例如削减工资),却忽略了长期的负面影响(例如对客户服务的影响)。
在这里,可以根据客户流量和其他数据预测人员需求的算法开始发挥作用。 研究表明,“将算法与管理者的直觉相结合可以导致更好的人员配置决策”。
算法对于远程办公也可能是有益的。劳动力将变得越来越分散,在某种程度上,远程和混合办公将成为常态。
这可能给员工带来巨大的好处。但是,管理人员可能很难跟上员工的进度和绩效。 绩效监控算法可能是成功进行远程管理的重要工具。
3.接收个性化的见解和反馈
算法管理不仅为管理人员带来好处,而且为员工带来好处。算法可以提供个性化的绩效反馈。
Deliveroo向其快递员发送个性化的月度绩效报告。 他们获得有关其平均“接受订单时间”,“到餐厅的路程时长”,“到客户处的路程时间”以及算法跟踪的其他指标的信息。
算法可以洞察员工的工作进度、待办事项和开展的项目。它们还用于改善员工的福祉。 这种算法分析员工的需求和目标,并推荐培训和发展计划。
算法还可以跟踪和评估对员工的福祉和动力最重要的因素,在此基础上,他们可以就如何提高员工福利向管理人员提供建议。
02
组织运用算法管理的三个最重要的挑战
1. 关于算法管理的伦理问题
除了算法管理的好处之外,还有几个重要的伦理问题。
算法的主要目标是改进决策,使决策更加客观公正。然而,情况可能恰恰相反,由于算法可以消除或减少决策过程中的人工干预,因此,人们可能认为算法是不公平的。
主要的关注点是算法所依据的数据。在样本数据上训练算法来预测事件并做出决策,因此,数据的质量是一个重要的因素。
例如,一个组织可以训练一种关于历史人才数据的算法,在这些数据中,很少有女性担任管理职位,然后,该算法可能会做出预测:女性在公司管理岗位上取得成功的可能性较低。因此,女性可能被排除在组织的人才管理计划之外。
算法通常是在“黑箱”中操作,它们并不透明,而且算法的工作精度通常也不清楚。这可能会对算法的信任度提出挑战,并为算法的决策提出问责性问题。
美国一些州已经在研究算法和人工智能在招聘中的使用,以及如何确保它们的公平性和透明度。
纽约州正在立法,要求招聘技术供应商进行反偏见审计,并确保遵守就业歧视法。
伊利诺伊州颁布了 《人工智能视频面试法》 (AI Video Interview Act),对使用人工智能分析应聘者视频面试的公司施加了限制。
利用算法管理不是一个是或否的问题。通常,只有部分决策是自动化的。 因此,公平和责任问题取决于公司在多大程度上依赖算法决策。
真正的问题是:算法的作用是增强还是完全自动化?你是用算法来给你提供建议,还是用它来代替人类决策,这都是有区别的。
2. 算法管理挑战管理者和人力资源的角色
算法管理减少或取代了不同流程中的人工参与和交互。这对管理者和人力资源构成了挑战。当个人和同理心的一面消失后,员工管理会发生怎样的变化?
管理者和人力资源从业者都需要适应算法管理带来的新动态,他们需要新的技能和能力,为负责任地使用算法做准备。
管理者和人力资源管理者也需要采用(潜在的)员工的观点。例如,当候选人不相信算法能看出自己有多独特时,招聘中使用的算法可能会出现问题。
那么,管理者和人力资源部门如何面对算法管理运用后,带来的自动化程度的提高和人际交往的减少呢?
他们如何成功地创造数据驱动文化的变革呢?所有这些都是人力资源和管理人员必须找到答案的问题。
3.算法管理对员工福利的风险
算法管理也可能对员工的福祉构成风险。一些人将实时行为跟踪、反馈和评估与泰勒主义的监视进行了比较,算法管理可以被视为对员工的一种侵入式控制形式。
这似乎也与赋予员工更多自主权、灵活工作和时间表的趋势相冲突。公司必须密切关注员工对引入算法管理的反应。
一些员工可能认为这是对他们心理安全和自主的威胁,这样导致的结果是,由于引入算法管理,员工的幸福感可能会下降。
例如,一家国际连锁酒店使用软件工具来管理客房服务员。他们需要不断更新下一个要打扫的房间,该公司还能跟踪他们打扫一个房间需要多长时间。
然而,工作人员指出,该算法没有考虑到他们工作的细微差别,使工作变得更加困难。 他们变得无法安排自己的一天,工作也变得更吃力,因为算法“指挥着”他们“在酒店各个楼层里拼命的跑来跑去”。
03
实施算法管理的建议
好消息是:在减少算法管理挑战的同时,也有可能获得算法管理的好处。 以下策略可以帮助管理者负责任地在组织中实施算法管理。
1. 战略
首先,确定算法管理的使用程度是至关重要的。Gig平台完全依赖算法管理,但对于更传统的公司来说,这可能不是正确的解决方案。
因此,这不是非此即彼的问题,而是在哪里、在什么程度上的问题。
公司可以找出成本高且相对标准化的流程,并从那里开始。在那里,你可以期待算法管理能获得最大的收益。
在任何情况下,将算法集成到业务和决策过程中都需要一个明确的战略:确定它们是增强还是自动化人类决策。
2. 变革管理
在实施算法管理时,考虑员工的福祉也很重要。在组织中引入算法是一个实质性的转变,变革管理的视角可能会很有帮助,主动的变革管理是引入算法的决定性因素。
你需要确保已经做好变革的准备。通过帮助你的员工和经理理解算法所增加的价值,可以让他们准备好迎接变革。
人们也可能对算法管理的引入感到威胁。这可能是由于缺少关于算法管理的广泛且深入的交流。
同样,员工可能会担心机器正在取代他们,为了克服这一点,在变革过程的早期就把员工和管理者纳入进来是很重要的。建立开放的沟通渠道有助于解决人们所关心的问题。
这包括主动沟通数据的用途以及谁对算法决策负责。它可以防止员工或管理者感到自己被蒙在鼓里。
沟通和变革管理应该与培训齐头并进。培训可以让人们轻松地处理与算法的关系,并移交决策。
如果人们不了解算法是如何工作的,他们可能不想使用它。培训员工和管理人员使用算法所需的技能和能力是至关重要的。
3.不断评估
最后,公司需要采用一种持续评估的文化。跟踪算法的执行情况的必要性。只有当决策是准确的、高质量的,人们才会接受算法带来的附加值。
并不是每一种算法都能提高效率,所以监控其质量是很重要的。 这一变化对员工的影响也需要跟踪,组织可以为员工提供表达关切和提供反馈的机会,特别是那些由算法管理的员工。这为组织调整和改进算法管理提供了有价值的信息。
算法管理的好处以及它如何帮助企业在竞争中保持领先地位是显而易见的。
算法不仅能提高效率,还能增强决策能力。不过,这不应该以牺牲员工福祉为代价。
自动化执行的任务(比如提供反馈)代表了一个巨大的变化,但我们对把这种变化转变成积极和可持续的事情具有主动权,管理者和人力资源需要在创造变革准备方面发挥重要作用。
没有一刀切的方法,每个组织都需要仔细评估算法的引入给他们带来的好处和挑战。
本文提出的策略可以帮助指导组织完成这一转变。算法管理的前景是巨大的。然而,有必要始终关注组织所拥有的最有价值的资产: 我们的员工。
了解更多: 方云数字化创新绩效,数据智能驱动创新型增长