新聞| | PChome| 登入
2026-03-09 23:11:51| 人氣35| 回應0 | 上一篇 | 下一篇

祖母教我的數學課 第四章 看不見的空間利用

推薦 0 收藏 0 轉貼0 訂閱站台

「生活就像一個袋子,如果你先裝滿了沙子,就再也放不進大石頭了。但祖母知道,只要順序對了,什麼都裝得下。」

在那個紅白塑膠袋也不隨便浪費掉的年代,如何在現成的袋子裡裝進最多的商品,或者非得使用到塑膠袋,怎麼使用適當的大小與擺放,不僅是一種節省,更是一種對於資源配置的基礎訓練。

 

雜貨店裡的俄羅斯方塊遊戲

我喜歡看祖母整理貨架,特別是那些圓滾滾的米酒瓶和醬油罐。

想像在我還不太懂事或沒經驗的時候,被祖母叫去排好一堆圓瓶子,最直接的就是讓酒瓶直直地站立著,再一瓶一瓶排進去。也可能會像排磚塊一樣,把瓶子橫著排成整齊的方陣:第一排十個,第二排就直直地疊在第一排的正上方。。

在數學上這是簡單立方堆積 (Simple Cubic Packing) 的方法。

但祖母從不這樣做,她搖頭說:「怕地震,這樣做毋得。」

 

她會把第二層的瓶子,輕輕放在第一層兩支瓶子中間的凹下去形狀裡,那就像個山谷。

一層錯開一層。每一支瓶子都能落在兩支瓶子上,看起來省了很多空間也是一種平穩堆疊。

當整面牆的酒瓶堆起來時,那像是一個蜂巢。不僅看起來漂亮,而且穩固。

地震來的時候,這種結構會互相卡住,不容易倒塌,是祖母的智慧。

 

克卜勒定理

當時的我並不知道,祖母的這個動作,與數學史上一個懸宕了四百年的大難題有點關係——最初稱之為克卜勒猜想 (The Kepler Conjecture)

1611年,天文學家克卜勒在觀察船員堆疊砲彈時提出:在三維空間中,要讓同樣的球體堆得最密,最好的方法就是像堆橘子(或祖母堆酒瓶)那樣的錯位堆疊。

這種堆疊法的空間利用率,相同體積的圓球的最密堆積大約是 74%。 (= π/18 ) )

而那種直直堆疊的方法,利用率只有 52%。也就是說,祖母的酒瓶堆法多出不少空間效益!

另一方面,數學家們花了四百年,直到 1998 年托馬斯·黑爾斯(Thomas Callister Hales)藉由費耶斯‧托特(Fejes Tóth )1953年所提出的方式,提出了一個關於此猜想的證明。黑爾斯利用窮舉法(Proof by exhaustion)的方式透過超級電腦的運算,證明這個猜想的上限值。但是審稿者用了很長的時間也不能確定這個證明對不對,只說他們對於其正確性有99%的確定性。

後來 2003-2014年間由黑爾斯引導的 Project FlysPecK (Formal Proof of Kepler) 完成了對克卜勒猜想的形式化證明,使猜想成為了克卜勒定理。(可以探查二十世紀開始利用電腦進行證明的文章) 。

 

這個定理在它還是猜想的時代裡,甚至於啟發早期原子論(中古世紀時期)的建立。

 

而在嘉里村的雜貨店裡,這不需要證明,這是生存本能。因為店面很小,每一寸空間都要精打細算;因為玻璃很脆弱,每一支瓶子都要在地震繁多下找到安穩的存活方式。

祖母憑著直覺在實作上(當然有可能是看到別人使用但她選擇了沿用),提高空間利用率,而且經過非常多次的地震測試,酒瓶的損失不大,這也是一種”恃吾有以待之”。

 

大石頭與小沙子

除了堆疊,祖母的空間智慧更展現在客人貨物的裝袋上。

這對應到另一個著名的數學難題——裝箱問題 (Bin Packing Problem),目標是將不同大小的物品放入有限數量的固定容量容器中,並最小化使用的容器數。但是,這個裝袋的技巧也同時還有其他數學上的意義---它是個 NP 完全問題。(NP *Non-deterministic Polynomial time) 是指可以在多項式時間內驗證答案的問題,NPC (NP-complete) 是 NP問題中最難的,如果可以解決 NPC,那就可以解決 P=NP 這個千禧年七大難題之一(懸賞一百萬美金!) 

 

