改變計算技術的偉大演算法
在過去,很多巧妙的計算機演算法設計,改變了我們的計算技術。通過操作標準計算機中提供的中間運算子,可以產生很多的高效函式。這些函式導致了計算機程式的複雜性和多樣性,這也是今天計算機時代快速發展的重要原因。如下所示,我們列舉了一些演算法,它們改變了我們的計算機使用。
壓縮技術
哈弗曼編碼
哈弗曼編碼在無損資料壓縮中廣泛應用。為了找到一種最高效的二進位制編碼,哈弗曼在1951年提出了根據字元頻率排序的二叉樹這樣的編碼方法。這種方法被證明,是最有效的編碼方法。由於這種方法簡單、高效,這種方法被用在很多的壓縮方法中比如:DEFLATE(PKZIP壓縮軟體中的演算法),以及很多的多媒體編碼包括JPEG和MP3中。
密碼學
公共祕鑰加密
對於加密演算法而言,需要兩種不同的祕鑰,公共祕鑰是用來作為加密的明文或者驗證數字簽名。私鑰則用來解密密文,或生成數字簽名。公共祕鑰加密使得使用者可以在公共通道中安全傳送資料。雖然這種方法於1997年發表,但是由英國政府通訊總部(GCHQ)的James H. Ellis, Clifford Cocks, Malcolm Williamson在1973年設計完成,並且投入使用。
搜尋演算法
Dijkstra 最短路徑演算法
這一演算法由Dijkstra在1956年完成,這是一個為圖設計的搜尋演算法。它解決了單向圖中的最短路徑問題,因此,也可以用來生成最短路徑樹。很多基於圖的演算法中,都應用了這樣的演算法來進行路徑規劃或是子路徑選擇。上圖展示了在單向圖中,利用這樣的演算法求最短路徑的過程。
二分搜尋演算法
二分搜尋演算法用來在已經有序的陣列中找到關鍵字的位置。在說明詞義的字典中,詞的排列基本是有序的。電話本上,記錄也都按照人名、地址或是電話號碼排序。通過這樣的演算法,我們可以由人名,很快地在電話本中找到相應的電話以及地址。
排序演算法
快速排序
這種演算法由Tony Hoare在1960年設計。這個演算法本來用於調整待翻譯單詞的順序,從而使它們與詞典順序更加一致,方便翻譯。這種演算法由於在Unix系統中被用作預設排序演算法而聲名大噪。同時,這種演算法由於它在C語言標準庫中的函式名“qsort”而得名。
數學方法
Karatsuba快速相乘演算法
這種演算法用來更快完成相乘的數學操作。由Anatolii Alexeevitch Karatsuba在1962年提出。它減少了乘法中需要操作的數字,並且提供了一個快速的相乘計算方法。這種演算法的改進演算法是Toom–Cook演算法。然而,對於大數相乘,Schönhage–Strassen 演算法則是一種更快速的解決方案。
歐幾里得演算法(輾轉相除)
利用歐幾里得演算法,可以計算最大公約數。即兩個正整數可以被整除的最大數。雖然這種演算法只通過減法和比較來找到最大公約數,但是它被應用在了許多高階演算法中。歐幾里得被認為是這個演算法的發明者,歐幾里得的這個演算法被認為是歐幾里得時期(公元前300年左右)最古老的演算法之一。
圖形學的發展
Bresenham直線演算法
這種演算法由Jack Elton Bresenham在1962年,他在IBM工作期間提出。這種演算法本來用於在計算機螢幕上畫出直線。演算法用到的操作非常簡單,整數的加法,減法和移位操作。這在計算機圖形學中是非常先進的方法。基於這樣的方法,後來演算法又有了一系列的擴充,比如:畫圓演算法等。由於這種演算法的高效、快捷,至今在很多硬體中(比如繪圖儀和現代圖形卡等)這種演算法仍然十分重要並且仍在使用。.
平方根倒數速演算法
這種演算法提供了一種快速計算平方根的倒數的方法。這種方法在3D影象中廣泛應用於確定光線和投影關係,這可能需要每秒上千萬次的計算速度。在《雷神之錘三:競技場》的原始碼中就有這樣的演算法,可是,直到2002年這種演算法才被廣泛應用。這個演算法使用了一系列的簡單操作來解決複雜問題。雖然很多人認為,這種演算法由John Carmack研發,但是,SGI和3dfx早就曾在產品中應用此演算法,當時應用的是Gary Tarolli實現的版本。
相關文件:視覺直觀感受7種常用的排序演算法
相關文章
- 雲端計算開發技術,雲端計算改變企業的四種途徑
- [PIMF]《偉大的計算原理》“六脈神劍”認識OpenHarmony技術路線
- 量子計算機改變世界的7大方式計算機
- 2018年 九大改變世界的技術趨勢
- 技術如何改變敏捷的規則敏捷
- 八種改變未來的技術
- 2021年將改變雲端計算的三大趨勢
- AI技術將會如何改變遊戲設計?AI遊戲設計
- 十個改變了計算機世界的演算法,你知道幾個?計算機演算法
- 量子計算將如何改變世界?
- 風變,用技術改變與世界的相處方式
- 新華三六大計算創新技術“成就智慧計算”
- 邊緣計算如何改變企業IT
- 【前瞻】2019這五大技術趨勢將改變未來
- 亞馬遜技術長Werner Vogels預測2021:八大技術趨勢改變世界亞馬遜
- Rust將如何改變機器人技術?Rust機器人
- 革命:鋰電池技術可能改變世界
- 時代和技術在變,但數控分離的架構設計理念未曾改變架構
- 改進DevSecOps框架的 5 大關鍵技術dev框架
- 5G技術可以改變的20個行業行業
- 一個阿里技術男經歷的六年“雙11”:技術改變阿里阿里
- 隱私計算真的是一項變革性技術麼?
- 雲端計算平臺上的大資料技術解讀!大資料
- 區塊鏈技術可能為業界帶來的改變區塊鏈
- 大前端的技術原理和變遷史前端
- 隱私計算核心技術
- 計算機網路技術計算機網路
- AI識別技術,在改變全球流媒體AI
- 雲端計算改變了企業的傳統思考方式
- 區塊鏈技術中隱私計算的技術特點區塊鏈
- 大慶市中學生計算機技術應用能力大賽計算機
- 大學生不是計算機專業的也能學IT技術嗎?計算機
- IBM:未來五年改變人類生活的五項技術IBM
- 2018年區塊鏈技術將改變世界的5個方面區塊鏈
- 【技術點】計算機基礎演算法——排序 & 搜尋 & 字串匹配計算機演算法排序字串匹配
- 大資料環境下計算機軟體技術分析大資料計算機
- RFID技術,給養豬業帶來了哪些改變?
- 雲端計算儲存技術
- 雲端計算技術特點!