• 布尔代数


    布尔函数的个数以及编号

      布尔函数就是由变量以及布尔操作符组成的表达式,比如: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)

      任何一个布尔函数都只有一个规范化形式,但是规范化形式不是这个布尔函数的最优形式。使用规范化形式的原因是规范化形式与真值表之间的转换特别容易。

  • 相关阅读:
    webpack4配置详解之常用插件分享
    eslint 配置
    获取数组的随机数
    封装一个拖拽
    R语言常用语法和用法
    关于异或操作和它的算法题
    算法题:整形数组找a和b使得a+b=n
    最小生成树的一些证明
    python multiprocessing 使用
    python decorator的本质
  • 原文地址:https://www.cnblogs.com/chaoguo1234/p/5450192.html
Copyright © 2020-2023  润新知