www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 技術(shù)學(xué)院 > 技術(shù)前線
[導(dǎo)讀]算法,作為解決問題的精確描述,是描述策略機制的系統(tǒng)方法。讓我們在周末輕松探討五個具有深遠影響的算法:Metropolis-Hastings算法、單純形法、快速傅立葉變換、快速排序算法,以及計算特征值的QR算法。這些算法在統(tǒng)計物理、優(yōu)化、信號處理、排序甚至人工智能領(lǐng)域中扮演著關(guān)鍵角色。

算法,作為解決問題的精確描述,是描述策略機制的系統(tǒng)方法。讓我們在周末輕松探討五個具有深遠影響的算法:Metropolis-Hastings算法、單純形法、快速傅立葉變換、快速排序算法,以及計算特征值的QR算法。這些算法在統(tǒng)計物理、優(yōu)化、信號處理、排序甚至人工智能領(lǐng)域中扮演著關(guān)鍵角色。

1987年,通用電氣的兩位程序員(William E Lorensen 和 Harvey E. Cline)創(chuàng)造了行進立方體算法(marching cubesalgorithm an algorithm)。這個算法使得醫(yī)生能夠通過CT和MRI掃描的數(shù)據(jù)進行可視化處理,從而在醫(yī)學(xué)診斷中發(fā)揮了關(guān)鍵作用,挽救了無數(shù)生命。

總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

每當(dāng)你通過編程指導(dǎo)機器解決問題時,實際上是在創(chuàng)造算法。這些算法通過重新組織數(shù)據(jù)(如1和0)來執(zhí)行各種任務(wù),從簡單的如使動物發(fā)聲到復(fù)雜的如控制機器人行走。盡管許多算法可能不實用或效率低下,但也有一些算法既高效又具有美學(xué)價值,甚至有的因其獨特性而顯得神奇。文章接下來將介紹十種顛覆式的算法。

1.波函數(shù)塌縮(Wave function collapse)

波函數(shù)塌縮是科學(xué)中最奇怪的事情之一。在雙縫實驗中,當(dāng)不對粒子進行觀測時,粒子表現(xiàn)出波動性質(zhì),形成干涉圖樣。然而,一旦進行觀測,粒子的行為就會改變,顯示出典型的粒子特性,表現(xiàn)為單個點的撞擊。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

這聽起來違反直覺,當(dāng)我們從“世界是模擬的”的角度去理解量子物理的神秘現(xiàn)象時,例如在雙縫實驗中粒子的波粒二象性,就好像宇宙本身是根據(jù)某種節(jié)省資源的算法運行的。這種解釋仿佛宇宙在沒有被觀測時為了效率而采用波動模式,就像一個巨大的計算系統(tǒng)試圖節(jié)約其運算資源一樣。這是一個值得哲學(xué)上思考的有趣概念,但波函數(shù)塌縮的一般思想也可以在程序上實現(xiàn)。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

想象有一個視頻游戲的地圖,其中的地圖理論上可以無限延伸。對于這樣的游戲,制作一個無限大的地圖是不切實際的,因此需要一個算法來在游戲進行中實時、程序性地生成地圖。這意味著地圖的每個部分只有在玩家接近時才會被創(chuàng)建。

在量子物理中,波函數(shù)描述了一個量子系統(tǒng)(如一個粒子)的所有可能狀態(tài)。這個系統(tǒng)在未被觀察時存在于所有可能狀態(tài)的“超級位置”。當(dāng)我們進行觀測時,波函數(shù)“塌縮”,系統(tǒng)選擇了一個特定的狀態(tài)(比如粒子出現(xiàn)在一個特定位置)。

在游戲地圖的情況下,可以將整個未生成的地圖視為處于一種“超級位置”狀態(tài),其中包含所有可能的地圖布局。當(dāng)玩家移動并觸發(fā)地圖生成時,算法就像波函數(shù)塌縮一樣選擇并創(chuàng)建一個特定的地圖區(qū)塊。這個過程是隨機的,但又遵循一致的規(guī)則(比如確保道路連貫),從而提供既隨機又連貫的結(jié)果。

2.擴散算法(Diffusion algorithm)

擴散算法是由OpenAI最初開發(fā)的一種機器學(xué)習(xí)算法,它是像Dolly和Stable Diffusion這樣的圖像生成器背后的“魔法”。但擴散的概念實際上來自熱力學(xué),在熱力學(xué)中,擴散是一個自然過程,其中粒子從高濃度區(qū)域自然地移動到低濃度區(qū)域,直到濃度均勻分布。這種擴散過程是朝著熵(無序度)增加的方向進行的,因為粒子從有序的集中狀態(tài)分散到更無序的均勻分布。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

