一探汉语中的文字幻方

    大家都知道,幻方是这样一种数字游戏,将 1 到 n^2 这 n^2 个数填入 n×n 的方阵中之后,每行、每列及两条对角线上的数字之和都相同。作为一个古老的数学游戏,幻方的生命力极强,直到现在数学家们还在寻找满足各种奇怪性质的幻方。更有意思的是,这神奇的数字方阵后来竟也发展成了文字游戏。人们发现,在 4×4 的方阵中填入以下字母,每行每列都是一个单词:

C A R D
A R E A
R E A R
D A R T

    这样的字母方阵就被称为“文字幻方” (word square) 。

    最近本人对文字游戏尤其感兴趣,心头开始思考起这么一个问题:是否有可能在方阵中填入汉字,让每行每列都是一个词语呢?看着电脑桌面上放着上次寻找 中文 piphilology 的词库,我就又手痒了,于是花了一下午的时间,利用 Mathematica 对汉字幻方作了一些搜索。下面和大家分享一下我得到的结果。

Read more…

从全唐诗对偶字中提取字义网络图

    语言统计分析期末大作业要求我们统计全唐诗中的对偶字,并用所得到的统计结果反过来评判出对仗最工整的诗句。我在数据处理过程中突然想到,鉴于互成对偶的两个字之间有一定的语义联系,我们便有了一个庞大的汉字语义关联库;如果把所有汉字之间的关联画成一张图会是什么样子呢?于是我用 Mathematica 7 提出了全唐诗中处在对偶位置上的所有字对,得到了 464448 个可能的对偶关系;再利用一些算法得到了最稳定、最常用的 2000 个对偶关系,把它们都描绘在一张大图上,于是便有了上面的这个图。点击这里查看高清无码大图,1600×1600 像素。可以看到,有语义关联的汉字自动地聚合到了一起。

Read more…

大力普及“他妈的”有助于语言交流

    在翻看现代汉语笔记时,我突然惊奇地发现,在语言文字中大量使用“他妈的”能够非常有效地避免歧义现象,提高语言交际的效率。
    让我们来看看这个句子:“今年的考题跟去年一样”。假设你想要在这句话里面加一个“他妈的”,在通常情况下(不强调句中的任何成份时),你应该加在哪里?嗯,不错,大家通常都会说,“今年的考题跟去年他妈的一样”。但是,再看看这个句子:“他很狡猾,跟狐狸一样”。同样在这里插入一句“他妈的”,你又会加在哪里呢?相信大多数人都会说,“他很狡猾,跟他妈的狐狸一样”。同样是“跟……一样”的结构,为什么“他妈的”插入的位置就不一样呢?其根本原因就在于,两个句子看似相同,但具体结构是不一样的。当表示A和B完全相同时,说“跟B一样”指的是“和B是一个样”,其结构是“跟B”加上“一样”;当表示A与B具有相似性时,说“跟B一样”指的是“好像B的样子”,其结构是“跟”加上“B一样”。因此,在这两个划分不同的结构间插入“他妈的”,位置也理所当然的不一样了。当“A跟B一样”表示相同时,我们往往说“A跟B他妈的一样”,重音在“一样”上;但当“A跟B一样”表示相似时,我们往往说“A跟他妈的B一样”,重音在B上。
    现在,考虑这个句子:“今年的考题跟作业题一样”。这就有歧义了——是说今年的考题真的用了作业里的题呢,还是仅仅是比喻这次考题简单得像作业题?这时,“他妈的”就派上用场了。我们可以在句子间加入“他妈的”来区别:

      今年的考题跟作业题他妈的一样 (指与作业题相同)
      今年的考题跟他妈的作业题一样 (暗指考题太简单)

Read more…

