隨機化演算法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

进化计算

Polymorphic code 遗传算法 染色体 Clonal selection algorithm 交叉 突变 Genetic memory Genetic fuzzy systems Selection Fly algorithm 遗传编程 Cartesian genetic programming

遺傳運算元

评比选择 (rank selection) 和稳定状态选择 (steady state selection). https://web.archive.org/web/20101110022208/http://www.slidefinder.net/g/genetic_algorithm

快速排序

和最壞情況是 O ( n 2 log ⁡ n ) {\displaystyle O(n^{2}\log n)} 的空間需求。 選擇算法(selection algorithm)可以選取一個數列的第 k {\displaystyle k} 個最小值;一般而言這是比排序還簡單的問題。一個簡單但是有效率的選擇

排序算法

在計算機科學與數學中,一個排序算法(英語:Sorting algorithm)是一種能將一串資料依照特定排序方式排列的算法,排序後的資料即可放在有序陣列。最常用到的排序方式是數值順序以及字典順序。有效的排序算法在一些算法(例如搜尋算法與合併算法(英语:Merge algorithm

内容协商

Transparent Content Negotiation in HTTP RFC 2296 — HTTP Remote Variant Selection Algorithm -- RVSA/1.0 Apache Content Negotiation (页面存档备份,存于互联网档案馆) Open source

萤火虫算法

萤火虫算法(Firefly Algorithm)是一种启发式算法,灵感来自于螢火蟲闪烁的行为。萤火虫的闪光,其主要目的是作为一个信号系统,以吸引其他的萤火虫。时为剑桥大学研究员的杨新社提出了萤火虫算法,其假设为: 萤火虫不分性别,这样一个萤火虫将会吸引到所有其他的萤火虫;

普适达尔文主义

普适达尔文主义(英語:universal Darwinism),又称为广义达尔文主义(generalized Darwinism)、普遍选择理论(universal selection theory)、达尔文形而上学(Darwinian metaphysics)等,是指将达尔文主义理论从生物演化领域扩展到其他领域的各种方法

精度衰减因子

(原始内容存档于2018-06-02) (英语).  Zhang, Miaoyan; Zhang, Jun. A Fast Satellite Selection Algorithm: Beyond Four Satellites. IEEE Journal of Selected Topics in Signal