文章目录
abstract
- 命题公式@
- 主范式的性质和应用
- @数理逻辑解决数字电路全加器问题
主合取范式与主析取范式间的关系👺
- 同一个元命题公式的主合取范式与主析取范式间的关系:
- 构造整数集合,以及主析取式的所有最小项编号构成的集合,其中是主取析范式包含的极小项数目
- 作整数下标集合=,其中,则主合取范式就是
- 总之,的下标相对于集合是互补的
- 证明:参考主范式的性质一节(根据主析取范式直接得到主合取范式)
主范式存在及唯一性定理
- 任何命题公式都存在与之等值的主析取范式和主合取范式
- 存在性
- 按照命题公式主范式化一节给出的方法可以将所有析取范式(合取范式)主规范化
- 又因为任意命题都可以规范化为析取范式和合取范式
- 所以存在性成立
- 唯一性(以析取范式为例,用反证法证明)
- 即证明任意公式的主析取范式都式一致的,又即任意两个析取范式包含的最小项一致(最小项编号序列一致)
- 不妨设是的任意两个不同的主析取范式,则
- 设只出现在中而不出现在中;于是对应的二进制串是的成真赋值,但不是的成真赋值,与矛盾
- 所以的包含的最小项相同,即是同一个主析取范式
- 所以唯一性成立
- 主合取发生范式的证明类似
例
- 是最小项,其成真赋值二进制串为100,记为十进制下表示为
- 所以主析取式为
- 容易看出它本身就是一个二元极大项,且是主合取范式,标号为,即
- 根据两种主范式关系,其主析取范式为
- 如果要用基础方法计算主析取范式,过程如下
主范式的性质👺
求公式的成真与成假赋值
- 首先,我们知道给定一个元命题公式,其真值表有个条目(所有的元命题公式可以产生个条目)
- 集合定义:
- 若公式中含有个命题变项,则的主析取范式含有个极小项,且恰好有个成真赋值,这些成真赋值恰好是所含极小项下标的二进制串表示,其余个赋值都是成假赋值
- 设 ,,其中,表示或
- 为真当且仅当中至少有一个真值为真,显然分别使得为真,也就能使为真
- 除此个成真赋值外,所有赋值(个)都不能使中地任何一个成真,相应地成假
- 上述结论表明,我们可以从给定的主析取范式中直接根据各个极小项的下标得出所有的成真赋值();然后用集合减去成真赋值下标构成的集合(也就是主析取式中未出现的下标集合),就是所有成假赋值的集合
主析取范式直接得到主合取范式
- 类似的分析主合取范式
- 对于主合取范式, ,,其中表示或
- 赋值分别使得成假,因而它们的合取公式成假,即使得成假
- 其余赋值使得都成真,即使成真
- 因此,若已知的主析取范式有个极小项,即有个成真赋值,
- 则有个成假赋值,的主合取范式有项的极大项
- 设个极大项的下标分别是,它们和极小项下标恰好能一一对应中的元素
- 事实上,是的极小项:
- 上述分析解释了主合取范式与主析取范式间的关系,并且说明了为什么主析取范式和主合取范式共同反映(容易还原)真值表所能表达的全部信息
判断公式的类型
- 主范式能判断公式类型,这也是主范式能体现真值表的表现
- 设中含有个命题变项,则
- 从极小项的角度
- 为重言式当且仅当的主析取范式包含个极小项(有个成真赋值)
- 为矛盾是当且仅当的主析取范式不含任何极小项(主合取范式包含个极大项,有个成假赋值);此时的主析取范式为0(表示矛盾式)
- 为可满足式当且仅当的主析取范式包含至少一个极小项
- 从极大项的角度
- 为重言式当且仅当的主合取范式不含极大项(规定此时的主合取范式为1)
- 为矛盾是当且仅当的主合取范式包含个极大项
- 是可满足式时,至少有一个成真赋值,因此的主合取范式极大项个数少于
元命题公式的主析取范式(主合取范式)的个数
- 根据排列组合可知,主析取范式和主合取范式的个数相等,它们都可以从元极小项集合(个元素)中抽取个
- 因此都为==,则个数字和所有元命题公式的真值表个数相等
判断两个命题公式是否等值
- 设共有个命题变项,按个命题变项求出的主析取范式,显然 ,
- 若,则 ,否则
给出一个满足给定真值表的命题公式
- 我们以半加器和全加器为例进行讨论相关算法
- 这部分涉及数字逻辑(数字电路逻辑,这门课很多内容是抽象数理逻辑具象化(或说知识应用))
- 数理逻辑中的真,假分别对应于数字电路逻辑中的二值(1,0)或高,低电平
- 我们的任务使从给定真值表通过一定的方法给出满足真值表的公式
半加器
- 例如二进制半加器(不考虑上一位的进位,但是考虑下一位进位;其输入变元其输出变元包含半和半进位),我们根据半加器的真值表来求取一个真值表和半加器相同的命题公式
x |
y |
本位和位h |
下一位进位d |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
- 分析此表,其包含了两个公式(输出半和位,半进位)
- ;
- 下面我尝试给出主析取范式,
- 根据公式和其主范式的关系,如果要求主析取范式,则我们只需要关注真值表中的成真赋值
- 若想要求主合取范式
- 可以仅关注真值表中的成假赋值
- 也可以先求主析取范式,然后根据主合取范式和主析取范式的关系间接求得
x |
y |
h |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
x |
y |
d |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
- =,
- 类似地可以求=
- =;
- 类似地可以求得=
全加器
- 全加器不仅考虑了下一位的进位(carry out,简记为cout,或),同时考虑了上一位的进位
- 为此,输入也要有一个进位(carry in,简记为
cin
,或)来使上一位进位进入加法运算
x |
y |
上一位进位cin(c’) |
本位和位s |
下一位进位cout© |
|
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
2 |
0 |
1 |
0 |
1 |
0 |
3 |
0 |
1 |
1 |
0 |
1 |
4 |
1 |
0 |
0 |
1 |
0 |
5 |
1 |
0 |
1 |
0 |
1 |
6 |
1 |
1 |
0 |
0 |
1 |
7 |
1 |
1 |
1 |
1 |
1 |
- =
- =
- =
- =
半加器和全加器的联系
- 全加器可以由两个半加器和一个或门实现
- 设输入位为的半加器的本位和的函数表示(函数是异或门)
- 半进位(即与门)
- 则
- 全加器的本位和
(1)
,异或门嵌套 - 下一位进位
(2)
,其中是全加器用来接受上一位进位的输入变量 - 根据
(1)
,容易仅需要两个半加器(分别记为半加器)即可实现的计算
- 计算,同时提供
- 计算,同时还提供
(1.1)
- 根据
(1.1),(2)
,再加上一个或门就可以计算,
- 所以两个半加器和一个或门即可实现全加器
- 至于半加器,可以使用一个异或门和与门实现(其中异或门可以由两个与门,两个非门和一个或门实现)
Note:
- 设半加器本位输出和;全加器下一位进位输出:
- 再由分配律和德摩根,可知和是互非的关系:
- 从而
主范式合并化简
- 从主范式合并化简为尽可能简单的等价范式是重要问题
- 这个过程和主范式化的是互逆的过程
- 主范式的意义在于能够方便的比较两个公式是否等价以及其他真值表能够完成的任务
- 化简的意义在于,使公式更加简洁,从而在某些应用上更加方便和高效
- 比如涉及一个具有特定真值表的组合逻辑电路,公式越简单,所需要的基本逻辑门也就越少,布线和硬件成本也更低,功耗也更优
- 容易知道,化简得结果可能不唯一,但好的结果使项数尽可能少,每项的变元尽可能少
卡诺图法
- 在数字逻辑中,这个任务称为逻辑函数化简
- 有表格化方法,叫做卡诺图法,其借助格雷码设计而成,通过画卡诺圈来给出化简后的公式
- 这种方法有比较一般的步骤,但是对于变量数目多的(4个以上),就比较繁琐
- 也可用公式的运算律(等值式模式)作合并化简工作,这种方式对于基本功要求比较扎实
公式法
- 并项法: ;该公式可以将两个与项合并为一个,并且消去其中的一个变量
- 吸收法: ;吸收多余的与项
- 消去法: ;消去与项多余的因子
- 配项消项法: 配项多出一个与项,尝试合并其他与项来消去更多与项
最简范式
- 最简主析取式(最简与或式):简单合取式个数最少(与项个数最少);简单合取式(与项)中变量个数最少
- 最简主合取式(最简或与式):简单析取式个数最少(或项个数最少);简单析取式(或项)中变量个数最少