狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

當今世界最受人們重視的十大經典算法

admin
2011年3月9日 0:22 本文熱度 3068
[p]作者:july、二零一一年三月七日。[/p]
[p]聲明:有一點,希望讀者明白,[br]以下票選出來的十大算法不等同于,也絕非就是當今世界最為經典的十大算法。[br]--------------------------[/p]
[p] 當今世界,已經被發現或創造的經典算法數不勝數。如果,一定要投票選出你最看重的十大算法,你會作何選擇列?[br] 最近,有人在stackexchange上發起了提問,向網友們征集當今世界最為經典的十大算法。眾人在一大堆入圍算法中進行投票,最終得出了呼聲最高的以下十個算法。[/p]
[p] 來自圣經的十大算法:[br] 發起人的描述:《來自圣經的證明》收集了數十個簡潔而優雅的數學證明,迅速贏得了大批數學愛好者的追捧。如果還有一本《來自圣經的算法》,哪些算法會列入其中呢?現在,朋友們,以下是數十種候選算法,如果你覺得它是當今世界最經典的算法,就請您為它投一票.....[br] 最終產生了下面得票數最高的十大經典算法(投票數統計截止到2011年3月7日):[/p]
[p]第十名:huffman coding(霍夫曼編碼)[br] 霍夫曼編碼(huffman coding)是一種編碼方式,是一種用于無損數據壓縮的熵編碼(權編碼)算法。1952年,david a. huffman在麻省理工攻讀博士時所發明的,并發表于《一種構建極小多余編碼的方法》(a method for the construction of minimum-redundancy codes)一文。[/p]
[p][br]第九名:binary search (二分查找)[br] 在一個有序的集合中查找元素,可以使用二分查找算法,也叫二分搜索。二分查找算法先比較位于集合中間位置的元素與鍵的大小,有三種情況(假設集合是從小到大排列的):[br] 1.鍵小于中間位置的元素,則匹配元素必在左邊(如果有的話),于是對左邊的區域應用二分搜索。[br] 2.鍵等于中間位置的元素,所以元素找到。[br] 3.鍵大于中間位置的元素,則匹配元素必在右邊(如果有的話),于是對右邊的區域應用二分搜索。[br]另外,當集合為空,則代表找不到。[/p]
[p][br]第八名:miller-rabin作的類似的試驗測試[br] 這個想法是利用素數的性質(如使用費馬大定理)的小概率尋找見證不數素數。如果沒有證據是足夠的隨機檢驗后發現,這一數字為素數。[/p]
[p][br]第七名:depth first search、breadth first search(深度、廣度優先搜索)[br] 它們是許多其他算法的基礎。關于深度、廣度優先搜索算法的具體介紹,請參考此文:教你通透徹底理解:bfs和dfs優先搜索算法。[/p]
[p][br]第六名:gentry's fully homomorphic encryption scheme(紳士完全同態加密機制)算法。[br] 此算法很漂亮,它允許第三方執行任意加密數據運算得不到私鑰(不是很了解)。[/p]
[p][br]第五名:floyd-warshall all-pairs最短路徑算法[br] 關于此算法的介紹,可參考我寫的此文:幾個最短路徑算法比較([url=http://blog.csdn.net/v_july_v/archive/2011/02/12/6181485.aspx]http://blog.csdn.net/v_july_v/archive/2011/02/12/6181485.aspx[/url])。[br]d[]: 二維數組. d[i,j]最小花費、或最短路徑的鄰邊。[/p]
[p]for k from 1 to n:[br] for i from 1 to n:[br] for j from 1 to n:[br] d[i,j] = min(d[i,j], d[i,k] + d[k,j])[/p]
[p] [/p]
[p]第四名:quicksort(快速排序)[br] 快速排序算法幾乎涵蓋了所有經典算法的所有榜單。它曾獲選二十世紀最偉大的十大算法(參考這:細數二十世紀最偉大的10大算法)。關于快速排序算法的具體介紹,請參考我寫的這篇文章:一之續、快速排序算法的深入分析。[/p]
[p][br]第三名:bfprt 算法[br] 1973 年,blum、floyd、pratt、rivest、tarjan集體出動,合寫了一篇題為 “time bounds for selection” 的論文,給出了一種在數組中選出第 k 大元素的算法,俗稱"中位數之中位數算法"。依靠一種精心設計的 pivot 選取方法,該算法從理論上保證了最壞情形下的線性時間復雜度,打敗了平均線性、最壞 o(n^2) 復雜度的傳統算法。一群大牛把遞歸算法的復雜度分析玩弄于骨掌股掌之間,構造出了一個當之無愧的來自圣經的算法。[/p]
[p] 我在這里簡單介紹下在數組中選出第k大元素的時間復雜度為o(n)的算法:[br] 類似快排中的分割算法:[/p]
[p]每次分割后都能返回樞紐點在數組中的位置s,然后比較s與k的大小[br]若大的話,則再次遞歸劃分array[s..n],[br]小的話,就遞歸array[left...s-1] //s為中間樞紐點元素。[br]否則返回array[s],就是partition中返回的值。 //就是要找到這個s。[/p]
[p]找到符合要求的s值后,再遍歷輸出比s小的那一邊的元素。[/p]
[p] 各位可參考在:算法導論上,第九章中,以期望線性時間做選擇,一節中,[br]我找到了這個 尋找數組中第k小的元素的,平均時間復雜度為o(n)的證明:上述程序的期望運行時間,最后證明可得o(n),且假定元素是不同的。[/p]
[p][br]第二名:knuth-morris-pratt字符串匹配算法[br] 關于此算法的介紹,請參考此文:六、教你從頭到尾徹底理解kmp算法。kmp算法曾經落選于二十世紀最偉大的十大算法,但人們顯然不能接受,如此漂亮、高效的kmp算法竟然會落選。所以,此次最終投票產出生,kmp算法排到了第二名。[/p]
[p][br]第一名:union-find[br] 嚴格地說,并查集是一種數據結構,它專門用來處理集合的合并操作和查詢操作。并查集巧妙地借用了樹結構,使得編程復雜度降低到了令人難以置信的地步;用上一些遞歸技巧后,各種操作幾乎都能用兩行代碼搞定。而路徑壓縮的好主意,更是整個數據結構的畫龍點睛之筆。并查集的效率極高,單次操作的時間復雜度幾乎可以看作是常數級別;但由于數據結構的實際行為難以預測,精確的時間復雜度分析需要用到不少高深的技巧。并行查找,最終占據了此份榜單的第一名。[/p]
[p] 補充:前三名的投票數,只相差4票,8票。所以這個排名日后還會不斷有所變化。但不管最終結果怎樣,這前十名的算法已經基本敲定了。[br] 原投票網址:[url=http://cstheory.stackexchange.com/questions/189/algorithms-from-the-book]http://cstheory.stackexchange.com/questions/189/algorithms-from-the-book[/url]。[/p]
[p]---------------------------------------------------------[br] 怎么樣,上文那些算法,你是否熟悉?如果,現在,我給你一個投票權,你會把票投給哪一個算法列?ok,咱們也來一次投票吧,請把你的意見,決定權寫在本文下面的評論里:[/p]
[p]我把已經產生的前十名的算法,再寫在下面,方便投票:[/p]
[p]第十名:huffman coding(霍夫曼編碼)。[br]第九名:binary search (二分查找)。[br]第八名:miller-rabin作的類似的試驗測試。[br]第七名:depth first search(深度優先搜索)。[br]第六名:紳士完全同態加密機制[br]第五名:floyd-warshall all-pairs最短路徑算法。[br]第四名:quicksort(快速排序)。[br]第三名:bfprt 算法。[br]第二名:knuth-morris-pratt字符串匹配算法。[br]第一名:union-find。[/p]
[p]為了讓大家有更多的選擇,我再貼出其它幾種同樣經典但暫時未能排進上述榜單前十名的候選算法:[/p]
[p]十一、cooley-tukey fft算法。快速傅里葉變換算法。關于傅里葉變換算法的介紹,請參考此文:十、從頭到尾徹底理解傅里葉變換算法、上。[/p]
[p]十二、linear programming,線性規劃。[br]十三、dijkstra算法。具體介紹,參考此文:二之續、徹底理解dijkstra算法。[/p]
[p]十四、merge sort。歸并排序。[br]十五、ford–fulkerson算法。網絡最大流算法。[br]十六、輾轉相除法。[br] 在數學中,輾轉相除法,又稱歐幾里得算法,是求最大公約數的算法,即求兩個正整數之最大公因子的算法。此算法作為taocp第一個算法被闡述,足見此算法被重視的程度。它是已知最古老的算法, 其可追溯至3000年前。輾轉相除法首次出現于歐幾里得的《幾何原本》(第vii卷,命題i和ii)中,而在中國則可以追溯至東漢出現的《九章算術》。擴展的輾轉相除法則構造性地證明了,對任意整數a和b ,存在一對x、y使得 ax + by = gcd(a, b) 。[/p]
[p]十七、rsa加密演算法。一種加密算法,日后再做詳細介紹。[br]十八、遺傳算法。可參考本人寫的關于ga 算法的這篇文章:七、遺傳算法 透析ga本質。[/p]
[p] 還猶豫什么列?快投上您寶貴的一票吧。每人限投一票,如果你認為那個算法是最為經典的算法,您就在下面的評論里寫上它的序號,及算法名稱。[br] 當然,如果上文中不曾出現你認為最經典的算法,你也可以寫在評論里,為你鐘愛的它投上一票。而后我將考慮您的意見,把您鐘愛的算法也作為一種候選算法,添補上去。:d。[br] [br] 最后,我們自己來做一份十大經典算法的排名榜單,也讓世界各地的人看看我們中國人的意見。怎么樣,還猶豫什么列,趕緊評論、趕緊投票吧...[/p]

該文章在 2011/3/9 0:22:28 編輯過
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved