最短路径:向蚂蚁学算法
Posted 白泉读书
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最短路径:向蚂蚁学算法相关的知识,希望对你有一定的参考价值。
整理:白泉
来源:白泉读书(ID:myheartmyhome)
蚁群寻找食物都沿着最短路径,即便遇到外界干扰,总能很快调整过来,找到最佳的路径。蚂蚁这种自我学习、不断修正、自我进化的能力,被称为蚁群算法。
一、蚁群行为
在自然界中,蚂蚊的食物源总是随机分散于蚁巢周围,在蚁群协调、分工、合作后总能找到一条通往食物源的最短路径。现实中,我们能观察到大量蚂蚁在巢穴与食物源之间形成近乎直线的路径,而不是曲线、圆等其他形状(见下图)。
蚁群不仅能完成复杂的任务,还能适应环境的变化,如在蚁群运动路线上突然出现障碍物时,一开始各只蚂蚁分布是均匀的,不管路径长短,蚂蚁总是先按同等概率选择各条路径(见下图)。
蚁在运动过程中,能在其经过的路径上留下信息素,并且能感知到这种物质的存在及其强度,并以此指导自己运动的方向,蚂蚁倾向于信息素浓度高的方向移动。在相同时间内较短路径上的信息素量就遗留得较多,则选择较短路径得蚂蚁也随即增多(见下图)。
不难看出,由于大量蚂蚁组成得蚁群集体行为表现出的一种信息正反馈现象在某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大,蚂蚁个体质检就是通过这种信息交流机制来搜索食物,并最终沿着最短路径行进(见下图)。
二、算法原理
算法有别于传统编程模式,程序是基于一定规则随机运行来寻找最佳配置,也就是说,当程序最开始找到目标的时候,路径可能不是最优的。但是,程序可以通过蚂蚁寻找食物时候的信息素原理,不断地去修正原来的路线,使整个路线越来越短,也就是说,程序执行的时间越长,所获得的路径就越可能接近最优路径。这看起来很类似与我们所见的无数例子进行归纳概括形成最佳路径的过程。实际上好似是程序的一个自我学习、自我进化的过程,这是算法。
拿蚂蚁寻找最短路来说,事实上每只蚂蚁能了解到的范围很局限,每只蚂蚁之间也没有直接的关系,但是每只蚂蚁都和环境发生交互,而通过信息素这个纽带,实际上把各个蚂蚁之间关联起来了。比如,当只蚂蚁找到了食物,它并没有直接告诉其它蚂蚁这儿有食物,而是向环境播撒信息素,当其它的蚂蚁经过它附近的时候,就会感觉到信息素的存在,进而根据信息素的指引找到了食物。
那么,蚂蚁究竟是怎么找到食物的呢?
在没有蚂蚁找到食物的时候,环境没有有用的信息素,那么蚂蚁为什么会相对有效的找到食物呢?这要归功于蚂蚁的移动规则,尤其是在没有信息素时候的移动规则。
首先,它要能尽量保持某种惯性,这样使得蚂蚁尽量向前方移动(开始,这个前方是随机固定的一个方向),而不是原地无谓的打转或者震动;
其次,蚂蚁要有一定的随机性,虽然有了固定的方向,但它也不能像粒子一样直线运动下去,而是有一个随机的干扰。这样就使得蚂蚁运动起来具有了一定的目的性,尽量保持原来的方向,但又有新的试探,尤其当碰到障碍物的时候它会立即改变方向,这可以看成一种选择的过程,也就是环境的障碍物让蚂蚁的某个方向正确而其他方向则不对。这就解释了为什么单个蚂蚁在复杂的诸如迷宫的地图中仍然能找到隐蔽得很好的食物。当然,在有一只蚂蚁找到了食物的时候,其他蚂蚁会沿着信息素很快找到食物的。
这一是要归功于信息素,另外要归功于环境,具体说是计算机时钟。信息素多的地方显然经过这里的蚂蚁会多,因而会有更多的蚂蚁聚集过来。假设有两条路从窝通向食物,开始的时候,走这两条路的蚂蚁数量同样多(或者较长的路上蚂蚁多,这也无关紧要)。当蚂蚁沿着一条路到达终点以后会马上返回来,这样短的路蚂蚁来回一次的时间就短,这也意味着重复的频率就快,因而在单位时间里走过的蚂蚁数目就多,酒下的信息素自然也会多,自然会有更多的蚂蚁被吸引过来,从而洒下更多的信息素,而长的路正相反,因此,越来越多地蚂蚁聚集到较短的路径上来,最短的路径就近似找到了。
也许有人会问局部最短路径和全局最短路的问题,实际上蚂蚁逐渐接近全局最短路的,为什么呢?这源于蚂蚁会犯错误,也就是它会按照一定的概率不往信息素高的地方走而另辟蹊径,这可以理解为一种创新,这种创新如果能缩短路途,那么根据刚才叙述的原理,更多的蚂蚁会被吸引过来。
三、人生算法
蚂蚁这种寻找窝和食物之间最短路的策略机制,就是一种不断自我进化的算法。
通常,人们对于人生成功的策略理解太简单了,认为成功的人都是找到了某种规律或秘诀(中国人传统里把这规律或秘诀称之为“道”),似乎只要找到“道”,人生所有的难题都迎刃而解。
有没有这种规律或秘诀呢?没有!那也就更没有因得“道”而直接登上人生巅峰的!人生就象蚂蚁寻找食物一样,只能通过不断学习、修正、进化,为自己不断增大概率,实现“迭代升级”。这大概就叫人生算法。
桥水基金创始人达利欧撰写了一本书,书名叫《原则》,书中分享了成功原则,他说:算法,就是在连续性基础上运行的原则。
巴菲特的搭档查理·芒格也说:当成功概率很高的时刻,下最大的赌注,而其余时间按兵不动。这说的也就是人生算法。
网络上有这么一个具体的问题,可以帮助我们更具体地了解人生算法。
问题是这样的——
假设你现在面对两个按钮:按下第一个按钮,直接给你一百万美元;按下第二个按钮,你有50%的机会拿到一亿美元,也有50%机会什么都没有。
这两个按钮只能选一个,你选哪个?
有人选第一个,理由是落袋为安,100万美元也不是个小数。
有人选第二个,理由是万一成功,从此就成了人生赢家。
但是,这道题的核心不是考这个,这道题是有唯一正确答案的。那就是要选第二个按钮——一半的机会拿到一亿美元。
你可以找到一个人并告诉他,我有一半机会能拿到一亿美元;如果你给我一百万美元,我就愿意把这个机会分享给你。你去按,什么也没有,你认倒霉,如果拿到了一亿美元,咱们一人一半。
有的算法,引入了风险,但没有风控机制,这只能初级;有的算法,引入了风险共担机制;有的算法引入了市场化机制。算法越迭代,成功的概率就不断地提高。
而当你掌握核心算法,所要做的事就是大量地重复这个动作。说得更简单一点,人生算法就是你面对世界不断重复的、最基本的路,找到它,重复它,强化它。
这样一来,你想要抓住的机会,就是大概率的事件。
↓↓↓
以上是关于最短路径:向蚂蚁学算法的主要内容,如果未能解决你的问题,请参考以下文章