[轉]計算機科學和數學的關係

計算機科學和數學的關係有點奇怪。二三十年以前,計算機科學基本上還是數學的一個分
支。而現在,計算機科學擁有廣泛的研究領域和衆多的研究人員,在很多方面反過來推動
數學發展,從某種意義上可以說是孩子長得比媽媽還高了。

但不管怎麼樣,這個孩子身上始終流着母親的血液。這血液是the mathematical underpi
nning of computer science(計算機科學的數學基礎),-- 也就是理論計算機科學。


現代計算機科學和數學的另一個交叉是計算數學/數值分析/科學計算,傳統上不包含在理
論計算機科學以內。所以本文對計算數學全部予以忽略。
最常和理論計算機科學放在一起的一個詞是什麼?答:離散數學。這兩者的關係是如此密
切,以至於它們在不少場合下成爲同義詞。


傳統上,數學是以分析爲中心的。數學系的同學要學習三四個學期的數學分析,然後是復
變,實變,泛函等等。實變和泛函被很多人認爲是現代數學的入門。在物理,化學,工程
上應用的,也以分析爲主。


隨着計算機科學的出現,一些以前不太受到重視的數學分支突然重要起來。人們發現,這
些分支處理的數學對象與傳統的分析有明顯的區別:分析研究的對象是連續的,因而微分
,積分成爲基本的運算;而這些分支研究的對象是離散的,因而很少有機會進行此類的計
算。人們從而稱這些分支爲“離散數學”。“離散數學”的名字越來越響亮,最後導致以
分析爲中心的傳統數學分支被相對稱爲“連續數學”。

離散數學經過幾十年發展,基本上穩定下來。一般認爲,離散數學包含以下學科:


1) 集合論,數理邏輯與元數學。這是整個數學的基礎,也是計算機科學的基礎。


2) 圖論,算法圖論;組合數學,組合算法。計算機科學,尤其是理論計算機科學的核心是
算法,而大量的算法建立在圖和組合的基礎上。


3) 抽象代數。代數是無所不在的,本來在數學中就非常重要。在計算機科學中,人們驚訝
地發現代數竟然有如此之多的應用。

但是,理論計算機科學僅僅就是在數學的上面加上“離散”的帽子這麼簡單嗎?一直到大
約十幾年前,終於有一位大師告訴我們:不是。


D.E.Knuth(他有多偉大,我想不用我廢話了)在Stanford開設了一門全新的課程Concrete
Mathematics。 Concrete這個詞在這裏有兩層含義:


第一,針對abstract而言。Knuth認爲,傳統數學研究的對象過於抽象,導致對具體的問題
關心不夠。他抱怨說,在研究中他需要的數學往往並不存在,所以他只能自己去創造一些
數學。爲了直接面嚮應用的需要,他要提倡“具體”的數學。


在這裏我做一點簡單的解釋。例如在集合論中,數學家關心的都是最根本的問題--公理系
統的各種性質之類。而一些具體集合的性質,各種常見集合,關係,映射都是什麼樣的,
數學家覺得並不重要。然而,在計算機科學中應用的,恰恰就是這些具體的東西。Knuth能
夠首先看到這一點,不愧爲當世計算機第一人。


第二,Concrete是Continuous(連續)加上discrete(離散)。不管連續數學還是離散數學,
都是有用的數學!
前面主要是從數學角度來看的。從計算機角度來看,理論計算機科學目前主要的研究領域
包括:可計算性理論,算法設計與複雜性分析,密碼學與信息安全,分佈式計算理論,並
行計算理論,網絡理論,生物信息計算,計算幾何學,程序語言理論等等。這些領域互相
交叉,而且新的課題在不斷提出,所以很難理出一個頭緒來。

下面隨便舉一些例子。


由於應用需求的推動,密碼學現在成爲研究的熱點。密碼學建立在數論(尤其是計算數論)
,代數,信息論,概率論和隨機過程的基礎上,有時也用到圖論和組合學等。


很多人以爲密碼學就是加密解密,而加密就是用一個函數把數據打亂。這就大錯特錯了。
現代密碼學至少包含以下層次的內容:


第一,密碼學的基礎。例如,分解一個大數真的很困難嗎?能否有一般的工具證明協議正
確?


第二,密碼學的基本課題。例如,比以前更好的單向函數,簽名協議等。


第三,密碼學的高級問題。例如,零知識證明的長度,祕密分享的方法。


第四,密碼學的新應用。例如,數字現金,叛徒追蹤等。

現代社會科學技術高速發展,數學學科的發展也已經到了非常抽象的地步,但是計算機所應用的數學依然是之前的經典東西,怎麼樣學好數學,通過計算機這個平臺用好數學,將計算引入世界的每一個角落,無時無可得都在運算,用於提高人類的生活質量,這將是我們計算機學科從業人員的終極目的和追求。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章