16布尔表达式
第五课布尔表达式IF语句
第五课
布尔表达式、IF语句
var y,x,a:real; begin writeln('Input a and x: '); readln(a, x); if x<a then y:=a; if x=a then y:=1; if x>a then y:=x; writeln('y=',y) end. 程序运行结果如下: Input a and x: 1 4 (从键盘输入a=1,x=4) y=4.0000000000E+00
第五课
布尔表达式、IF语句
例 4-3 读入一个小写字母。如果这个字母在字母表的前半部,则 输出其后继字母;否则输出其前趋字母。
var letter : char; begin readln(letter); if letter <= ’m’ then writeln(Succ(letter)) else writeln(Pred(letter)); readln; end.
第五课
布尔表达式、IF语句
FALSE 布尔表达式 布尔表达式
FALSE
TRUE
TRUE
பைடு நூலகம்
语句1
语句1
语句2
第五课
布尔表达式、IF语句
例4-1 输出两个整数中的较小数。
program example4_1_1; var x,y:integer; begin readln(x,y); if x<y then writeln(x) else writeln(y) end.
本例也可以用两条if语句来实现,程序如下。
program example4_1_2; var x,y: integer; begin readln(x,y); if x<y then writeln(x); if y<=x then writeln(y) end.
布尔表达式的标准形式
布尔表达式的标准形式
布尔表达式的标准形式有两种:
1. 简化标准形式(Simplified Standard Form):每个布尔表达式都可以通过逻辑运算符(与、或、非)和最小项或最大项的组合表示。
最小项是指布尔表达式中只包含一个变量的项,最大项是指布尔表达式中包含所有变量的项。
简化标准形式的布尔表达式可以通过逻辑运算符和最小项或最大项的组合表示,且具有最简化的形式。
2. 范式标准形式(Canonical Standard Form):每个布尔表达式都可以通过逻辑运算符(与、或、非)和字母表的所有变量的组合表示。
范式标准形式的布尔表达式可以通过逻辑运算符和字母表的所有变量的组合表示,且具有标准的形式。
范式标准形式包括两种形式:合取范式(Conjunctive Normal Form,简称CNF)和析取范式(Disjunctive Normal Form,简称DNF)。
合取范式是指布尔表达式由多个合取式(由逻辑与运算符连接的子句)相连而成,析取范式是指布尔表达式由多个析取式(由逻辑或运算符连接的子句)相连而成。
【国家自然科学基金】_布尔代数_基金支持热词逐年推荐_【万方软件创新助手】_20140730
2009年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
2012年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
科研热词 布尔函数 流密码 代数攻击 非线性度 代数免疫阶 代数免疫度 代数免疫 br0代数 高层次数据通路 非零零化子 零化子 零化多项式 逻辑代数 自相关函数 线性结构 线性码 粗糙集 等价验证 相关免疫 电子设计自动化 正蕴涵滤子 模糊滤子 模糊布尔滤子 概念设计 核算子 析取范式 旋转对称布尔函数 支撑点集 扩散性 形式验证 弹性函数 布尔滤子 布尔代数 布尔mp滤子 差别矩阵 属性约简 对称布尔函数 密码函数 完备布尔代数 多项式符号代数 多维plateaued函数 基本对称布尔函数 固执滤子 商 功能树 创新推理 关联mp滤子 仿射空间 仿射子空间 代数正规形快速变换 代数正规型 代数次数
1 1 1 1 1 1
53 54 55 56 57 58 59 60 61 62 63 64 65
人工智能 二值决策图 事件分离状态 串空间模型 s盒 semi-bent函数 rijndael算法 psmtl-代数 psbck-代数 petri网 m-mbent函数 kloosterman和 hadamard变换
STEP7中的基本数据类型-重要
STEP7中的基本数据类型⑴位(BOOL )位数据的数据类型为BOOL (布尔)型,在软件编程中BOOL变量的值1和0常用英语词TURE (真)和FALSE (假)来表示,对应二进制数中的“ 1和“0,常用于开关量的逻辑运算,存储空间为1位。
⑵字节(BYTE)字节数据长度为8位,数据格式为B#16#,B代表BYTE,表示数据长度为一个字节(8位),# 16#表示十六进制,取值范围为B#16#0〜B#16#FF。
⑶字(WORD )字数据长度为16位,这种数据可采用4种方法进行描述。
二进制:二进制的格式为 2 #,如2 # 101,取值范围为2# 0〜2# 1111_1111_1111_1111, 书写时每4位可用下划线隔开,也可直接表示为2# 111111111111十六进制:十六进制的格式为W # 16#, W代表WORD,表示数据长度为16位,#16#表示十六进制,数据取值范围为W # 16# 0〜W # 16 # FFFF。
BCD码:BCD码的格式为C#,取值范围为C# 0〜C# 999。
BCD码是用4位二进制表示1位十进制数,4位二进制中的0000〜1001组合分别表示十进制中的0〜9, 4位二进制中的1010〜1111组合放弃不用。
BCD码的最高4位用来表示符号,十六位BCD码的取值范围为—999〜+999。
在STEP7的数据格式中,BCD码的取值只取正值,与最高4位的符号无关。
无符号十进制数:无符号十进制数的格式为 B #( X, X),取值范围为B #( 0, 0)〜B #( 255, 255),无符号十进制数是用十进制的0〜255对应二进制数中的0000_0000〜1111_1111 ( 8位),16位二进制数就需要两个0〜255的数来表示,例如:B# (12, 254)= 2# 0000_1100_1111_1110_12 ― 254上面4种数据都是描述一个长度位16位的二进制数,无论你使用哪种方式都可以。
第十章 布尔代数
10 布尔代数 Boolean Algebra
实数集上加法运算, 是单位元; 例 : 实数集上加法运算 , 0 是单位元 ; 乘 法运算则1是单位元。 法运算则1是单位元。 实数集R 上定义运算∀ a,b∈ a*b=a, 例 : 实数集 R 上定义运算 ∀ a,b∈R , a*b=a , 不存在左单位 单位元 使得∀ *b=b; 不存在左单位元,使得∀b∈R,el*b=b; 对一切a b*a=b, 对一切a∈R,∀b∈R,有b*a=b, 该代数系统不存在左单位 单位元 ∴该代数系统不存在左单位元。 但是R中的每一个元素a都是右单位 单位元 但是R中的每一个元素a都是右单位元。
4
10.1 布尔函数 Boolean Functions
设B={0, 1}, 则Bn={(x1,x2,…,xn)|, xi∈B, 1≤i≤n}是由 和1构成的所有 元有序列 是由0和 构成的所有 构成的所有n元有序列 是由 的集合。 的函数称为n元 的集合。从Bn到B的函数称为 元布尔函 的函数称为 数。 例:F(x,y)=x+y
单位元=1,零元=0, 单位元= 零元=
23
10.1 布尔函数 Boolean Functions
布尔代数抽象的定义: 上的二元运算, 布尔代数抽象的定义:∧,∨是B上的二元运算, 是一元运算,如果∀a,b,c∈B,满足如下 满足如下: 是一元运算,如果∀a,b,c∈B,满足如下: H1:a (交换律 交换律) H1:a∧b=b∧a,a∨b=b∨a (交换律) H2:a H2:a∧(b∨c)=(a∧b)∨(a∧c) (分配律 分配律) a∨(b∧c)=(a∨b)∧(a∨c) (分配律) H3:B中有元素0 :B中有元素 H3:B中有元素0和1, (同一律 同一律) 对∀a∈B,a∧1=a,a∨0=a (同一律) H4: B,有 B,使 (互补律 互补律) H4:∀a∈B,有a∈B,使a∨a=1,a∧a=0 (互补律) ,0,1>是布尔代数 是布尔代数。 则<B,∧,∨ , ,0,1>是布尔代数。 B,
python-布尔表达式
python-布尔表达式1、布尔表达式条件语句和循环语句都使⽤布尔表达式作为条件布尔值为真或假,以False和True表⽰,前⾯经常使⽤布尔表达式⽐较两个值,如:while x>=02、布尔操作符(1)布尔操作符: and,or和 not布尔运算符and和or⽤于组合两个布尔表达式,并产⽣⼀个布尔结果<expr> and <expr><expr> or <expr>not运算符是⼀个⼀元运算符,⽤来计算⼀个布尔表达式的反not <expr>(2)Python中布尔操作符的优先级,从⾼分到低分依次是not、 and最低是or。
所以上⾯的达式等于如下这个带括号的版本壁球⽐赛计分例⼦a和b代表两个壁球选⼿的分数规则1:只要⼀个选⼿达到了15分,本场⽐赛就结束;如果⼀⽅打了七分⽽另⼀⽅⼀分未得时,⽐赛也会结束if (a==15 or b==15)or (a==7 and b==0) or (a==0 and b==7):print('⽐赛结束')规则2:需要⼀个团队赢得⾄少两分才算赢,即其中⼀个队已经达到了15分,且分数差异⾄少为2时⽐赛结束if (a==15 or b==15)or (a==7 and b==0) or (a==0 and b==7):print('⽐赛继续')(3)布尔代数(4)布尔表达式作为决策只要⽤户响应⼀个“Y” 程序就继续。
为了让⽤户输⼊⼀个⼤写或⼩写,可以使⽤以下的循环:对于序列类型来说,⼀个空序列被解释为假,⽽任何⾮空序列被指⽰为真1 >>> bool(0)2 False3 >>> bool(1)4 True5 >>> bool(32)6 True7 >>> bool(y)8 Traceback (most recent call last):9 File "<pyshell#6>", line 1, in <module>10 bool(y)11 NameError: name 'y'is not defined12 >>> bool('y')13 True14 >>> bool('')15 False16 >>> bool([])17 False这⾥可以解释,下⾯的程序,是判断response[0]等于y,或者Y,由于Y是bool型中始终为True,所以始终符合条件,形成死循环。
布尔逻辑运算符的数字符号
布尔逻辑运算符布尔逻辑运算符有4种,分别是And(逻辑与)、Or(逻辑或)、Not(逻辑非)、Xor(逻辑异或)。
1、And(逻辑与)逻辑与,释义是相当于生活中说的“并且”。
&&称为逻辑与,只有两个操作数都是true,结果才是true。
&& 称为简洁与或者短路与,也是只有两个操作数都是true,结果才是true。
2、Or(逻辑或)如果一个操作数或多个操作数为true,则逻辑或运算符返回布尔值true;只有全部操作数为false,结果才是false。
3、Not(逻辑非)逻辑非就是指本来值的反值。
4、Xor(逻辑异或)如果a、b两个值不相同,则异或结果为1。
如果a、b两个值相同,异或结果为0。
扩展资料:布尔逻辑(台湾翻译、布林运算、中国大陆翻译布尔逻辑)是以爱尔兰柯克皇后学院的英国数学家乔治·布尔命名的。
他首先定义了十九世纪中旬的逻辑代数系统。
现在,布尔逻辑在电子、计算机硬件和软件中有许多应用。
1937年,克劳德·埃尔伍德·香农展示了布尔逻辑在电子学中的应用。
集合代数是用来引入布尔逻辑的一种方法。
文的图表也用来显示各种布尔逻辑语句所描述的集合关系。
布尔逻辑运算符的由来:布尔用数学方法研究逻辑问题,成功地建立了逻辑演算。
他用等式表示判断,把推理看作等式的变换。
这种变换的有效性不依赖人们对符号的解释,只依赖于符号的组合规律。
这一逻辑理论人们常称它为布尔代数。
20世纪30年代,逻辑代数在电路系统上获得应用,随后,由于电子技术与计算机的发展,出现各种复杂的大系统,它们的变换规律也遵守布尔所揭示的规律。
运算符、布尔运算、表达式、标准函数
运算符、布尔运算、表达式、标准函数hb007 发表于 2006-3-22 19:24:26一、运算符1、算术运算符例如:4 +5 = 9 8 - 3 = 52 *3 = 6 12 * 24 = 4085 / 2 = 2.5 34 / 12 = 2.83 5 div 2 = 2 123 div 4 = 30 5 mod 2 = 1 12 mod 5 = 22、逻辑运算符它们的运算真值表如下:3、关系运算符例如:设a,b为标准数据类型的变量,则:a=b 如果a等于b结果为真,否则为假。
a<>b 如果a不等于b结果为真,否则为假。
a<b 如果a小于b结果为真,否则为假。
a>b 如果a大于b结果为真,否则为假。
a<=b 如果a小于等于b结果为真,否则为假。
a>=b 如果a在于等于b结果为真,否则为假。
例如:5=5 结果为真。
5=10 结果为假。
false<true 结果为真。
false>true 结果为假。
'A'<'C' 结果为真。
12.5>-8 结果为真。
24>=21 结果为真。
10.3<10 结果为假。
二、运算符的优先级三、布尔运算要判断“X>Y”是否成立,其结果不是一个算术量(即数值),而是“成立”或“不成立”,也可以用“真”表示“成立”,用“假”表示“不成立”,也就是说,它的结果是一个逻辑值(“真”或者“假”)。
逻辑运算又叫布尔运算。
布尔(Bool)是英国数学家的名字,他首先提出对二值变量进行逻辑运算的代数,称为布尔代数。
1、布尔常量Pascal语言中“真”用true表示,“假”用False表示。
所以布尔类型只有true与false两个常量。
2、布尔型符号常量(boolean)在程序的说明部分,可以定义布尔符号常量。
如:constt=true;f=false;执行部分就可以用t代表true,用f 代表false。
SIMPLE语言定义
SIMPLE语言定义一、字符集定义1.<字符集> →<字母>│<数字>│<单界符>2.<字母> →A│B│…│Z│a│b│…│z3.<数字> →0│1│2│…│94.<单界符> →+│-│*│/│=│<│>│(│)│[│]│:│. │; │, │'二、单词集定义5.<单词集> →<保留字>│<双界符>│<标识符>│<常数>│<单界符>6.<保留字> →and│array│begin│bool│call│case│char│constant│dim│do│else│end│false│for│if│input│integer│not│of│or│output│procedure│program│read│real│repeat│set│stop│then│to│true│until│var│while│write7.<双界符> →<>│<=│>=│:= │/*│*/│..8.<标识符> →<字母>│<标识符> <数字>│<标识符> <字母>9.<常数> →<整数>│<布尔常数>│<字符常数>10.<整数> →<数字>│<整数> <数字>11.<布尔常数> →true│false12.<字符常数> →' 除{'} 外的任意字符串'三、数据类型定义13.<类型> →integer│bool│char四、表达式定义14.<表达式> →<算术表达式>│<布尔表达式>│<字符表达式>15.<算术表达式> →<算术表达式> + <项>│<算术表达式> - <项>│<项>16.<项> →<项> * <因子>│<项> / <因子>│<因子>17.<因子> →<算术量>│- <因子>18.<算术量> →<整数>│<标识符>│(<算术表达式> )19.<布尔表达式> →<布尔表达式> or <布尔项>│<布尔项>20.<布尔项> →<布尔项> and <布因子>│<布因子>21.<布因子> →<布尔量>│not <布因子>22.<布尔量> →<布尔常量>│<标识符>│(<布尔表达式> )│<标识符> <关系符> <标识符>│<算术表达式> <关系符> <算术表达式> 23.<关系符> →<│<>│<=│>=│>│=24.<字符表达式> →<字符常数>│<标识符>五、语句定义25.<语句> →<赋值句>│<if句>│<while句>│<repeat句>│<复合句>26.<赋值句> →<标识符> := <算术表达式>27.<if句>→if <布尔表达式> then <语句>│if <布尔表达式> then <语句> else <语句> 28.<whilet句> →while <布尔表达式> do <语句>29.<repeat句> →rpeat <语句> until <布尔表达式>30.<复合句> →begin <语句表> end31.<语句表> →<语句> ;<语句表>│<语句>六、程序定义32.<程序> →program <标识符> ;<变量说明> <复合语句> .33.<变量说明> →var <变量定义>│ε34.<变量定义> →<标识符表> :<类型> ;<变量定义>│<标识符表> :<类型> ;35.<标识符表> →<标识符> ,<标识符表>│<标识符>七、SIMPLE语言单词编码八、实验一:设计SAMPLE语言的词法分析器检查要求:a)启动程序后,先输出作者姓名、班级、学号(可用汉语、英语或拼音);b)请求输入测试程序名,键入程序名后自动开始词法分析并输出结果;c)输出结果为单词的二元式序列(样式见样板输出1和2);d)要求能发现下列词法错误和指出错误性质和位置:非法字符,即不是SAMPLE字符集的符号;字符常数缺右边的单引号(字符常数要求左、右边用单引号界定,不能跨行);注释部分缺右边的界符*/(注释要求左右边分别用/*和*/界定,不能跨行)。
离散数学 第12讲 布尔表达式
n
一个 n 元布尔表达式化成等价的主析取范式, 主要应用德· 摩根定
律等,其方法与“数理逻辑”中化成主析取范式的方法完全一致。
德· 摩根定律
非(P 且 Q)=(非 P)或(非 Q) 非(P 或 Q)=(非 P)且(非 Q)
平行地可讨论极大项和主合取范式:
二、布尔表达式主范式与布尔代 数
定义8 给定n个布尔变元x1,x2,…,xn, 表达式
例5 将布尔代数<{0, a, b, 1},∨,∧,ˉ, 0, 1>上的布尔表达式
f ( x1 , x2 ) (a x1 ) ( x1 x2 ) (b x1 x2 )
化成主析取范式。
f ( x1 , x2 ) (a x1 ) ( x1 x2 ) (b x1 x2 )
三、布尔函数
布尔代数<B,∨,∧,ˉ, 0, 1>上的任一n元布尔表达式f(x1,x2,…,xn), 对n个变元的每一指派, 都可得到相应的表达式的值, 这值属于B。 所以, f(x1,x2,…,xn) 可视为 Bn 到B 的函数。但n 个变元的主析取范式 (或主合取范式)最多只有 B 个,所以,至多只能代表 B 个不同的函 数。从B 到B的函数共有 B 个。现分情况讨论:
是<B,∨,∧,ˉ>上的一个恒等式.
那么如何判定<B,∨,∧,ˉ>上的两个表达式是恒
等式? <B,∨,∧,ˉ>
一、布尔表达式
设<B,∨,∧,ˉ>是一个布尔代数,现在考虑一个 从Bn到B的函数。 设B={0, 1}, 下表给出了一个从B3到B的函数f。
一、布尔表达式
设B={0,a,b,1}, 右
表给出
数电逻辑16个公式
数电逻辑16个公式摘要:一、引言二、布尔代数基本公式1.逻辑与、逻辑或、逻辑非2.异或、同或三、布尔函数表达式四、卡诺图五、逻辑门电路1.与门、或门、非门2.与非门、或非门、异或门3.半加器、全加器六、组合逻辑电路设计七、中继器、寄存器、计数器八、时序逻辑电路设计九、触发器十、总结正文:数电逻辑是数字电子技术的基础,其中包含许多重要的公式。
本文将介绍16 个关键的数电逻辑公式,帮助读者更好地理解和应用这些公式。
一、布尔代数基本公式布尔代数是数电逻辑的基础,它只有三个基本运算符:与(∧)、或(∨)和非()。
这三个运算符可以组合成各种复杂的逻辑表达式。
1.逻辑与:对于任意两个逻辑变量A 和B,逻辑与运算符表示为A∧B。
当A 和B 都为1 时,A∧B 为1;其他情况下,A∧B 为0。
2.逻辑或:对于任意两个逻辑变量A 和B,逻辑或运算符表示为A∨B。
当A 和B 都为0 时,A∨B 为0;其他情况下,A∨B 为1。
3.逻辑非:逻辑非运算符表示为A,它的作用是将A 的值取反。
当A 为1 时,A 为0;当A 为0 时,A 为1。
4.异或:对于任意两个逻辑变量A 和B,异或运算符表示为A⊕B。
当A 和B 相同时,A⊕B 为0;当A 和B 不同时,A⊕B 为1。
5.同或:对于任意两个逻辑变量A 和B,同或运算符表示为A⊕B。
当A 和B 相同时,A⊕B 为1;当A 和B 不同时,A⊕B 为0。
二、布尔函数表达式布尔函数是一种将逻辑变量映射到布尔值(0 或1)的函数。
布尔函数可以用真值表、卡诺图和逻辑表达式来表示。
三、卡诺图卡诺图是一种用于表示布尔函数的图形方法,它可以简化复杂逻辑表达式的计算过程。
四、逻辑门电路逻辑门电路是一种基本的组合逻辑电路,它由逻辑门构成。
逻辑门根据输入信号的逻辑关系产生输出信号。
1.与门:与门电路接收两个或多个输入信号,当所有输入信号都为1 时,输出信号为1;其他情况下,输出信号为0。
2.或门:或门电路接收两个或多个输入信号,当任意一个输入信号为1 时,输出信号为1;只有当所有输入信号都为0 时,输出信号才为0。
布尔表达式运算
布尔表达式运算
布尔表达式是由逻辑运算符和操作数组成的表达式,常用于逻辑运算和条件判断。
常见的逻辑运算符有与(&&)、或(||)和非(!)等。
布尔表达式的运算规则如下:
1. 与运算:当且仅当两个操作数都为真(非零)时,结果才为真。
否则结果为假(零)。
2. 或运算:当且仅当两个操作数都为假(零)时,结果才为假。
否则结果为真(非零)。
3. 非运算:对一个操作数取反,如果原来为真则结果为假,原来为假则结果为真。
例如,假设有两个变量a和b,它们的值分别为1和0,那么以下代码:
if (a && b || !a)
{
// do something
}
的运算过程为:
1. a && b的结果为0,因为b为0。
2. !a的结果为0,因为a为1。
3. 0 || 0的结果为0,因为两个操作数都为假。
因此,上述代码的条件不满足,不会执行do something中的代
码。
布尔表达式运算在计算机程序中非常常见,例如判断一个数是否为偶数可以用a % 2 == 0的布尔表达式来表示。
掌握布尔表达式的运算规则对于编写正确的程序非常重要。
布尔代数
4/12/2020 2:59 AM
Deren Chen, Zhejiang Univ.
15
Boolean Algebra 布尔代数
进一步思考
1、卡诺图/Karnaugh Maps 布尔表达式的图示方法
2、布尔表达式的标准化描述 表达、分类、判定、应用
4/12/2020 2:59 AM
Deren Chen, Zhejiang Univ.
Boolean Algebra 布尔代数
布尔代数的抽象定义:
半序集(A,) 格/Lattics:半序集(A,)对任意a,bA,a,b 的上 确界c和下确界d存在,记a b=c, a b=d 有界格:格中存在最大元素1和最小元素0。 有界格中元素的余元: aA,若存在bA使得 a b=1, a b=0, 称b是 a的一个余元。
限定性命题公式: 最多仅含有否定、析取、合取 逻辑联结词的命题公式。
命题公式P的对偶公式(Dual):将P中的 析取联结词换成合取联结词, 合取联结词换成析取联结词, T换成F,F换成T(如果存在的话)。
记为P*
4/12/2020 2:59 AM
Deren Chen, Zhejiang Univ.
10
16
Boolean Algebra 布尔代数
练习
PP 624 9, 10(a)(c)
4/12/2020 2:59 AM
Deren Chen, Zhejiang Univ.
17
4/12/2020 2:59 AM
Deren Chen, Zhejiang Univ.
7
Table 6
Boolean Algebra 布尔代数
p∨q T p∧q F
p ∨ (p ∧ q) p p ∧ (p ∨ q) p
用布尔代数方法计算最小碰集
第Z 6卷第S 期Z 003年S 月计算机学报C~I NESE J OURNAL OF COMP UTERSVol .Z 6No .SAu g . Z 003用布尔代数方法计算最小碰集姜云飞1林笠1 Z1 中山大学软件研究所广州510Z 75 Z 暨南大学数学系广州51063Z收稿日期 Z 001-10-17 修改稿收到日期 Z 00Z-06-Z 1.本课题得到国家自然科学基金 60173039 60Z 03015国家教育部博士点基金 Z 001055S006 广东省自然科学基金 01116Z 教育部科学技术研究重点项目和广州市科技计划项目资助.姜云飞 男 1945年生 教授 博士生导师 研究方向为规划 推理 诊断.E -m ail dou g l ass !p ubli c .g uan g Z hou .g d .cn .林笠 男 196S 年生 博士 讲师 研究方向为诊断 数据挖掘.摘要在基于模型的诊断中 模型一般都是用布尔代数来表示 而计算碰集 hitti n g sets 则采用~S -树或图这就使得诊断系统采用多种不同的数据结构 给编程实现带来了不便.本文用布尔代数变量表示待诊断系统的部件 并给出了用布尔代数直接计算最小碰集的算法.数据结构更为简单 只需要布尔表达式 相当于字符串 效率上比其他的一些研究结果也要好 同时可克服丢失正确解的问题 具有通用性.关键词基于模型诊断 最小冲突集 最小碰集 布尔代数式中图法分类号TP1SThe Co m P ut ati on of H itti n g S ets w it h Boolean For mul asJI ANG Yun-Fei 1 LI N L i 1Z1 I nstit ute O f SO f t L are ZhOn g s han Unizersit S Guan g zhOu 510Z 75ZDe P art m ent O f M at he m atics Jinan Unizersit S Guan g zhOu 51063ZAbstract I n model-based di a g nosi s t he s y st e mi s descri bed b y Bool ean l o g i c but t he hitti n g sets are co m p ut ed w it h ~S -TREE or DAG so t he dat a str uct ures of di a g nosi s s y st e m were co m p osed of m an y descri p ti ons .I n t hi s p a p er bot h t he co m p onents and s y st e m descri p ti on are re p resent ed as Bool ean vari abl es .And t he Bool ean al g ebra al g orit h m i s p resent ed t o co m p ut e hitti n g sets .The effi ci enc y of t hi s al g orit h mi s bett er t han t he ot her wor ksdat a str uct ures are si m p l er and t he correct ans wers are not l ost .Thi s al g orit h m coul d be used more w i del y .Ke y words model-based di a g nosi s m i ni m al confli ct set m i ni m al hitti n g set Bool ean f or mul al 引言基于模型的诊断 model-based di a g nosi s是人工智能领域中一个十分活跃的研究分枝 它的主要工作原理是利用系统模型 根据系统实际行为与预期行为的差别 通过逻辑推导得出引发故障的部件集合.目前广泛使用的方法是根据系统的描述及观测 得到最小冲突集 然后再由最小冲突集计算得到最小碰集1"4即是系统的诊断.目前 许多学者都对计算碰集的方法进行了研究和改进 主要有~S -TREE 1~S -DAG Z ~ST -TREE 3 B~S -TREE 4 .在以上这些方法中 主要缺点集中表现在 1 需要进行剪枝 可能会丢失正确解 1Z建立的树或图没有规律 数据结构及算法实现比较繁琐 1"33 用树的算法 一般均要进行建立树 再由树递归计算碰集两个步骤 1"4 .本文针对上述方法产生诊断的缺点 提出用布尔代数来计算最小碰集的方法 这种方法的主要优点是 1 在计算效率上有大幅度的提高 Z 该计算碰集算法不必剪枝 所以不会丢失正确解 3 不需要使用树或图.数据结构简单 易于程序实现(4)布尔代数的性质保证结论的正确性e且利用布尔代数的性质可以简化计算e例如e由布尔代数的吸收律可由冲突集直接得到最小冲突集或由碰集直接得到最小碰集3(5)进一步可考虑将系统描述SD也用布尔代数表示e则可将冲突集\碰集的计算统一化e 使程序和算法保持一致.2用布尔代数方法计算最小碰集用布尔代数变量J e S e z e表示待诊断系统的部件(Co m p onent)e用J表示J的非3J S e J S或J S表示J e S的与ae用J S e J+S表示J e S的或ae1ae0a是互补的布尔代数常量.在下面的计算中e将要用到布尔代数的半序性质(p arti al or der)\吸收律(absor p ti on p r o p erti es)和分配律(di stri buti ve p r o p erti es)等6.首先e我们引入几个相关的定义.定义l.正布尔表达式.F=e1e Z e n.如果e i(i=1e Z e e n)e e i都是正文字e则称F为正单项式.G=F1+F Z++F n.如果F i(i=1e Z e e n)e F i都是正单项式e则称G为正布尔表达式.定义2.负布尔表达式.F=e1e Z e n.如果e i(i=1e Z e e n)e e i都是负文字e则称F为负单项式.G=F1+F Z++F n.如果F i(i=1e Z e e n)e F i都是负单项式e则称G为负布尔表达式.常量0ae1a即是正文字e又是负文字.例l.F=(e11e1Z e1n1+e Z1e Z Z e Z nZ++e m1e m Ze mnm)是负布尔表达式.G=Z45+1Z3+135+Z46+Z4+Z35+16是负布尔表达式(本文中e如无特殊说明e1e Z e e6和1e Z e e6都是布尔变量).H=Z1+Z36+Z56+346+145+134是正布尔表达式.I=ab c+de f即不是正布尔表达式e也不是负布尔表达式.设CS=<C1e CZe e Cm}是一个集合簇e其中的集合Ci=<ei1e ei Ze e ei n i}(i=1e Z e e m)e则把负布尔表达式:(e11e1Z e1n1+e Z1e Z Z e Z n Z++e m1e m Z e mn m )称为集合簇CS的布尔形式e记为CSF.其中ei j是与ei j 互补的文字.设H=<h1e hZe e hn}是一个集合e则我们把正布尔单项式h1h Z h n称作该集合的布尔形式e记为~F.对于一个集合簇和一个集合的布尔形式e我们有如下重要结果.定理l.设CS=<C1e CZe e Cm}是一个集合簇eH=<h1e h Z e e h n}是一个集合(其中e h iS C SS e且均为正文字).CSF和HF分别是它们的布尔形式e CSF=(e11e1Z e1n1+e Z1e Z Z e Z n Z++e m1e m Ze mnm)e HF=h1h Z h n.若CSF和HF满足式(1)e(e11e1Z e1n1+e Z1e Z Z e Z n Z++e m1e m Z e mnm)h1h Z h n=0(1)则集合H是集合簇CS的碰集.并且若HF是这样最简a的表达式(即对任何CSF g1g Z g m=0eh1h Z h n g1g Z g m)e则H是CS的最小碰集.反之e若H是CS的最小碰集e则CSF和HF满足式(1).证明.(1)充分性.设(e11e1Z e1n1+e Z1e Z Z e Z n Z++e m1e m Ze mnm)h1h Z h n=0e则根据布尔代数的乘法分配律e得(e11e1Z e1n1h1h Z h n+e Z1e Z Z e Z n Z h1h Z h n++e m1e m Z e mnmh1h Z h n)=0根据布尔代数中的半序性质e我们知道e对任意i ee i1e i Z e i n1h1h Z h n(e11e1Z e1n1h1h Z h n+e Z1e Z Z e Z n Z h1h Z h n++e m1e m Z e mnmh1h Z h n)=0e因此e i1e i Z e i n1h1h Z h n=0.因为此单项式为0e其中必有文字为互补对e又因为ei1e i Z e i n1中全为负文字e h1h Z h n中全为正文字e这个互补对必不在e11e1Z e1n1中e也不能在h1h Zh n中.设此互补对为e i j h a=0e从而e ei j=h ae ei j C ie ha He Ci He又因为i的任意性e所以e<h1e hZe e hn}是<C1e CZee Cm}的碰集.容易证明e若HF是这样最简a的表达式e则H是CS的最小碰集.充分性得证.(Z)必要性.假设i e<h1e hZe e hn}是<ei1e ei Ze e ei n1}的0Z9计算机学报Z003年碰集.即i ei1e i Z e i n1h1h Z h n 所以则根据布尔代数的乘法分配律得(e11e1Z e1n1+e Z1e Z Z e Z n Z++e m1e m Z e mn m >h1h Z h n=(e11e1Z e1n1h1h Z h n+e Z1e Z Z e Z nZh1h Z h n++e m1e m Z e mnmh1h Z h n>.因为i ei1e i Z e i n1h1h Z h n即i H J(J e i1e i Z e i n1J h1h Z h n >.根据布尔代数的半序关系得(ei1e i Z e i n1h1h Z h n >J J=0再根据布尔代数的运算性质有e11e1Z e1n1h1h Z h n+e Z1e Z Z e Z nZh1h Z h n++e m1e m Z e mnmh1h Z h n=0+0++0=0.必要性得证结论得证.证毕.例2(文献[1]例Z.7>.设CS=Z451 Z3135Z46Z4Z3516.H=1Z.则CSF=(Z45+1Z3+135+Z46+Z4+Z35 +16>HF=(1Z>.不难验证(Z45+1Z3+135+Z46+Z4+Z35 +16>(1Z>=0.所以1Z是CS的碰集.定理1是本文的一个重要结果是本文下面的定理和算法的重要基础.它的重要作用在于:把求一个集合簇CS的最小碰集的问题转换成求解布尔方程:CSF(J>=0的全部解J的问题J是非0的正布尔表达式.这里CSF是集合簇CS的布尔形式.J是待求解的布尔表达式形如J1J Z J n 全部文字均为正文字.当然这样的解有无穷多个我们只需求出最简单的那些解即从这些解中任意删除一个文字就不是解.为叙述方便起见引进以下一些术语和表示.设集合簇HS是集合簇CS的所有最小碰集的集合簇HS=H1H Z H a 其中Hi=h i1h i Z h i ni .则(h11h1Z h1n1+h Z1h Z Z h Z nZ++h a1h a Z h ana>称为碰集簇的布尔形式.显然如果已经求出了碰集簇的布尔形式就容易得到该碰集簇.首先我们引进一个新的函数!(">.定义3.!(">函数.该函数的定义域是负布尔表达式值域是正布尔表达式e与e是互补的文字!(">函数递归定义如下:(1>!(0>=1!(1>=0(01是布尔常量>;(Z>!(e>=e;(3>!(e">=e+!(">;(4>!(e+">=e!(">;若"不满足以上(1>(Z>(3>(4>条则用以下规则(5>计算(5>!(">=e!("1>+!("Z>.e是"中的任意一个文字"1是"中不含e的全部单项式"Z是"中所有项(包括含e及不含e的项>删除e后剩余的布尔形式.为叙述方便起见规则(5>也称作按e分解规则.例3(定义3规则4>.在!(35+6>中6是单文字单项式所以可得!(35+6>=6!(35>.例4(定义3规则5>.设CS=Z451 Z3135Z46Z4Z3516 CSF=(Z45+1Z3+135+Z46+Z4+Z35+1 6>.用布尔代数算法计算CS的最小碰集.在本例中仅给出第一步分解.因为CSF不满足定义3的前4个规则的形式所以要利用规则(5>进行分解.Z在(Z45+1Z3+1 35+Z46+Z4+Z35+16>中出现的频度最高为5所以我们选取e=Z(这样选取是希望可以提高求解效率>按Z分解."1=(135+16>(不含Z的项>"Z=(45+13+46+4+35+135+16>(所有项删除Z之后剩余的项>!(Z45+1Z3+135+Z46+Z4+Z35+16>=Z!(135+16>+!(45+13+46+4+35+135+16>.其中前一部分Z!(135+16>是含有元素Z的碰集的布尔形式后一部分!(45+13+46+4+35+ 135+16>是不含元素Z的碰集的布尔形式.分别对这两部分进行计算即可得到全部碰集(见例3 67S9>.为了表示方便在下文中"可能是集合簇CS 也可能是该集合簇的布尔形式CSF.函数!(">显然有如下性质其中""1"Z是在定义3规则(5>中的布尔形式(证明略>.性质l."1""Z"(这里""1 "Z看作是集合>.性质2."1的每项的文字个数"的每项的文字个数"Z的每项的文字个数"的每项的文字个数因为不含e.性质3.对任意非0非1的布尔形式"I1Z9S期姜云飞等:用布尔代数方法计算最小碰集"I有!<"I+"I>=!<"I>-!<"I>!<"I-"I>=!<"I>+!<"I>以上这些性质保证了当"是有穷集合时可以在有限步内得到!<">的解.根据定义3我们有如下结论.定理2.设CSF="是最小集合簇CS的布尔形式则!<">就是CS的最小碰集簇的布尔形式.证明.根据定理1若要证明结论正确只需证明"-!<">=0即可.当"满足定义3的规则<1><Z><3><4>时很容易证明结论成立即!<">是全部最小碰集的布尔形式.下面只需证明定义3的规则<5>.对a=CS用数学归纳法<1>当a=1结论显然成立<Z>假设当a n时结论成立!<">是"的全部最小碰集即"-!<">=0.则当a=n+1时任取一变量es"s全部碰集正好可以分成两个部分一部分包含e另一部分不包含e.从"中取变量e.得"-!<">="-<e-!<"1>+!<"Z>>=<"1+"3>-<e-!<"1>+!<"Z>><其中"1"Z"3"4的定义见例5>="1-e-!<"1>+"1-!<"Z>+"3-e-!<"1>+"3-!<"Z>.下面分别对这4个项进行计算"1-e-!<"1>=e-"1-!<"1>=e-0=0<因为"中至少有一个集合包含e所以"1n 根据假设有"1-!<"1>=0e-!<"1>就是全部包含e的碰集>"1-!<"Z>="1-!<"1+"4>="1-!<"1>-!<"4>=0"3-e-!<"1>=e-"4-e-!<"1>=0<e与e 互补>"3-!<"Z>=e-"4-!<"1+"4>=e-"4-!<"1>-!<"4>=0<如果"4=n+1可知!<"4>含有公因子e利用定义3的规则<3>可得e-!<"4> =0否则有"4n根据假设"4-!<"4>=0>.可得"-!<">=0即!<">是"的全部碰集.其中e-!<"1>就是全部包含e的碰集!<"Z>就是全部不包含e的碰集.结论得证.为了理解定义3和定理Z中的有关布尔形式的定义""1"Z"3"4下面我们给出例5.例5.以下将""1"Z"3"4看作是集合簇"是冲突集合簇eS"S是任意一个元素则有"1=X X"且e G X"Z=X e X""3=X X"且e X"4=X_e X"且e X.显然有关系式"1 I""1"Z"="3 "1"Z="4"1.下面我们给出一个具体数值的例子.例如CS=Z451Z3135Z 46Z4Z3516.以下""1"Z"3"4看作是布尔表达式e看作是变量."=<Z45+1Z3+135+Z46+Z4+Z35+16>取e=Z则"1=<135+16>"Z=<45+13+46+4+35+135+16> "3=<Z45+1Z3+Z46+Z4+Z35>"4=<45+13+46+4+35>.为了提高计算效率引入以下定理3和4<证明略>.定理3<提取公因子>.设"=e"1+e"Z++e"n则!<">=e+!<"1+"Z++"n>.例6.!<135+16>=1+<!<35>+!<6>>.即若冲突集中全部集合均含有元素e则e是一个最小碰集.定理4<单项转换>.设"本身是单项式即"= e1e Z e n则!<e1e Z e n>=e1+e Z++e n.例7.!<35>=<3+5>.即一个集合的最小碰集就是该集合每个元素组成的集合.例8.由例3例4例6和例7可得Z-!<135 +16>=1Z+Z36+Z56.即CS=Z451Z3135Z46Z4Z3516的含Z的碰集是1Z Z 36Z56.定理4的作用相当于建立了一个终止标准我们可以利用定理Z34进行分解和提取在分解和提取过程中冲突集簇的布尔形式的项数会越来越少各项的文字数会越来越少到冲突集簇的布尔形Z Z9计算机学报Z003年式只含一个单项式时就可以用定理4直接得到它的碰集簇的布尔形式.例(继续例4>.不含Z的碰集部分.!(45+13+46+4+35+135+16>=(13+4+35+16>(吸收律>=4-!(13+35+16>(按4提取定义3规则4>=4-(1-!(35>+!(3+6>>(按1分解定义3规则5>=4-(1-(3+5>+3-!(6>>((35>单项转换定理4;按3提取定义3规则4>=4-((13+15>+36>=413+415+436.由例S例9可以看出我们的计算结果是1Z}Z36}Z56}413}415}436}}与Reit er的结果是相同的.根据上述结果我们给出用布尔代数方法递归计算碰集簇的算法如下.算法l(用布尔代数方法递归计算碰集簇算法B~S(">>.设CS表示冲突集合簇"是CS的布尔形式算法B~S的输入为"输出为最小碰集的布尔形式!(">.1.如果"由一个单项构成"=(e1e Z e n>则由定理4输出结果为e1+e Z++e nB~S算法终止否则执行步Z.Z.检查"中是否有单文字单项式如果有执行步3否则执行步4.3.设e是"中的单文字单项式根据定理3提取公因子e.如果"中所有的单项式都含e则输出B~S(">=e算法终止;否则B~S(">=e-B~S("1>并递归计算B~S("1>.4.计算"中各文字出现的频度设e是各文字中出现频度最高的.5.根据定义3的规则(5>执行按e分解B~S(">= e-B~S("1>+B~S("Z>并分别递归计算B~S("1>和B~S("Z>.其中"1是"中不含e的全部单项式"Z是在"的全部表达式中删除e之后剩余的布尔表达式.算法1的计算过程比Reit er的~S_树要简单得多因为每一次分解和提取都大大简化了集合簇的布尔形式不必建立树或图且仅需一趟计算.效率提高了很多(见图1>也不会因剪枝而丢失解.算法2(增加冲突集之后碰集的计算算法证明略>.若已计算出集合簇CS(布尔形式CSF>的全部最小碰集~S(布尔形式~SF>再增加新的冲突集M CS(m easure m ent confli ct sets布尔形式MCSF>则计算CS MCS的碰集只要递归用算法1化简~SF-!(MCSF>即可而不必重新计算!(CSF+ MCSF>.例l (继续例4S9>.CS=Z45}1Z 3}135}Z46}Z4}Z35}16}}.~S =1Z}134}145}Z56}Z36}3 46}}设新增冲突集MCS=56}}则新的集合簇的碰集可用下式来计算得到~SF-!(MCSF>=((Z1>+(Z36>+(Z56>+(346>+(145>+(134>>-#(56> =((Z1>+(Z36>+(Z56>+(346>+(145>+(134>>(5+6>=((Z15>+(Z356>+(Z56>+(3456>+(145>+(1345>>+((Z16>+(Z36>+(Z56>+(346>+(1456>+(1346>>=(1Z5>+(145>+(Z56>+(1Z6>+(Z36>+(346>(吸收律>.所以计算得到的最小碰集是:1Z5}14 5}Z56}1Z6}Z36}346}与结论一致.3结束语经过编程比较分别用HS-树[1I~B HS-树[4I~布尔代数方法把计算碰集的效率进行了比较结果见图1所示.冲突集个数均为n=9个元素为1Z m}Z3m+1}n n+1n+m1} (CP U PI I667M1Z S M内存中文W indO L s9S>.本文算法改进之处:(1>不需要建立树或图数据结构只需要数组或动态链表就可以数据结构简单易于编程序实现.(Z>可以利用布尔代数的性质进行简化计算.例如碰集的最小化可以直接使用布尔代数的吸收律;(3>不必剪枝所以不会丢失正确解;(4>该算法只是采用布尔代数来进行H表示H 和利用部分布尔代数的性质进行简化并不是完全布尔形式的单纯计算;(5>与其它算法相比该算法只需要一步计算即可得到解;(6>一般诊断系统的SD(尤其是电子线路>多数都是由布尔代数进行描3Z9S期姜云飞等:用布尔代数方法计算最小碰集述的所以利用布尔代数进行计算可使整个系统的算法一致容易实现.进一步的研究工作是要将系统描述与诊断的计算有机统一起来并考虑正的冲突集的计算.参考文献1Reit er R.A t heor y of di a g nosi s f r o m first p ri nci p l es.A rtifi ci alI nt elli g ence19S73Z<1>=57"96Z G rei ner R Sm it h B A W il kerson R W.A correcti on t o t he al g o-rit h m i n Reit er s t heor y of di a g nosi s<research not e>.A rtifi ci alI nt elli g ence19S941<1>=79"SS 3W ot a wa F.A vari ant of Reit er s hitti n g-set al g orit h m.I nf or m a-ti on Pr ocessi n g Lett ers Z001<79>=45"514Ji an g Y F L i n L.Co m p uti n g m i ni m al hitti n g set w it h B~S-tree.Jour nal of Soft ware Z00Z13<Z Z>=Z Z67"Z Z74<i n Chi nese><姜云飞林笠.用对分-~S树计算最小不定集.软件学报Z00Z13<Z Z>=Z Z67"Z Z74>5~an B Lee S J.D eri vi n g m i ni m al confli ct sets b y CS-tree w it h m ar k set i n di a g nosi s f r o m first p ri nci p l es.I EEE T ransacti ons on S y st e m M an and C y ber neti cs-Part B=C y ber neti cs1999 <Z9>=Z S1"Z S66Ber nar d K Robert C B Shar on Ross.D i scret e M at he m ati cal S tr uct ures.3r d editi on.Bei j i n g=T si n g hua Uni versit y Pres1997JI ANG Yun-Fei bor n i n1945p r o-f essor and Ph.D.su p er visor.~is re-search i nterests i ncl ude p l anni n g rea-soni n g and di a g nosis.LI N L i bor n i n196S Ph.D.l ect urer.~is researchi nterests i ncl ude di a g nosis and data m i ni n g.4Z9计算机学报Z003年用布尔代数方法计算最小碰集作者:姜云飞, 林笠作者单位:姜云飞(中山大学软件研究所,广州,510275), 林笠(中山大学软件研究所,广州,510275;暨南大学数学系,广州,510632)刊名:计算机学报英文刊名:CHINESE JOURNAL OF COMPUTERS年,卷(期):2003,26(8)被引用次数:19次1.Reiter R A theory of diagnosis from first principles 1987(01)2.Greiner R;Smith B A;Wilkerson R W A correction to the algorithm in Reiter's theory of diagnosis (research note)[外文期刊] 1989(01)3.Wotawa F A variant of Reiter's hitting-set algorithm[外文期刊] 2001(79)4.姜云飞;林笠用对分HS-树计算最小碰集[期刊论文]-软件学报 2002(12)5.HanB;Lee S J Deriving minimal conflict sets by CS-tree with mark set in diagnosis from first principles 1999(29)6.Bernard K;Robert C B;Sharon Ross Discrete Mathematical Structures 19971.林笠递归建立HS-树计算最小碰集[期刊论文]-微电子学与计算机2002,19(2)2.姜云飞.林笠用对分HS-树计算最小碰集[期刊论文]-软件学报2002,13(12)3.傅阳春.周育人.FU Yang-chun.ZHOU Yu-ren基于寻找可满足2-SAT子问题的SAT算法[期刊论文]-计算机应用研究2010,27(2)4.赵相福.欧阳丹彤.ZHAO Xiang-fu.OUYANG Dan-tong使用SAT求解器产生所有极小冲突部件集[期刊论文]-电子学报2009,37(4)5.赵相福.欧阳丹彤.Zhao Xiang-fu.Ouyang Dan-tong基于模型的诊断中产生所有极小冲突集的新方法[期刊论文]-吉林大学学报(工学版)2007,37(2)6.孙吉贵.高健.张永刚.Sun Jigui.Gao Jian.Zhang Yonggang一个基于最小冲突修补的动态约束满足求解算法[期刊论文]-计算机研究与发展2007,44(12)7.刘晓平.季浩.石慧.LIU Xiao-ping.JI Hao.SHI Hui一种基于最小冲突集的约束冲突消解方法[期刊论文]-工程图学学报2010,31(2)1.江亮亮.王自强基于 RODON 的飞机发电机系统故障分析[期刊论文]-计算机与现代化 2013(12)2.潘宇雄.李清东.任章基于模型的故障诊断专家系统测点优选策略[期刊论文]-东南大学学报(自然科学版)2013(z1)3.ZHAO Xiangfu.OUYANG Dantong A method of combining SE-tree to compute all minimal hitting sets[期刊论文]-自然科学进展(英文版) 2006(2)4.欧阳丹彤.耿雪娜.郭劲松.王晓宇基于矩阵计算极小碰集的启发式算法[期刊论文]-吉林大学学报(工学版)2013(1)5.赵相福.欧阳丹彤可用于诊断产生的计算碰集的新方法[期刊论文]-吉林大学学报(理学版) 2006(3)6.王肖.赵相福用CHS-tree基于集合势的方法计算极小碰集[期刊论文]-计算机集成制造系统 2014(2)7.何士玉.刘志刚.徐建芳.李文帆求极小碰集的蛛网算法[期刊论文]-计算机应用研究 2013(3)8.杜敏.冯文全.王冬.赵琦基于二进制标签的改进HSSE—tree算法[期刊论文]-北京航空航天大学学报 2012(11)9.张楠.孙吉贵.赵相福.欧阳丹彤求极小碰集的遗传算法[期刊论文]-广西师范大学学报(自然科学版) 2006(4)10.吕晓明.黄考利.连光耀基于BPSO的多故障最小候选集生成技术[期刊论文]-系统工程与电子技术 2012(5)11.陈晓梅.孟晓风.乔仁晓基于BNB-HSSE计算全体碰集的方法[期刊论文]-仪器仪表学报 2010(1)12.王冬.冯文全.李景文.赵琦基于参数矩阵计算全体极小碰集的方法[期刊论文]-北京航空航天大学学报 2012(9)13.张立明.欧阳丹彤.曾海林基于动态极大度的极小碰集求解方法[期刊论文]-计算机研究与发展 2011(2)14.关龙.刘志刚.何士玉.杨红梅离散二进制粒子群算法在基于模型配电网故障诊断中的应用[期刊论文]-电力自动化设备 2013(9)15.杨悦.黄明.杨永安基于组件逻辑结构关系的故障诊断方法[期刊论文]-科学技术与工程 2013(25)16.叶柱秋基于模型的汇编程序诊断系统研究[学位论文]硕士 200517.胡非.刘志刚.何士玉.杨红梅一种基于模型的配电网故障诊断搜索算法[期刊论文]-电力自动化设备 2013(1)18.胡非.刘志刚.范福强.关龙配电网线路故障的基于模型诊断方法[期刊论文]-电力系统自动化 2012(10)19.刘裕基于与或树的柔性BOM结构及其自动诊断方法[学位论文]硕士 2005引用本文格式:姜云飞.林笠用布尔代数方法计算最小碰集[期刊论文]-计算机学报 2003(8)。
布尔表达式合法的条件
布尔表达式合法的条件
1. 不能使用真实的人名、地名、机构名等具体实体的名称。
2. 不能使用具体的引用或引用的来源。
3. 不能涉及到具体的事件、日期、时间、地点等。
4. 不能使用具体的数字或数值。
5. 不能使用具体的产品、品牌、商标等的名称。
6. 不能使用具体的成语、俚语、谚语等。
7. 不能使用具体的科技术语、编程代码等。
8. 不能使用具体的国家、城市、洲等地理名称。
9. 不能使用具体的法规、法律条款、政策等。
10. 不能使用具体的职业、职位、头衔等。
11. 不能使用具体的手势、姿势、动作等。
12. 不能使用具体的宗教、宗派、信仰等。
13. 不能使用具体的民族、族群、种族等。
14. 不能使用具体的动物、植物、微生物等生物名称。
15. 不能使用具体的物质、元素、化合物等。
16. 不能使用具体的颜色、形状、大小等描述。
17. 不能使用具体的音乐、电影、艺术作品等名称。
18. 不能使用具体的食物、饮料、菜肴等名称。
19. 不能使用具体的游戏、体育项目、比赛等名称。
20. 不能使用具体的文学作品、书籍、诗歌等名称。
请注意,以上规则只是为了确保不涉及具体实体的名称和引用,并非针对特定的布尔表达式内容限制。
具体的布尔表达式需根据实际情况和需要进行构造和设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
称为含有n元的布尔表达式,记为E(x1,x2,„,xn),
其中x1,x2,„,xn为变元。
定义6-5.3
布尔代数<A,∨,∧,->上的一个含有n
元的布尔表达式E(x1,x2,„,xn)的值是指:将A中的 元素作为变元xi(i=1,2,„,n)的值来代替表达式中 相应的变元(即对变元赋值),从而计算出表达式的值。 定义6-5.4 布尔代数<A,∨,∧,->上两个n元的布
(e1),(e1∨e2) ,(e1∧e2) 也是布尔表达式。 (4)除有限次使用条款(2),(3)生成的表达式 是布尔表达式外,没有别的是布尔表达式。 例1 给出了两个布尔函数的例子,见表6-5.1和6-5.2。 15 例2 给出了布尔表达式的例子,见P-262页。
定义6-5.2
一个含有n个相异变元的布尔表达式,
12
. 设 f(a∨b)=S3,若xS3,则x是满足xa∨b的原 子,所以必有xa或xb,这是因为: 若xa且xb,则由引理6-4.4可知必有 xa且xb,所 以xa∧b= a∨b 。再由条件xa∨b,便得 x (a∨b)∧(a∨b)=0 这与x是原子相矛盾。 因此,若xa则xS1或者若xb则xS2 ,所以 x S1∪S2 这就证明了S3 S1∪S2 。 反之,若xS1∪S2, 则xS1或xS2,若xS1,则 xa a∨b 所以xS3,同理,若xS2,则 xb a∨b 所以xS3,这就证明了 S1∪S2 S3 。 综上所述,就有S3 = S1∪S2 ,即 13 f(a∨b)= f(a)∪f(b)
次。
4
> 是一个格,且具有全下界0, 如果有元素a盖住0,则称元素a为原子。
原子:与0相邻且比0“大”
定义6-4.5 设<A, ≤
> 是一个具有全下界0的有限格, 则对于任何一个非零元素b(即不等于全下界0的元素) 至少存在一个原子a ,使得a ≤ b 。 证明:若b是原子,则有b ≤ b ,若b不是原子,则必 有b1存在,使得0b1b 若b1是原子,则定理得证,否则,必存在b2使得 0b2b1b 由于<A, ≤ >是一个有下界的有限格,所以通过有限不骤 总可以找到一个原子bi ,使得0bi... b2b1b
尔表达式为E1(x1,x2,„,xn)和E2(x1,x2,„,xn), 如果对于n个变元的任意赋值xi=xi’,xi’A时均有
则称这两个布尔表达式是等价的。
E1(x1’,x2’,„,xn’)=E2(x1’,x2’,„,xn’)
16
例4 布尔代数<{0,1},∨,∧,->上两个3元的布尔表达 式为 E1(x1,x2,x3)=(x1∧x2)∨(x1∧x3) 和 E2(x1,x2,x3)=x1∧(x2∨x3) 验证这两个布尔表达式是等价的。 E1(0,1,1)=(0∧1)∨(0∧0)=0 E2(0,1,1)=0∧(1∨0)=0 E1(1,1,1)=(1∧1)∨(1∧0)=1 E2(1,1,1)=1∧(1∨0)=1 E1(0,0,0)=(0∧0)∨(0∧1)=0 E2(0,0,0)=0∧(0∨1)=0 等等(全部赋值状况共8种需要验证。)。 结论:一个n元布尔表达式确定一个从An到A的函数。 定义6-5.5 设<A,∨,∧,->为布尔代数,一个从An到A 的函数,如果它能够用<A,∨,∧,->上的一个n元布尔表达 式E(x1,x2,„,xn)来表示,-5.1 对于两个元素的布尔代数<{0,1},∨,∧, ->, 任何一个从{0,1}n到{0,1}的函数,都是布尔函数。
证明:n元布尔表达式若有x1’∧x2’∧„∧xn’形式(其 中xi’是xi或xi中的任一个),则称它为小项,若一个布尔表 达式能表示成小项的并,则称它为析取范式。对于一个从 {0,1}n到{0,1}的函数,先用那些使函数值为1的有序n元组 分别构造小项,其中 xi 若n元组中第i个分量为1 ’= xi xi 若n元组中第i个分量为0 由这些小项构成的析取范式就是原函数对应的布尔表达式。
6-4 布尔代数 定义6-4.1 一个有补分配格称为布尔格。
求一个元素的补元素可以看作一元运算,称为补运算。 定义6-4.2 设<A,∨,∧,- > 是由布尔格<A, ≤
>
是所诱导的代数系统。称这个代数系统为布尔代数。
∪,∩,~>是由布尔格<(S),> 是所诱导的代数系统。这个代数系统为布尔代数。 当S={a,b}时的运算表如表6-4.1所示。P-253页
第(2)部分证明:<A,∨,∧,- >和<(S),∪,∩,~>同构 第2部分同构性格证明: . 设 f(a∧b)=S3,若xS3,则x必是满足xa∧b的原 子,因为a∧ba和a∧bb,所以xa且xb,推得xS1 = f(a)且xS2 = f(b) ,即xS1∩S2 ,这就证得 S3 S1∩S2 。 反之,若xS1∩S2,则xS1且xS2,所以x必是满足xa 和xb的原子,推得x必是满足xa∧b的原子,所以xS3,这 就证明了 S1∩S2 S3 。 综上所述,就有S3 = S1∩S2 ,即 f(a∧b)= f(a)∩f(b)
其中aj1,aj1,…,ajt是原子。因为b是aj1,aj1,…,ajt的最小上 界,所以必有aj1 ≤ b, aj2 ≤ b,..., ajt ≤ b。而a1, a2, … , ak是A 中所有满足ai ≤ b (i=1,2,…,k)的不同原子。 所以必有 t≤k 反设tk,那么在a1, a2, … , ak中必有aj0且aj0≠ajl 于是,由aj0∧(aj1∨aj1∨…∨ajt)= aj0∧(a1∨a2∨…∨ak) 即 (aj0∧aj1)∨ (aj0∧aj2)∨ … ∨ (aj0∧ ajt) = (aj0∧a1)∨ (aj0∧a2)∨ … ∨ (aj0∧ ak) 导致的0= aj0矛盾。tk假设不成立 。 T=k定理得证。 8
因为a∧ba, a是原子,所以只能是
a∧b=0 或 a∧b=a 若a∧b=0,则 a∧(b) =0 ,由引理6-4.1得 ab; 若a∧b=a,由引理6-1.6得ab。
9
定理6-4.3(Stone 表示定理) 设<A,∨,∧,- > 是由
>所诱导的一个有限布尔代数, S是布 尔格中的所有原子的集合,则<A,∨,∧,- >和<(S), ∪,∩,~>同构。 证明:本定理的证明过程分三部分
例1 设<(S),
1
2
定理6-4.1 在一个有界分配格中,对于布尔代数中的 任意两个元素a,b,必定有
( a )=a a∨b= a∧b a∧b= a∨b 证明:只证第(2)个等式
先证互补的两个式子相并等于全上界“1”。
(a∨b)∨(a∧b)= ((a∨b)∨a)∧((a∨b)∨b) =(b∨(a∨a))∧(a∨(b∨b)) =(b∨1)∧(a∨1) =1 再证互补的两个式子相交等于全下界“0”。 (a∨b)∧(a∧b)= 0
5
定理6-4.2 设<A, ≤
引理6-4.1 设在一个布尔格中,b∧c=0当且仅当b ≤c。
证明:(1)先证 b∧c=0 b ≤ c 若 b∧c=0, 因为 0∨c=c , 则 (b∧c)∨c=c
根据分配性,就有
(b∨c) ∧ (c∨c) =c 即 (b∨c) ∧1 =c 所以 b∨c =c 又因为 b ≤ b∨c 所以 b≤c (2)再证 b ≤ c b∧c=0 若b≤c,则b∧cc∧c,即b∧c0,所以b∧c=0
.最后证明同构性的f(a)= f(a)式: 将S看作全集,另f(a)=S1,则f(a)=S-S1=S-f(a),可以证 明xf(a)当且仅当xa,这是因为,若xf(a),必有xa,则 由引理6-4.4可知必有 xa,反之,若原子x满足xa,则必 有xa,所以xf(a) 。 还可以证明,对于原子x,xa当且仅当xf(a),这是 因为,若xa而xf(a),将导致xa的矛盾,所以xf(a),反 之,若xf(a)而xa,也将导致xf(a)的矛盾,所以xa 。 另外还可以证明, xf(a)当且仅当xf(a),所以,对于 原子x, xf(a)当且仅当xf(a),因此, f(a)=f(a) 第2部分同构性证明完毕。 (3)总结概括结论:<A,∨,∧,- >和<(S),∪,∩,~>同构。 推论6-4.1 有限布尔格的元素个数必定等于2n,其中n 是该布尔格中所有原子的个数。 推论6-4.2 任何一个具有2n个元素的有限布尔代数都 14 是同构的。
有限布尔格<A,
(1)构造一个映射,并证明它是双射(既是入射又是满 射); (2)描述代数系统<A,∨,∧,- >和<(S), ∪,∩,~> 同构并证明之; (3)总结概括结论。
10
第(1)部分证明:对于任意非0aA,必有的唯一表示: a=a1∨a2∨„∨ ak (引理6-4.2a的原子表示) 其中aia (i=1,2,…,k),作映射 f(a)=S1 = {a1,a2 ,…, ak} 那么,这个映射是 一个从A到(S)的一个双射。 第1部分双射证明: . 对于全下界0A,规定 f(0)= 。 .如果 S1 ={a1,a2 ,…, ak}(S),而有a,bA,使得 f(a)= f(a)=S1 ,则a=a1∨a2∨„∨ ak = b, 所以 f是一个从A到(S)的一个入射。 .对于任一个S1(S),若S1 ={a1,a2 ,…, ak},则由 于运算∨的封闭性,所以 a1∨a2∨„∨ak = aA 这就说明(S)中任一元素,必是A中某个元素的象,所以 是一个从A到(S)的一个满射。 11 第1部分双射证明完毕。
6-5 布尔表达式 定义6-5.1 设<A,∨,∧,->为布尔代数,如下递归 地定义A上布尔表达式(Boolean (1)布尔常元(取值于A的常元)是布尔表达式,布尔
expressions):
常元常用a,b,c等符号表示。