青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

life02

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  197 隨筆 :: 3 文章 :: 37 評論 :: 0 Trackbacks

http://blog.163.com/pcteacher/blog/static/66585815200862183835111/


算法的力量(轉李開復)---適合計算機專業新生

算法的力量
2006年5月

算法是計算機科學領域最重要的基石之一,但卻受到了國內一些程序員的冷落許多學生看到一些公司在招聘時要求的編程語言五花八門,就產生了一種誤解,認為學計算機就是學各種編程語言,或者認為,學習最新的語言技術標準就是最好的鋪路方法其實,大家被這些公司誤導了編程語言雖然該學,但是學習計算機算法和理論更重要,因為計算機語言和開發平臺日新月異,但萬變不離其宗的是那些算法和理論,例如數據結構算法編譯原理計算機體系結構關系型數據庫原理等等在開復學生網上,有位同學生動地把這些基礎課程比擬為內功,把新的語言技術標準比擬為外功整天趕時髦的人最后只懂得招式,沒有功力,是不可能成為高手的

算法與我

當我在1980年轉入計算機科學系時,還沒有多少人的專業方向是計算機科學有許多其他系的人嘲笑我們說:知道為什么只有你們系要加一個科學,而沒有物理科學系或化學科學系嗎?因為人家是真的科學,不需要畫蛇添足,而你們自己心虛,生怕不科學,才這樣欲蓋彌彰 其實,這點他們徹底弄錯了真正學懂計算機的人(不只是編程匠)都對數學有相當的造詣,既能用科學家的嚴謹思維來求證,也能用工程師的務實手段來解決問題而這種思維和手段的最佳演繹就是算法

記得我讀博時寫的Othello對弈軟件獲得了世界冠軍當時,得第二名的人認為我是靠僥幸才打贏他,不服氣地問我的程序平均每秒能搜索多少步棋,當他發現我的軟件在搜索效率上比他快60多倍時,才徹底服輸為什么在同樣的機器上,我可以多做60倍的工作呢?這是因為我用了一個最新的算法,能夠把一個指數函數轉換成四個近似的表,只要用常數時間就可得到近似的答案在這個例子中,是否用對算法才是能否贏得世界冠軍的關鍵

還記得1988年貝爾實驗室副總裁親自來訪問我的學校,目的就是為了想了解為什么他們的語音識別系統比我開發的慢幾十倍,而且,在擴大至大詞匯系統后,速度差異更有幾百倍之多他們雖然買了幾臺超級計算機,勉強讓系統跑了起來,但這么貴的計算資源讓他們的產品部門很反感,因為昂貴的技術是沒有應用前景的在與他們探討的過程中,我驚訝地發現一個O(n*m)的動態規劃(dynamic programming)居然被他們做成了O(n*n*m)更驚訝的是,他們還為此發表了不少文章,甚至為自己的算法起了一個很特別的名字,并將算法提名到一個科學會議里,希望能得到大獎當時,貝爾實驗室的研究員當然絕頂聰明,但他們全都是學數學物理或電機出身,從未學過計算機科學或算法,才犯了這么基本的錯誤我想那些人以后再也不會嘲笑學計算機科學的人了吧!

網絡時代的算法

有人也許會說:今天計算機這么快,算法還重要嗎?其實永遠不會有太快的計算機,因為我們總會想出新的應用雖然在摩爾定律的作用下,計算機的計算能力每年都在飛快增長,價格也在不斷下降可我們不要忘記,需要處理的信息量更是呈指數級的增長現在每人每天都會創造出大量數據(照片,視頻,語音,文本等等)日益先進的記錄和存儲手段使我們每個人的信息量都在爆炸式的增長互聯網的信息流量和日志容量也在飛快增長在科學研究方面,隨著研究手段的進步,數據量更是達到了前所未有的程度無論是三維圖形海量數據處理機器學習語音識別,都需要極大的計算量在網絡時代,越來越多的挑戰需要靠卓越的算法來解決

再舉另一個網絡時代的例子在互聯網和手機搜索上,如果要找附近的咖啡店,那么搜索引擎該怎么處理這個請求呢?

最簡單的辦法就是把整個城市的咖啡館都找出來,然后計算出它們的所在位置與你之間的距離,再進行排序,然后返回最近的結果但該如何計算距離呢?圖論里有不少算法可以解決這個問題

