非标准项表达式转化为积之和(最小项之和)或和之积(最大项之积)的方法,以及如何将积之和表达式转化为和之积表达式

基础概念

文字(literal):一个变量或者变量的补,例如x与x‘,y与y’。

乘积项:是单个文字或者两个或两个以上文字的逻辑积,例如:X·Y·Z。

积之和表达式(sum of products):乘积项的逻辑和。

和之积(products of sum):求和项的逻辑积。

标准项(normal term):是一个求和项或者乘积项,且每个变量只出现一次。例如,XX'YZ、WW'XY、X+X'+Y+Z等为非标准项,而XYZ、WXY、X+Y+Z为标准项

n变量最小项:具有n个文字的标准乘积项。

n变量最大项:具有n个文字的标准求和项。

方法一:补全n变量最小项->最小项列表-求反->最大项列表

方法二:

  1. 将F(与或式)取反,得到F'(或与式) ;

F' = X'YZ+X'Y'Z'+XYZ'+XY'Z'

  1. 再将F'(或与式)展开,关键来了,展开后我们得到了具有若干项的F'(与或式),此时我们使用卡诺图化简法即可很轻松的化到最简(卡诺图具体使用方法不进行赘述,其实非常简单,可以看书或者另外查阅一下),得到了F'(与或式)的最简表达式;若想的到和之积标准项表达式,则需补全所有最大项

  1. 最后将F'(与或式)的最简(或是列出的最大项之积)表达式,再取一次反,最后得到的就是F(或与式)的最简表达式(或是积之和标准项表达式)

F = F''=(X+Y'+Z')(X+Y+Z)(X'+Y'+Z)(X'+Y+Z)

另外:上述步骤的取反可以换成取对偶,最终效果一样

利用卡诺图化简减少了思维量,虽然画图然后化简可能稍微麻烦一点,但是对新手非常友好;直接利用各种公式进行化简需要一定思维量和熟练度,如果非常熟练的话可以一下子化简出来,时间上比卡诺图快一些,二者各有利弊,供读者权衡。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中将表达式转化为波兰式和逆波兰式的方法是使用栈来实现。波兰式(前缀式)指的是运算符号位于其对应的操作数之前,而逆波兰式(后缀式)指的是运算符号位于其对应的操作数之后。 将中缀表达式转换为前缀或后缀表达式可以通过以下步骤进行: 1. 创建一个符号栈(Stack)和一个结果队列(Queue)。 2. 从左到右扫描中缀表达式,若遇到操作数,将其加入到结果队列中。 3. 若遇到运算符,比较其与栈顶运算符的优先级,若优先级低于栈顶元素,则将栈顶元素弹出并加入到结果队列中,直接层层递进,直到遇到比该元素优先级较低的元素为止。 4. 若遇到左括号“(”,则将其入栈。 5. 若遇到右括号“)”,则依次弹出栈顶元素,加入到结果队列中,直到左括号“(”被弹出。注意:左括号“(”不加入到结果队列中。 6. 最后,如果符号栈中仍有元素,则依次弹出加入到结果队列中。 7. 若要将中缀表达式转换为逆波兰式,则将符号栈改为栈,并将操作数加入到栈中。 8. 遇到运算符时,弹出栈顶的两个操作数进行计算,并将结果压入栈中。 9. 最后栈中仅剩一个元素,即为逆波兰式。 注意事: 在将中缀表达式转换为前缀表达式时,我们需要先将中缀表达式翻转,再按照转换成后缀表达式方法进行。 在计算逆波兰式时,需要注意操作数的顺序,因为后缀式在操作数的顺序上没有明确的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值