布尔代数
2016-05-01 11:12
211 查看
布尔函数的个数以及编号
布尔函数就是由变量以及布尔操作符组成的表达式,比如:F = AB + C就是布尔函数。
给定n的变量,可以组成无穷多个布尔函数,但是,只有2^(2^n)个布尔函数是不同的(即具有不同的真值表)。比如给定A,B,C三个变量,可以组成F = ABC, F = AABC, F = AAABC,...无穷多个布尔函数,但是只有2^(2^3) = 256个不同的布尔函数,其他的布尔函数都可以转化为这256个布尔函数。
给定n个变量就会有2^(2^n)个不同的布尔函数,如果给这些布尔函数从0开始编号,那么通过布尔函数,如何获得这个布尔函数的编号呢?以布尔函数F = AB + C为例,首先画出这个布尔函数的真值表:
然后将真值表的函数结果值从下到上排列起来,对于上面的例子就是: 1 1 1 1 1 0 0 0,那么这串二进制代表的数值就是该布尔函数的编号,即F = AB + C的编号为:248。
从上面的例子可以发现,函数编号如果写成二进制的形式,那么每一bit位对应的就是相关变量的值带入布尔函数后的结果值。比如248的二进制最高位(第7bit位)是1,刚好就是C = 1 B = 1 A = 1(7 = 4 * C + 2 * B + 1 * A)带入F = AB + C的结果值,换句话说,我们只要选出248的第i位,i = 4 * C + 2 * B + 1 * A,就可以得到指定的C B A在第248号布尔函数下的结果值,而根本不需要知道这个布尔函数的确切形式。
规范化形式(Canonical Form)
任何一个布尔函数都只有一个规范化形式,但是规范化形式不是这个布尔函数的最优形式。使用规范化形式的原因是规范化形式与真值表之间的转换特别容易。
布尔函数就是由变量以及布尔操作符组成的表达式,比如:F = AB + C就是布尔函数。
给定n的变量,可以组成无穷多个布尔函数,但是,只有2^(2^n)个布尔函数是不同的(即具有不同的真值表)。比如给定A,B,C三个变量,可以组成F = ABC, F = AABC, F = AAABC,...无穷多个布尔函数,但是只有2^(2^3) = 256个不同的布尔函数,其他的布尔函数都可以转化为这256个布尔函数。
给定n个变量就会有2^(2^n)个不同的布尔函数,如果给这些布尔函数从0开始编号,那么通过布尔函数,如何获得这个布尔函数的编号呢?以布尔函数F = AB + C为例,首先画出这个布尔函数的真值表:
C | B | A | F = AB + C |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 1 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | 1 |
1 | 1 | 1 | 1 |
从上面的例子可以发现,函数编号如果写成二进制的形式,那么每一bit位对应的就是相关变量的值带入布尔函数后的结果值。比如248的二进制最高位(第7bit位)是1,刚好就是C = 1 B = 1 A = 1(7 = 4 * C + 2 * B + 1 * A)带入F = AB + C的结果值,换句话说,我们只要选出248的第i位,i = 4 * C + 2 * B + 1 * A,就可以得到指定的C B A在第248号布尔函数下的结果值,而根本不需要知道这个布尔函数的确切形式。
规范化形式(Canonical Form)
任何一个布尔函数都只有一个规范化形式,但是规范化形式不是这个布尔函数的最优形式。使用规范化形式的原因是规范化形式与真值表之间的转换特别容易。
相关文章推荐
- 链表结点的删除
- MySql的使用简介
- Visual Studio 统计代码行数
- sublime常用的插件
- 深入分析_linux_spinlock_实现机制
- uva 5734 Shape Number
- VISUAL SVN安装 及客户端使用
- 放棋子
- brew的新网址
- BZOJ4537: [Hnoi2016]最小公倍数
- 【SPOJ-GONE】G-One Numbers【数位DP】【记忆化搜索】【质数筛】
- 极简代码(四)—— 分段函数(sinc)的实现
- 40-3Sum Closest
- 用VisualSVN做项目版本控制
- POV-Ray简单上手教程(学习笔记)(一)
- 2016年3月23日作业(项目进度管理、项目成本管理)
- 破解MyEclipse的方法
- html 物资 jQuery下拉框select美化
- 263. Ugly Number
- Android Studio安装已经下载好的zip插件