倍可親

回復: 0
列印 上一主題 下一主題

法布爾的松毛蟲圓圈和死循環

[複製鏈接]

349

主題

354

帖子

1萬

積分

六級貝殼核心

Rank: 5Rank: 5

積分
11977
跳轉到指定樓層
樓主
深山蘭 發表於 2015-4-4 08:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
法布爾的松毛蟲圓圈和死循環


法國的法布爾是個昆蟲的觀察大師,不過,他的生物理論水平很低。他曾經用自己想到的例子,挖苦達爾文的演化論。不過,他實在沒有理解達爾文理論的硬核部分。

他有一篇專門描述松毛蟲行為的文章。我簡單敘述如下。

松毛蟲行走時,一定排出單列縱隊。最前面的一隻是領隊的。領隊的選取是隨機的。每隻松毛蟲走時吐出很細的絲線,後面的就頭頂著前面的尾,沿著地上的絲線行走。就是兩隻松毛蟲也一定遵循同樣的規則。只有前面的那隻領隊的,走時,經常要四處探頭,尋找路線,後面的只跟著前面的尾巴就行了。

松毛蟲隊伍絕對不會原地後轉,沿著絲線路往回走。

一天,法布爾在院里花盆下面的一隊松毛蟲爬上了花盆。法布爾決定作一實驗。當松毛蟲隊伍沿著花盆行走,隊伍在沿上形成一個閉合的圓圈時,他用毛刷子把後面多餘的毛蟲掃掉。這樣,每隻松毛蟲都認為自己不是領隊的,緊跟著前面的尾巴前進。

松毛蟲的行走規則就是:跟著前面的尾巴,一直前進。

計算機程序中,一個循環程序,如果設定的跳出循環的條件永遠無法滿足,那麼,該循環就永遠循環下去,沒有停止的可能。俺曾故意編造了這樣的程序,為了顯示程序在運行,比方設計其運行結果是要輸出某種數值,一運行該程序,發現計算機顯示屏上,數據一閃而過,像流水一樣,飛速前進,永無止境。這就是計算機進入了死循環的結果。要想停止該程序的運行,必須強制中斷運行,就是「殺死」該程序。

那麼,松毛蟲的死循環會怎樣結束?

松毛蟲隊伍第一天里走了十幾個小時,不停止。晚上,溫度低,松毛蟲累了,時走時停。最後,捲曲了身子,停下取暖。第二天,溫度上升了,松毛蟲隊伍再次轉圓圈。

第三天,松毛蟲和第二天一樣轉圓圈。不過,晚間很冷,盆沿上的毛蟲分成兩堆,擠在一起取暖。

第四天,幾乎還是一樣的。

後來的一天,晚間很冷,松毛蟲擠在一起,有幾隻被擠出了花盆沿。那幾隻跟著一位新領袖,下去了。餘下的毛蟲,仍然在轉圓圈。因為少了7隻毛蟲,毛蟲隊伍在花盆沿上不再是一個圓圈,有了缺口。這樣,毛蟲隊伍就有了一個領隊的。

在實驗的第八天,天氣很熱,毛蟲隊伍在領隊的帶領下,離開了那條絲線圓圈,下到了盆底下。最後,回到了毛蟲巢里。

毛蟲不是機器,總會打破規則,最後才衝破了死循環,回到了家裡。

法布爾估算了一下,那隊松毛蟲大概共走了48小時,行進了250米左右。不過,他的實驗也證實了,毛蟲在8天的時間裡,沒有吃任何食物和水,也沒有餓死。

計算機進入了死循環后,永遠運行,最後的結果會怎樣?應當是在相當的長的時間裡,某部分硬體壞掉,程序停止。或者,硬體沒壞,但程序自己癱瘓了。


您需要登錄后才可以回帖 登錄 | 註冊

本版積分規則

關於本站 | 隱私權政策 | 免責條款 | 版權聲明 | 聯絡我們

Copyright © 2001-2013 海外華人中文門戶:倍可親 (http://big5.backchina.com) All Rights Reserved.

程序系統基於 Discuz! X3.1 商業版 優化 Discuz! © 2001-2013 Comsenz Inc.

本站時間採用京港台時間 GMT+8, 2025-10-6 23:18

快速回復 返回頂部 返回列表