真或假
第七卷「大陆」广州治理篇 | 吹牛者 | 约 3430 字 | 编辑本页
“复合命题由一个或多个简单命题合成,那么其合成的方式,我们称之为‘联结词’。比如,‘这张卡片不是奴隶’,‘这张卡片是 16 岁以上的男人’,‘这张卡片是原籍福建或海南的人’,这是三个复合命题。”
“第一个命题,是对‘这张卡片是奴隶’这一简单命题的一种否定,合成方式是‘非’;第二个命题,由‘这张卡片是 16 岁以上的人’和‘这张卡片是男性’两个简单命题构成,合成方式是‘与’,也就是两个简单命题同时为‘真’时,复合命题为‘真’;而第三个命题,由‘这张卡片是原籍福建的人’和‘这张卡片是原籍海南的人’两个简单命题构成,合成方式是‘或’,也就是两个简单命题中的任意一个为‘真’时,复合命题为‘真’。”
“所以,我们有了联结多个命题使之成为更大命题的三种手段,与,或,非。其实还有另外两种,不过暂时与分类机的设计无关,这里先略过。”
“我们用符号来表示命题和联结词,则任何一项查询,都能表示为一个表达式。显然,令表达式为‘真’的卡片,就是我们要寻找的卡片。而分类机的作用,就是对所有卡片,判断这个表达式是否为‘真’。”
“因此,凡是我们的分类机能够判断‘真/假’的表达式,就是我们能够解决的问题,凡是我们的分类机无法判断真假的表达式,就是我们不能解决的问题。”
“这就是我们对这一问题的初步抽象。”
冯诺在黑板上写下了几个奇怪的符号 ∨(或)、∧(与)、┐(非),看起来像是旋转了 90 度的大于号和小于号,还有倒过来的拉丁字母 L。
“好,现在可以写一下
‘原籍福建或海南的人’这一命题的表达式了,海南是 100,福建是 122,所以我们令
命题 A:‘地区码第 1 位为 1’,
命题 B:‘地区码第 2 位为 0’,
命题 C:‘地区码第 3 位为 0’,
命题 D:‘地区码第 2 位为 2’,
命题 E:‘地区码第 3 位为 2’,
则,复合命题的表达式为:‘(A∧B∧C)∨(A∧D∧E)’。”
“我们的分类机是如何判断真假的呢?是通过检验穿孔卡是否穿孔,也就是说,分类机的每个读卡单元,能够判断复合命题中的一个简单命题的真假。同时,通过一个控制继电器,我们可以让每个读卡单元,判断仅有 1 个‘非’联结词的复合命题,也就是一个简单命题的非命题的真假。”
“假如我们仅有 1 个读卡单元,那么仅此而已。但是现在我们有 10 个读卡单元,所以事情要复杂一些。不过仍然是可以分析的。请大家注意,每个读卡单元侧面的卡袋,装入的卡片的特点:
k 号卡袋中的卡片,是 1~k-1 号命题的‘非’命题的‘与’、再‘与’k 号命题。
经过 k 号读卡单元的剩余卡片,是满足 1~k 号所判断的命题的‘非’命题的‘与’。
1~k 号卡袋里面的卡片,合起来是满足 1~k 号所判断的命题的‘或’。
假设我们的读卡单元所判断的简单命题(或简单命题的非命题)为 p1,p2,...,p10。
则我们所能够判断的命题表达式为:
1 号卡袋:p1
2 号卡袋:┐p1∧p2
3 号卡袋:┐p1∧┐p2∧p3
4 号卡袋:┐p1∧┐p2∧┐p3∧p4
...
10 号卡袋:┐p1∧┐p2∧...∧┐p9∧p10
最终剩余卡片:┐p1∧┐p2∧...∧┐p10
最后由于这些卡片被彼此分开,所以我们最终可以自由选择任意多个卡袋的卡片合在一起,也就是上述表达式之间的‘或’;其中最重要的,是从 1~k 号的连续 k 个卡袋中的卡片合在一起,其结果为:p1∨...∨pk,即以 p1 为开头的连续‘或’运算;
而经过 k 号读卡单元后机器上剩余的卡片,可表示为 ┐p1∧...∧┐pk,即以 ┐p1 为开头的连续‘与’运算。”
“所以,凡是能变换成上述形式表达式的命题,就是分类机能够查找的,否则,就是分类机不能查找的。”
“我给加奈出的问题,找出三亚大区除奴隶以外的卡片,可以分解成如下的简单命题或简单命题的非命题:
命题 A:‘地区码第 1 位不为 1’,
命题 B:‘地区码第 2 位不为 0’,
命题 C:‘地区码第 3 位不为 0’,
命题 D:‘地区码第 4 位不为 1’,
命题 E:‘地区码第 5 位为 1’,
命题 F:‘地区码第 5 位不为 2’
命题 G:‘地区码第 6 位不为 9’
命题 H:‘地区码第 7 位不为 9’
┐A∧┐B∧┐C∧┐D∧E,这是 10011,三亚榆林,它符合 5 号卡袋的表达式,所以这些卡片位于 5 号卡袋中,可以记为 p5。
┐A∧┐B∧┐C∧┐D∧┐E∧┐F∧G,这是 100120~100128,三亚田独 11~89 公社,它符合 7 号卡袋的表达式,所以这些卡片位于 7 号卡袋中,可记为 p7。
┐A∧┐B∧┐C∧┐D∧┐E∧┐F∧┐G∧H,这是 1001290~1001298,三亚田独 90~98 公社,它符合 8 号卡袋的表达式,所以这些卡片位于 8 号卡袋中,可记为 p8。
后两者合起来,即 p7∨p8,是三亚田独,但不包括奴隶。三者全部合起来,即 p5∨p7∨p8,是我们所要的结果。因为这个表达式符合我们上面的形式,所以分类机可以解决。”
“而‘(A∧B∧C)∨(A∧D∧E)’,无论我们怎样变换,是不能变换成上述表达式的,因而是当前的分类机所不能解决的。”
“好,问题来了,怎样变换表达式?”这时他看向了冯珊。
“这是 0 和 1 的布尔代数。”冯珊答道,她的眼睛里透出着迷的神色。
冯诺点点头,钱羽之和李加奈此前已经完全不知所云了,不过听到布尔代数,他们有点反应过来了。
冯诺只教过他俩最简单的布尔代数,以至于他们以为布尔代数就是 0 和 1 的布尔代数。
“然后呢?”冯诺继续引导。
“布尔代数是有补分配格!交运算是‘与’,并运算是‘或’,求补是‘非’,满**换律、结合律、吸收律,‘与’和‘或’彼此满足分配律!0-1 布尔代数还满足幂等律!”
这是布尔代数的理论部分,钱羽之和李加奈又糊涂了。
“很好。”冯诺表扬了一句。
“不过,”他又补充说,“格的基本运算律只是‘与’和‘或’两种运算之间的,包括交换律、结合律、吸收律、幂等律、分配律等等。在命题逻辑里,还要考虑‘非’的性质,这里我暂时只说两点:其一,双重否定律,很显然,命题的非命题的非命题,是其自身。其表达式的形式是——”
冯诺在黑板上写下:
┐┐A = A;
“其二,德……唉,就叫‘与或转换律’吧,两个命题的合取的非,是两个命题的非的析取;两个命题的析取的非,是两个命题的非的合取。其表达式的形式是——”
他又写下:
┐(A∧B)= ┐A∨┐B,
┐(A∨B)= ┐A∧┐B。
“我举两个例子你们就明白了,‘不是 16 岁以上的男人’,也就意味着是‘16 岁以下的人’或‘女人’;‘不是原籍海南或福建的人’,也就意味着‘不是原籍海南的人’并且‘不是原籍福建的人’。”
然后他继续说道,“根据这些运算律,可以把逻辑命题的表达式变换成各种形式,不过,一般我们会变换成连续‘与’的‘或’,或者连续‘或’的‘与’,称为析取范式和合取范式。”
“好,有了理论工具,我们就能够发现,目前分类机在设计上存在局限性。如果分类机能够处理一般的析取范式或者合取范式,就不存在从设计上无法解决的问题了。——比如‘找出原籍福建或海南的人’。”
“这就要求我们的每个读卡单元,不是仅能判断一个简单命题的真假,而是能够判断多个简单命题构成的合取项或者析取项的真假。反映在分类机设计上,就是把读卡单元目前仅包括 1 个工作继电器和 1 个控制继电器的简单电路,改造成包含多个继电器的开关电路。”
“羽之,你这段时间已经很熟悉电路了。你来组装一个有两个开关和一个灯泡的电路,要求‘只有 2 个开关都闭合,灯泡才亮’。”
冯诺指了指一旁的工作台。工作台上有一大堆导线、继电器、灯泡和开关,台下放着两个笨重的钟式电池,万用表和其他几种仪器则被丢在工作台的角落里。
钱羽之熟练地来到工作台前忙活起来,他首先从电池的正负极引出了导线,然后把灯泡连入电路,灯泡亮了。接着,他把两个开关用导线连起来,又和灯泡、电池连在了一起。
冯诺让三名学生都去试一下,是不是只有 2 个开关都闭合时,灯泡才亮,如果有任意 1 个开关是断开的,灯泡就熄灭。