你还以为程序算法很复杂吗,看看蜂群思维的妙用

你还以为程序算法很复杂吗,看看蜂群思维的妙用_第1张图片

【五、六只无名工蜂在前方侦察,核查可能安置蜂巢的树洞和墙洞。他们回来后,用约定的舞蹈向休息的蜂群报告。在报告中,侦察员的舞蹈越夸张,说明她主张使用的地点越好。接着,一些头目们根据舞蹈的强烈程度核查几个备选地点,并以加入侦察员旋转舞蹈的方式表示同意。这就引导更多跟风者前往占上风的候选地点视察,回来之后再加入看法一致的侦察员的喧闹舞蹈,表达自己的选择。

除去侦查员外,极少有蜜蜂会去探查多个地点。蜜蜂看到一条信息:「去那儿,那是个好地方。」它们去看过之后回来舞蹈说,「是的,真是个好地方。」 通过这种重复强调,所属意的地点吸引了更多的探访者,由此又有更多的探访者加入进来。按照收益递增的法则,得票越多,反对越少。渐渐地,以滚雪球的方式形成一个大的群舞,成为舞曲终章的主宰,最大的蜂群获胜】

这是摘录自凯文.凯利《失控》中的片段,它描述了蜂群是如何选择定居点的,它的神奇在于由一群低智商甚至白痴组成的选举行为,居然总是能得到了最优结果,这不能不说是对我们人类社会的民主选举的莫大讽刺。


那么,蜂群思维的选举决策过程到底有何决窍了,我们再仔细阅读一下会发现,其过程其实蛮简单的:

1.多只工蜂前往探路-------------调研过程

2.带回信息传达给其他成员-------反馈过程

3.更多工蜂加入验证反馈---------验证过程

4.按验证得票多少进行决策-------投票机制

始终遵循这一最简单的原则,然后通过收益递增的法则,最终找到了最优的方案


这个蜂群思维在现实中有哪些应用呢,我们不妨来看一个案例

问题:假设需要你开车从深圳到北京, 想一下,如果利用蜂群的选举决策的思维, 如何能找到一条最短路径?

照搬蜂群思维,你发现其实是这么干的:

1.同时派出N多台车从深圳出发,去往北京;

2.每台车到达目的地后反馈所用里程;

3.分类合并所反馈的结果;

4.对比各结果,挑出最短路经。

这其实就是一个程序算法里面最常见的遍历算法,可是如果你再仔细看看深圳到北京的地图,两地相距2275公里,连接两地各种道路不计其数,仅以国内范围的连接路径,穷尽的话可能有几十万条之多,那显然,这种遍历试错的成本是何其高啊。


那么我们应该如何优化,我们目前的地图导航软件又是怎么做的呢;

其实也还蛮简单的,类似下图,我们划一条深圳到北京的直线,然后再横切分段,就这样把一个远距离路径寻找变成多个短距离的路径寻找

你还以为程序算法很复杂吗,看看蜂群思维的妙用_第2张图片

然后这个算法就变成每个小段里面使用遍历办法来找到最短路径,最后再把每段最短路径组合起来,就成为了深圳到北京的最短路径

这样做最大的好处就是算法的计算量相比不分段大大下降了。


从这个简单的例子我们可以看到,自然界很多生物的简单的生存法则,实质上蕴含着高智慧的东西,我们学习过来并适度优化就能对我们人类有莫帮助。

同时,我们也看到,其实很多程序的算法并没有多复杂,多向自然界学习,留心观察生活,你才能具备化繁为简的能力。

你可能感兴趣的:(你还以为程序算法很复杂吗,看看蜂群思维的妙用)