在人工智能中,尤其是在圖像生成的擴散算法中,這一過程被逆轉(zhuǎn)了。算法的起點是生成高熵的狀態(tài),即充滿隨機噪聲的圖像,這類似于粒子在空間中均勻且隨機分布的高熵狀態(tài)。接著,算法逐步減少這種無序度,去除噪聲,最終產(chǎn)生一個低熵、高度結(jié)構(gòu)化的圖像。這個過程就像是將熵減少,將粒子從隨機分布轉(zhuǎn)變?yōu)橛行虻募蟹植迹c熱力學(xué)中的擴散過程相反。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

在使用擴散算法之前,首先需要訓(xùn)練一個機器學(xué)習(xí)模型。這個模型需要學(xué)會如何從噪聲中重構(gòu)出清晰、連貫的圖像。擴散算法分為兩個階段。

首先,模型在前向階段學(xué)習(xí)如何向清晰圖像添加噪聲,直到圖像變得完全隨機;隨后,在逆向階段,模型再逆轉(zhuǎn)這一過程,從噪聲圖像中重構(gòu)出清晰、連貫的圖像。經(jīng)過大量標記圖像的訓(xùn)練后,這種算法能夠生成新的、獨特的圖像,適用于高計算強度的任務(wù),如音頻和視頻內(nèi)容生成。

3.模擬退火算法(Simulated Annealing)

編程和優(yōu)化問題中一個常見的挑戰(zhàn)是,對于很多問題,存在多個可能的解決方案,而找到最佳解決方案通常并不簡單。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

這里提到的“退火”一詞源自冶金學(xué),是一種處理金屬的技術(shù)。這個過程涉及將金屬加熱到一定溫度,使其內(nèi)部結(jié)構(gòu)變得柔軟和可塑,然后緩慢冷卻。這樣做的目的是減少金屬內(nèi)部的應(yīng)力和缺陷,從而改善其性能,如增強韌性和減少硬度。在優(yōu)化算法中,特別是模擬退火算法中,這個退火過程被用作尋找問題最優(yōu)解的隱喻。算法開始時,類似于冶金中的高溫退火階段,允許對解決方案空間進行廣泛的隨機探索。這意味著算法不僅可以探索看起來有前景的解決方案,而且可以跳出局部最優(yōu)解,探索那些初看起來可能不是最佳的方案。

尋找最優(yōu)解就像是在一個充滿高峰和低谷的山脈中尋找最高點。簡單的局部搜索方法,如爬山算法,可能會陷入最近的局部最高點(局部最優(yōu)解),而無法達到真正的最高點(全局最優(yōu)解)。退火算法通過在初期允許一些“壞”的移動(即使是朝向更低的點),增加了逃離局部最優(yōu)并最終找到全局最優(yōu)的可能性。隨著時間的推移,算法逐漸減少這種探索性質(zhì),趨向于穩(wěn)定在最優(yōu)解上。

因為初始時有許多局部峰值,所以溫度開始很高,允許算法自由探索。隨著時間的推移,溫度降低了,這減少了接受更差解決方案的可能性。這里的權(quán)衡是探索與利用。

4.睡眠排序(sleep sort)

有史以來最巧妙的排序算法無疑是睡眠排序。絕大多數(shù)排序算法,如快速排序、歸并排序等,都使用了一些經(jīng)典的計算機科學(xué)策略,比如分治法。這些算法通過將數(shù)組分解成較小的子數(shù)組來遞歸地進行排序,最終合并得到完整的有序數(shù)組。

然而,某位天才找到了一個更好的方法,但它有點不尋常。以下是Bash中的代碼樣子,它非常簡單。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

它遍歷數(shù)組,然后對于每個元素,它打開一個新線程,睡眠時間與其元素值成比例,最后醒來后打印該元素。這是天才之舉,在這種排序方法中,每個數(shù)組元素被分配到一個獨立的線程,并根據(jù)其值進行相應(yīng)時間長度的睡眠。睡眠時間結(jié)束后,元素被輸出。這個過程實際上是利用了操作系統(tǒng)的CPU調(diào)度器來“排序”這些元素,因為值較小的元素會先被喚醒和輸出。這種方法的獨特之處在于它完全依賴于操作系統(tǒng)的線程管理和調(diào)度機制來實現(xiàn)排序,而不是傳統(tǒng)的比較和交換操作。

