思路
这几天都在学习算法课程,突然打开了一些思路。
一、算法的特征
什么是算法?
算法就是有输入、有输出的解决问题的计算步骤。
我们一个例子,王婆特别会挑好吃的瓜,赵婆想跟王婆取取经,王婆就告诉赵婆三要素,第一颜色是深绿色,第二是重量更沉,第三是敲击的时候有清脆的声音。赵婆学会之后果然挑到了又大又甜的西瓜。作为算法工程师的你,如果想根据王婆的三要素完成一个自动挑瓜程序能不能完成呢?
我们发现挑瓜虽然是有输入有输出的解决问题的过程,但并能不能实现。深绿色翠绿色到底是什么程度?更沉究竟是多重?清脆声音是什么状态。对这种模糊的定义,人可以做事,但是机器不可以。可见算法对确定性有着极为严苛的要求。
总结算法的特征包含确定性、可执行性、有穷性,包含输入和输出。计算机程序能够执行必须是可执行和有穷的。
我们进行一个评价练习,同学们观看手中导学案上的两个菜谱,一个是拌黄瓜,另一个是烤蛋糕,请作为算法科学家的你分析一下,它们是不是算法。
拌黄瓜:1黄瓜若干根切块2加入蒜末少许3加入酱油少许3加入盐少许
烤蛋糕:烤蛋糕要输入15克黄油,30克面粉,要放进200度烤箱,烤20分钟。
其实两者都是算法,为什么拌黄瓜的输入条件是少许这种模糊概念也是算法呢?是因为我们想要的是一道拍黄瓜的菜,确定性是指输入的食材是确定的,有了这些食材一定能做出来一道菜。
而烤蛋糕的确定性是各种精确的数据,按照这个流程,不管是谁烤都能够输出相同的结果。同时还能够对这一过程进行算法优化,做出口感最好的蛋糕。
这就好比最好的中餐馆只能一枝独秀,因为优秀的大厨只有一位,而西餐肯德基麦当劳却能够进行连锁复制,也是同样的道理。
二、算法解决问题的步骤
分析问题-建立模型-选择算法
现实问题是没办法直接交给计算机的, 我们需要一个数学模型来与计算机建立“桥梁” ,可以说,建立模型的过程,也是把现实问题转化成算法问题的过程。
老师去北海药学院去学习,发现一个叫的“小蛮驴”智能小车,我们来看看它能够干什么。
现在我们学校也有一头小蛮驴,我们需要让它帮我们把一些物品从仓库送到信息科技教室,作为算法工程师的你,请为小蛮驴设计一个最短路线吧。
分析问题,建立最短距离模型
自然语言:第一步第二步第三步
导学案补充流程图
三、算法策略
算法工程师们都选择哪些算法呢?暴力枚举、迭代、分治还有动态分布等,这些算法策略我们在后面的内容会一一介绍。当然还有现在最火的推荐算法。为什么抖音会给你推荐喜欢的视频,淘宝回给你推荐你喜欢的物品,这些都依靠个性推荐算法。推荐算法在给我们带来便利的同时,也会让我们的视野变窄,享受在自己的舒适圈内,像一只蚕一样住在算法建筑的信息茧房里,自以为很生活很美丽。如何能打破这种恶性循环呢?可以做个实验,让任意两个人交换一下手机,查看大数据推送情况,就能发现一些之前从没见过的视频或者文字,所以,只有摆脱固定型学习思维,建立成长型学习思维,才能让算法更好的为人类所用。
总结,这节课大家学了哪些知识呢?相信大家对算法有了更深的理解。
我在最后还想和大家分享一个小故事。话说历史上最重要的物理学家之一,牛顿爵士,曾经养过猫。怕猫想进门的时候进不来,他在门上开了给猫专用的洞。有意思的是,牛顿开了两个洞,大猫走大洞,小猫走小洞。
你一听肯定觉得,何必呢,大猫小猫都走大洞不就得了吗?要照牛顿这逻辑,家里一百只猫,这门上不得有一百个洞。
你说的一点都没错,多个问题如果能用通用方案来解决,那我们就用一个方案就好了。这其实就是我们前面说的,算法工程师常常调用的一条思维习惯。你看,算法工程师的通用性思维,我们普通人也有。