改變計(jì)算技術(shù)的9個偉大算法

姓名:任思遠(yuǎn)

學(xué)號:17021210990

轉(zhuǎn)載自:https://mp.weixin.qq.com/s?__biz=MzA5NTMwMjIwNA==&mid=2650836143&idx=3&sn=a253fe856a784e81c90956657cafd6d0&pass_ticket=R4LrHafy9l60FNSePlN9dZjKuceEvyhWMIBaRyhQG6wAkZzbXfL2DcpGgKGZnvtO

【嵌牛導(dǎo)讀】:計(jì)算機(jī)算法的不斷進(jìn)步推動著計(jì)算技術(shù)的發(fā)展,在文章中將列舉出九個頗具代表性的算法,他們都為計(jì)算機(jī)科學(xué)的發(fā)展做出了巨大的貢獻(xiàn)。

【嵌牛鼻子】:計(jì)算技術(shù)、算法

【嵌牛提問】:作為計(jì)算基礎(chǔ)的算法都有什么?

【嵌牛正文】

? ? ? ?在過去,很多巧妙的計(jì)算機(jī)算法設(shè)計(jì),改變了我們的計(jì)算技術(shù)。通過操作標(biāo)準(zhǔn)計(jì)算機(jī)中提供的中間運(yùn)算符,可以產(chǎn)生很多的高效函數(shù)。這些函數(shù)導(dǎo)致了計(jì)算機(jī)程序的復(fù)雜性和多樣性,這也是今天計(jì)算機(jī)時代快速發(fā)展的重要原因。如下所示,我們列舉了一些算法,它們改變了我們的計(jì)算機(jī)使用。

一、壓縮技術(shù)

哈弗曼編碼

哈弗曼編碼在無損數(shù)據(jù)壓縮中廣泛應(yīng)用。為了找到一種最高效的二進(jìn)制編碼,哈弗曼在1951年提出了根據(jù)字符頻率排序的二叉樹這樣的編碼方法。這種方法被證明,是最有效的編碼方法。由于這種方法簡單、高效,這種方法被用在很多的壓縮方法中比如:DEFLATE(PKZIP壓縮軟件中的算法),以及很多的多媒體編碼包括JPEG和MP3中。

二、密碼學(xué)

公共秘鑰加密

對于加密算法而言,需要兩種不同的秘鑰,公共秘鑰是用來作為加密的明文或者驗(yàn)證數(shù)字簽名。私鑰則用來解密密文,或生成數(shù)字簽名。公共秘鑰加密使得用戶可以在公共信道中安全傳送數(shù)據(jù)。雖然這種方法于1997年發(fā)表,但是由英國政府通訊總部(GCHQ)的James H. Ellis, Clifford Cocks, Malcolm Williamson在1973年設(shè)計(jì)完成,并且投入使用。

三、搜索算法

Dijkstra 最短路徑算法

這一算法由Dijkstra在1956年完成,這是一個為圖設(shè)計(jì)的搜索算法。它解決了單向圖中的最短路徑問題,因此,也可以用來生成最短路徑樹。很多基于圖的算法中,都應(yīng)用了這樣的算法來進(jìn)行路徑規(guī)劃或是子路徑選擇。上圖展示了在單向圖中,利用這樣的算法求最短路徑的過程。

二分搜索算法

二分搜索算法用來在已經(jīng)有序的數(shù)組中找到關(guān)鍵字的位置。在說明詞義的字典中,詞的排列基本是有序的。電話本上,記錄也都按照人名、地址或是電話號碼排序。通過這樣的算法,我們可以由人名,很快地在電話本中找到相應(yīng)的電話以及地址。

四、排序算法

快速排序

這種算法由Tony Hoare在1960年設(shè)計(jì)。這個算法本來用于調(diào)整待翻譯單詞的順序,從而使它們與詞典順序更加一致,方便翻譯。這種算法由于在Unix系統(tǒng)中被用作默認(rèn)排序算法而聲名大噪。同時,這種算法由于它在C語言標(biāo)準(zhǔn)庫中的函數(shù)名“qsort”而得名。

五、數(shù)學(xué)方法

Karatsuba快速相乘算法

這種算法用來更快完成相乘的數(shù)學(xué)操作。由Anatolii Alexeevitch Karatsuba在1962年提出。它減少了乘法中需要操作的數(shù)字,并且提供了一個快速的相乘計(jì)算方法。這種算法的改進(jìn)算法是Toom–Cook算法。然而,對于大數(shù)相乘,Sch?nhage–Strassen 算法則是一種更快速的解決方案。

歐幾里得算法(輾轉(zhuǎn)相除)

利用歐幾里得算法,可以計(jì)算最大公約數(shù)。即兩個正整數(shù)可以被整除的最大數(shù)。雖然這種算法只通過減法和比較來找到最大公約數(shù),但是它被應(yīng)用在了許多高級算法中。歐幾里得被認(rèn)為是這個算法的發(fā)明者,歐幾里得的這個算法被認(rèn)為是歐幾里得時期(公元前300年左右)最古老的算法之一。

七、圖形學(xué)的發(fā)展

Bresenham直線算法

這種算法由Jack Elton Bresenham在1962年,他在IBM工作期間提出。這種算法本來用于在計(jì)算機(jī)屏幕上畫出直線。算法用到的操作非常簡單,整數(shù)的加法,減法和移位操作。這在計(jì)算機(jī)圖形學(xué)中是非常先進(jìn)的方法?;谶@樣的方法,后來算法又有了一系列的拓展,比如:畫圓算法等。由于這種算法的高效、快捷,至今在很多硬件中(比如繪圖儀和現(xiàn)代圖形卡等)這種算法仍然十分重要并且仍在使用。

平方根倒數(shù)速算法

這種算法提供了一種快速計(jì)算平方根的倒數(shù)的方法。這種方法在3D圖像中廣泛應(yīng)用于確定光線和投影關(guān)系,這可能需要每秒上千萬次的計(jì)算速度。在《雷神之錘三:競技場》的源代碼中就有這樣的算法,可是,直到2002年這種算法才被廣泛應(yīng)用。這個算法使用了一系列的簡單操作來解決復(fù)雜問題。雖然很多人認(rèn)為,這種算法由John Carmack研發(fā),但是,SGI和3dfx早就曾在產(chǎn)品中應(yīng)用此算法,當(dāng)時應(yīng)用的是Gary Tarolli實(shí)現(xiàn)的版本。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • 在保證視頻圖像質(zhì)量的前提下,HEVC通過增加一定的計(jì)算復(fù)雜度,可以實(shí)現(xiàn)碼流在H.264/AVC的基礎(chǔ)上降低50%。...
    加劉景長閱讀 8,276評論 0 6
  • 現(xiàn)在很多人都在做個體公眾號,有意向的,下面我就為大家介紹一些做工眾號之前所要知道的事,希望能對你們有所幫助。 定位...
    座下沈壯壯閱讀 420評論 5 7
  • 杯子寂寞,倒進(jìn)開水,滾燙的,是戀愛的感覺 水變溫了,杯子很舒服,是生活的感覺 水徹底涼了,杯子這時候感覺很難受,把...
    秋籟閱讀 320評論 0 1
  • 文/sgasun 當(dāng)我從上海學(xué)成歸來,當(dāng)然那時候幾乎是逃回來的,因?yàn)槟菆鲋摹帮L(fēng)波”。當(dāng)時的局勢,曾經(jīng)認(rèn)為差點(diǎn)就...
    sgasun閱讀 386評論 0 0

友情鏈接更多精彩內(nèi)容