總體感言
一本不錯的信息處理數學原理科普書。一些復雜的信息問題、工程問題,經作者之手,把背后的數學原理通過簡單的形式展示出來,讓普通讀者明白到了數學解決問題的能力,體會到了數學的美。這本書,背后也道出了一個道理,那就是基礎數學理論研究對計算機科學的發展能起到非常重要的作用。例如,書中提到,布爾代數,在19世紀布爾提出的80多年時間里,一直默默無聞,在實際生活中也沒有起到任何作用。直到1938年香農提出在電路開關中應用布爾代數來處理之后,才開始在數字電路方面得到了廣泛應用。
像作者說的,布爾代數對于數學的意義,等同于量子力學對于物理學的意義,他們將我們對世界的認識從連續狀態擴展到了離散的狀態。因為作者是搜索方面的專家,所以,作者對搜索涉及的數學建模、有向圖、矩陣、統計、概率、迭代等方面進入了深入淺出的描述。印象最深刻的是,作者在討論到比較兩個集合的是否一樣的時候,提到了各種算法的優劣性。最基本的算法是采用逐個元素的比較,好一點的是排序后再比較。但是作者提出,其實最優的方案的是,采集每個詞的信息指紋——數字,然后對這些數字求和比較,就能馬上知道兩個集合是否有差異了。因為采用的信息指紋是偽隨機數,不同信息指紋加減乘除之后相同的概率非常小。信息指紋在判斷網頁相似性、論文抄襲等方面發揮了重要的作用。
另外說的一點是,因為密碼學不是作者的專業,感覺本書在密碼學方面講得不夠透。
隨想
一個正確的數學模型
一個正確的模型一開始可能還不如一個精雕細琢的錯誤模型來的準確,但是,如果我們認定大的方向是對的,就應該堅持下去(日心說一開始并沒有地心說準確)正確的模型也可能受噪音的干擾,而顯得不準確;這是不應該用一種湊合的修正方法加以彌補,而是要找到噪音的根源,這也許能通往重大的發現。模型OR數據
與模型一樣,數據也十分重要,但是人們在很長時間里卻低估了數據的作用。在過去20年里,在機器學習和自然語言處理領域,80%的成果來自于數據量的增加。爬蟲、bfs 、dfs
比如Google在2013年時整個索引大約有10,000億個網頁,即使更新最頻繁的基礎索引也有100億個網頁,加入下載一個網頁需要一秒鐘,那么下載這100億個網頁則需要317年,如果下載10.000億個網頁則需要32,000年左右,是我們人類有文字記載歷史的六倍時間。因此,一個商業的網絡爬蟲需要有成千上萬個服務器,并且通過高速網絡連接起來。顯然各個網站最重要的網頁應該是它的首頁。在最極端的情況下,如果爬蟲非常小,只能下載非常有限的網頁,那么應該下載的是所有網站的首頁,如果把爬蟲再擴大些,應該爬下首頁直接鏈接的網頁,因為這些網頁是網站設計者自認為相當重要的網頁。在這個前提下,顯示BFS明顯優于DFS。事實上在搜索引擎的爬蟲里,雖然不是簡單地采用BFS,但是先爬哪個網頁,后爬哪個網頁的調度程序,原理上基本上是BFS、MapReduce
云計算技術設計的面很廣,從存儲、計算、資源的調度到權限的管理等。云計算的關鍵之一是,如何把一個非常大的計算問題,自動分解到許多計算能力不是很強的計算機上,共同完成。這就是MapReduce的根本原理,將一個大任務拆分成小的子任務,并且完成子任務的計算,這個過程叫做Map,將中間結果合并成最終的結果,這個過程叫做Reduce。我們現在發現,Google頗為神秘的云計算中最重要的MapReduce工具,其實原理就是計算機算法中常用的“各個擊破”法,它的原理原來這么簡單———將復雜的大問題分解成很多小問題分別求解,然后再把小問題的解合并成原始問題的解。