有一次,一位從外地來的客人買了一堆東西:幾包蓬鬆的衛生紙、一罐硬邦邦的奶粉、幾包脆麵,還有一袋散裝的雞蛋。

如果是祖父,他大概會拿兩個袋子,一袋裝硬的,一袋裝軟的。

但祖母只拿出一個大袋子。

她的動作就像是在一個建築工程案場的順序(她的曾孫女學了建築),

  1. 打地基: 最重、最硬的奶粉罐先下去,撐開袋子的底部,創造出一個穩定的平面。

  2. 立柱子: 長條形的醬油瓶直立在角落,像柱子一樣撐起袋子的高度。

  3. 填縫隙: 把那些包裝軟軟的味精、方塊酥,塞進圓罐子與圓罐子之間的空隙裡。那些本來會被浪費掉的死角也被填滿了。

  4. 鋪頂層: 最後,脆弱的雞蛋和最輕的衛生紙,像皇冠一樣放在最上層。

當祖母把袋子遞給客人,那個袋子裝得飽滿紮實,提起來不會晃來晃去,重心穩得很。

這也是數學上的貪婪演算法的變形:先處理最大的物件

但不是說先處理最大體積的物品就是正確的。真實的物理特性上,如果我們先裝衛生紙(大體積低密度),但袋子底下是輕的物品,其他重物如奶粉罐就會壓於其上,反倒是另外一個問題了。如果我們先裝雞蛋,那上面什麼都不能壓,空間(跟雞蛋)就浪費了。

我就犯過買雞蛋回到家後破了好幾個的錯,那是放在摩托車車墊下,忽略行車中路面跳動的影響,我那時都已經三十幾歲了,經事長智!

空間利用與整理

說到空間利用,這顯然不是我的專長。(承認自己不會整理,一則是捨不得丟,另一則是從一開始的收納就可能沒有設計好)。

現在的工程師在設計資料庫時,絞盡腦汁要想怎麼讓資料讀取最快。其實,他們應該來看看我祖母的貨架。

祖母不懂什麼叫做 快取 (Cache),但她知道要把每個人都會買的油米鹽,放在櫃台伸手就拿得到的地方;而那些一個月才賣一次的綁線手套,則被丟在架子的高層。

這不就是電腦科學裡講的存取頻率嗎?

祖母對雜貨店的熟悉程度也不用像我們在圖書館那樣,從左邊數到右邊去找一本書(因為書籍排列的編碼,但我的圖書館工作經驗告訴我,熟悉的架位,是很容易從側標的書名找到,這麼多年以來要是到圖書館發現有書的擺放順序(索書號的順序為主)錯了,會習慣性地幫忙重排,不過倒是常常發現有分類錯誤的情況。

當客人說要買乖乖(台灣國民零食)時,祖母的手幾乎是同步伸向了正確的位置。我想像在她的腦中,這家店不是一堆雜亂的商品,而是一個建立了人腦的雜湊表 (Hash Table)。對她來說,整理貨架不只是為了乾淨,更是為了效率。她是這間雜貨店的作業系統,管理著數百種商品的 I/O (輸入/輸出),

至於是不是先進先出(FIFO ,First-In, First-Out)或者歷經堆疊 (Stack) , 隊列 (Queue)而進入排隊理論 (Queueing Theory)。以前沒有那麼強調保存期限到期的觀念時,我祖母已經會把放的比較久的擺前面,減少進貨,鄰近過期就自家食用。這些都是祖母的生活經驗

 

人生的空間學

模擬我祖母的心境與處理方式,心(其實是腦)就像個袋子。不能先把那些雞毛蒜皮的小事裝進去,不然等到真正重要的大事來了,就沒地方放了。

祖母的裝袋,我學到的不只是幾何學,還學到了調整順序的重要性。

同樣的一堆東西(同樣的一天時間),順序錯了,看起來就是混亂擁擠;順序對了,就能井井有條,甚至還有餘裕。

在那個物質匱乏的年代,祖母用她的雙手告訴我,空間有限下必須整理。(效率)

無論是貨架上的酒瓶,還是袋子裡的雜貨,甚至是我們侷促的生活,要懂得錯位與填縫,甚至於有容錯空間,就能創造出更多的容納。

向祖母的啟發再一拜。

 

台長: 葉諼/bee/彭弼聲

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文