[python] 卡诺图化简

在温故数据合并的时候突然想起数电的 卡诺图.

根据合并一位不同的原则, 使用 python 做了一个实现, 感觉和QM算法不太一样:

# 判断两个数是否只有一个二进制不一样
def nor(x1, x2):return x1^x2# 判断两个集合是否相邻, 只有一位不同
def is_track(x1, x2):ts = [nor(x1[i],x2[i]) for i in range(len(x1))]k = 0 for t in ts: k |= t  if k == 0: return Falsek = math.log2(k)  return  k == int(k) # # 将所有数据进行分组和比对
def sfun(xs, ts):xs_t = []if len(xs) == 0: return xs_i = [] # 记录已经添加过的结构for i in range(len(xs)-1):etr = Falsefor j in range(i+1, len(xs)):if is_track(xs[i],xs[j]):xs_t.append(xs[i]+xs[j])xs_i += [i, j]etr = True# 将不能合并的数据丢在完成缓冲区xs_it = set(xs_i)if not etr and i not in xs_it: ts.append(xs[i])sfun(xs_t, ts)# 输入数据
t = [0,1,2,3,4]
# 数据处理一下 
t.sort() # 做一个排序
xs = [[x] for x in t]  # 将元素变成列表供下面sfun递归参数统一
ts = [] # 保存分组好的数据
sfun(xs, ts)
# 由于合并的过程没管理好,导致有多个重复的结果,做个去重
ts_ = []
for t in ts:t.sort()t =set(t)if t not in ts_:ts_.append(t)# 输出分组
print(ts_)

还是有些问题,

输入: [2,3,7,9,10,11,12,13,18,19,22,23,26,27,30,31]
程序输出: [{9, 11}, {9, 13}, {12, 13}, {19, 3, 23, 7}, {2, 3, 10, 11, 18, 19, 26, 27}, {18, 19, 22, 23, 26, 27, 30, 31}]
正确输出应该是: 
[{9, 11}, {12, 13}, {19, 3, 23, 7}, {2, 3, 10, 11, 18, 19, 26, 27}, {18, 19, 22, 23, 26, 27, 30, 31}]
[{9, 13}, {12, 13}, {19, 3, 23, 7}, {2, 3, 10, 11, 18, 19, 26, 27}, {18, 19, 22, 23, 26, 27, 30, 31}]

我想到的是加个元素过滤的方法来处理, 目前还没有想到更完美的解释和解决方案, 有大大看出来的话, 欢迎评论区交流.


好吧实现没有问题,只是还有一步没有做.
其中 Q-M(Quine-McCluskey)法化简布尔表达式 博文提到:
在这里插入图片描述
所以QM算法里面要做个"素项表" 的过滤, 然后应该就会没问题.


参考:

  • Q-M法,python自动化简逻辑表达式,卡诺图化简。
  • [数电]用python实现卡诺图化简,自动化简逻辑表达式
  • Q-M(Quine-McCluskey)法化简布尔表达式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/280150.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络——物理层(编码与调制)

计算机网络——编码与调制 基带信号和宽带信号编码与调制数字数据编码为数字信号非归零编码归零编码反向不归零编码曼彻斯特编码差分曼彻斯特编码4B/5B编码 数字数据调制为模拟信号模拟数据编码为数字信号模拟数据调制为模拟信号 我们之前讲了物理层的一些基础知识和两个准则&a…

腾讯云服务器如何购买省钱?2024年优惠券和优惠活动整理

腾讯云代金券领取渠道有哪些?腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券,大家也可以在腾讯云百科蹲守代金券,因为腾讯云代金券领取渠道比较分散,腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

【数据结构】猛猛干11道链表OJ(未完待续ing)

