演算法的力量(李開復)

2021-04-08 23:10:15 字數 1402 閱讀 5814

通過這個小例子,我們看到,應用程式的要求千變萬化,很多時候需要把乙個複雜的問題分解成若干簡單的小問題,然後再選用合適的演算法和資料結構。

並行演算法:google的核心優勢

上面的例子在google裡就要算是小case了!每天google的**要處理十億個以上的搜尋,gmail要儲存幾千萬使用者的2g郵箱,googleearth要讓數十萬使用者同時在整個地球上遨遊,並將合適的經過網際網路提交給每個使用者。如果沒有好的演算法,這些應用都無法成為現實。

在這些的應用中,哪怕是最基本的問題都會給傳統的計算帶來很大的挑戰。例如,每天都有十億以上的使用者訪問google的**,使用google的服務,也產生很多很多的日誌(log)。因為log每份每秒都在飛速增加,我們必須有聰明的辦法來進行處理。我曾經在面試中問過關於如何對log進行一些分析處理的問題,有很多面試者的回答雖然在邏輯上正確,但是實際應用中是幾乎不可行的。按照它們的演算法,即便用上幾萬臺機器,我們的處理速度都根不上資料產生的速度。

那麼google是如何解決這些問題的?

首先,在網路時代,就算有最好的演算法,也要能在平行計算的環境下執行。在google的資料中心,我們使用的是超大的並行計算機。但傳統的並行演算法執行時,效率會在增加機器數量後迅速降低,也就是說,十臺機器如果有五倍的效果,增加到一千台時也許就只有幾十倍的效果。這種事半功倍的代價是沒有哪家公司可以負擔得起的。而且,在許多並行演算法中,只要乙個結點犯錯誤,所有計算都會前功盡棄。

那麼google是如何開發出既有效率又能容錯的平行計算的呢?

google最資深的計算機科學家jeffdean認識到,google所需的絕大部分資料處理都可以歸結為乙個簡單的並行演算法:mapandreduce(http://labs.google.com/*****s/mapreduce.html)。這個演算法能夠在很多種計算中達到相當高的效率,而且是可擴充套件的(也就是說,一千臺機器就算不能達到一千倍的效果,至少也可以達到幾百倍的效果)。mapandreduce的另外一大特色是它可以利用大批廉價的機器組成功能強大的serve***rm。最後,它的容錯性能異常出色,就算乙個serve***rm宕掉一半,整個fram依然能夠執行。正是因為這個天才的認識,才有了mapandreduce演算法。借助該演算法,google幾乎能無限地增加計算量,與日新月異的網際網路應用一同成長。

演算法並不侷限於計算機和網路

舉乙個計算機領域外的例子:在高能物理研究方面,很多實驗每秒鐘都能幾個tb的資料量。但因為處理能力和儲存能力的不足,科學家不得不把絕大部分未經處理的資料丟棄掉。可大家要知道,新元素的資訊很有可能就藏在我們來不及處理的資料裡面。同樣的,在其他任何領域裡,演算法可以改變人類的生活。例如人類基因的研究,就可能因為演算法而發明新的醫療方式。在****領域,有效的演算法可能避免下乙個911的發生。在氣象方面,演算法可以更好地**未來天災的發生,以拯救生命。

所以,如果你把計算機的發展放到應用和資料飛速增長的大環境下,你一定會發現;演算法的重要性不是在日益減小,而是在日益加強。  

演算法的力量 李開復

通過這個小例子,我們看到,應用程式的要求千變萬化,很多時候需要把乙個複雜的問題分解成若干簡單的小問題,然後再選用合適的演算法和資料結構。並行演算法 google的核心優勢 上面的例子在google裡就要算是小case了!每天google的 要處理十億個以上的搜尋,gmail要儲存幾千萬使用者的2g郵...

演算法的力量 李開復

程式語言雖然該學,但是學習計算機演算法和理論更重要,因為計算機演算法和理論更重要,因為計算機語言和開發平台日新月異,但萬變不離其宗的是那些演算法和理論,例如資料結構 演算法 編譯原理 計算機體系結構 關係型資料庫原理等等 演算法是電腦科學領域最重要的基石之一,但卻受到了國內一些程式設計師的冷落。許多...

演算法的力量 李開復

李開復 演算法的力量 網路時代的演算法並行演算法 google的核心優勢 上面的例子在google裡就要算是小case了!每天google的 要處理十億個以上的搜尋,gmail要儲存幾千萬使用者的2g郵箱,google earth要讓數十萬使用者同時在整個地球上遨遊,並將合適的經過網際網路提交給每個...