這么做也許是最直觀的,但絕對不是最迅速的如果一個城市只有為數不多的咖啡館,那這么做應該沒什么問題,反正計算量不大但如果一個城市里有很多咖啡館,又有很多用戶都需要類似的搜索,那么服務器所承受的壓力就大多了在這種情況下,我們該怎樣優化算法呢?

首先,我們可以把整個城市的咖啡館做一次預處理比如,把一個城市分成若干個格子(grid),然后根據用戶所在的位置把他放到某一個格子里,只對格子里的咖啡館進行距離排序

問題又來了,如果格子大小一樣,那么絕大多數結果都可能出現在市中心的一個格子里,而郊區的格子里只有極少的結果在這種情況下,我們應該把市中心多分出幾個格子更進一步,格子應該是一個樹結構,最頂層是一個大格整個城市,然后逐層下降,格子越來越小,這樣有利于用戶進行精確搜索如果在最底層的格子里搜索結果不多,用戶可以逐級上升,放大搜索范圍

上述算法對咖啡館的例子很實用,但是它具有通用性嗎?答案是否定的把咖啡館抽象一下,它是一個點,如果要搜索一個面該怎么辦呢?比如,用戶想去一個水庫玩,而一個水庫有好幾個入口,那么哪一個離用戶最近呢?這個時候,上述樹結構就要改成r-tree,因為樹中間的每一個節點都是一個范圍,一個有邊界的范圍(參考:http://www.cs.umd.edu/~hjs/rtrees/index.html

通過這個小例子,我們看到,應用程序的要求千變萬化,很多時候需要把一個復雜的問題分解成若干簡單的小問題,然后再選用合適的算法和數據結構

并行算法:Google的核心優勢

上面的例子在Google里就要算是小case了!每天Google的網站要處理十億個以上的搜索,GMail要儲存幾千萬用戶的2G郵箱,Google Earth要讓數十萬用戶同時在整個地球上遨游,并將合適的圖片經過互聯網提交給每個用戶如果沒有好的算法,這些應用都無法成為現實

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

那么Google是如何解決這些問題的呢?

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

那么Google是如何開發出既有效率又能容錯的并行計算的呢?

Google最資深的計算機科學家Jeff Dean認識到, Google 所需的絕大部分數據處理都可以歸結為一個簡單的并行算法:Map and Reduce(http://labs.google.com/papers/mapreduce.html) 這個算法能夠在很多種計算中達到相當高的效率,而且是可擴展的(也就是說,一千臺機器就算不能達到一千倍的效果,至少也可以達到幾百倍的效果)Map and Reduce的另外一大特色是它可以利用大批廉價的機器組成功能強大的server farm最后,它的容錯性能異常出色,就算一個server farm里面的機器down掉一半,整個farm依然能夠運行正是因為這個天才的認識,才有了Map and Reduce算法借助該算法,Google幾乎能無限地增加計算量,與日新月異的互聯網應用一同成長

算法并不局限于計算機和網絡

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

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

給程序員的七個建議

(1)練內功不要只花功夫學習各種流行的編程語言和工具,以及某些公司招聘廣告上要求的科目要把數據結構算法數據庫操作系統原理計算機體系結構計算機網絡,離散數學等基礎課程學好大家不妨試試高德納所著The Art of Computer Programming里的題目,如果你能夠解決其中的大部分題目,就說明你在算法方面有一定的功力了

(2)多實戰通過編程的實戰積累經驗鞏固知識很多中國大學畢業生缺乏編程和調試經驗;學習C語言,考試過關就算學會了;課題項目中,只要程序能夠編譯,運行,并且輸入輸出滿足要求就算了事這些做法是不行的寫程序的時候,大家必須多想想如何把程序寫得更加精煉高效高質量建議大家爭取在大學四年中積累編寫十萬行代碼的經驗我們必須明白的是:好程序員是寫出來的,不是學出來的

(3)求實干不要輕視任何實際工作,比如一些看似簡單的編碼或測試要不懈追求對細節一絲不茍的實干作風與敬業精神我發現不少程序員對于知識的掌握很膚淺,不求甚解,沒有好奇心,不會刨根問底比如,學會了C++,是否了解一個對象在編譯后,在匯編代碼中是如何被初始化的?這個對象的各個成員在內存中是如何存放的?當一個成員函數被調用時,編譯器在匯編代碼中加入了哪些額外的動作?虛函數的調用是如何實現的? 這些東西恐怕在編程語言或編譯原理中都沒有詳細提到,只有通過踏實的實干才能真正掌握

(4)重視數學學習數學是思維的體操,數學無處不在學計算機至少要學習離散數學概率論布爾代數集合論和數理邏輯這些知識并不難,但是對你未來的工作幫助會很大 尤其當你對一些數學密集型的領域如視頻圖像處理等有興趣時,這些知識將成為你手中的利器

(5)培養團隊精神,學會與人合作今天的軟件工程早已經不是一個人可以單獨操作的,而必須靠團隊合作才能成功不懂得合作的人是不能成大器的大家要多去尋找可以與人一起做項目的機會

(6)激勵創新意識,培養好奇心,不要死記硬背沒有掌握某種算法技術的根本原理,就不會有應變和創新的能力想成為一位好程序員(其實從事任何一個行業都是如此),重要的是要養成鉆研,好奇,創新,動手,合作的優秀習慣,不滿足于填鴨,不滿足于考試交差,不滿足于表象這不是學幾門課能夠一蹴而就的

(7)有策略地打工在不影響學業的前提下,尋找真正有意義的暑期工作或兼職去找一個重視技術的公司,在一個好的老板指導下完成真正會被用戶使用的程序不要急于去一個要你做頭而獨擋一面的地方,因為向別人學習才是你的目的找工作也是一樣,不要只看待遇和職銜,要挑一個你能夠學習的環境,一個愿意培養員工的企業,一個重視你的專業的公司最后,還要挑一個好老板

希望大家都能把握機會,養成好的學習習慣,把算法學精學透;希望大家都能有一個美好的未來!

 該回復于2008-05-14 08:25:19被管理員刪除  The Art of Computer Programming Vol.1 (中文譯作計算機編程的藝術計算機程序設計技巧)--Basic Algorithms(基礎算法)

這部書被譽為20世紀最重要的20部著作之一,與Einstein的相對論并列,使計算機科學領域的權威著作全書共分5卷,目前已經出版了3卷,這是它的第一卷基礎算法,包含了我們常用的算法及其相關數據結構作者高德納(Donald E. Knuth)是美國Stanford大學計算機科學系的退休教授,在計算機科學領域享有崇高的威望 


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/zdl1016/archive/2009/09/27/4602750.aspx

posted on 2009-09-28 09:47 life02 閱讀(287) 評論(0)  編輯 收藏 引用 所屬分類: 算法
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久综合激的五月天| 国产精品福利av| 在线亚洲美日韩| 99精品国产在热久久下载| 91久久久久| 亚洲一区二区三区777| 香港久久久电影| 久久伊人亚洲| 亚洲国产高清在线| 亚洲国产精品久久久久| 亚洲免费电影在线观看| 午夜精品视频在线观看一区二区| 欧美伊人影院| 欧美黄色一级视频| 国产欧美在线观看| 亚洲韩日在线| 亚洲女女女同性video| 久久久久久成人| 亚洲国产一二三| 亚洲一区三区电影在线观看| 久久久精品国产免大香伊| 欧美三级特黄| 1000部国产精品成人观看| 亚洲在线中文字幕| 免费观看成人| 中文av一区二区| 久久综合福利| 国产精品欧美一区喷水| 在线日本欧美| 欧美一区二区三区电影在线观看| 欧美日韩影院| 亚洲第一福利视频| 亚洲欧美一区二区三区在线| 欧美不卡视频一区发布| 午夜精品短视频| 欧美日韩亚洲高清| 亚洲三级影片| 老司机亚洲精品| 亚洲欧美日韩国产一区| 欧美福利影院| 91久久精品美女| 久久亚洲美女| 欧美亚洲在线播放| 国产视频一区二区三区在线观看| 国产伦精品一区二区三区高清版| 亚洲免费黄色| 欧美激情一区二区三区蜜桃视频| 欧美一区二区三区婷婷月色| 亚洲人成网站999久久久综合 | 你懂的国产精品永久在线| 亚洲尤物视频在线| 欧美日韩亚洲一区三区 | 亚洲一区久久| 日韩午夜免费视频| 欧美日韩日本国产亚洲在线| 亚洲精选视频在线| 亚洲国产成人在线| 亚洲一区美女视频在线观看免费| 亚洲色无码播放| 欧美日本在线看| 亚洲国产日韩欧美综合久久| 久久综合九色综合欧美狠狠| 欧美影院成年免费版| 国产在线日韩| 久久在线视频| 理论片一区二区在线| 亚洲第一精品久久忘忧草社区| 蜜桃av噜噜一区| 老司机久久99久久精品播放免费| 亚洲第一在线| 亚洲精品国精品久久99热一| 欧美日韩色综合| 午夜一级在线看亚洲| 亚洲在线一区二区| 国产一区清纯| 亚洲高清一二三区| 欧美日韩午夜视频在线观看| 亚洲欧美国产视频| 欧美伊人久久久久久久久影院| 精品成人国产在线观看男人呻吟| 国产精品男gay被猛男狂揉视频| 亚洲欧美日韩一区二区在线| 欧美在线视频导航| 亚洲国产成人精品女人久久久| 亚洲国产精品一区二区第一页| 欧美日韩一区视频| 久久久久高清| 开元免费观看欧美电视剧网站| 亚洲日本欧美| 亚洲尤物精选| 亚洲精品乱码久久久久久| 亚洲视频图片小说| 亚洲国产成人午夜在线一区 | 亚洲专区欧美专区| 久久成人羞羞网站| 亚洲美女黄网| 欧美一站二站| 一区二区三区日韩在线观看| 久久riav二区三区| 亚洲午夜精品| 欧美~级网站不卡| 久久9热精品视频| 欧美日韩国产三区| 免费成人黄色片| 国产欧美在线视频| 99ri日韩精品视频| 亚洲激情网站免费观看| 亚洲免费人成在线视频观看| 亚洲免费久久| 久久精品人人做人人爽| 亚洲综合三区| 欧美日本在线视频| 欧美激情国产日韩| 黄色在线成人| 午夜精品网站| 亚洲欧美大片| 欧美日韩国产一级片| 欧美大片免费观看| 久久se精品一区二区| 欧美日韩国产不卡在线看| 久久免费视频在线观看| 国产精品久久久久av| 91久久夜色精品国产九色| 亚洲成色www8888| 久久米奇亚洲| 免费成人在线观看视频| 国产一区二区三区四区老人| 亚洲女性裸体视频| 午夜精彩视频在线观看不卡| 欧美亚州一区二区三区| 99精品欧美| 一本色道久久综合亚洲91| 先锋影音一区二区三区| 国产精品视频精品| 午夜视频在线观看一区二区| 西瓜成人精品人成网站| 国产精品免费观看视频| 亚洲已满18点击进入久久| 一本到高清视频免费精品| 欧美.日韩.国产.一区.二区| 欧美a级一区| 欧美一区二区三区精品| 亚洲午夜国产成人av电影男同| 欧美福利在线观看| 欧美大片一区二区| 亚洲欧美另类国产| 久久午夜影视| 久久精品国产一区二区三| 国产欧美日韩综合精品二区| 亚洲一区二区三区在线播放| 午夜免费电影一区在线观看| 国产精品免费福利| 欧美在线观看一区二区| 久久米奇亚洲| 亚洲欧洲在线一区| 欧美日韩亚洲一区三区| 亚洲视频每日更新| 久久久999精品| 亚洲精品日韩激情在线电影| 欧美日韩视频在线观看一区二区三区| 中日韩美女免费视频网址在线观看| 欧美在线国产| 亚洲大片在线观看| 欧美午夜剧场| 亚洲香蕉网站| 日韩午夜激情| 欧美亚洲色图校园春色| 亚洲图片激情小说| 99成人免费视频| 国产精品高潮久久| 亚洲欧美中文字幕| 欧美黄色一区| 欧美在线免费观看| 亚洲精品日韩欧美| 欧美ab在线视频| 亚洲专区在线视频| 亚洲成色www久久网站| 欧美日韩视频在线观看一区二区三区| 亚洲资源av| 亚洲激情偷拍| 国内精品视频在线播放| 亚洲人成网站色ww在线| 久久国产手机看片| 一区二区欧美激情| 有坂深雪在线一区| 国产精品你懂的| 欧美精品一线| 久热精品在线| 欧美影院成人| 亚洲欧美日韩综合aⅴ视频| 亚洲精品韩国| 亚洲国产精品一区在线观看不卡| 欧美一区二区三区在线免费观看| 亚洲精品美女免费| 黑人一区二区三区四区五区| 国产精品v日韩精品v欧美精品网站| 麻豆freexxxx性91精品| 久久久久9999亚洲精品| 亚洲一区二区三区在线视频| 亚洲精品一区二区在线|