从布尔函数的真值表求其代数正规型(ANF)
布尔函数简介
在密码学中,布尔函数是加密算法的核心部件之一。
布尔函数指从 F2n\mathbb{F}_2^nF2n 到 F2\mathbb{F}_2F2 的映射。
简单举例如下:
一个三元(n=3n=3n=3)布尔函数 FFF 是指从 F23\mathbb{F}_2^3F23 到 F2\mathbb{F}_2F2 的映射。
其中,
F23={000,001,010,011,100,101,110,111}F2={0,1}\mathbb{F}_2^3=\{000,001,010,011,100,101,110,111\} \\ \mathbb{F}_2=\{0,1\} F23={000,001,010,011,100,101,110,111}F2={0,1}
我们可以认为 xxx 是 F23\mathbb{F_2^3}F23 中的某个元素,而此时 F(x)F(x)F(x) 的值就是 000 或者 111。
布尔函数表示方法
真值表表示
若 FFF 符合
F(000)=1,F(001)=0F(010)=1,F(011)=0F(100)=0,F(101)=0F(110)=1,F(111)=0F(000) = 1,~ F(001) = 0\\ F(010) = 1,~ F(011) = 0\\ F(100) = 0,~ F(101) = 0\\ F(110) = 1,~ F(111) = 0\\ F(000)=1, F(001)=0F(010)=1, F(011)=0F(100)=0, F(101)=0F(110)=1, F(111)=0
则 f(x)f(x)f(x) 的真值表可以为 {1,0,1,0,0,0,1,0}\{1,0,1,0,0,0,1,0\}{1,0,1,0,0,0,1,0}
小项表示
布尔函数的小项表示由它的真值表唯一确定。
布尔函数是它取值为1的那些真值指派对应的小项函数之和。
三元布尔函数 FFF 如上所述,则小项表示为:
F(x)=x10x20x30+x10x21x30+x11x21x30F(x)=x_1^0x_2^0x_3^0+x_1^0x_2^1x_3^0+x_1^1x_2^1x_3^0 F(x)=x10x20x30+x10x21x30+x11x21x30
其中 x1,x2,x3x_1,x_2,x_3x1,x2,x3 分别是 xxx 的三个分量,所以函数 F(x)F(x)F(x) 也可以写成 F(x1,x2,x3)F(x_1,x_2,x_3)F(x1,x2,x3)
由真值表求小项表示可以仅留下真值为 111 的部分,标注上标即可(仅为求法,有具体含义
)。
ANF(代数范式、代数正规型)
上述布尔函数 FFF 的多项式表示为:
F(x)=1+x1+x3+x1x2+x1x3+x1x2x3F(x)=1+x_1+x_3+x_1x_2+x_1x_3+x_1x_2x_3 F(x)=1+x1+x3+x1x2+x1x3+x1x2x3
这也称为它的ANF。
由真值表求ANF可通过先求小项表示再展开(xi0=xi+1,xi1=xix_i^0=x_i+1,~x_i^1=x_ixi0=xi+1, xi1=xi)的途径:
这样,小项表示即可展开为多项式表示:
F(x)=(x1+1)(x2+1)(x3+1)+(x1+1)x2(x3+1)+x1x2(x3+1)→F(x)=1+x1+x3+x1x2+x1x3+x1x2x3F(x)=(x_1+1)(x_2+1)(x_3+1)+(x_1+1)x_2(x_3+1)+x_1x_2(x_3+1)\\ \to~F(x)=1+x_1+x_3+x_1x_2+x_1x_3+x_1x_2x_3 F(x)=(x1+1)(x2+1)(x3+1)+(x1+1)x2(x3+1)+x1x2(x3+1)→ F(x)=1+x1+x3+x1x2+x1x3+x1x2x3
布尔函数中的运算:1+1=0+0=0,0+1=1+0=1,0*0=0*1=1*0=0,1*1=1
包括递归方式求ANF
及其他相关代码:https://gitee.com/ssdreamc/about_boolean_functions
从布尔函数的真值表求其代数正规型(ANF)相关推荐
- 离散实验 真值表求主析取范式、主合取范式的计算机语言实现
离散数学 实验一 标题:真值表求主析取范式.主合取范式的计算机语言实现 其他课程的一些其他实验源码也可在本人github主页找到哦 链接如下:https://github.com/Schiz0mani ...
- c语言整型最大数,C语言:求一个短整型正整数中的最大数字
C语言:求一个短整型正整数中的最大数字 关注:84 答案:5 手机版 解决时间 2021-01-16 02:17 提问者舊倳偂歡 2021-01-15 14:26 例如整数12354中的最大数字是 ...
- c语言构造合式公式真值表,求C++构造任意合式公式的真值表?
构造任意合式公式的真值表 A)功能 给出任意变元的合式公式,要求构造该合式公式的真值表. B)基本思想 我们仍然用数值变量来表示命题变元.合式公式的表示及求真值的方法采用1.2 中所采用的方法,并 ...
- 由真值表求逻辑表达式的方法
第一种方法:以真值表内输出端"1"为准 第一步:从真值表内找输出端为"1"的各行,把每行的输入变量写成乘积形式;遇到"0"的输入变量上加非号 ...
- 利用真值表求命题公式A=(p→(q→r))↔︎(r→(q→p))的主析取范式和主合取范式.(10分)
- 【微电网优化】基于粒子群算法求解热电联供型微电网经济运行优化问题含Matlab源码
1 简介 面对全球环境污染和能源危机的双重压力,世界各国将焦点转向太阳能.风能等清洁可再生能源.微电网是组织和利用可再生能源发电的重要途径之一.本文以微电网的能量优化调度为研究对象,建立了微电网能量优 ...
- 【微电网优化】基于matlab粒子群算法求解热电联供型微电网经济运行优化问题【含Matlab源码 1696期】
一.多目标粒子群算法求解电联供型微电网经济运行优化简介 0 引言 热电联供 (combined heat and power, CHP) 系统建立在能源梯级利用的概念基础上, 统一解决了电能和热能的供 ...
- 【离散数学】Java语言实现利用真值表法求主析取范式和主合取范式
C++版本的看这个链接: [离散数学]C++语言实现利用真值表法求主析取范式和主合取范式_zhtstar的博客-CSDN博客https://blog.csdn.net/weixin_56319483/ ...
- 【离散数学】C++语言实现利用真值表法求主析取范式和主合取范式
Java版本的如下链接所示: Java语言实现利用真值表法求主析取范式和主合取范式_zhtstar的博客-CSDN博客https://blog.csdn.net/weixin_56319483/art ...
最新文章
- 5G通信3大场景 来源:elecfans
- 向app store提交应用时,必须点“ready to upload binary”!
- Odoo访问权限(一)
- oracle 39170,39170-1134
- Python 对文件进行编码转换
- CentOS 7上升级openssh7.5
- oracle更改字段大小语句,sql语句修改字段长度(实例)
- 在iOS微信里如何自动播放
- java吊打面试官系列,java高级程序员面试笔试宝典蔡羽
- 国家集训队论文分类整理(转)
- Timus Online Judge 2045 Richness of words
- t.cn新浪短链接 生成
- 【成功实现】python对tif图片的读取与保存
- 人工智能已经成为全球新一轮科技革命和产业变革的核心驱动力
- 车载通信——CAN收发器选型(低功耗)
- Pytorch增加矩阵维度
- 基于ASP.NET网站流量统计系统的设计与实现
- 请列举Nginx的一些特性
- 古风排版+大笨钟+宇宙无敌加法器+情人节
- 总结:js世界中的特殊符号
热门文章
- 后疫情时代,“马太效应”将影响更多人
- 使用word插入无法编辑的对象
- SQL server 建表时的一些知识 常用的Sql函数
- utran体系结构包括_接入网体系结构
- K均值聚类算法(Kmeans)讲解及源码实现
- 8001正红背绿冠号收集和探讨
- 度小满笔试两道编程题2020/09/20
- html输入框不显示cookie_【HTML教程】网页制作常见问题解答二
- 卫星导航定位技术二:由星历参数求解卫星时空位置
- ArTIST:Probabilistic Tracklet Scoring and Inpainting for Multiple Object Tracking