雖然這種方法在理論上可行并且創(chuàng)意十足,但它在實踐中效率低下、不可靠,并且受到操作系統(tǒng)調(diào)度策略的極大影響。在實際編程應(yīng)用中,依賴CPU調(diào)度器進行排序不僅效率低下,而且結(jié)果的準確性無法保證,特別是在處理大數(shù)據(jù)集時。

5.量子BOGO排序


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

另一個奇怪的排序算法是量子BOGO排序,它嘗試通過反復(fù)隨機猜測來排序數(shù)組,就像玩彩票一樣。但如果我們將相同的算法與量子力學(xué)應(yīng)用到多元宇宙,那么每一種可能的結(jié)果,比如一個數(shù)組的所有潛在排序方式,都已經(jīng)在某個平行宇宙中實現(xiàn)。在這種情況下,一個開發(fā)者面對一個未排序的數(shù)組,理論上在某個平行宇宙中已經(jīng)存在一個排好序的版本。雖然我們的技術(shù)還無法實現(xiàn)跨宇宙觀察或旅行,但如果能做到這一點,我們或許能夠簡單地觀察到其他宇宙中的已排序數(shù)組,并通過一種假想的傳送技術(shù)前往那個宇宙,從而獲得排序后的數(shù)組。這個思路雖然純屬幻想,但在理論上提供了一個有趣的解決大型數(shù)組排序問題的可能途徑。

6.shor算法

有史以來最實用和優(yōu)秀的算法之一是RSA算法(Rivest-Shamir-Adleman)。RSA算法是公鑰密碼系統(tǒng)中最著名和廣泛使用的算法之一。它在數(shù)字安全領(lǐng)域發(fā)揮著關(guān)鍵作用,特別是在互聯(lián)網(wǎng)通信中。RSA允許人們在互聯(lián)網(wǎng)上加密數(shù)據(jù)(如電子郵件),并用數(shù)字簽名來驗證身份和信息的完整性。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

RSA算法的安全性基于一個數(shù)學(xué)上的事實:將兩個大質(zhì)數(shù)相乘相對容易,但反過來,要從它們的乘積中找出這兩個原始的質(zhì)數(shù)卻極其困難和耗時。這種單向函數(shù)的特性使得RSA成為一個強大的加密工具。

盡管目前的計算機需要非常長的時間(例如300萬億年)來破解RSA加密,但量子計算的發(fā)展可能改變這一局面。量子計算機可以運行Shor算法(Peter Shor在1994年提出的一種量子算法)。Shor算法利用了量子計算的獨特特性來執(zhí)行質(zhì)因數(shù)分解。它依賴于量子位(qubits)、疊加態(tài)和量子糾纏等概念。量子位與經(jīng)典計算中的位不同,它可以同時表示0和1的疊加態(tài)。量子糾纏是量子位之間的一種特殊關(guān)聯(lián),使得量子計算能夠并行執(zhí)行大量的計算,遠超傳統(tǒng)計算機。盡管Shor算法在理論上非常強大,但在實際應(yīng)用中還面臨著一些限制。到目前為止,使用量子計算機分解的最大數(shù)字是21。即使是像IBM的最先進的Q系統(tǒng)這樣的量子計算機,在嘗試分解稍大的數(shù)字(如35)時也未能成功。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

隨著量子計算技術(shù)的進步,未來可能需要新的加密方法來替代或增強RSA,以保持網(wǎng)絡(luò)通信的安全。這意味著網(wǎng)絡(luò)安全領(lǐng)域可能會經(jīng)歷重大變革,尤其是在量子計算機變得更加強大和實用時。

7.行進立方體算法(Marching Cubes)

文章開頭,我提到了行進立方體算法。算法從一個三維標量場開始,這里的“標量場”指的是一個三維空間,其中每個點都有一個數(shù)字值(標量)。在醫(yī)學(xué)成像的上下文中,這些標量值可以代表不同的組織密度或其他醫(yī)學(xué)相關(guān)的度量。

算法選取空間中的一個點,并考慮該點及其周圍的八個相鄰點,共同構(gòu)成一個立方體。這九個點的標量值(實際上是立方體角上的八個點)被用來確定立方體如何與所需的等值面相交。這些值被看作是一個8位整數(shù)中的位(0或1),代表了這個點是在等值面的內(nèi)部還是外部。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

