第三章 螞蟻搬東西(算法)
一堆螞蟻要把一堆東西給搬回窩里。
螞蟻王此刻對大家下令:“現(xiàn)在洞穴里食物的量快不夠用了,我命令大家要出洞尋找食物?!?p> 這時螞蟻按照往常的習(xí)慣,每個螞蟻分成各路不同的隊伍,然后往各個方向去看看哪里有食物。
螞蟻甲年紀(jì)比螞蟻乙小,對很多事情都還不了解。螞蟻甲說:“為什么尋找食物要一個隊伍一個隊伍的出動呢?一個螞蟻不夠嗎?”
螞蟻乙說:“派出隊伍而不是單個螞蟻的原因,是因為隊伍除了能抬比較重的東西以外,還可以讓剩下的螞蟻看看周圍是否還有其他食物,同時也能為其他方向的螞蟻報信,讓更多的螞蟻來到這里來搬食物?!?p> 螞蟻甲說:“這個事情會有分工嗎?”
螞蟻乙說:“沒有分工,全部都靠自覺。發(fā)現(xiàn)食物的直接搬走,一個人搬不動就會有其他人來幫忙。剩下的人繼續(xù)尋找,或者去其他地方去報信?!?p> 所以在周圍的很多各種各樣大小的食物,都會被螞蟻搬得一干二凈。
螞蟻的洞穴十分繁雜,螞蟻社會在里面生生不息忙碌不止。
螞蟻甲看到每隔很長時間過去,不同的地點都要各種螞蟻的尸體,很多都是老螞蟻死了,或者是有些螞蟻因為生病或事故是死。
螞蟻甲對螞蟻乙說:“這些尸體看起來又多又亂,哪里都是。一開始在少的時候,還沒有什么影響。但是要是多了的話,就會堵上我們的路。”
螞蟻乙說:“我們要經(jīng)常清理螞蟻的尸體的,這些尸體要統(tǒng)一的放在一個固定的地方,然后讓他們自己銷毀?!?p> 螞蟻甲說:“有對于整個洞穴里各個尸體清理的快速辦法嗎?”
螞蟻乙說:“當(dāng)然沒有了。只能是每個螞蟻都形成一種習(xí)慣,看到尸體就往附近的堆積尸體的房間內(nèi)放置就行,不需要每個螞蟻抬著尸體往某一個地方放。慢慢的,在蟻穴各個不同的地方,就會形成各種堆積起來的螞蟻尸體?!?p> 螞蟻甲說:“誰負(fù)責(zé)規(guī)定應(yīng)該往哪里聚焦呀?我沒有看到有其他人規(guī)定過。”
螞蟻乙說:“沒有人會負(fù)責(zé)指定搬運螞蟻的尸體,而是大家自發(fā),大家的原則就是,哪里相對被搬運的尸體多,附近的人就會把尸體往這個地方放而堆積起來?!?p> 螞蟻甲明白了這種合理的自發(fā)性,同時人類也從中學(xué)習(xí)到了蟻穴算法。