清华大学化工系李有润、沈静珠两位老师在《红楼梦学刊》2003年第4辑发表题为《红楼梦中的数据校正》一文,详细介绍了用数学模型计算《红楼梦》中群芳开夜宴时群芳座次的推理校正方法。因文章比较专业,浪人将文章的主要部分节录选帖如下:
《红楼梦》第63 回寿怡红群芳开夜宴一回中,群芳的占花名游戏为建立数学模型提供了可能。一人将骰子盛在盒内,摇了摇,揭开看里面是几点再数到谁,然后抽出花签,继续传下去。游戏写的十分生动有趣,但是那些数字和小姐丫鬟们的座位,怎么也对不起来。于是设想这里面可能有些数字不准确。那么怎么修正这些数据,使小姐丫鬟们还有宝玉真正坐在自己的座位上呢? 这是一个很有趣的问题。
下面就这问题建立数学模型。假设总人数为N 包括宝玉、黛玉、宝钗、李纨、湘云、宝琴、探春、香菱,还有袭人、麝月、秋纹、晴雯(这四人每人出五钱银子庆宝玉生日); 芳官,碧痕,春燕,四儿(这四个每人出三钱银子);还有一个翠墨是去请李纨、宝琴的也可能参加到游戏中来。把每一个人的座位号用一个数学整型变量来代表。
设晴雯用X(1) 代表,用了数学分析就要把那些姐妹的芳名去掉而代之以干瘪的数学符号。这像她们起诗社时黛玉说的“既然定要起诗社,咱们就是诗翁了,先把这些“姐妹叔嫂字样改了,才不俗”,于是每人起了个别号代表。现在我们也用变量代表这些小姐丫鬟们的芳名。(按抓签顺序) 。
晴雯= X(1) ,宝钗= X(2) ,探春= X(3) ,李纨= X(4) ,
黛玉= X(5) ,湘云= X(6) ,宝玉= X(7) ,麝月= X(8) ,
香菱= X(9) ,袭人= X(10) ,其它人不在方程中所以可不列。
按游戏的叙述建立模型
X(1) + 6 = X(2) ①
X(2) + 16 = X(3) ②
X(3) + 19 - N = X(4) ③
X(4) + 1 = X(5) ④
X(5) + 18 - N = X(6) ⑤
X(6) - 1 = X(5) ⑥
X(6) + 1 = X(7) ⑦
X(6) + 9 = X(8) ⑧
X(8) + 10 = X(9) ⑨
X(9) + 6 = X(5) ⑩
X(5) + 20 - N = X(10) ⑾
对方程解释一下,晴雯摇出个六点,数至宝钗,那么就是X(1) + 6= X(2) 。方程③中, “探春被湘云拿着他的手,强掷了个十九点出来便该李氏掣”。但因为大家是转着圆圈坐,当点数太多超出总人数时会绕回来。所以要减去总人数,即X(3) + 19 - N = X(4)
这十一个方程有十一个变量应当是有解的。但由于里面有些数字有误所以出现了一些矛盾方程。致使方程无解。
例如:将方程⑤⑥联立,得
X(5) + 18 - N = X(5) + 1 可得N = 17
但若将式⑥⑧⑨⑩联立,则得
X(6) + 9 + 10 + 6 = X(6)-1
X(6) + 26 = X(6)
那么N = 26 或2N = 26 ,N = 13。这与上面的解矛盾,所以可以认为方程中有些数字有误。
当然,这些方程的可靠程度也不完全一样,例如上家,下家不太会错,但数的点数多了,有错误的可能性就大。有些还是比较模糊的,例如“宝玉先饮了半杯,瞅人不见递与芳官”。可知芳官位置离宝玉较近这就较模糊。
那么上面方程中的数据哪些是正确的,哪些需要校正,怎么校正,才能得到一个圆满的结果?
数据校正中有不同的校正原则。一种是以校正后的数据的方差最小为目标(以下用了数学方程反复迭代校正求解方法。过程循环复杂,可由计算机代劳——浪人注。以下校正过程省略)
…………
数据校正后的座位应是这样排:见下图。
宝钗 李纨
探春 黛玉
宝琴 湘云
香菱 宝玉
秋 麝 晴 碧 春 翠 四 芳 袭
纹 月 雯 痕 燕 墨 儿 官 人
这个座位表就符合校正后的游戏叙述。也符合一般的规律,例如“袭人等端了椅子在炕沿下陪着”,黛玉按书中讲的“过这边靠板壁坐,又拿了个靠背垫着些”。
宝玉和香菱打横也有一定道理。以前宝玉、平儿、宝琴、岫烟四人同一天过生日,也是”终久让宝琴、岫烟二人在上,平儿面西坐,宝玉面东坐”至于秋纹,碧痕,春燕,翠墨,四儿书中没有讲她们的游戏,几个人的座位可随意交换。
红楼梦的研究奥妙无穷。从不同角度,不同学科来探讨也许会带来一些另类的启示。我们想用理工科中的方法探讨一个文学中的数字问题,这只是一个很肤浅的探试。我们还想用这种方法探讨红楼梦中其它年龄、年代中的不一致的数据,希望能得到一些新的启示。说一句笑话这可算作一个新的学科分支就叫“红楼梦数学分析”就是以最小或最少的校正获得最佳的自圆其说的结果。望有志者一起加入探讨。
浪人注:为便于红友看懂此文,浪人对文章进行了摘要删节。数学基础好的红友可阅读原文。(原文作者:清华大学化工系,邮编:100084)