由于每個點可以是0或1,這樣一個立方體有2^8=256種不同的配置方式。每種配置對應(yīng)于一個特定的多邊形(或多邊形組合),這些多邊形用于表示通過該立方體的等值面的部分。算法沿著整個標量場移動,對每個立方體重復(fù)這個過程,從而創(chuàng)建出一系列多邊形。這些多邊形拼接在一起,形成了一個完整的三維網(wǎng)格,代表了整個標量場中的等值面。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

在醫(yī)學(xué)成像(特別是MRI)中,這個過程特別有價值,因為它允許從二維數(shù)據(jù)切片中重建出精確的三維模型,為醫(yī)生提供了更詳細的視圖來進行診斷和治療規(guī)劃。

8.拜占庭容錯機制(Byzantine Fault Tolerance)

然而,在現(xiàn)代,我們常常處理的是云中的分布式系統(tǒng),這就引出了拜占庭將軍問題(Byzantine Generals Problem)。想象一下,你是拜占庭軍隊中的一名將軍,你和其他幾位將軍一起在一個城市周圍扎營,計劃在第二天早上發(fā)動攻擊。但如果其中一個將軍喝醉了,整個系統(tǒng)可能會崩潰。計算機有同樣的問題,有時它們可能會失敗或被黑客入侵,你永遠不知道何時何地會發(fā)生。

幸運的是,像PBFT(Practical Byzantine Fault Tolerance,實用拜占庭容錯)這樣的算法被設(shè)計出來解決這個問題,它們可以保證分布式網(wǎng)絡(luò)即使高達三分之一的節(jié)點出問題也能正常工作。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

它的工作原理是,一個節(jié)點向其他節(jié)點廣播一個準備消息,表明它已準備好執(zhí)行將改變系統(tǒng)的代碼。其他節(jié)點回應(yīng)同意,然后在達到一定閾值后形成共識。一旦達成共識,原始節(jié)點向所有其他節(jié)點發(fā)送提交消息,然后它們就可以執(zhí)行更改,使整個系統(tǒng)的狀態(tài)保持一致。這樣的算法對區(qū)塊鏈技術(shù)和分布式云數(shù)據(jù)庫等至關(guān)重要。

9.Boids算法

然而,算法真正厲害的地方在于,它們還可以反映自然界,就像Boyd的人工生命程序。它創(chuàng)造于1986年,模擬了鳥類的群體行為。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

Boids算法之所以引人注目,是因為它能夠從幾條簡單的行為規(guī)則出發(fā),自然地產(chǎn)生出復(fù)雜且有組織的群體動態(tài)。

在Boids模型中,每個“boid”(代表一個個體,如一只鳥)遵循以下三條基本規(guī)則:

分離:為了避免擁擠,每個個體會避免與附近的其他個體太接近。這有助于防止碰撞和過度擁擠。

對齊:每個個體傾向于與周圍個體的平均方向和速度保持一致。這有助于群體保持同一方向上的協(xié)調(diào)運動。

聚合:個體會向其附近群體的平均位置移動,以保持群體的凝聚性。

這些規(guī)則雖然簡單,但當(dāng)應(yīng)用于群體的每個個體時,會產(chǎn)生出意想不到的復(fù)雜行為模式。這些行為模式包括有序的群體形態(tài)、群體的規(guī)避障礙行為等,這些復(fù)雜的圖案并不是直接通過編程指定的,而是從個體遵循簡單規(guī)則的集體行為中自然形成的。因此,Boids算法展示了從簡單規(guī)則到復(fù)雜系統(tǒng)行為的演化,這在計算機模擬和人工生命研究中是一個非常重要的成就。

10.Boyer-Moore算法

最后,讓我們看一個古老算法——Boyer-Moore字符串搜索算法。Boyer-Moore算法的一個令人驚訝的特性是,它在處理較大的文本時,效率反而更高。這看似違反直覺,因為通常我們會期望數(shù)據(jù)量越大,搜索所需的時間越長。


總結(jié)顛覆人類社會的10個算法——重塑世界的偉大構(gòu)思

Boyer-Moore算法之所以高效,是因為它采用了一種從右到左掃描文本的方法。這與大多數(shù)字符串搜索算法從左到右的掃描方式不同。

算法的兩條規(guī)則:

壞字符規(guī)則:當(dāng)算法在文本中遇到不在搜索模式中的字符時(稱為“壞字符”),它會使用一個預(yù)處理表來決定可以安全跳過多少字符。這可以顯著減少比較的次數(shù)。

好后綴規(guī)則:當(dāng)算法找到部分匹配但隨后出現(xiàn)不匹配時,它會利用另一個預(yù)先計算的表來決定跳過的字符數(shù),這也有助于減少不必要的比較。

