书城科普读物探索未知-读故事谈数学
15655200000002

第2章 新捕蛇者说

唐朝著名政治家、文学家柳宗元,因参与以王叔文为首的政治革新运动,失败后被贬官为永州司马。在永州他写了著名的《捕蛇者说》。在这篇文章中,他描写了在永州之野出产的一种黑底白花的异蛇:它触着草木,草木尽会枯死;咬了人,则无药可治。但是如果把它捉来晾干做成药物,可以治许多大病。所以,太医用皇帝的命令来征集这种蛇,规定当地的农民每年只要能交两次蛇,就可免掉他全年的租税。由于当时政治腐败,贪官横行,封建王朝的各种苛捐杂税向农民纷至沓来,农民不堪重负,民不聊生。自从有了这个捕蛇的差事,尽管捕蛇极端危险,但为了减轻无法承受的负担,永州的人都冒着生命危险争着去干。

有一个姓蒋的农民,他家祖孙三代都干这捉蛇抵税的差事。他的祖父是被毒蛇咬死的,父亲也是捕蛇时被咬死的,他本人又接着干了12年,好几次都差点被毒蛇咬死了。

柳宗元十分同情他,表示要请地方官免掉他捕蛇的差使,恢复他纳税的义务。姓蒋的农民听了,悲痛地大哭起来,说:您以为这是可怜我而给我一条生路吗?其实我捕蛇虽然不幸,但比起村里那些纳税的人又好得多了。如果我不捕蛇,早已没命了。接着,姓蒋农民列举出了一组数据:曩与吾祖居者,今其室十无一焉;与吾父居者,今其室十无二、三焉;与吾居十二年者,今其室十无四、五焉。非死则徙尔,而吾以捕蛇独存。

这段话用现代汉语来表述,其大意是:由于自然环境的恶劣,苛捐杂税的严重,从前和我祖父同住的人家,现在剩下不到十分之一了;与我父亲同住的人家,现在剩下不到十分之二三了;和我同住了12年的人家,所剩也不到十分之四五了。他们不是因穷困而死就是逃亡外地了。只有我靠着捕蛇还勉强活了下来。

这段文字中那些触目惊心的数据,充分暴露了李唐王朝对农民的残酷压榨。另外值得注意的是,文中对当地户口减少的统计方法,还隐含着一个重要的数学问题,它可以影响我们对原文的理解。

文中提到了三代居民:

和蒋氏的祖父同住者,把他们的集合记为A;和蒋氏父亲同住者,把他们的集合记为B;和蒋氏本人同住12年的,把他们所成的集合记为C。

对于A、B、C这三个集合之间的关系,人们可能有三种不同的理解:第一种理解是A、B、C三个集合互不相交,即“与祖父同住者”、“与父亲同住者”和“与我同住12年者”是一些完全不同的人家,它们各自有一部分幸存下来了,如图4所示:第二种理解是A、B、C三个集合依次具有包含关系,集合C是集合B的子集,集合B又是集合A的子集,即把“与祖父同住者”当作一个总体。祖父死后,一部分人家已消失,一部分人家幸存下来,成为“与父亲同住者”。父亲死后,又有一部分人家消失了,一部分幸存下来,成为“与我同住者”。与我同住了12年的人,也有一大半消失了。现在剩下的人家,如果以祖父在时的户口为基数统计,则不到十分之一了;以父亲在时的户口统计,则不到十分之二三了;按与蒋氏同住12年的户口统计,也不到半数了。可用图5来表示。

