推特总共有多少种不同的写法?全世界的人一起要花多长时间才能把它们全部读完?
—Eric H., Hopatcong, NJ
在遥远而神秘的北方高地上,耸立着一块巨石,长宽高各一百英里,每隔千年有一鸟飞来,栖于此石,以喙啄之.当巨石磨尽之时,世间便在永恒中过去一天.
—Hendrik Willem Van Loon
一条推特有140个字。一条推特会有多少种可能的组合?简单的算一下,英语里有26个字母,算上空格27个,这样的话所有可能的字符串组合总共有27 ^140 ≈10 ^ 200种。
当然你可以使用的字符远不止27个,事实上,你可以使用超过一百万种符号。推特计算字符长度的方式很复杂(twitter docs),不过我们可以大致推算出可能的推特共有10^800种。
很明显,其中绝大多数的句子都是毫无意义的由各种文字、符号、数字、火星文组成的乱码,即使限定只能使用26个英文字母,也很有可能打出来的是ptikobj之类的玩意儿。而Eric同学的问题实际上是说通过英语说出来一些有意义的句子,那发一条具有实际含义的推特又会有多少种可能呢?
这个问题显然就要棘手得多了。首先我们要限定只能够使用拼写正确的英文单词,接着这些单词还必须组成一个符合语法规定的句子,才能算一条真正意义上的推特。
这里还有一个小麻烦。举个例子,你可以发一条这样的推特—“嘿嘿,俺的名字叫Mxyztplk”。 当然,如果你的名字真的就叫“Mxyztplk”,那这句话在语法上是完全正确的。很显然,按照“嘿嘿,俺的名字叫XXX”这种形式可以写出无数条推特,而将这些推特分而计数根本毫无意义。对一个正常人来说, “嘿嘿,俺的名字叫Mxyztplk”和“嘿嘿,俺的名字叫Mxzkqklt”并没有什么区别,自然也不应该算作两条不同的推特。
还好我们还有另一种更好的算法。
假设有这么一种语言,在这种古怪的语言中总共只能表达出下面这两个句子,而使用该语言的人发出的推特只可能是这两个句子中的一个:
#“There’s a horse in aisle five.”
#“My house is full of traps.”
当你刷推特时,看到的新鲜事大概就是这样:
这些句子相对来说会比较长一些,但并不意味着其承载的信息也会相应的增加,事实上你你能从中了解到的只是某个人发的是关于马的或者是关于陷阱的内容,换言之,它是非0即1的。尽管里面包含了不少字母,但对于它的读者来说,每个句子只含有1比特的信息。
这个简单的例子揭示了一些本质的概念,即文字所包含的信息量是由其不确定性和可预见性决定的(比如例子中那个只包含两个句子的古怪语言的不确定性就很低)。
要衡量文字包含的信息量大小,我们可以借鉴一下其他研究者的方法。独力创建了现代信息理论的学者Claude Shannon,就提出过一种推算语言中信息量的巧妙方法。他将某段文字中的一部分擦去,再把这段文字向一组志愿者展示,并要求志愿者们补充缺失的部分。
基于志愿者对缺失部分猜测的正确率,通过严格的数学分析(PDF),Shannon最终确定了英语中平均每个字母所承载的信息量约为1.0至1.2比特。这也就意味着,理想的计算机算法可以将原有的文字长度压缩至原长的约1/8(计算机ASCII码中一字节等于8比特)。如果你有压缩过txt格式的电子书,也许就会留意到这一现象。
如果某一字段中包含的信息量为n 比特,那么我们就可以理解为这一字段可以表达出2^n种不同的含义(具体的数学证明略复杂,涉及到密码学中唯一解距离的概念)。总而言之,通过计算得到的所有有明确含义的推特共有2^140×1.1 ≈2×10^46 种,而非10^200 或10^800 种。
那么,它们全部读完需要多长的时间?
让一个人读完2×10^46条推特需要花上 10^47秒。对于这样一个坑爹的数字,其实是一个人读还是十亿人读区别都不是很大了—世界末日之前他们是肯定读不完的了。
现在再让我们回过头看看那只移山的愚鸟。这只执着而又长寿的鸟儿每一千年都会飞到那块巨石上磨一磨自己的鸟嘴,并且带走一粒尘埃(其实一只正常的鸟应该更有可能“留下一滩什么”而不是“带走什么”才对吧,不过既然反正是一个无厘头个故事,我们索性就让它继续无厘头下去吧)。
假如你幸运的成为了被选召的孩子,担负起为全人类读推特的使命,每天都要花16个小时的时间读推特。与此同时,鸟儿也一如既往的继续着它移山的伟大事业。当巨石被磨平,在永恒中便过去了一天,巨石再次出现,永恒中新的一天又重新开始。斗转星移,365个永恒之日——大概是10^32年——过后,又进入了新的永恒之年。
每过100个永恒之年,也就是鸟嘴磨平了36,500座巨石山后,就过了一个永恒世纪。
但是,这还远远不够,一个永恒世纪不够,一个永恒千年也不够。
读完所有的推特需要一万个永恒之年。
这么长的时间,足够看尽人类历史的没一个细节,从茹毛饮血的古老时代一直到我们纷繁的现代社会。
这也就意味着,你为之毕生奋斗的读推特事业,在有生之年恐怕是很难有所建树了。
就怪那群可恶的刷屏党。[煎蛋 via XKCD]
3 月 3 2013
What if:读完世界上所有的推特要花多长时间
本文共被喵星人侦察过4,270次。。。推特总共有多少种不同的写法?全世界的人一起要花多长时间才能把它们全部读完?
—Eric H., Hopatcong, NJ
在遥远而神秘的北方高地上,耸立着一块巨石,长宽高各一百英里,每隔千年有一鸟飞来,栖于此石,以喙啄之.当巨石磨尽之时,世间便在永恒中过去一天.
—Hendrik Willem Van Loon
一条推特有140个字。一条推特会有多少种可能的组合?简单的算一下,英语里有26个字母,算上空格27个,这样的话所有可能的字符串组合总共有27 ^140 ≈10 ^ 200种。
当然你可以使用的字符远不止27个,事实上,你可以使用超过一百万种符号。推特计算字符长度的方式很复杂(twitter docs),不过我们可以大致推算出可能的推特共有10^800种。
很明显,其中绝大多数的句子都是毫无意义的由各种文字、符号、数字、火星文组成的乱码,即使限定只能使用26个英文字母,也很有可能打出来的是ptikobj之类的玩意儿。而Eric同学的问题实际上是说通过英语说出来一些有意义的句子,那发一条具有实际含义的推特又会有多少种可能呢?
这个问题显然就要棘手得多了。首先我们要限定只能够使用拼写正确的英文单词,接着这些单词还必须组成一个符合语法规定的句子,才能算一条真正意义上的推特。
这里还有一个小麻烦。举个例子,你可以发一条这样的推特—“嘿嘿,俺的名字叫Mxyztplk”。 当然,如果你的名字真的就叫“Mxyztplk”,那这句话在语法上是完全正确的。很显然,按照“嘿嘿,俺的名字叫XXX”这种形式可以写出无数条推特,而将这些推特分而计数根本毫无意义。对一个正常人来说, “嘿嘿,俺的名字叫Mxyztplk”和“嘿嘿,俺的名字叫Mxzkqklt”并没有什么区别,自然也不应该算作两条不同的推特。
还好我们还有另一种更好的算法。
假设有这么一种语言,在这种古怪的语言中总共只能表达出下面这两个句子,而使用该语言的人发出的推特只可能是这两个句子中的一个:
#“There’s a horse in aisle five.”
#“My house is full of traps.”
当你刷推特时,看到的新鲜事大概就是这样:
这些句子相对来说会比较长一些,但并不意味着其承载的信息也会相应的增加,事实上你你能从中了解到的只是某个人发的是关于马的或者是关于陷阱的内容,换言之,它是非0即1的。尽管里面包含了不少字母,但对于它的读者来说,每个句子只含有1比特的信息。
这个简单的例子揭示了一些本质的概念,即文字所包含的信息量是由其不确定性和可预见性决定的(比如例子中那个只包含两个句子的古怪语言的不确定性就很低)。
要衡量文字包含的信息量大小,我们可以借鉴一下其他研究者的方法。独力创建了现代信息理论的学者Claude Shannon,就提出过一种推算语言中信息量的巧妙方法。他将某段文字中的一部分擦去,再把这段文字向一组志愿者展示,并要求志愿者们补充缺失的部分。
基于志愿者对缺失部分猜测的正确率,通过严格的数学分析(PDF),Shannon最终确定了英语中平均每个字母所承载的信息量约为1.0至1.2比特。这也就意味着,理想的计算机算法可以将原有的文字长度压缩至原长的约1/8(计算机ASCII码中一字节等于8比特)。如果你有压缩过txt格式的电子书,也许就会留意到这一现象。
如果某一字段中包含的信息量为n 比特,那么我们就可以理解为这一字段可以表达出2^n种不同的含义(具体的数学证明略复杂,涉及到密码学中唯一解距离的概念)。总而言之,通过计算得到的所有有明确含义的推特共有2^140×1.1 ≈2×10^46 种,而非10^200 或10^800 种。
那么,它们全部读完需要多长的时间?
让一个人读完2×10^46条推特需要花上 10^47秒。对于这样一个坑爹的数字,其实是一个人读还是十亿人读区别都不是很大了—世界末日之前他们是肯定读不完的了。
现在再让我们回过头看看那只移山的愚鸟。这只执着而又长寿的鸟儿每一千年都会飞到那块巨石上磨一磨自己的鸟嘴,并且带走一粒尘埃(其实一只正常的鸟应该更有可能“留下一滩什么”而不是“带走什么”才对吧,不过既然反正是一个无厘头个故事,我们索性就让它继续无厘头下去吧)。
假如你幸运的成为了被选召的孩子,担负起为全人类读推特的使命,每天都要花16个小时的时间读推特。与此同时,鸟儿也一如既往的继续着它移山的伟大事业。当巨石被磨平,在永恒中便过去了一天,巨石再次出现,永恒中新的一天又重新开始。斗转星移,365个永恒之日——大概是10^32年——过后,又进入了新的永恒之年。
每过100个永恒之年,也就是鸟嘴磨平了36,500座巨石山后,就过了一个永恒世纪。
但是,这还远远不够,一个永恒世纪不够,一个永恒千年也不够。
读完所有的推特需要一万个永恒之年。
这么长的时间,足够看尽人类历史的没一个细节,从茹毛饮血的古老时代一直到我们纷繁的现代社会。
这也就意味着,你为之毕生奋斗的读推特事业,在有生之年恐怕是很难有所建树了。
就怪那群可恶的刷屏党。[煎蛋 via XKCD]
By Lazy Cat • 震惊 0