[導(dǎo)讀] 算法(Algorithm)是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問(wèn)題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問(wèn)題的策略機(jī)制。周末了,今天來(lái)輕松概念性總結(jié)分享一下改變世界5大算法,當(dāng)然足以改變世界的算法遠(yuǎn)不止這5個(gè)。比如還有卡爾曼濾波算法啦等等,等以后有機(jī)會(huì)整理。
Metropolis算法
在統(tǒng)計(jì)和統(tǒng)計(jì)物理學(xué)中,Metropolis-Hastings算法是一種馬爾可夫鏈蒙特卡洛(MCMC)方法,用于從難以直接采樣的概率分布中獲取隨機(jī)樣本序列。該序列可用于近似分布(例如,生成直方圖)或計(jì)算積分(例如,期望值)。Metropolis-Hastings和其他MCMC算法通常用于多維分布的采樣,尤其是在維數(shù)較多時(shí)。對(duì)于一維分布,通常還有其他方法(例如自適應(yīng)拒絕采樣)可以直接從分布中返回獨(dú)立樣本,并且這些方法不會(huì)出現(xiàn)MCMC方法固有的自相關(guān)樣本問(wèn)題。
Metropolis算法是一種根據(jù)Boltzmann分布生成系統(tǒng)狀態(tài)的Markov-Chain-Monte-Carlo方法。從該算法中衍生出的更通用的Metropolis-Hastings算法可以模擬隨機(jī)變量序列,更精確地模擬了期望分布為平穩(wěn)分布的馬爾科夫鏈,特別是在許多隨機(jī)變量的分布無(wú)法直接模擬的情況下。
該算法以Nicholas Metropolis的名字命名,后者與Arianna W. Rosenbluth,Marshall Rosenbluth,Augusta H. Teller和Edward Teller共同撰寫了1953年的文章《Equation of State Calculations by Fast Computing Machines》。
為啥這個(gè)算法牛?Metropolis算法是蒙特卡洛方法中最著名的算法,它的應(yīng)用領(lǐng)域包括統(tǒng)計(jì)物理、QCD、天體物理、物理化學(xué)、數(shù)學(xué)、計(jì)算生物、人工智能等等,甚至是社會(huì)科學(xué)。
使用Metropolis-Hastings算法在Rosenbrock函數(shù)上運(yùn)行的3D馬爾可夫鏈的結(jié)果。該算法從后驗(yàn)概率高的區(qū)域采樣,鏈開始在這些區(qū)域混合。
單純形法
在數(shù)學(xué)優(yōu)化中,Dantzig的單純形算法(或單純形方法)是用于線性規(guī)劃的一種流行算法。該算法的名稱源自單純形的概念,由T. S. Motzkin提出。單純形法(也稱為單純形算法)是用于解決線性優(yōu)化問(wèn)題的數(shù)值優(yōu)化方法,也稱為線性程序(LP)。它僅需經(jīng)過(guò)有限的多個(gè)步驟即可解決此問(wèn)題,或者確定其不溶性或無(wú)限性。單純形法的基本思想是1947年由George Dantzig提出的。從那以后,通過(guò)大量改進(jìn),它們已發(fā)展成為實(shí)際中最重要的線性優(yōu)化解決方案。單純形法是樞軸法
一個(gè)線性不等式系統(tǒng)將一個(gè)多面體定義為一個(gè)可行域。單純形算法從一個(gè)起始點(diǎn)開始,沿著多面體的邊緣移動(dòng),直到到達(dá)最優(yōu)解的頂點(diǎn)。
3D中的單純形算法多面體:
如今線性規(guī)劃的理論與算法均非常成熟,在實(shí)際問(wèn)題和生產(chǎn)生活中的應(yīng)用非常廣泛;線性規(guī)劃問(wèn)題的誕生標(biāo)志著一個(gè)新的應(yīng)用數(shù)學(xué)分支———數(shù)學(xué)規(guī)劃時(shí)代的到來(lái)。過(guò)去的 60 年中,數(shù)學(xué)規(guī)劃已經(jīng)成為一門成熟的學(xué)科。其理論與方法被應(yīng)用到經(jīng)濟(jì)、 金融、 軍事、機(jī)器學(xué)習(xí)等各個(gè)領(lǐng)域。數(shù)學(xué)規(guī)劃領(lǐng)域內(nèi),其他重要分支的很多問(wèn)題是在線性規(guī)劃理論與算法的基礎(chǔ)上建立起來(lái)的, 同時(shí)也是利用線性規(guī)劃的理論來(lái)解決和處理的。由此可見(jiàn), 線性規(guī)劃問(wèn)題在整個(gè)數(shù)學(xué)規(guī)劃和應(yīng)用數(shù)學(xué)領(lǐng)域中占有重要地位。因此, 研究單純形法的產(chǎn)生與發(fā)展對(duì)于認(rèn)識(shí)整個(gè)數(shù)學(xué)規(guī)劃的發(fā)展有重大意義
快速傅立葉算法
啥是傅立葉變換?表示能將滿足一定條件的某個(gè)函數(shù)表示成三角函數(shù)(正弦和/或余弦函數(shù))或者它們的積分的線性組合。在不同的研究領(lǐng)域,傅立葉變換具有多種不同的變體形式,如連續(xù)傅立葉變換和離散傅立葉變換。最初傅立葉分析是作為熱過(guò)程的解析分析的工具被提出的。通過(guò)下面幾步看一下近似方波近似疊加過(guò)程:
如果一個(gè)點(diǎn)以恒定的速度繞圓周運(yùn)動(dòng),那么它離地面的高度就是一個(gè)正弦函數(shù)。點(diǎn)移動(dòng)的速度對(duì)應(yīng)于頻率,圓的半徑對(duì)應(yīng)于振幅。
再增加一個(gè)速率圓周運(yùn)
再增加幾個(gè)看看:
是不是已經(jīng)很接近方波了?
而快速傅立葉變換(FFT)是用于高效計(jì)算離散傅立葉變換(DFT)的算法。它可以用于將數(shù)字信號(hào)分解為頻率分量,然后可以對(duì)其進(jìn)行分析。類似地,存在離散傅里葉逆快速傅里葉逆變換(IFFT)。IFFT使用相同的算法,但具有共軛系數(shù)。
下圖展示一個(gè)時(shí)域信號(hào)做FFT后的譜線圖:
快速傅里葉變換是1965年由J.W.庫(kù)利和T.W.圖基提出的。采用這種算法能使計(jì)算機(jī)計(jì)算離散傅里葉變換所需要的乘法次數(shù)大為減少,特別是被變換的抽樣點(diǎn)數(shù)N越多,F(xiàn)FT算法計(jì)算量的節(jié)省就越顯著。
James Cooley:
John Tukey:
計(jì)算量小的顯著的優(yōu)點(diǎn),使得FFT在信號(hào)處理技術(shù)領(lǐng)域獲得了廣泛應(yīng)用,結(jié)合高速硬件就能實(shí)現(xiàn)對(duì)信號(hào)的實(shí)時(shí)處理。例如,對(duì)語(yǔ)音信號(hào)的分析和合成,對(duì)通信系統(tǒng)中實(shí)現(xiàn)全數(shù)字化的時(shí)分制與頻分制(TDM/FDM)的復(fù)用轉(zhuǎn)換,在頻域?qū)π盘?hào)濾波以及相關(guān)分析,通過(guò)對(duì)雷達(dá)、聲納、振動(dòng)信號(hào)的頻譜分析以提高對(duì)目標(biāo)的搜索和跟蹤的分辨率等等,都要用到FFT??梢哉f(shuō)FFT的出現(xiàn),對(duì)數(shù)字信號(hào)處理學(xué)科的發(fā)展起了重要的作用。
快速排序算法
大家熟知的快速排序是一種快速的、遞歸的、非穩(wěn)定的排序算法,它的工作原理是部分和優(yōu)勢(shì)。它是在1960年左右由C.安東尼R.霍爾(C. Antony R. Hoare)開發(fā)出來(lái)的基本形式,后來(lái)經(jīng)過(guò)許多研究人員的改進(jìn)。該算法的優(yōu)點(diǎn)是有一個(gè)非常短的內(nèi)部循環(huán)(這大大提高了執(zhí)行速度)。它不需要額外的內(nèi)存(除了遞歸調(diào)用堆棧上需要的額外空間之外)。
這算法應(yīng)用在計(jì)算機(jī)科學(xué)中大量應(yīng)用自不必多說(shuō)。當(dāng)然也是本文幾個(gè)算法相對(duì)容易理解的算法。這算法對(duì)現(xiàn)代軟件編程影響深遠(yuǎn),大浪淘沙,流傳久遠(yuǎn)!
計(jì)算特征值的QR算法
QR算法是一種計(jì)算所有特征值和二次矩陣特征向量的數(shù)值方法。QR法或QR迭代法是在QR分解的基礎(chǔ)上,由John G. F. Francis和Wera Nikolajewna Kublanowskaja在1961-1962年獨(dú)立提出的。其前身是Heinz Rutishauser(1958)提出的LR算法,該算法穩(wěn)定性較差,基于LR分解。QR算法的迭代往往收斂于矩陣的Schur形式。最初的過(guò)程相當(dāng)復(fù)雜,因此,即使在今天的計(jì)算機(jī)上,對(duì)于具有數(shù)十萬(wàn)行和列的矩陣也是不可行的。
派生的變體,如Z. Bai和James Demmel 1989的多移位方法和K. Braman、R. Byers和R. Mathias 2002的在數(shù)值上更穩(wěn)定的變體,具有實(shí)際運(yùn)行時(shí),其大小為矩陣的立方。后一種方法在數(shù)值軟件庫(kù)LAPACK中實(shí)現(xiàn),而后者在許多計(jì)算機(jī)代數(shù)系統(tǒng)(CAS)中用于數(shù)值矩陣算法
系統(tǒng)辨識(shí)是現(xiàn)代控制理論的重要組成部分。對(duì)系統(tǒng)的結(jié)構(gòu)和參數(shù)進(jìn)行辨識(shí)在工程上和理論上都占有重要的地位。最小二乘法是系統(tǒng)參數(shù)辨識(shí)中的重要估計(jì)方法,并在眾多領(lǐng)域和場(chǎng)合得到了廣泛的應(yīng)用。
QR分解算法在現(xiàn)在火熱的人工智能領(lǐng)域更是基礎(chǔ)算法之一,有此有其是改變世界的算法并不夸張。
-
算法
+關(guān)注
關(guān)注
23文章
4622瀏覽量
93101 -
卡爾曼濾波
+關(guān)注
關(guān)注
3文章
166瀏覽量
24667
原文標(biāo)題:聊聊改變世界的5大算法
文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論