这次我们来看看离散数学中的 n 元真值函数,最近偶然间看见了这个 n 元真值函数,发现如果没接触过类似的东西,直接看书上写的东西,似乎会有点晕,于是写下这篇博客,记录我对它的理解过程。
注意:本文记录了我整个思考过程,所以有点长,其实这个概念不难,别方 ≧◔◡◔≦。
首先,看到屈婉玲《离散数学》给出的定义,如下
定义:称F: { 0 , 1 } n → { 0 , 1 } {\{0,1\}}^n→\{0,1\} {0,1}n→{0,1}为n元真值函数。 (白话文的解释,请看最后的总结)
在这里我就有点纳闷,{0, 1}不是一个集合吗,又给了他一个 n 次方,这是啥意思呀? 回顾一下集合论里面的有关集合的运算,我接触过的集合运算无非就是交、并、补、差、对称差,幂集,别忘了还有一个笛卡尔乘积。集合的幂运算就是多次取笛卡尔积。没学笛卡尔积也没关系,在屈婉玲的《离散数学》中,接下来的文字对这个做了一番解释:
在这个定义中,F的自变量为n个命题变项,定义域为 { 0 , 1 } n = { 00 … 0 , 00 … 1 , … , 11 … 1 } {\{0,1\}}^n =\{00…0, 00…1,…,11…1\} {0,1}n={00…0,00…1,…,11…1}, 即 { 0 , 1 } n {\{0,1\}}^n {0,1}n中元素为由0,1组成的全体长为n的符号串,值域为{0,1}。n个命题变项共可构成 2 2 n 2^{2^n} 22n个不同的真值函数。
也就是说 { 0 , 1 } n {\{0,1\}}^n {0,1}n 就是n个长度的串,从00…00开始一直到111…111,这么一组长度为n的0和1构成的全排列作为一个集合。
所以呢,根据他的意思,这个集合是某个函数的定义域。这个函数又是 n 元的,也就是有 n 个自变量,且每个变量的取值不是0就是 1,于是 { 0 , 1 } n {\{0,1\}}^n {0,1}n ={00…0, 00…1,…, 11…1} 对应的是这 n 个自变量的 n 种取值情况,这样一来,那个乱七八糟的东西终于明白了。
那么n个命题变项 共可构成 2 2 n 2^{2^n} 22n个不同的真值函数。这又是怎么回事儿呢?
首先我们知道每个自变量都有0 和 1两种取值,所以 n 个自变量就有 2 n 2^n 2n 种取值。那么因变量呢?因变量可能为 0 也可能为 1。所以,n 个自变量中的每种取值都对应 两种可能的结果,根据乘法原理,一共就能构成 2 ∗ 2 ∗ 2 ∗ 2... ∗ 2 ( 2 n 个 2 相 乘 ) 2*2*2*2...*2(2^n个2相乘) 2∗2∗2∗2...∗2(2n个2相乘) 个映射,也就是 2 2 n 2^{2^n} 22n 个真值函数啦!(◠‿◠) 至于映射和函数的关系,这里就不多说了呀(─‿‿─)。现在知道了这个式子是怎么来的了吧?
紧接着,书上对真值函数个数给出了几个例子:
含命题变项p的1元真值函数共4个,见表1。含命题变项p,q的真值函数共有16个,见表2。
表1
p | F 0 ( 1 ) F^{(1)}_0 F0(1) | F 1 ( 1 ) F^{(1)}_1 F1(1) | F 2 ( 1 ) F^{(1)}_2 F2(1) | F 3 ( 1 ) F^{(1)}_3 F3(1) |
---|---|---|---|---|
0 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 0 | 1 |
表2
p q | F 0 ( 2 ) F^{(2)}_0 F0(2) | F 1 ( 2 ) F^{(2)}_1 F1(2) | F 2 ( 2 ) F^{(2)}_2 F2(2) | F 3 ( 2 ) F^{(2)}_3 F3(2) | F 4 ( 2 ) F^{(2)}_4 F4(2) | F 5 ( 2 ) F^{(2)}_5 F5(2) | F 6 ( 2 ) F^{(2)}_6 F6(2) | F 7 ( 2 ) F^{(2)}_7 F7(2) | F 8 ( 2 ) F^{(2)}_8 F8(2) | F 9 ( 2 ) F^{(2)}_9 F9(2) |
---|---|---|---|---|---|---|---|---|---|---|
0 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
0 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 |
1 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 |
1 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
接上表
p q | F 10 ( 2 ) F^{(2)}_{10} F10(2) | F 11 ( 2 ) F^{(2)}_{11} F11(2) | F 12 ( 2 ) F^{(2)}_{12} F12(2) | F 13 ( 2 ) F^{(2)}_{13} F13(2) | F 14 ( 2 ) F^{(2)}_{14} F14(2) | F 15 ( 2 ) F^{(2)}_{15} F15(2) |
---|---|---|---|---|---|---|
0 0 | 1 | 1 | 1 | 1 | 1 | 1 |
0 1 | 0 | 0 | 1 | 1 | 1 | 1 |
1 0 | 1 | 1 | 0 | 0 | 1 | 1 |
1 1 | 0 | 1 | 0 | 1 | 0 | 1 |
看到这两张表,是不是觉得有点蒙? 因为这两张表对于惯性思维的同学来说,如果没有提示,确实有点“反人类”。这里先解释一下吧。
首先 ,p 和 q都是自变量, F F F 上标的括号内数字是自变量的个数,下标表示第几个真值函数( 这里他按规则排了序,这个和最小项有关,后面有解释 )。然后嘛,,这个表是要竖着看的!!!!对,就是竖着看的! 并且列与列之间几乎没啥关系 。横着看了半天的同学请举手 ,表不好意思哈(¬‿¬)
每一列从上往下读,那些 0 和 1构成的二进制数对应的值是不是和 F F F 的下标的值是一样的呢?学过数字逻辑的同学是不是想到了数电里面的最小项呀。离散里面的最小项,和数电里面的,应该是同源的,只不过离散的更加抽象。
再回到这里,我们再来看看表,表1比较简单,我们来先处理它, F 0 ( 1 ) F^{(1)}_0 F0(1) 下面,p 为 0 和 1 时都对应 0 (请时刻看着表),这个是啥意思呢?其实就是说无论 p 取 0或者1,函数 F 0 ( 1 ) F^{(1)}_0 F0(1) 的运算结果(也就是因变量) 都为 0,。
同样 F 1 ( 1 ) F^{(1)}_1 F1(1) 下面的是0和1,说明 p 为 0 的时候, F 1 ( 1 ) F^{(1)}_1 F1(1) 这个函数的运算结果为 0, p 为 1的时候运算结果为 1 …依此类推。
表2类似,那我们再根据前面对真值函数个数的解释再来看下表2到底有啥东西,GO!
显然自变量p q有 00,01,10,11四种取值,对应四个函数值,这四个函数值是啥呢,可能是 0000到1111的任何一种组合,没错吧。只要是 0或者1,凑成四个序列和p q的 00, 01,10, 11相对应,就行了。不同的函数呢,对应的四个结果肯定不全相同吧。于是呢,我们能找到 16 种组合,也就是 16 个函数,,,这16种组合我们按他们依次排列成二进制数的大小排列起来,就得到我们的表2了。
正如前面所说,这些函数和最小项对应,那不得不说一下主析取范式和主合取范式了。
我们来观察一下表2,举个例子,我们观察下表中 F 2 ( 2 ) F^{(2)}_2 F2(2) 取 1 的时候的值,是不是当 p = 1且q = 0的时候呀,,,所以我们可以写出 F 2 ( 2 ) = ( p ⋀ ┐ q ) ⟺ m 2 F^{(2)}_2 = (p ⋀ ┐q) ⟺ m_2 F2(2)=(p⋀┐q)⟺m2 ,同样根据真值表我们有 F 3 ( 2 ) = ( p ⋀ ┐ q ) ⋁ ( p ⋀ q ) ⟺ m 2 ⋁ m 3 F^{(2)}_3 = (p ⋀ ┐q) ⋁ (p ⋀ q) ⟺ m_2 ⋁ m_3 F3(2)=(p⋀┐q)⋁(p⋀q)⟺m2⋁m3 ,,仿佛又看到了数字逻辑的影子,最小项之和,也就是我们现在离散的主析取范式。
总结一下,我们由n元函数得知函数有n个自变量,每个自变量有两种取值可能0或者1,于是自变量的赋值情况就有 2 n 2^n 2n 种,这 2 n 2^n 2n 种中的每一种取值,都有两种结果,两种结果意味着两种对应关系,所以我们总共能有 2 n 2^n 2n 个 2 相乘个,也就是 2 2 n 2^{2^n} 22n 个对应关系,也就有 2 2 n 2^{2^n} 22n 个真值函数。水平方向上,据p q的取值排列成的二进制数的大小从上往下(比如从上往下依次为00, 01, 10, 11),而每个真值函数的所有结果按它们排列成的二进制数的大小从小到大排列(从左往右依次从 F 0 F_0 F0 到 F n Fn Fn)排列,就构成了上面的真值函数表。每个真值函数都与唯一一个主析取范式等值,如 F 2 ( 2 ) = ( p ⋀ ┐ q ) ⟺ m 2 F^{(2)}_2 = (p ⋀ ┐q) ⟺ m_2 F2(2)=(p⋀┐q)⟺m2, F 3 ( 2 ) = ( p ⋀ ┐ q ) ⋁ ( p ⋀ q ) ⟺ m 2 ⋁ m 3 F^{(2)}_3 = (p ⋀ ┐q) ⋁ (p ⋀ q) ⟺ m_2 ⋁ m_3 F3(2)=(p⋀┐q)⋁(p⋀q)⟺m2⋁m3 ,每一个命题公式都有办法化成主析取范式的形式,所以每个主析取范式,对应着无穷多个等值的命题公式。考虑到主析取范式和主合取范式存在一一对应的转化关系,所以每一个真值函数也和唯一的主合取范式等值。说白了,n元真值函数的,其实就是有n个自变量,且自变量的类型为布尔类型(取值只能是0或1)的一个函数,其他的都是它的各种情况以及这些情况宏观上的规律罢了。
附上一张刀剑神域的高清图≧◉◡◉≦
(图文无关)
鄙人学识浅薄,如果有错的地方,还请大神们斧正。