编程实现逻辑函数转换为析取或是合取范式
时间: 2023-06-19 12:03:20 浏览: 54
将逻辑函数转换为析取范式(Disjunctive Normal Form, DNF)或合取范式(Conjunctive Normal Form, CNF)的过程称为“范式化”。下面介绍两种转换方法。
方法一:转换为析取范式
1.先将逻辑函数写成真值表的形式;
2.将真值表中所有取值为1的行对应的项相乘,并将所有乘积相加,即得到逻辑函数的析取范式。
例如,对于逻辑函数 f(x,y,z) = (x+y)·(y+z),真值表如下:
| x | y | z | f(x,y,z) |
|---|---|---|----------|
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 0 |
| 1 | 0 | 1 | 1 |
| 1 | 1 | 0 | 1 |
| 1 | 1 | 1 | 1 |
所以,逻辑函数的析取范式为 f(x,y,z) = (x'·y·z') + (x'·y·z) + (x·y·z') + (x·y·z)。
方法二:转换为合取范式
1.先将逻辑函数的否定形式写出;
2.将否定形式的逻辑函数转换为析取范式;
3.将析取范式中每一项中的所有变量加上否定符号;
4.将所有加上否定符号的项相乘,即得到逻辑函数的合取范式。
例如,对于逻辑函数 f(x,y,z) = (x+y)·(y+z),否定形式为 f'(x,y,z) = (x'+y')·(y'+z'),其析取范式为 f'(x,y,z) = (x'+y')·(y'+z') = x'·y'·z' + x'·y'·z + x·y'·z' + x·y·z' + x'·y·z'.
因此,逻辑函数的合取范式为 f(x,y,z) = (x+y')·(y+z')·(x'+y+z')。