【科學史沙龍】計算與數學思維
■資訊科學根源於數學,數學運算的優劣,決定了資訊服務的成敗。我們要如何用數學運算的思維,達到「世界程式化」 (programming the world) 的目標?
講者| 中央研究院資訊科學研究所 何健明研究員
撰文|高英哲
我們從一個資訊科學非常基礎的「停機問題」說起:你手上有一堆資料跟一個程式,有沒有辦法做出一台機器,能夠判定用這個程式跑這些資料,是可以跑完停機的,還是會永遠跑下去?涂林 (Alan Turing) 用一個簡單的歸謬證法,解決了停機問題。他先假設有一台機器真的有能力做出判斷,然後再做出第二台機器,去問第一台機器能不能停機;第一台機器如果說可以停機,那第二台機器就會一直跑下去不停機(「可以算嘛那我就來算」),反之第一台機器如果說不能停機,第二台機器就會自己停機(「算不完嘛那我幹嘛算」)。換句話說,兩台機器對於同樣的答案,會做出完全相反的反應,因此可以得證解決停機問題的機器(也就是通用演算法)並不存在。
由於能夠解決停機問題的通用演算法並不存在,因此我們只能夠個別去製作演算法,去驗證別的演算法不但能夠停機,而且所得出的結果是正確的。在現代這個雲端運算的時代,停機問題的處理格外重要,因為只要有一個人送上雲端的運算無法停機,就會佔用到所有人的運算資源。除此之外,演算法即使算出的結果都是正確的,但過程有快有慢,因此如何設計出複雜性較低的演算法,並且同時確保所得結果正確,就是資訊科學的一大課題。
我們看 Facebook 、 Uber 、 Airbnb 這些十分成功的智慧服務,它們原先的起點都很單純,只是要提供能夠滿足某個需求的服務;它們今天能夠發展得如此成功,除了先行者優勢以外,它們背後運算機制的模組化,是十分關鍵的一項因素。只要我們能夠將那些日復一日的例行公事加以模組化(這就是一種寫程式的概念),運算的過程就會變得分外有效率,使用者也就更能夠享受到「零邊際成本」的服務,擴大服務的使用價值。
要把運算用的程式寫好,有效率的數學思維不可或缺。這是資訊科學教育當前的重點,也是我們推展資訊產業不能忽視的面相。