隨機化演算法randomized algorithm)是在邏輯或執行過程中使用隨機性的演算法。這類演算法通常使用均勻隨機位元作為輔助輸入,以引導演算法的行為,並期望在所有可能的隨機選擇之平均情況下取得良好效能。因此,隨機化演算法的執行時間、輸出結果,或兩者都可能是隨機變數。[1]

隨機化演算法可依其對正確性與執行時間的保證分為不同類型。一類演算法會使用隨機輸入,並總是以正確答案終止,其執行時間可能根據隨機選擇而改變,這類演算法稱為拉斯維加斯演算法。另一類演算法通常具有固定或有界的執行時間,但可能有一定機率產生錯誤結果或無法得到結果,這類演算法稱為蒙地卡羅演算法[1]

在實際應用中,隨機化演算法通常會以偽隨機數生成器取代理論上的真正隨機位元來源。不過,這樣的實作可能會偏離理論上預期的行為與數學保證,因為某些保證可能依賴理想的真正隨機數生成器。[1]


早期歷史

编辑

排序

编辑

快速排序東尼·霍爾於 1959 年發現,並於 1961 年正式發表。[2] 同年,霍爾也發表了快速選擇演算法;該演算法可在期望線性時間內找出列表中的中位數元素。[3] 至於是否存在確定性的線性時間選擇演算法,直到 1973 年才獲得解答。[4]

資料結構

编辑

最早的隨機化資料結構之一是雜湊表。雜湊表由 IBM 的漢斯·彼得·盧恩於 1953 年提出。[5] 盧恩的雜湊表使用鏈結法處理衝突,是鏈結串列的早期應用之一。[5]

例子

编辑

快速排序

编辑

快速排序是常見且廣泛使用的演算法,也是隨機性發揮作用的典型例子。許多確定性版本的快速排序,對於某些類型的退化輸入,例如已排序的陣列,可能需要   時間才能完成對   個數的排序;實際會導致此情況的輸入類型,取決於演算法選擇基準值的方式。

然而,若演算法每次都均勻隨機選取基準值,則無論輸入資料本身具有何種特性,快速排序被證明有很高的機率在   時間內完成。[1]

參考資料

编辑
  1. ^ 1.0 1.1 1.2 1.3 Motwani, Rajeev; Raghavan, Prabhakar. Randomized Algorithms. Cambridge University Press. 1995. ISBN 978-0-521-47465-8. 
  2. ^ Hoare, C. A. R. Algorithm 64: Quicksort. Communications of the ACM. 1961-07, 4 (7): 321. ISSN 0001-0782. doi:10.1145/366622.366644. 
  3. ^ Hoare, C. A. R. Algorithm 65: Find. Communications of the ACM. 1961-07, 4 (7): 321–322. ISSN 0001-0782. doi:10.1145/366622.366647. 
  4. ^ Blum, Manuel; Floyd, Robert W.; Pratt, Vaughan; Rivest, Ronald L.; Tarjan, Robert E. Time bounds for selection. Journal of Computer and System Sciences. 1973-08, 7 (4): 448–461. doi:10.1016/S0022-0000(73)80033-9. 
  5. ^ 5.0 5.1 Knuth, Donald E. The Art of Computer Programming, Volume 3: Sorting and Searching 2nd. Addison-Wesley. 1998: 536–549. ISBN 978-0-201-89685-5. 

📚 Artikel Terkait di Wikipedia

計算機代數系統

计算机代数系统(英语:computer algebra system,缩写作:CAS),或符号代数系统(symbolic algebra system,缩写作SAS),是能够以类似于数学家和科学家传统手动计算的方式操作数学表达式的数学软件。这种系统的要件是数学表达式的符号运算。

量子演算法

量子演算法(Quantum algorithm;量子算法)是在量子計算中,於量子計算的現實模型上運行的演算法,最常用的模型是量子線路的計算模型。經典(或非量子)演算法是有限的指令序列,或用於解決問題的分步驟過程,其中每個步驟或指令都可以在經典計算機上執行。同樣地量子演算法是一個循序漸進的過程,其中

國際資料加密演算法

國際資料加密演算法(英語:International Data Encryption Algorithm,縮寫為 IDEA),最早稱為改良建議加密標準(Improved Proposed Encryption Standard,IPES),是密碼學上一種對稱密鑰分組密碼,由James

戴克斯特拉算法

戴克斯特拉算法(英語:Dijkstra's algorithm),又稱迪杰斯特拉算法、Dijkstra算法,是由荷兰计算机科学家艾茲赫尔·戴克斯特拉在1956年发现的算法,并于3年后在期刊上发表。戴克斯特拉算法使用类似廣度优先搜索的方法解决赋权图的单源最短路径问题。

聚类分析

SLINK: an optimally efficient algorithm for the single-link cluster method (PDF). The Computer Journal (British Computer Society). 1973, 16 (1): 30–34

平行演算法

在計算機科學中,平行演算法(英語:Parallel algorithm),或並行演算法(英語:concurrent algorithm),是一種演算法,將計算程序分解成許多更小的步驟,並將這些步驟交由不同的運算裝置,同時進行運算,之後將運算結果合併,求出解答。與傳統的循序演算法不同,因為它可以改善

托马苏洛算法

数字设计和计算机体系结构(原书名:Digital Design and Computer Architechture). 北京: 机械工业出版社. ISBN 978-7-111-25459-1.  Dynamic Scheduling - Tomasulo's Algorithm(页面存档备份,存于互联网档案馆) Web based

微型加密算法

在密码学中,微型加密算法(Tiny Encryption Algorithm,TEA)是一种易于描述和执行的块密码,通常只需要很少的代码就可实现。其设计者是剑桥大学计算机实验室的大卫·惠勒(英语:David Wheeler (computer scientist))与罗杰·尼达姆(英语:Roger