老师课堂上讲了,也上网查了,但还是不懂,所以来问大家。希望能具体点。
它采用来自 {T,F} (就是真实和虚假)的真值。例如句子 A → B 生成真值函数 h(A,B),它的真值是 F,当且仅当 A 的值是 T 而 B 的值是 F。n 个变量的命题句子生成 2^{2^n} 个真值函数。比如,如果有像 A → (B → A) 这样的 2 个变量的命题则有 16 个生成的真值函数。
用程序员的理解,简单来说,就是一个函数的参数都是boolean值,返回值也是boolean,这个函数就是真值函数。
比如说
bool all(bool b1, bool b2, bool b3)
{
return b1 && b2 && b3;
}
或者写
bool all(bool b1, bool b2, bool b3)
{
if (!b1) return false;
if (!b2) return false;
if (!b3) return false;
return true;
}
这里all就是真值函数。
因为每个参数都是bool值,每个函数有确定的值。
所以我们可以列出全部可能2^(参数个数),以及对应的返回值,这就是真值表。比如all这个函数,我们可以列出:
b1 b2 b3 result
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
哦,我明白了。我说的是每个真值函数有2^n项构成的真值表。
你说的是对于指定变量个数n,有2^(2^n)个真值函数。两者不矛盾。
比如2个参数,每一套真值表的结果是2^n项,它们的排列组合就是2^(2^n):
a b result
0 0 ?
0 1 ?
1 0 ?
1 1 ?
那么result有16种
0000 0001 0010 0011 0100 0101 0110 0111
1000 1001 1010 1011 1100 1101 1110 1111
对于每个真值表,我们说就是一个真值函数
比如说
a and b
和
not((not a) or (not b))
以及
not(not(a)) and b
等等,只要真值表都是 0 0 0 1
都算一个函数
这么算就是2^(2^n)=2^(2^2)=16
简单来说,就是命题(语句)与结果(真或假)的关系表达式。