Boyer-Moore算法使用的這些規(guī)則被稱為啟發(fā)式方法。它們不保證在每個場景中都是最優(yōu)的,但通常比逐個字符比較的方法更有效。隨著文本長度的增加,Boyer-Moore算法通常可以跳過更多的字符,因此搜索速度更快。這使得它在實際應(yīng)用中(如UNIX系統(tǒng)中的grep命令)非常高效。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在工業(yè)控制系統(tǒng)中,Modbus RTU協(xié)議的CRC校驗如同通信網(wǎng)絡(luò)的"免疫系統(tǒng)",某石化廠DCS系統(tǒng)曾因CRC計算錯誤導(dǎo)致0.3%的數(shù)據(jù)包丟失,引發(fā)連鎖控制故障。本文將深入解析CRC-16/MODBUS算法原理,對比軟件...

關(guān)鍵字: Modbus RTU CRC 算法

加密算法分對稱加密和非對稱算法,其中對稱加密算法的加密與解密密鑰相同,非對稱加密算法的加密密鑰與解密密鑰不同,此外,還有一類不需要密鑰的散列算法。

關(guān)鍵字: 算法 嵌入式

在現(xiàn)代數(shù)字系統(tǒng)設(shè)計中,將算法高效地轉(zhuǎn)化為 RTL(寄存器傳輸級)實現(xiàn)是 FPGA 工程師的核心任務(wù)之一。這一過程不僅需要對算法有深入理解,還需掌握 FPGA 的硬件特性和設(shè)計技巧。本文將詳細介紹從算法到 RTL 實現(xiàn)的關(guān)...

關(guān)鍵字: 算法 寄存器傳輸級 數(shù)字系統(tǒng)

從本質(zhì)上講,算法是一種有條不紊、分步驟解決問題或完成任務(wù)的方法。無論是簡單的數(shù)字相加公式,還是復(fù)雜的機器學(xué)習(xí)協(xié)議,算法都是軟件應(yīng)用的基礎(chǔ),確保任務(wù)能夠高效有效地執(zhí)行。

關(guān)鍵字: 算法 嵌入式

在自動駕駛技術(shù)的發(fā)展歷程中,激光雷達(LiDAR)宛如一顆備受矚目的新星,其獨特的技術(shù)特性使其成為追求高安全性、高可靠性自動駕駛方案的首選。然而,這顆新星并非毫無爭議,“價格昂貴、結(jié)構(gòu)復(fù)雜、算法難度高” 等標簽,也讓一些...

關(guān)鍵字: 自動駕駛 激光雷達 算法

4月2日消息,近日,有關(guān)智能駕駛而引發(fā)的交通事故在網(wǎng)絡(luò)上引起了大家的熱烈討論,對此,央視網(wǎng)評指出,“智能駕駛”,也請握緊方向盤。

關(guān)鍵字: 算法 智能駕駛

所謂排序算法,即通過特定的算法因式將一組或多組數(shù)據(jù)按照既定模式進行重新排序。這種新序列遵循著一定的規(guī)則,體現(xiàn)出一定的規(guī)律,因此,經(jīng)處理后的數(shù)據(jù)便于篩選和計算,大大提高了計算效率。對于排序,我們首先要求其具有一定的穩(wěn)定性,...

關(guān)鍵字: 排序算法 算法

快速排序通過一趟排序?qū)⒋判蛄蟹指畛瑟毩⒌膬刹糠?,其中一部分序列的關(guān)鍵字均比另一部分序列的關(guān)鍵字小,則可分別對這兩部分序列繼續(xù)進行排序,以達到整個序列有序的目的。

關(guān)鍵字: 快速排序 算法

服務(wù)需要保護自己,以免被太多的請求淹沒(無論是惡意或無意的),從而保持可用性。舉個生活中的例子,某個景區(qū),平時可能根本沒什么人前往,但是一旦到了國慶假日就人滿為患,這時景區(qū)管理人員就會實施一系列的限流舉措,來限制進入的人...

關(guān)鍵字: 限流 算法

編程語言確實會影響程序性能。不同的編程語言具有不同的優(yōu)缺點,同時也會受到它們的底層實現(xiàn)和執(zhí)行環(huán)境的影響。在編寫程序時,開發(fā)人員需要根據(jù)實際需求和特定情況選擇合適的編程語言,并且采用一些優(yōu)化技巧來提高程序性能。

關(guān)鍵字: 編程語言 算法
關(guān)閉