给孩子的编程思维课-22小蚂蚁也会写算法?
在前面的课程里,我给你说了好多有意思的编程算法。这算法都是科学家和程序员们开动脑筋想出来的,是实打实的人类智慧。但今天我要跟你说的算法很不样,它是科学家从自然界中学来的,可以说是大自然的智慧。
可是问题来了,大自然怎么可能会编程呢?你还别说大自然不光会编程,而且绝对算得上是编程高手。
还记得咱们第一节课里说的吧,编程的本质其实就是让机器按照一定的规则自己去做事情。在大自然很多生物都是严格按照自己的习性生活的,习性就相当于他们必须去遵守的规则。所以你完全可以把些特定的生物看成是大自然编的程序。这些动物程序上就包含着特别厉害的算法。比方说科学家从蜜采蜜的过程中学到了蜂群算法,从生物遗传进化的规则上学到了遗传算法。
今天要跟你说的这个算法,是科学家从蚂蚁觅食过程中学到的,叫做蚁群算法。既然是从蚂蚁身上学的,咱们当然也得从蚂蚁说起了。你肯定知道很多种类的蚂蚁都是一大群生活在一起的。他们之间分明确,有负责生小蚂蚁的蚁后,负责守卫蚁巢的乙彬,还有负责修建蚁巢寻找食物的工蚁工。你找食的过程就像一支纪律严明的小军队。
最先出门的是蚂蚁中的侦察兵,他们一出一学呀,就会到处闻一闻有没有食物的味道。蚂蚁的嗅觉非灵敏,如果闻到了食物的味道,直接寻着味道找过去就行了。要是附近没有食物的味道,侦察兵们就自分头走远一点去碰碰运气了。一开始他们都是漫无目的地随处乱逛,可一旦发现了食物,他们就会紧跑回蚁穴请求大部队帮忙,我找到好吃的了,大家快跟我来搬。不过蚂蚁又没带地图,又没有手机位,它怎么能记住食物的位置呢?别着急,这只蚂蚁在回来的路上,一路上都留下了一种叫做信息素东西,想要重新找到食物,就只要顺着信息素走就可以了。当然了,发现这个食物的蚂蚁很可能不止只,他们也会一边释放信息素一边跑回以学习报告。但注意了这些蚂蚁回巢穴的时候,走的并不一定同一条路,而是你走你的,我走我的。
那咱们来假设一下,有一批蚂蚁侦查员分头去找食物,其中的一些找到了一大块食物,然后就各自回巢穴去报信。那他们是各自回去报信的,报信的时候,他们刚好是沿着两条路返回的这一条路长点,一条路短一点。好,现在问题来了……