前言知识点 链表的调试技巧 int main() {struct ListNode* n1(struct ListNode*)malloc(sizeof(struct ListNode));assert(n1);struct ListNode* n2(struct ListNode*)malloc(sizeof(struct ListNode));assert(n2);struct ListNode* n3(struct ListNode*)malloc(sizeof(struc…

JVM学习-类加载

目录 1.类文件结构 2.类加载器 3.类加载的三个阶段 3.1加载 3.2链接 3.2.1验证 3.2.2准备阶段 3.2.3解析阶段 3.3初始化 4.拓展:反射 4.1获取类对象 4.2创建实例 4.3获取方法 4.4方法调用 1.类文件结构 2.类加载器 类加载器用来将类文件的二进制字节码加载到JV…

蓝桥杯之简单数论冲刺

文章目录 取模快速幂 取模 这道题目有两个注意点: 1.当你的取模之后刚好等于0的话,后面就不用进行后面的计算 2.if sum detail[i] > q: 这个语句的等号也很重要 import os import sys# 请在此输入您的代码a,b,n map(int,input().split())week a*5 …

代码随想录刷题day29|非递减子序列全排列全排列II

文章目录 day29学习内容一、非递减子序列1.1、代码-错误写法1.1.1 多了一个return语句。1.1.2、nums[i-1] > nums[i],这个条件写错了,为什么呢?1. 忽略了回溯算法的动态决策过程2. 限制了可能的递增子序列的探索 1.2、代码-正确写法 二、全…

还是了解下吧,大语言模型调研汇总

大语言模型调研汇总 一. Basic Language ModelT5GPT-3LaMDAJurassic-1MT-NLGGopherChinchillaPaLMU-PaLMOPTLLaMABLOOMGLM-130BERNIE 3.0 Titan 二. Instruction-Finetuned Language ModelT0FLANFlan-LMBLOOMZ & mT0GPT-3.5ChatGPTGPT-4AlpacaChatGLMERNIE BotBard 自从Cha…

wayland(xdg_wm_base) + egl + opengles 渲染使用纹理贴图的旋转 3D 立方体实例(十三)

文章目录 前言一、使用 stb_image 库加载纹理图片1. 获取 stb_image.h 头文件2. 使用 stb_image.h 中的相关接口加载纹理图片3. 纹理图片——cordeBouee4.jpg二、渲染使用纹理贴图的旋转 3D 立方体1. egl_wayland_texture_cube.c2. Matrix.h 和 Matrix.c3. xdg-shell-client-pr…

浅谈大模型“幻觉”问题

大模型的幻觉大概来源于算法对于数据处理的混乱,它不像人类一样可以by the book,它没有一个权威的对照数据源。 什么是大模型幻觉 大模型的幻觉(Hallucination)是指当人工智能模型生成的内容与提供的源内容不符或没有意义的现象。…

【JavaScript】JavaScript 程序流程控制 ② ( 循环流程控制 | 循环要素 - 循环体 / 循环终止条件 | for 循环语法结构 )

文章目录 一、JavaScript 程序流程控制 - 循环流程控制1、循环流程控制2、循环要素 - 循环体 / 循环终止条件3、for 循环语法结构 - 循环控制变量 / 循环终止条件 / 操作表达式4、for 循环 完整代码示例 一、JavaScript 程序流程控制 - 循环流程控制 1、循环流程控制 在 程序开…

C# 连接neo4j数据库,包括非默认的neo4j默认库

官方文档没找见,自己在源码里面找到的 private string _dbHost "bolt://localhost:7687"; private string _dbUser "neo4j"; private string _dbPassword "******"; private IDriver? _driver;public CQLOperation(string _data…

CTF-reverse-每日练题-xxxorrr

题目链接 https://adworld.xctf.org.cn/challenges/list 题目详情 xxxorrr ​ 解题报告 下载得到的文件使用ida64分析,如果报错就换ida32,得到分析结果,有main函数就先看main main函数分析 v6 main函数中,v6的值是__readfsqwor…

Haproxy 负载均衡集群

一. Haproxy : 1. Haproxy 介绍: HAProxy 是法国开发者威利塔罗 (Willy Tarreau) 在2000年使用C语言开发的一个开源软件,是一款具备高并发(一万以上)、高性能的TCP和HTTP负载均衡器,支持基于cookie的持久性,自动故障…

河南大学大数据平台技术实验报告二

大数据平台技术课程实验报告 实验二:HDFS操作实践 姓名:杨馥瑞 学号:2212080042 专业:数据科学与大数据技术 年级:2022级 主讲教师:林英豪 实验时间:2024年3月15日3点 至 2024年3月15日4点40 …

【矩阵】54. 螺旋矩阵【中等】

螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5] 解题思路 1、模拟顺时针螺旋顺序遍历矩阵…

完美解决 RabbitMQ可视化界面Overview不显示折线图和队列不显示Messages

问题场景: 今天使用docker部署了一个RabbitMQ,浏览器打开15672可视化页面发送消息后不显示Overview中的折线图,还有队列中的Messages,因为我要看队列中的消息数量。 解决方案: 进入容器内部 docker exec -it 容器id…

视频素材库app推荐的地方在哪里找?

视频素材库app推荐的地方在哪里?这是很多短视频创作者都会遇到的问题。别着急,今天我就来给大家介绍几个视频素材库app推荐的网站,让你的视频创作更加轻松有趣! 蛙学网:视频素材库app推荐的首选当然是蛙学网啦&#xf…

CommonJs规范

文章目录 1. CommonJS 模块的导出2. CommonJS 模块的导入2.1使用 require 函数导入文件模块(用户自定义)2.2使用 require 函数导入核心模块(Node.js 内置的模块)2.3文件夹作为模块2.4模块的原理 在node中,默认支持的模…

GPT-4引领AI新纪元,Claude3、Gemini、Sora能否跟上步伐?

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开,最重磅更新当属GPTs,多模态API,未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义,不亚…

C语言——自定义类型——结构体(从零到一的跨越)

目录 前言 1.什么是结构体 2.结构体类型的声明 2.1结构体的声明 2.2结构体的创建和初始化 2.3结构成员访问操作符 2.3.1结构体成员直接访问 2.3.2结构体成员的间接访问 2.4结构体变量的重命名 2.5结构体的特殊声明 2.6结构的自引用 3.结构体内存对齐 3.1对齐规则 3…