搞软件的,经常提到算法这个词。而且大家都对算法推崇备至,今天简单聊一下算法究竟是干嘛的?解决什么问题?

 

首先从宏观上了解下,这个最好理解。我从几个案例来分析下,目的是让你知道为什么搞软件需要用到算法。

 

思考下面案例时,大家不妨把自己代入去替代CPU,或者说替代算法程序,去思考下如果是用你的脑子来思考决策,你会怎么做?实际上你的思考和决策的过程就是你大脑里的算法在运行。

 

案例1 路径规划问题。

 

已知一张地图,然后我们在A点,要去B点,应该走哪一条路?

 

大家都用过高德或者百度地图,对这种场景很熟悉的,这就是个典型的算法问题。这个问题的复杂之处就在于实际要考虑很多因素,譬如各路段的拥堵情况,譬如是否走高速,譬如我开车还是步行,这些条件都会作为算法要考虑的参数。

 

如果你要做一个导航产品,你能不研究路径规划算法吗?不搞定这块,你的产品怎么智能化起来?

 

案例2 手机手表计步功能问题。

 

现在智能手机和手表都带了计步器功能,准确度其实挺高的了,但是前几年刚出来时实际上精确度参差不齐。

 

实际上计步器就是通过各种传感器的数据,来综合处理判断这个人究竟有没有走步。可以使用到的传感器主要是陀螺仪加速度传感器。大家可以理解为就是个MPU6050,玩过四轴的同学都熟悉。

 

陀螺仪能告诉你姿态变化,加速度传感器能告诉你加速度变化,这两个值本身对你的运动都很敏感,传感器本身零度也很高。

 

但是问题是你怎么从这两个值能得到人到底走没走?走了几步?这就需要算法。你的算法效果越好则测到的步数越准,不会遗漏,也不会多算。而且还要考虑算法本身的复杂度,计算所需要的运算量,功耗等。

 

最好的算法的标准就是,消耗更少的输入数据和功耗,运算量,运算时间,得到最精准高效的结果。然而现实中不可能有各方面都最好的算法,总是要做一些取舍。

 

案例3 电动汽车电机控制器

 

电动汽车用电机驱动,这个和传统的燃油车完全不同。大家如果开过两种车,做个对比就会发现“手感”是不同的。

 

传统燃油车的核心技术是发动机和变速箱,这个大家都听过。那为什么是这两个?难在哪里?你想想,汽车那么重,路况又复杂,燃油发动机产生的燃烧动能在变速箱和一系列加减速齿轮的作用下,要输出平稳的动力,让汽车能正常运行,这多难啊,这其实就是一套“机械实现的运动控制算法”。

 

而电动车呢?也需要这一套算法,甚至需要考虑“动能回收”等更复杂的功能。难不难?在计算机领域算挺难的,但是和燃油发动机相比其实难度大大降低,这也是为什么汽车电动化有助于国产汽车崛起的一大原因。

 

电机控制的应用场景很多,譬如吹风筒,各种机器设备等场景和具体要求完全不同,所以需要应对的问题和算法策略也不同,这就是为什么需要很多开发电机控制算法的人。

 

还有很多案例,譬如电动车的电池充电问题,手机的自动锁屏自动检测人脸验证开锁问题,汽车的空气悬架问题,甚至喷水马桶怎么洗干净屁股的问题,等等都是算法问题。

 

所以做算法有很大需求,可以说智能化的本质,就是玩转传感器和算法。