第五部:咖啡館裡的導航演算法
有時候,改變世界的偉大發明,只需要一杯咖啡的時間。
1. 20 分鐘的咖啡館頓悟
時間來到 1956 年,荷蘭阿姆斯特丹。
當時的電腦科學還在襁褓之中。一位年僅 26 歲的年輕工程師艾茲赫爾·戴克斯特拉 (Edsger W. Dijkstra),正在為阿姆斯特丹數學中心新打造的 ARMAC 電腦構思一個展示程式。
他想展示電腦能解決一個非常實用的圖論問題:在荷蘭的 64 個城市中,如何找到從城市 A 到城市 B 的「最短路徑」?
有一天,Dijkstra 和他的未婚妻在阿姆斯特丹的一家咖啡館陽台上喝咖啡。就在他看著路上的行人與街道時,靈光一閃。他甚至沒有拿筆和紙,純粹在腦海中推演,只花了短短 20 分鐘,就構思出了解決這個問題的完美演算法。
這就是日後在電腦科學界如雷貫耳的「Dijkstra 演算法 (Dijkstra’s Algorithm)」。
2. 貪婪與擴散的優雅
Dijkstra 演算法的邏輯非常優雅,它屬於一種「貪婪演算法 (Greedy Algorithm)」。
想像你站在起點城市,你手邊有一張地圖。你該怎麼找最短路徑? Dijkstra 的方法是:不要一開始就死盯著終點看,而是像水波一樣,從起點開始往外慢慢擴散。
- 從起點出發,看看相鄰的城市,記錄下走到它們的距離。
- 從這些「已經知道距離」的城市中,挑選一個「距離最近」的城市,走到那裡。
- 站在這個新城市,再次觀察它周圍的鄰居。如果有更快的捷徑,就更新地圖上的紀錄。
- 重複這個過程,像水波一樣一圈一圈地向外擴張,直到這股「水波」碰到終點城市為止。
因為它每次都貪婪地選擇當下「最近」的路走,數學上可以嚴格證明,當它碰到終點時,那條路徑絕對是全局的最短路徑。
3. 主宰世界的隱形骨架
這個在咖啡館裡花了 20 分鐘想出來的演算法,徹底改變了人類社會的運作方式。
圖論不再只是停留在紙上的數學遊戲,它變成了現代資訊社會的隱形骨架。
當你在 Google Maps 裡輸入起點和終點,按下導航時,背後的核心邏輯就是 Dijkstra 演算法的變種(如 A* 演算法)。
更重要的是,當你用手機傳送一條 LINE 訊息給朋友時,這條訊息會被拆成無數個數據封包,進入龐大的網際網路。網際網路就是一個由無數台路由器(點)與光纖(線)組成的巨大圖形。路由器必須在毫秒之間決定,要把封包傳給哪一台相鄰的機器才能最快到達目的地。這背後使用的 OSPF 路由協定,其核心依然是 Dijkstra 演算法。
沒有 Dijkstra,就沒有現代的全球物流、導航,也沒有網際網路。
4. 拒絕複雜的大師
Dijkstra 後來成為了電腦科學界的傳奇大師,並獲得了圖靈獎。
他一生都在倡導「簡單與優雅」。他痛恨那些寫得亂七八糟、充滿 GOTO 語法的程式碼,認為程式應該像數學證明一樣嚴謹且具有美感。
他曾經說過一句名言:「電腦科學與電腦的關係,就像天文學與望遠鏡的關係一樣。」
對他來說,這門科學的本質不在於冰冷的硬體機器,而在於隱藏在機器背後,那些處理點與線、處理邏輯與運算的絕妙演算法。
下一集:圖論不僅能尋找最短路徑,它還能揭露人類社會的隱祕結構。一位一生沒有固定住處的流浪數學家,與一位做信件實驗的心理學家,聯手證明了「我們與世界上的任何人,只隔著六個人」。