• 沒有找到結果。

淺談「窮舉法」 陳偉康

N/A
N/A
Protected

Academic year: 2021

Share "淺談「窮舉法」 陳偉康"

Copied!
5
0
0

加載中.... (立即查看全文)

全文

(1)

淺談「窮舉法」

陳偉康

香港教育學院數學與資訊科技學系

說到以窮舉法來解決數學問題,大家都會感到既麻煩、複雜,又相當 費時。但事實上,在解決很多日常生活中的(數學)問題時,窮舉法可能是最 簡單,又或者是唯一的方法。當然,我們日常使用窮舉法,都只能解決一 些規模較小的問題,在一些規模相對較大的問題時,我們則要使用電腦協 助計算。而有效運用窮舉法,就是學生必須掌握的解難策略。

在本文章中,我將透過兩個大家熟悉的問題,跟大家探討窮舉法的使 用。

問題一:過河問題

圖片源自 http://www.plastelina.net/game1.html

以上是一個大家很可能玩過的遊戲,船夫每次只能把狼、羊或菜送到 對岸,但當人不在時,羊會把菜吃光,狼又會把羊吃掉。這遊戲是要求玩 家控制船夫,把狼、羊及菜都安全送抵對岸。回答這個問題分兩個層次,

第一,能否完成任務?第二,若能夠,如何以最少的來回次數完成?

岸 A 岸 B

(2)

(1) 以 A 及 B 表示兩岸,圖的左為岸 A、右邊為岸 B。首先考慮船夫在岸 A 時,岸 B 可能出現的情況(見圖一)。

圖一

因岸上有狼、羊及菜,本應共有八個不同的狀態,但若船夫不在場時,

首三個狀態是不可能出現的,故此,這些狀態可以剔除。同樣地,當 船夫在岸B 時,岸 A 也只可出現相同的五個狀態。

(2) 我們把該十個狀態繪畫在圖二中,並以直線把「彼鄰」的狀態連接。(即 船夫從岸A (B) 划船到岸 B (A) 一次,其中的一個狀態便轉換到另一 個狀態。)例如:狼在岸A,船夫、羊及菜在岸 B;船夫運菜到岸 A,

岸B 只剩下羊;這時,岸 A 的狼(狀態四)與岸 B 的羊(狀態三)稱 為彼鄰,兩者以直線連接。結果,我們可繪出下圖:

(3)

圖二

(3) 剩下來的就是從岸 A 的狀態五(即船夫、狼、羊及菜都在岸 B),以最 少的划船次數,移至岸B 的狀態五(即船夫、狼、羊及菜都在岸 A)。

完成這個步驟,我們需要運用『圖論』中尋找最短距離的算法,這個 算法便用上窮舉的概念;簡單來說,就是把所有可能性羅列出來。下 表展示整個運算過程:

B 二 A 四 A 五 B 一 A 三

B 四 A 二 B 三 A 一 B 五 表一

首先把「A 五」放於上表的最左列,然後把所有與「A 五」彼鄰的狀 態(只有「B 一」)放於第二列;再把所有與第二列彼鄰,而又未在表 上出現的狀態,放在第三列。如此類推,直至「B 五」(即目標)出現 為止,便找到答案。按表一所列的結果,船夫要完成任務,最少要划 船七次,並有兩個不同的最優答案。

問題二:量水問題

岸 A 岸 B

狀態

(4)

我們先解決第一部分:若注滿 3 加侖的膠桶 n 次,及倒去 m 次 5 加侖水,剩下在膠桶中的水應為 3n 5m;相反,注滿5 加侖的膠桶 n 次 及倒去 m 次 3 加侖水,剩下在膠桶中的水應為 5n 3m。不管是以上哪個 情況,剩下的水的體積皆為 3 及 5 的線性組合,即必為 3 及 5 的最大公因 數的倍數(這是基礎數論中的結果,我們在此省略)。因3 和 5 的最大公因 數為 1,而 4 是 1 的倍數,故此,任務必能完成。剩下來的就是如何以最 少次數量得4 加侖水?

