
一群收獲蟻生活在美國亞利桑那沙漠中,日復一日,收獲蟻都要外出尋找種子作為食物,并運回蟻窩。對于他們來說,找不到種子,寧愿餓死、累死也不回窩。然而,沙漠中的天氣有時會變得又熱又干,食物減少,死亡危險增加。斯坦福大學生物學Gordon教授發(fā)現(xiàn),每當這種天氣來臨,螞蟻們就會自覺減少外出覓食的數(shù)量。難道說,蟻群中有位管家每天都查看天氣預報,并且決定該派多少只螞蟻出門么?并沒有。
在蟻窩出口,等候外出的螞蟻排著長長的隊伍,每只回窩的螞蟻在放下食物之后,都會與排隊的螞蟻互相碰碰觸角。這些排隊的螞蟻會根據(jù)回窩螞蟻的數(shù)量和頻率來判斷自己是否需要外出覓食。天氣干熱,螞蟻找不到食物或者死掉,回窩的螞蟻就會變少,排隊的螞蟻就不會大量出動。所以說,單只螞蟻之間的交互決定了整個蟻群的覓食行為。一只螞蟻也許并不聰明,整個蟻群卻似乎擁有了智慧!
沙漠中有干熱的天氣,互聯(lián)網中也有宕機和過載。蟻群的目標是收集食物,避免螞蟻犧牲;互聯(lián)網的目標則是傳輸文件,避免網絡過載。斯坦福大學電子工程與計算機科學Prabhakar教授發(fā)現(xiàn),實際上,互聯(lián)網中的文件傳輸與螞蟻的覓食行為非常相似。
傳輸控制協(xié)議TCP會將文件分成眾多小包,這些小包叫做package。一些package會被先發(fā)出去,并且監(jiān)控是否被成功接收,成功則返回ACK碼,類似于郵件回執(zhí);如果宕機或過載出現(xiàn),很慢或無法收到回執(zhí),服務器就會減慢甚至停止隊列中剩余package的發(fā)送。
發(fā)出一個package就像一只螞蟻外出覓食,收到ACK回執(zhí)則類似于螞蟻找到食物回窩。螞蟻回來得又多又快,說明食物充足,那么就派出更多的螞蟻。ACK回執(zhí)快速及時,則說明網絡帶寬良好,那么趕快把剩下的package發(fā)出去吧。
蟻群依靠單只螞蟻之間的交互控制覓食行為,互聯(lián)網依靠單個package之間的發(fā)送與接收,控制擁堵和過載。不需要先知或強大的管理者存在,個體的簡單協(xié)作即可以控制群體行為。TCP協(xié)議的這個設計思想使得網絡具有了可伸縮性,使得任何網絡都可以連接到一起,成為今日互聯(lián)網的基石。
實際上,研究者們已經發(fā)現(xiàn)了很多生物系統(tǒng)與計算機系統(tǒng)間的相似之處。比如,粘液菌與網絡路由,蜂群與分布式搜索,塘鵝與空間分割算法等等。
下一次你在廚房里發(fā)現(xiàn)螞蟻的時候,別急著宣戰(zhàn)。單只螞蟻也許比較笨,但整個蟻群的能力不容小視,也許比你還要聰明哦。
編譯&語音:Mia
原作者:Rosie Cima
原文鏈接:http://priceonomics.com/the-independent-discovery-of-tcpip-by-ants/