1. 程式人生 > >【數學】從雞兔同籠談數學思維

【數學】從雞兔同籠談數學思維

    “今有雉(雞)兔同籠,上有三十五頭,下有九十四足。問雉兔各幾何。” 
    “雞兔同籠問題”是我國古算書《孫子算經》中著名的數學問題,意思是:有若干只雞和兔在同個籠子裡,從上面數,有35個頭;從下面數,有94只腳。求籠中各有幾隻雞和兔?

       如果看到這道題的你,首先想到的是二元一次方程,那麼我覺得你有讀下去的必要……如果你問兔子和雞分別都有幾隻腳,那麼歡迎你去瞅瞅,哈哈。

1.列表法

       沒錯,就是列舉,暴力破解,也是計算機中解決問題常有的思路。當第一組沒有雞有35只兔子的時候,一共有140只腳,跟94差的有點多,可以5只甚至10只的增加雞的數量,根據腳的數量再進行微調……


2.金雞獨立法
       讓每隻雞和兔子都做一個動作:用一半的腳站立。那麼,地上還剩94/2=47只腳,每隻雞有一個腦袋一隻腳,每個兔子有一個腦袋兩隻腳,47比35多出來的就是兔子的數,共12只兔子,也就知道23只雞了。

3.聽口令法

聽口令:所有小動物擡起一隻腳。地上還剩94-35=59只腳;
聽口令:所有小動物再擡起一隻腳。地上還剩59-35=24只腳。
雞已經騰空,兔子雙腳站立。於是24/2=12只兔子,雞23只。

4.可樂雞翅法
      雞有2只腳,兔子有4只腳,雞比兔子少兩隻,但雞有2個翅膀啊,假設把2個翅膀變成2只腳,那麼雞和兔子都是4只腳了,應該有35*4=140只腳,可實際只有94只,多出的140-94=46就是翅膀數,46/2=23只雞,也就知道12只兔子了。

       求解這道題的方法有13種不止。巧妙地利用頭、腳數量之間的關係,加上各種假設和想象,能夠組合出多種不同的思路。但說來說去都是數、數與數之間的關係,在數學上有集合有函式,在計算機上有資料結構有演算法,更多的大千世界都是基於這最本質的數和關係,而我們認識世界也是從這些開始的,程式設計本身就是用資料結構和演算法去描述現實世界裡的邏輯。

       或許你該問了,方程呢?怎麼一直沒提方程的解法,這大概是最簡單的一種解法了吧。對,通過方程求解可以免去逆向思考的不易,直接正向列出含有欲求解的量的等式即可。列二元一次方程並求解,無論是從複雜度還是計算量上都是最簡單的。但,能用方程求解這是一件很不簡單的事。

       思考:方程是什麼?
       是我們用來解決問題的工具,但我們常常利用工具代替了思考。有多少人離了方程竟解不出這道題來。久而久之,思考的能力沒有了,連益智的那些小問題我們都懶得去看,對於引發思考的好奇心也喪失了。這種好奇、想象、思維、甚至是善良,最本能的東西,不知道什麼時候弄丟了,當我們一邊羨慕著牛頓、萊布尼茲、祖沖之、貝葉斯等等,驚歎偉人的發明與創造,一邊哀嘆自己的智力有限時,我們萬萬沒想到,正是這些好奇、想象、思維、甚至是善良才是他們能夠發明創造的根本,當然再加上那一份亙古不變的執著……

      不能把自己侷限於使用工具,更是要明白工具從哪裡來,方程是怎麼來的,宇宙飛船著實厲害,但我認為寫下“嫦娥奔月”這一故事的人更厲害。如今我們不必去求π了,好多人便不知道什麼是割圓術了,這樣的例子不勝列舉。

       我們總會看到一些這樣的文章,比如《底層放棄教育,中產過度焦慮,上層不玩高考》,又比如《為什麼現代教育培養不出有見識的人》。我曾目睹有的家庭為了孩子能上一所所謂的好學校高價買學區房,也曾無數次聽到有人為了將來自己的孩子可以少考100分而上個好大學不惜重金去弄北京和天津的戶口。味道變了,因為我們都不喜歡數學了,不願意善良了……剛巧,昨天看到同事分享的一個笑話說,為什麼人們都不喜歡吃學習的苦,卻要吃生活的苦,答案是學習的苦要主動去吃,而生活的苦躺著就來了……

       學習很苦嗎?是的,因為我也曾厭惡數學,但此刻我深知數學的樂趣,方法對了,苦就變成了快樂。一切知識都是有巧勁的,不是生硬的公式和符號,數學是這樣,程式碼是這樣,英語也是這樣。希望把自己的一點大轉變和小感悟分享給更多願意學習並對數學依然抱有幻想的人。有空,去看一看e,想一想c,去聽一聽時間的形狀。