倒水問題(《怎樣解題》中的經典問題)


[問題]有兩個容桶,小桶的容量是4升,大桶的容量是9升,怎樣才能從河中恰好打上6升水呢?
[解析]
       方法1:規約法(以下內容引自《How To Solve It》)
             讓我們弄消楚所給定的工具,我們必須用這兩個容器來工作(已知的是什么?)。
             目前我們還不知道怎樣去量出恰好6升,但我們是否能測量其他某個東西?(如果你不能解決所提問題,首先去解決某個與此有關的問題。你能從已知數據導出來些有用的東西嗎?)
             讓我們做點事,我們能夠把大桶裝滿,然后倒掉小桶那么多;這樣,我們就能夠得到5升水。我們能不能也得到6升水呢?
             當碰到這個難題時,我們就像絕大多數人所做的那樣。我們從兩個空桶開始,試試這個,試試那個,我們倒空又裝滿,而當我們不成功時,我們重新開始,試試別的做法。我們在向前干,即,從給定的初始情況到所期望的最終情況,從已知數據到未知數。經過多次試驗,我們偶爾也會成功(正向試錯)。
             但是有卓越才能的人,或者從數學課中所學到的不僅僅是套公式演算的人,不會在這種試驗里浪費太多的時間,而是回過頭去開始“倒着干”。
             要求我們干的是什么?(未知數是什么?)讓我們盡可能清楚地想象一下我們所要達到的最后解答是怎樣的。讓我們設想,在我們面前,大桶中正好有6升水,而小桶空空如也(讓我們“從所要求的開始,並設所要求的已求得”)。
             從前面什么情況我們能夠得到期望的最終情況呢(讓我們“研究從什么前項可導出所求結果”)?當然,我們能夠灌滿大桶,即灌到9升。
            但是,接着我們應該能夠正好倒掉3升。而為了做到這點,我們必須在小桶中正好有1升水!這就是念頭。我們剛才所完成的一步全然並非易事。很少人能夠毫不猶豫地想到它。事實上,認識到這一步的意義,我們就可預見到下面求解的一個梗概。
           可是我們怎么達到剛才的情況呢?讓我們“再進一步研究,那個前項的前項是什么?”我們想,於是小桶有1升水可以轉化為大桶有1升水,而后大桶倒到小桶里。怎么能讓大桶剩1升水呢?我們已經遇見過類似的情況,即我們把大桶裝滿水,然后倒出4升給小桶,再由小桶倒入河中,這樣接連干兩次。我們“最后終於碰到某個已知的東西”並且隨着“倒着干”的分析方法,找到了適當的操作序列。
方法2:窮舉法
           其基本思想是:將小桶灌滿后,將其中的水全部倒入大桶,如果在倒入大桶的過程中大桶滿了,則將大桶倒空,繼續將小桶中的水全部倒入大桶。持續這一操作直到大桶中水的體積等於目標體積為止。(也可以從大桶向小桶中倒水,原理是一樣的)
          其數學計算過程為用小桶容量的倍數對大桶的容量進行取余:
          4 % 9 = 4
          8 % 9 = 8
          12 % 9 = 3
          16 % 9 = 7
          20 % 9 = 2
          24 % 9 = 6
          成功得到6升水。
          要注意像用2升的桶和4升的桶得到3升水這種不可解的情況,這種不可解情況在用上面的方法進行計算時會得到循環數列。其根本原因是兩個桶容量的大於1的最大公約數無法被目標體積所整除,如6升的桶和9升的桶無法得到2升水,因為6和9的最大公約數3無法被2整除。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM