)。 通過這個小例子,我們看到,應用程式的要求千變萬化,很多時候需要把乙個複雜的問題分解成若干簡單的小問題,然後再選用合適的演算法和資料結構。
並行演算法:google的核心優勢
上面的例子在google裡就要算是小case了!每天google的**要處理十億個以上的搜尋,gmail要儲存幾千萬使用者的2g郵箱,google earth要讓數十萬使用者同時在整個地球上遨遊,並將合適的經過網際網路提交給每個使用者。如果沒有好的演算法,這些應用都無法成為現實。
在這些的應用中,哪怕是最基本的問題都會給傳統的計算帶來很大的挑戰。例如,每天都有十億以上的使用者訪問google的**,使用google的服務,也產生很多很多的日誌(log)。因為log每分每秒都在飛速增加,我們必須有聰明的辦法來進行處理。我曾經在面試中問過關於如何對log進行一些分析處理的問題,有很多面試者的回答雖然在邏輯上正確,但在實際應用中是幾乎不可行的。按照他們的演算法,即便用上幾萬臺機器,我們的處理速度都跟不上資料產生的速度。
那麼google是如何解決這些問題的呢?
首先,在網路時代,就算有最好的演算法,也要能在平行計算的環境下執行。在google的資料中心,我們使用的是超大的並行計算機。但傳統的並行演算法執行時,效率會在增加機器數量後迅速降低,也就是說,十臺機器如果有五倍的效果,增加到一千台時也許就只有幾十倍的效果。這種事倍功半的代價是沒有哪家公司可以負擔得起的。而且,在許多並行演算法中,只要乙個結點犯錯誤,所有計算都會前功盡棄。
那麼google是如何開發出既有效率又能容錯的平行計算的呢?
google最資深的計算機科學家jeff dean認識到, google 所需的絕大部分資料處理都可以歸結為乙個簡單的並行演算法:map and reduce(
演算法的力量 李開復
程式語言雖然該學,但是學習計算機演算法和理論更重要,因為計算機演算法和理論更重要,因為計算機語言和開發平台日新月異,但萬變不離其宗的是那些演算法和理論,例如資料結構 演算法 編譯原理 計算機體系結構 關係型資料庫原理等等 演算法是電腦科學領域最重要的基石之一,但卻受到了國內一些程式設計師的冷落。許多...
演算法的力量 李開復
李開復 演算法的力量 網路時代的演算法並行演算法 google的核心優勢 上面的例子在google裡就要算是小case了!每天google的 要處理十億個以上的搜尋,gmail要儲存幾千萬使用者的2g郵箱,google earth要讓數十萬使用者同時在整個地球上遨遊,並將合適的經過網際網路提交給每個...
演算法的力量 李開復
通過這個小例子,我們看到,應用程式的要求千變萬化,很多時候需要把乙個複雜的問題 分解成若干簡單的小問題,然後再選用合適的演算法和資料結構。並行演算法 google的核心優勢 上面的例子在google裡就要算是小case了!每天google的 要處理十億個以上的搜尋,gmail要儲存幾千萬使用者的2g...