Algorithm 猴子能通过随机敲击键盘重现莎士比亚的作品吗?

Algorithm 猴子能通过随机敲击键盘重现莎士比亚的作品吗?,algorithm,complexity-theory,time-complexity,feasibility,Algorithm,Complexity Theory,Time Complexity,Feasibility,我正在考虑编写一个程序,随机生成一个由N个字符组成的字符串,其中N是第X册中的字符数,包括空格、正确的标点符号和大写字母。在每个随机字符生成过程中,我将检查输出是否与book X的实际文本匹配 假设使用英语字母表,并将一些健全的语法规则编码到生成器中,那么编写一个随机生成X书文本的程序在计算上是否可行 什么样的优化可以使问题更容易解决 使用现代四核i5台式计算机,您需要什么样的运行时间。使用超级计算机怎么样 粗略地说,标准格式精装书的每页都有 大约300-350个单词,每个单词有五个字符加一个空

我正在考虑编写一个程序,随机生成一个由N个字符组成的字符串,其中N是第X册中的字符数,包括空格、正确的标点符号和大写字母。在每个随机字符生成过程中,我将检查输出是否与book X的实际文本匹配

假设使用英语字母表,并将一些健全的语法规则编码到生成器中,那么编写一个随机生成X书文本的程序在计算上是否可行

什么样的优化可以使问题更容易解决

使用现代四核i5台式计算机,您需要什么样的运行时间。使用超级计算机怎么样

粗略地说,标准格式精装书的每页都有 大约300-350个单词,每个单词有五个字符加一个空格。所以 一个典型的书页有1500到1800个字符,不算在内 空格。。如果我们考虑250页作为标准书长,那么 如果不算数字,你说的可能是400000个字符 空间;如果你愿意的话


所以假设X书有500000个字符,我们的字母表大小是30。一个人能做得比30^500000~4.2×10^738560更好吗

我会用这个。

我会用这个。

你可以把它建模为一个词的排列-大多数书使用很少的词,如果有的话,除了像刘易斯·卡罗尔的《透过镜子》这样的书-你可能需要把这首诗Jabberwocky建模为一个字符排列。此外,字典中的大多数单词都没有在文学作品中使用,因此你可以将自己的字典限制在10000个最常用的单词以内,并且仍然占大多数书籍的比例


使用语法来限制单词的顺序更为棘手,因为很多书使用非法的单词顺序,尤其是在对话中。也许你可以对不在引号中的句子使用一个标准,意思是非对话,以便过滤出非法的语序,然后对在引号中的句子使用直接的单词排列。很明显,这对《尤利西斯》这样的书来说是行不通的,因为《尤利西斯》中的语法规则被扔出了窗外。

而不是字符的排列,你可以将其建模为一个词的排列-大多数书使用很少的词,如果有新的词的话,除了像刘易斯·卡罗尔的《透过镜子》这样的书-你可能需要将这首诗Jabberwocky建模为一个字符的排列。此外,字典中的大多数单词都没有在文学作品中使用,因此你可以将自己的字典限制在10000个最常用的单词以内,并且仍然占大多数书籍的比例


使用语法来限制单词的顺序更为棘手,因为很多书使用非法的单词顺序,尤其是在对话中。也许你可以对不在引号中的句子使用一个标准,意思是非对话,以便过滤出非法的语序,然后对在引号中的句子使用直接的单词排列。很明显,这对《尤利西斯》这样的书来说是行不通的,因为《尤利西斯》中的语法规则被扔出了窗外。

如果你在寻找一个疯狂到没有人尝试过的想法,你就必须更加努力地尝试:-看

数百万虚拟猴子通过在虚拟打字机上随机捣碎键盘,几乎可以重新创作莎士比亚的全集

从他们的表现来看,重建完成了99.990%

完成的第一件作品是《情人的抱怨》这首诗

该项目由美国程序员杰西·安德森(Jesse Anderson)建立,通过家用PC协调亚马逊EC2云计算系统上的虚拟猴子


+更多信息,包括与真实猴子的实践经验

如果你正在寻找一个疯狂到没有其他人尝试过的想法,你将不得不更加努力地尝试:-看

数百万虚拟猴子通过在虚拟打字机上随机捣碎键盘,几乎可以重新创作莎士比亚的全集

从他们的表现来看,重建完成了99.990%

完成的第一件作品是《情人的抱怨》这首诗

该项目由美国程序员杰西·安德森(Jesse Anderson)建立,通过家用PC协调亚马逊EC2云计算系统上的虚拟猴子


+更多信息,包括与真实猴子的实践经验

我猜这是NP难,但由于我没有真正的理由,我将把它作为一个评论而不是一个真实的答案。好问题,尽管国际海事组织:广泛研究。。一只猴子?他可能会死在他重新创作莎士比亚作品之前…:我对这个问题很困惑;如果整个N字母字符串是随机生成的,而不是j
如果是一组给定字母的排列,但却是字母表上的一个真正的随机字符串,那么就不知道计算时间;第一个生成的字符串可能已经是您想要的文本。另一方面,对于不同的概率,你可能需要任何有限的时间直到它被产生,总是有一个非零的剩余概率根本没有终止。你真的是说生成随机字符串吗?@G.Bach,为了模仿猴子,是的,它必须是随机的。但是为了使它成为一个计算上可行的问题,我选择了蛮力法:aaaaaaaaaaaaaaaaaaaab,aaaaaaaaaaaaaaaaaaaaaac,…我猜这是NP难的,但因为我没有一个真正的理由,我将把它作为一个评论而不是一个真正的答案。好问题,尽管国际海事组织:广泛研究。。一只猴子?他可能会死在他重新创作莎士比亚作品之前…:我对这个问题很困惑;如果整个N个字母的字符串是随机产生的,不仅是一组给定字母的排列,而且是一个字母表上的真正随机字符串,那么计算时间就不得而知了;第一个生成的字符串可能已经是您想要的文本。另一方面,对于不同的概率,你可能需要任何有限的时间直到它被产生,总是有一个非零的剩余概率根本没有终止。你真的是说生成随机字符串吗?@G.Bach,为了模仿猴子,是的,它必须是随机的。但是为了使它成为一个计算上可行的问题,我选择了蛮力法:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa。看起来好多了。@Ramin你可以用随机算法来改进这一点:排名前100位的英语单词占所有书面单词的50%,因此这会更好,但仍然不可行这并不是真的增加了可能性,因为你只计算了10000个有意义的单词,而忽略了5000000000个没有意义的单词。猴子无法区分两者,因此可能会重新思考你的数学。因此,问题现在变成10000^75000=1×10^300000。看起来好多了。@Ramin你可以用随机算法来改进这一点:排名前100位的英语单词占所有书面单词的50%,因此这会更好,但仍然不可行这并不是真的增加了可能性,因为你只计算了10000个有意义的单词,而忽略了5000000000个没有意义的单词。猴子无法区分两者,因此可能会重新思考你的数学。