三值逻辑变量
三值逻辑变量 | |
---|---|
术语名称 | 三值逻辑变量 |
英语名称 | three-valued logic variable |
别名 | trinary logic variable |
三值逻辑 | |
---|---|
术语名称 | 三值逻辑 |
英语名称 | three-valued logic |
三值逻辑变量(three-valued logic variable)是三值逻辑(three-valued logic)中表示真值的变量。三值逻辑,或者说多值逻辑,与普通命题逻辑或谓词逻辑相对,一般也将普通的命题逻辑或谓词逻辑中的理论称为二值逻辑(bivalent logic)。在二值逻辑中真值的真假二值变量的基础上,增加了一个其他的值。
三值逻辑
根据动机的不同,三值逻辑有多个体系,其中第三个值的语义可能有区别。
- 强 Kleene 三值逻辑, [math]\displaystyle{ K_3 }[/math] 或 [math]\displaystyle{ K_3^S }[/math]。其中第三值代表未定义、未知或不确定,可以认为表示因数据缺失等造成的无法确认。允许在哪怕有一个不确定但是能确定结果的场景下尽可能返回经典真值(如真合取未知其结果为真,因为无论未知将来被确定成真还是假,结果都一定是真),只在必要得到无法确认的结果时返回未定义。
- 弱 Kleene 三值逻辑, [math]\displaystyle{ K_3^W }[/math] 。其中第三值指的是无定义、无意义或无法计算,表示错误处理时、涉及部分定义或含有未定义值的数学表达式时,也就是命题中含有无法计算内容而不具有经典真值的情况,可以认为第三值代表是“计算失败”。计算失败在运算时总是得到计算失败,因此任何涉及无法计算命题的复合命题结果都是无法计算(如真或失败为失败,因为整个公式被处理为含有计算失败)。
- Łukasiewicz 三值逻辑, [math]\displaystyle{ Ł_3 }[/math] 。其中第三值指的是可能或未定,表示未来的偶然事件,这些事件当前不确定,在未来到来前无法给出结果。简单地说,第三值代表的是“尚且待定”。比起 K3 增加了“待定推出待定”这一规则。
- 此外还有其他不同理论,比如第三值为又真又假、非真非假,对矛盾律和排中律的特殊处理等。
尽管三值逻辑中一个命题的真值可以是不确定,这不代表相关运算结果一定也是不确定,有的情况下结果可能根据操作数确定。 本 wiki 中未特殊说明的情况下,三只逻辑取的都是强 Kleene 三值逻辑,这与 SQL 规则对应,对于程序设计是最常见的三值逻辑规则。
记号
根据不同理论,三值逻辑也使用不同的符号。在强 Kleene 逻辑中,最常见的是真(T, true),假(F, false)和未知(U, unknown)。在使用数进行建模时,三值逻辑变量通常抽象地使用 [math]\displaystyle{ \{-1,0,1\} }[/math] 作为取值(有时也用 [math]\displaystyle{ \{0,1/2,1\} }[/math] ,如果需要和二值的 [math]\displaystyle{ \mathbb{B}=\{0,1\} }[/math] 保持一致)。
常见逻辑运算
除了普通运算外,三值逻辑变量间的特色运算为逻辑运算。常见逻辑运算有:
逻辑运算 | |||
---|---|---|---|
逻辑非 | 逻辑与 | 逻辑或 | 逻辑异或 |