没有合适的资源?快使用搜索试试~ 我知道了~
首页基于 Q-M 算法的逻辑代数化简C语言的程序实现报告.docx
基于 Q-M 算法的逻辑代数化简C语言的程序实现报告.docx
需积分: 49 966 浏览量
更新于2023-03-03
评论 8
收藏 216KB DOCX 举报
基于 Q-M 算法的逻辑化简程序C语言的实现,实现一个能处理十变量及以上的逻辑函数化简工具。附带完整C语言代码。化简原理概述:搜索所有本原蕴含项,然后从这些本原蕴含项中提取出覆盖开状态集合的最小集合
资源详情
资源评论
资源推荐

数电实验报告册
学 年 学
期:
课 程 名
称 : 数字电路与逻辑设计
学 生 学
院 : 通信与信息工程学院
专 业 班
级 :
学 生 学
号 :
学 生 姓
名 :
联 系 电
话 :
页

一、 实验名称
基于 Q-M 算法的逻辑化简程序 语言的实现,实现一个能处理十变量及以
上的逻辑函数化简工具
二、 实验目的
掌握对逻辑表达式化简的方法,加强对化简本质的认识,锻炼应用 语言解
决实际问题的能力。
三、 实验要求
变量个数及字母表示正确
化简输出表达式正确
表达式输出排序正确
边界条件输出正确
实现一个能处理十变量及以下的逻辑函数化简
四、 化简原理
概述:搜索所有本原蕴含项,然后从这些本原蕴含项中提取出覆盖开状态集
合的最小集合。
具体步骤:
搜索本原蕴含项
以最小项形式列出开状态集合和无关项集合中所有元素,元素用二进制
表示。第一列中,根据二进制数含 的个数分组。第一组只能和第二组
比较,第二组只能和第三组比较,依此类推。如果比较的元素只有一位
不同,那么他们所代表的最小项在 维布尔空间是相邻的,并由这两个
元素得到蕴含项,将其放入下一列,如果一个元素对新的蕴含项没有贡
页

献,则其为本原蕴含项,并将其保存。对新的列,重复进行上述操作,
直到找到所有本原蕴含项为止。
寻求最小覆盖
如果某一个最小项只被某个本原蕴含项蕴含一次,则此本原蕴含项为本
质本源蕴含项,最终必定要输出。然后寻找能够实现对其余最小项覆盖
的本源蕴含项。然后输出。
五、程序流程图
页
开始
输入查询次数
是
是否达到查询次
数
结束
否
编写链表操作源程序
分别构建链表用以储存最
小项,无关项及最小项
输入最小项
无关项
对最小项无关项按
个数分组
对相邻组元素依次
进行比较

六、 算法说明
相邻组比较函数
先找到组号为 的第一个数据,然后寻找组号为 的第一个数据,比较后
寻找组号为 的第二个数据,直到比较完毕。然后循环寻找组号为
的第一个数据,然后寻找组号为 的第一个数据,比较后寻找组号为
的第二个数据,直到比较完毕。
依此类推。比较完毕。
最终链表元素排序函数
为每一位变量设置优先级数,确保列如 的优先级所有优先级
之和,的优先级所有优先级之和,然后输出优先级最大的本质
页
是
保存比较后的本
源项到新的列中
是否为相邻
项
否
否
此列是否比较
完毕
否
判断此列是否全
为本原蕴含项
是
记录本原蕴含项
是
记录最小项被本原蕴
含项标记的次数
记录本质本源项到最终链表,并删除
最小项链表中其所包含的最小项
重新标记,记录包含最多最
小项的本原项到最终链表
最终链表元素排序后输出
清空各链表

本源项。设
x
i
为第 位变量的优先级,
x
i
为第 位反变量优先级,其数学解释
为
x
i
=x
i−1
+ x
i−2
+…+ x
1
x
i
=x
i
+ x
i−1
+ x
i−2
+ …+ x
1
=2 x
i
最小覆盖查找
使去掉本质本源项的剩余本源项对剩余的最小项进行标记,然后寻找包含
最小项最多的本源项,输出并删除其所包含的最小项。如果包含的最小项
一样多则取第一个本源项输出。直到最小项链表为空。
其余各函数不再详细说明
七、 测试样例
四变量测试
页
剩余33页未读,继续阅读













安全验证
文档复制为VIP权益,开通VIP直接复制

评论0