這又是窮舉法出場的時候,我們以

[ ] x, y

表示 3 加侖及 5 加侖水桶分 別載有 x 及 y 加侖的水,並假定兩個膠桶最初都是空的,即開始時

= 0

x = y (見表二中的第一列),再窮舉出往後的可能性。

第一步,我們只要考慮把水注滿兩個桶的其中一個,這時只可能出現 的只有 [3,0] 及 [0,5](見表二中的第二列)。其後考慮把水從載有水的桶 中,倒掉或倒進另一個桶,及把水注進未滿的水桶,最多共有 6 個可能。

而在較前列曾出現的狀態,毋須重覆列出。即考慮緊接 [3,0] 之後的狀態 時,因 [0,0] 已在表中,我們不需再列出把 3 加侖桶中的水倒掉的情況。

同時,因 3 加侖的水桶已滿,再無法注水。故此,剩下來的就只有把 3 加 侖桶中的水倒進 5 加侖的桶中,得 [0,3] 及 把水注入五加侖的桶中,得 [3,5]。按這個原則,把往後可能出現的狀態逐一列出,直至其中一個桶中 出現4 加侖的水,任務則告完成。

[0,3] [3,3] [1,5] [1,0] [0,1]

[3,0]

[3,5]

[3,5]

[0,0]

[0,5]

[3,2] [0,2] [2,0] [2,5] [3,4]

表二

從表二可見,使用兩個分別 3 加侖及 5 加侖的水桶,最少只須六步,

便可量出4 加侖的水。

以上的兩個都是人所共知的數學遊戲,我們都可使用窮舉法,尋找它 們的最優解,並且計算過程也毫不繁複。這說明只要找到一個具系統性的

(5)

參考資料

Enumerate。《國防科技大學 ACM/ICPC 高級演算法程式設計競賽線上判題系統》,

http://acm.nudt.edu.cn/~twcourse/EnumerateSearch.html。

Wolf sheep & cabbage. Plastelina. http://www.plastelina.net/game1.html 最短路問題。《維基百科》,http://zh.wikipedia.org/zh-hk/最短路問題。

《批踢踢實業坊》,http://www.ptt.cc/bbs/logic/M.1155913409.A.576.html。

Die Hard with a Vengeance. Wikia.

http://diehard.wikia.com/wiki/Die_Hard_with_a_Vengeance

作者電郵:[email protected]

參考文獻

相關文件

上課時,你總是自 動的舉手想回答老師 的發問問題,上課態 度認真又專心,真是 個好孩子!皆下來的

2-1 化學實驗操作程序的認識 探究能力-問題解決 計劃與執行 2-2 化學實驗數據的解釋 探究能力-問題解決 分析與發現 2-3 化學實驗結果的推論與分析

推理論證 批判思辨 探究能力-問題解決 分析與發現 4-3 分析文本、數據等資料以解決問題 探究能力-問題解決 分析與發現 4-4

在選擇合 適的策略 解決 數學問題 時,能與 別人溝通 、磋商及 作出 協調(例 如在解決 幾何問題 時在演繹 法或 分析法之 間進行選 擇,以及 與小組成 員商 討統計研

她寫道,當我們在生活中最想做的事情也是我們的義務時,最能 感受到 Ikigai 。關於 Ikigai ,感受就是最誠實的,如果我們知道如何

每本主題冊會提供一些探討該冊主題內容的建議問題,列舉主題冊內容大綱及學生在

• 當我們在歸類一個問題為 問題時,等於不在乎他的複雜度是 還是 之類的,只要是多項式時間就好。.

這些問題目前尚未找到可以在 polynomial time 內解決的 algorithm.. 這些問題目前尚未被證明無法在 polynomial time