The Nature of Code閱讀心得與Python實作:9.2 Why Use Genetic...

更新於 發佈於 閱讀時間約 4 分鐘
這一節的標題是
9.2 Why Use Genetic Algorithms?
因為方格子標題字數限制,所以沒完整顯現

為什麼要使用GA呢?要回答這個問題,先來看看「無限猴子定理」(infinite monkey theorem)是怎麼說的。

無限猴子定理
給一隻猴子一台打字機,讓牠可以不斷地亂敲鍵盤打出字來。假設給猴子無限長的時間,那牠最終一定可以打出任何我們想要的字句來;即便是莎士比亞全集也可以打出來。

這……可能嗎?英文字母加上標點符號的字數總數是固定的,儘管排列組合的數量再大,但莎士比亞全集終究只是其中一種排列組合,所以猴子打出莎士比亞全集的機率雖然非常非常的低,但也不是零。這件乍看之下挺荒謬的事,看來還真的可能會發生。不過,哪來的無限長時間給猴子啊?!這在現實面上是不可能的;不要說莎士比亞全集了,就連哈姆雷特也不可能。

猴子頂多活個幾十年,沒有無限長的時間打字,而且打字速度也不會快到哪去,打不出哈姆雷特是顯而易見的。那如果是電腦模擬的猴子呢?只要有適當的設備,電腦猴可以一直的運作下去,而且打字速度可以非常非常的快,那結果會不會有所不同?

假設要電腦猴打出莎翁的名句「to be or not to be that is the question」好了,那會需要多少時間?打字機上頭的按鍵很多,不過這個句子裡頭去掉了標點符號,只有小寫的英文字母和空白鍵,所以,乾脆我們就縮小範圍,假設給電腦猴打字的打字機上頭只有這27個鍵,看看它需要多少時間才能打出這個句子。

打字機有27個按鍵,所以打出任何一個字元的機率是1/27。整個句子總共有39個字元,所以要打出這個句子的機率是(1/27)39。假設電腦猴每秒鐘可以打出一百萬個句子,而且有99%的機率最終會打出這句正確的句子,那根據原書的計算,它所需要的時間,還會遠遠大於宇宙至今的年齡。

所以啊,即便是電腦所模擬,打字飛快的猴子,想要亂打一通而可以打出短短的一句話,在現實面上是不太可能發生的;需要的時間太長了,不切實際。

從這個電腦猴打字的例子就可以知道,有些問題是不適合使用暴力法來解的;這時候,不妨就用GA來解。不過,可別誤會了,在這個例子中的答案是已知的,這並不代表GA只能用來找出已知的答案。事實上,GA可以在不知道正確答案的情況下,隨機地找個起點,然後透過模擬演化的方式,以遠比暴力法更快的速度找出正確的答案,是個可實際解決問題的好工具。

Exercise 9.1

# python version 3.10.9
import random
import time


# space、A-Z、a-z的ASCII值
ascii_values = [32] + [n for n in range(65, 91)] + [n for n in range(97, 123)]

string = ''
start = time.time()

while string != 'cat':
string = ''.join([chr(random.choice(ascii_values)) for _ in range(3)])

end = time.time()

print('elapsed time (sec):', end - start)
留言
avatar-img
留言分享你的想法!
avatar-img
ysf的沙龍
19會員
154內容數
寫點東西自娛娛人
你可能也想看
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 回顧 AI說書 - 從0開始 - 87 說:Wang 等人 2019 年的論文,提供了合理答案的選擇 (Choice of Plausible Answers, COP
Thumbnail
解答來囉 (AI設計的縮圖代表算數學很耗能,沒錯!)
Thumbnail
解答來囉 (AI設計的縮圖代表算數學很耗能,沒錯!)
Thumbnail
演算法映射化簡的核心觀念 在面對新題目的時候,除了重頭想一個新的演算法之外; 還有另一個方法,想看看有沒有核心觀念彼此相同的問題與演算法, 如果有,就可以把新的題目映射化簡到已知解法的問題,用已知的演算法去解開。 接著,我們會介紹幾個範例,並且使用映射化簡的技巧來解題,透過化
Thumbnail
演算法映射化簡的核心觀念 在面對新題目的時候,除了重頭想一個新的演算法之外; 還有另一個方法,想看看有沒有核心觀念彼此相同的問題與演算法, 如果有,就可以把新的題目映射化簡到已知解法的問題,用已知的演算法去解開。 接著,我們會介紹幾個範例,並且使用映射化簡的技巧來解題,透過化
Thumbnail
邏輯,是幫助我們判斷事理的重要因子。本篇我們將從表述、系統、思維下手來探討如何透過邏輯來幫助我們看清問題,甚至是解決問題。
Thumbnail
邏輯,是幫助我們判斷事理的重要因子。本篇我們將從表述、系統、思維下手來探討如何透過邏輯來幫助我們看清問題,甚至是解決問題。
Thumbnail
邏輯不是真理,但是邏輯可以從語句提煉出真理。自古以來,人們就在尋找一套工具,用來審視事物、分析經驗、組織思想、裁決爭議,也就是能判斷真假對錯的邏輯。
Thumbnail
邏輯不是真理,但是邏輯可以從語句提煉出真理。自古以來,人們就在尋找一套工具,用來審視事物、分析經驗、組織思想、裁決爭議,也就是能判斷真假對錯的邏輯。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News