构造主析取范式(离散数学)

构造主析取范式

先上图。。。
主界面:
在这里插入图片描述
真值表:

在这里插入图片描述

主析取范式:
在这里插入图片描述

基本算法实现

(1)调用StartJFrame类的getTextField方法获取合适公式,将她转化为StringBuffer字符串test,便于处理操作。

(2)去掉多余的字符“=”,“>”,因此条件为“-”,双条件为“<”,对test进行一次遍历,遇到“=”和“>”,则删除字符“=”,“>”。存储为中缀表达式char[] infix。

(3)判断括号是否匹配(栈的应用,数据结构),合式公式是否正确(表达式各种不正确情况)

(4)计算合式公式中的变元个数,setNumber,这样不会受变元个数的影响,并且枚举真值的是可以采用2^number-1的二进制,当然也可以采用二叉树哦!有点麻烦,所有我就选择了二进制枚举。

例如:总共3个变元。利用二进制:

    真值表:

    0:0 0 0            4:1 0 0

    1:0 0 1            5:1 0 1

    2:0 1 0            6:1 1 0

    3:0 1 1            7:1 1 1

二叉树:

    每个结点有两个分支,根结点为-1,不加入真值表。

			-1
		 0		1
	   0	      1     0	      1 

(5)将中表达式转化为后缀表达式(数据结构有的),便于计算。

(6)枚举真值,计算每一种情况合式公式的真值。

(7)计算合式公式的真值。

(8)根据真值表构造主析取范式。

流程图

在这里插入图片描述

代码来了

主界面:
https://paste.ubuntu.com/p/Bc5HXn5HW8/

基本算法实现:
https://paste.ubuntu.com/p/fRznfSM94F/

真值表:
https://paste.ubuntu.com/p/nCtRp2QYsT/

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值