布尔代数
布尔函数的个数以及编号
布尔函数就是由变量以及布尔操作符组成的表达式,比如: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 |
然后将真值表的函数结果值从下到上排列起来,对于上面的例子就是: 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)
任何一个布尔函数都只有一个规范化形式,但是规范化形式不是这个布尔函数的最优形式。使用规范化形式的原因是规范化形式与真值表之间的转换特别容易。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了