愚笨但是有效的「窮舉法」

在「運算思維」中有一種笨笨的、但是卻有效的方法叫做「窮舉法(Exhaustive Algorithm)」,它又稱做「蠻力法」或「暴力法」。它的概念其實很簡單,就是逐步測試,直到找到答案。舉例來說,一具行李箱上有個五碼的數字鎖,編號從可以從0000到9999,而如果要用窮舉法來打開它,就是從0000開始,0001、0002…逐步測試,只要時間足夠,最終將可以找到答案。

這樣的作法看起來很愚笨,但如果想要解決的問題簡單,運算效率又很高超,或者時間足夠,窮舉法終究能夠解決問題。就像我們常在電影情節裡看到的,在破解數字密碼時,破解機器上的數字飛快運轉,往往很快地就測試出正確的密碼。

小時侯,我們都讀過「窮舉法」最著名的軼事,就是愛迪生發明「白熱燈泡」的過程,當年愛迪生在還沒發現鎢絲是最佳材質之前,就曾試用過各種材料企圖讓燈泡發光,其中包括非金屬的竹子、紙張、泥土和金屬的各種材質。人家問他為什麼這麼蠻幹?他的回答卻是「經過這些測試,我起碼知道哪些材質是不導電、不發光」,只是後來愛迪生為什麼幸運找到鎢絲,卻沒有明確記載。

所以,窮舉法就是從所有可能的情況裡,搜尋出正確答案的過程。它還有一定的步驟,說明如下:

1.列出問題背後所有可能的解答。例如,密碼鎖的解答為0000~9999。

2.對每個解答進行確認,判斷是否符合要求。例如,從0000開始,看看鎖能否解開,以此類推。

3.如果符合要求,該答案便為問題的解答。如果不符合要求,就進行下一次的判斷。例如,假設開鎖密碼為1234。轉到1234即可符合要求的解答。

從以上的敘述中可發現,在使用窮舉法之前,要確認答案有明確的範圍(例如,0000~9999),這樣才有辦法搜尋出解答。

此外,窮舉法這種思維模式,可以應用的地方非常多。舉例來說,假設我們在自己的房間裡,想要找到那把一定存在於房間某個地方的鑰匙。這時,透過窮舉法的概念,我們將房間的平面圖用切豆腐的方式,切成一小塊一小塊,接著用「地毯式」搜尋的方式,一定能找到那把鑰匙。所以,當解決問題的線索不夠時(例如,只需要確認鑰匙一定在房間裡),窮舉法常常是適用的思維。

另外,再舉一個商業上窮舉法的應用案例。筆者曾經聽一位經營遊艇的朋友說過,日本人在驗收所購買的商品時,會拿出鉅細靡遺的驗收本,並依照窮舉法的邏輯逐項進行驗收。

舉例來說,在遊艇的駕駛座的面板上,四個角落分別有一個十字螺絲。該驗收本上,不但會載明有無螺絲?螺絲是否栓好?螺絲顏色是否符合規範?甚至四個角落的十字螺絲,螺絲上的十字刻紋,是否剛好都像座標軸一樣,整整齊齊。驗收人員還會拿著直尺,對四顆螺絲的十字刻紋進行丈量,確保畫出來的虛擬線條呈現出正長方形,四個角都是90度,如圖1所示。

圖1 驗收遊艇駕駛座面板上,四個角落的十字螺絲

總而言之,透過窮舉法來進行驗收,雖然會消耗大量的時間,但卻可以確保品質。同時,窮舉法看起來很愚笨,但卻頗有效,值得大家學習與應用。

作者:羅凱揚(台科大企管系博士)、蘇宇暉(台科大管研所博士候選人)
繪圖者:謝瑜倩

更多商普好文推薦

回到頂端