第三种理解则如图6所示:A、B、C三个集合两两相交,既不是完全分离,也不是完全包含。圆A表示当年与祖父同住者;圆B表示与父同住者。它分成两部分:其中一部分是原与祖父同住幸存到父亲这一辈下来的,另一部分是未与祖父同住的新生户。圆C表示与我同住12年者。它要分成三部分:一部分是原来曾与祖父同住,但由于种种原因(例如逃亡异乡)并未与父同住,现在又返回原籍与我同住;一部分是曾与父同住(其中还包括也曾与祖父同居者)幸存下来又与我同住的;再一部分则是新生户,他们与祖父、父亲都未同住。如图6所标示的,有的只与一代人同住,有的只与两代人同住,有的则与祖孙三代都同住,情况比较复杂,它们之中的幸存者没有用图表示出来。对于《捕蛇者说》这篇文章来说,按第二种理解比较合乎情理。但在日常生活中,碰到最多的则是第三种理解的情况。

现在我们把上述那段统计数字,按第三种方式的理解改编成下面的数学题:永州有一个蒋家村,共有100户人家,多以特种养殖致富。已知该村有10%的人家养甲鱼,30%的人家养泥蛙,50%的人家养蛇。5%同时养甲鱼和泥蛙,7%同时养甲鱼和蛇,9%同时养泥蛙和蛇。还有3%的人家三种动物都养。没有养殖的人家则联合办了一个加工厂,问这个加工厂有几户人家?

要解决这类问题,需要用到集合论中一个叫做容斥原理的法则。现在我们来介绍一下什么叫容斥原理。

假设有N件物品,它们可能具有A、B、C三种性质中的一种或数种。用N(A)、N(B)、N(C)分别表示具有性质A、B、C的物体数;用N(AB)、N(AC)、N(BC)分别表示同时具有性质A与B、A与C、B与C两种性质的物体数;用N(ABC)表示同时具有A、B、C三种性质的物体数;用N(O)表示不具备A、B、C三种性质中任何一种的物体数。那么有公式:N(O)=N-N(A)-N(B)-N(C)+N(AB)+N(AC)+N(BC)-N(ABC)(1)

如图7所示,把所有N件物体所成的集合用一个矩形表示,标有A、B、C的三个圆分别表示恰好具有A、B、C三种性质之一的集合,圆A与圆B相交所成的部分PSQU(用AB标示)表示同时具有A与B两个性质的集合,同样地,标有AC的图形RUSQ表示同时具有A与C两种性质的集合,标有BC的图形VQUS表示同时具有B与C两种性质的集合。最后,标有ABC的图形SQU表示同时具有A、B、C三种性质的集合。并且用图形相应的面积表示它们代表的集合中元素的个数。

为了计算不具有A、B、C三种性质中任何一种的物体的个数N(O),如图8所示,可将矩形的面积减去阴影部分的面积即得。

在具体计算时,可先求出:

N-N(A)-N(B)-N(C)

但这并不是N(O)的面积,因为图中PSQU这一块被多减了一次,它们在减去N(A)时减了一次,在减去N(B)时又减了一次。同理图中RUSQ和SVQU这两块也分别多减了一次,所以要加回来。从而得到N-N(A)-N(B)-N(C)+N(AB)+N(AC)+N(BC)但这样算出来的还不是N(O)的面积,因为图中USQ那一块,在减去N(A)、N(B)、N(C)时每次都减了一次,共减去3次;但在加上N(AB)、N(AC)、N(BC)时每次又加了一次,共加3次。先减去3次,后加上3次,恰好相互抵消,所以还要再减去一次。于是得到N(O)=N-N(A)-N(B)-N(C)+N(AB)+N(AC)+N(BC)-N(ABC)有了这个公式,我们就可以很容易地解答提出的问题了:N(A)=10100N=10;N(B)=30100N=30;N(C)=50100N=50;N(AB)=5100N=5;N(AC)=7100N=7;N(BC)=9100N=9;N(ABC)=3100N=3。

共有100户人家,可以令N=100,把养甲鱼、泥蛙、蛇的户分别当作具有性质A、B、C,则依题意:根据公式(1),没有参与养殖联合办厂的户数N(O)为:N(O)=100-10-30-50+5+7+9-3=28。