假如P=NP,世界将会怎样?

    在计算机复杂度理论中,P问题指的是能够在多项式的时间里得到解决的问题,NP问题指的是能够在多项式的时间里验证一个解是否正确的问题。虽然人们大多相信P问题不等于NP问题,但人们目前既不能证明它,也不能推翻它。P是否等于NP是计算机科学领域中最突出的问题,在千禧年七大难题中排在首位。科学家们普遍认为P≠NP是有原因的。让我们来看一看,如果哪一天科学家证明了P=NP,寻找一个解和验证一个解变得同样容易,那这个世界将会变得怎样?

 
    已知的NPC难题将全部获解,这将瞬间给各个科学领域都带来革命性的进展。整数规划、01规划、背包问题全部获解,运筹学将登上一个全新的高度;数据库的串行化、多处理器调度等问题也随之解决,大大提高了计算机的性能。同时,空当接龙、扫雷、数独等经典游戏也由于获得了多项式的算法而在很大程度上失去了意义。
    算法研究方向将发生全面转移。对算法的研究可能会转向围棋等NP-Hard问题。算法设计的学问与“NP问题统一解”的关系正如小学应用题与列方程解题的关系一样,将成为一种纯粹锻炼思维的游戏。

    一些新型的自动编程语言将出现,并将逐渐取代传统的编程语言。这种新型编程语言扮演着一个“判定性/最优化问题万能解决器”的角色。在新的编程语言中,你只需要用代码指明输入数据与输出数据的关系,而无需关心计算输出数据的步骤。只要这种关系是多项式时间内可计算的,编译器将自动找到解法。在新型编程语言的支持下,人们唯一需要考虑的是,如何把实际问题转化成数学模型。

Read more…

为什么把敌人打败了=打敌人,但把肚子笑疼了≠笑肚子?

    转眼间又到期末了,各科的课程都差不多结束了。回顾这个学期的课程,音韵学毫无疑问成为了最不科学的课,而语义学和虚词研究则成为了本学期最具科学性的两门课。这学期我在沈阳老师的语义学课程中学到了不少东西,有几节课尤其精彩,以至于当时我就拍案叫绝,发誓一定要把它们写到Blog上。最精彩的一节课是关于“把”字句分析的专题讲解,其科学性、趣味性和大众性远远超过了这里这里的例子,成为了我向别人介绍语言学时引入的最佳例子。从对“把”字句的分析中我们可以看到更多语言学研究方法,其论证思想绝不亚于数理学科。

    小学语文变“把”字句“被”字句时无外乎“风把小树刮倒了”、“解放军把敌人打败了”、“大水把铁牛冲走了”,这无形之中给人带来了这样一种错觉:“把”字后面的名词是动词的宾语。例如,“小树”就是“刮”的宾语,“敌人”就是“打”的对象,“水”冲走的当然也就是“铁牛”。事实上,确实也有很多学术文章指出,“把”后名词就是动词的宾语。“宾语说”的支持者们提出了一个直观的、强有力的证据:你可以把“把”字句重新还原回主动宾结构。例如,“风把小树刮倒了”的意思就是“风刮倒了小树”,“解放军把敌人打败了”就相当于“解放军打败了敌人”,“大水把铁牛冲走了”无异于“大水冲走了铁牛”。这种说法虽然适用于绝大多数“把”字句,但也并非毫无破绽。例如,“妈妈把钱存在银行里”怎么还原为主动宾结构?妈妈存钱在银行里?妈妈存在银行里钱?都不对。这一反例足以对“宾语说”构成威胁。事实上,我们能举出很多例子来驳斥“宾语说”。一种听来奇怪但我们日常生活里常常使用的句子就是“别把自己病倒了”,这里“自己”明显只能是“病”的主语。类似的句子不止一个,像“他把老伴儿死了”、“把犯人跑了”等等,感觉虽然奇怪,但实际生活中用得不少。另一类句子更奇怪,动词和“把”后名词间根本没有直接联系,像“把肚子笑疼了”,“肚子”一词既不是“笑”的主语,也不是“笑”的宾语,事实上它与“笑”没有任何关系。“把眼睛哭肿了”、“把手帕哭湿了”也是如此,“眼睛”和“手帕”与动作“哭”没有任何结构上的联系。“宾语说”至此已完全破产。

Read more…