命题逻辑等值演算的计算机求解方法

合集下载

等值演算法基本公式

等值演算法基本公式

等值演算法基本公式等值演算法是一种用于判定逻辑公式等式关系的算法。

它基于数学中的等价关系理论,将两个逻辑公式进行比较,判断它们是否相等。

在计算机科学中,等值演算法被广泛应用于程序的优化、程序验证和形式化验证等领域。

等值演算法的基本思想是将逻辑公式转化为等价的标准形式,再将两个标准形式进行比较,判断它们是否相等。

等值演算法的基本公式如下:1.双向等价推导法对于逻辑公式P和Q,若P可以推导出Q,且Q可以推导出P,则P等价于Q。

2.等价形式变换法对于逻辑公式P和Q,若P和Q可以通过等价变换得到相同的标准形式,则P等价于Q。

3.代入定理对于逻辑公式P和Q,若在P中将某个原子命题A替换成另一个原子命题B,同时在Q中将A替换成B,且P等价于Q,则P和Q在A和B上等价。

4.消解律对于逻辑公式P和Q,若P中包含一个析取式和Q中包含一个合取式,且该析取式和合取式的某个元素相等,则在P和Q中将该元素消去,得到的公式等价。

5.分配律对于逻辑公式P和Q,若P和Q都包含一个合取式和一个析取式,且这两个合取式和析取式都是相同的,则在P和Q中将这两个结构进行交换,得到的公式等价。

6.运算律对于逻辑公式P和Q,若P和Q中包含相同的运算符,并且这些运算符的操作数也相同,则在P和Q中将这些运算符及其操作数进行交换,得到的公式等价。

以上就是等值演算法的基本公式。

通过应用这些公式,可以快速、准确地判断逻辑公式之间的等价关系。

在实际应用中,需要根据不同的情况灵活运用这些公式,以达到最佳的效果。

同时,还需要注意等值演算法在计算机程序优化和验证等领域的实际应用,以充分利用等值演算法的优势和避免其劣势。

21命题逻辑的等值和推理演算

21命题逻辑的等值和推理演算

A,B代表任意 的命题公式
摩根律 : (AB) = AB,
(AB) = AB
吸收律: A(AB) = A, A(AB) = A
零律:
AT = T, AF = F
同一律: AF = A, AT = A
TA = A, T A = A,
补余律: AA = T, AA = F,
等值公式
2. 常用等值公式
公式A的子公式置换后,A化为公式B,必有A = B
n 等值演算
n 由已知的等值公式推演出新的等值公式的过程 n 如已知: AA = A
则: BAA = BA
n 等值演算的基础: (1) 等值关系的性质:自反、对称、传递 (2) 基本的等值式 (3) 置换规则
三个重要的等值式
P Q = P Q P Q = (P Q) ( P Q )
C
P∧Q
FF
T
T
F
T
P∧Q
FT
T
T
F
F
TF
F
F
T
T
P∧Q
TT
T
F
F 任意
2.3 命题公式与真值表的关系
按真值表列出命题公式的方法
从F来列出
如下表中B为F有二种可能
所以,B的命题公式形式为:□ ∧ □
而取F相应的P、Q解释分别为: P∨Q 、 P∨ Q
所以,B=(P∨Q)∧(P∨Q ) 同理,A= P∨Q
按真值表列出命题公式的方法
从T来列出
如下表中A为T有三种可能
所以,A的命题公式形式为:□∨ □ ∨□ 而取T相应的P、Q解释分别为: P∧Q、P∧Q、 P∧Q
所以,A=(P∧Q) ∨(P∧Q) ∨(P∧Q)

《离散数学》02命题逻辑等值演算

《离散数学》02命题逻辑等值演算
类似的讨论可知,若Ai是含n个命题变项的简单合取式,且 Ai为矛盾式,则Ai中必同时含某个命题变项及它的否定式, 反之亦然。
2.2 析取范式和合取范式
定理2.1 (1)一个简单析取式是重言式当且仅当它同时含有某个命题
变项及它的否定式。 (2)一个简单合取式是矛盾式当且仅当它同时含有某个命题
变项及它的否定式。 定义2.3 (1)由有限个简单合取式构成的析取式称为析取范式
A∨1 1,A∧0 0 A∨0 A,A∧1 A A∨┐A 1 A∧┐A 0 A→B ┐A∨B AB (A→B)∧(B→A) A→B ┐B→┐A AB ┐A┐B (A→B)∧(A→┐B) ┐A
对偶原理
一个逻辑等值式,如果只含有┐、∨、∧、0、1 那么同时
把∨和∧互换 把0和1互换 得到的还是等值式。
(A∨B)∨C A∨(B∨C) (A∧B)∧C A∧(B∧C)
A∨(B∧C) (A∨B)∧(A∨C) (∨对∧的分配律)
A∧(B∨C) (A∧B)∨(A∧C) (∧对∨的分配律)
┐(A∨B) ┐A∧┐B ┐(A∧B) ┐A∨┐B
A∨(A∧B) A,A∧(A∨B) A
基本等值式
8.零律 9.同一律 10.排中律 11.矛盾律 12.蕴涵等值式 13.等价等值式 14.假言易位 15.等价否定等值式 16.归谬论
例2.5 解答
(1) (p→q)∧p→q
(┐p∨q)∧p→q
(蕴涵等值式)
┐((┐p∨q)∧p)∨q
(蕴涵等值式)
(┐(┐p∨q)∨┐p)∨q
(德摩根律)
((p∧┐q)∨┐p)∨q
(德摩根律)
((p∨┐p)∧(┐q∨┐p))∨q (分配律)
(1∧(┐q∨┐p))∨q

计算机自动求解命题公式的主范式

计算机自动求解命题公式的主范式

3 计算机自动求解命题公式的主范式一.需求分析(1)用户输入一任意命题公式,计算机程序自动输出其主析取范式和主合取范式。

(2)求任意一个命题公式的真值表,并根据真值表求主范式。

(3)关于命题公式的形式和运算符(即联结词)的运算首先根据离散数学的相关知识,命题公式由命题变元和运算符(即联结词)组成,命题变元用大写字母英文表示(本次试验没有定义命题常元T和F,即T、F都表示命题变元),每个命题变元都有两种真值指派0和1,对应于一种真值指派,命题公式有一个真值,由所有可能的指派和命题公式相应的真值按照一定的规范构成的表格称为真值表。

目前离散数学里用到的包括扩充联结词总共有九种,即析取(或)、合取(与)、非、蕴含、等值、与非、或非、异或、蕴含否定,常用的为前五种,其中除了非运算为一元运算以外,其它四种为二元运算。

所以本次实验设计时只定义了前五种运算符,同时用“/”表示非,用“*”表示合取,用“+”表示析取,用“>”表示蕴含,用“:”表示等值,且这五种运算符的优先级依次降低,如果需用括号改变运算优先级,则用小括号()改变。

以下为上述五种运算符运算时的一般真值表,用P和Q表示命题变元:1.非,用“/”表示2. 合取(与),用“*”表示3.析取(或),用“+”表示4.蕴含,用“>”表示5.等值,用“:”表示下面是求取后缀表达式的规则:1.从中缀表达式左边起逐个字符判断,如果是命题变元,则直接输出;如果是运算符,则将其与当前有效栈顶字符(即非空,可能为运算符或左半括号;如果栈为空,则直接入栈)的优先级比较,如果大于栈顶字符优先级,则直接入栈,如果小于或等于栈顶字符优先级,则弹出栈中字符并输出,直到大于栈顶字符优先级;2.如果遇到左半括号,则直接入栈,也就是栈外左半括号的优先级最高,入栈以后,其优先级变为最低,也就是不管下一个字符是什么,该左半括号都不出栈,当且仅当遇到与其对应的右半括号时(遇到右半括号前,所有的字符按1中的规则或左半括号的入栈规则入栈或出栈),将栈中该左半括号以上的字符按照出栈规则弹出并输出,最后该左半括号出栈并和右半括号一起被丢掉(右半括号永不入栈),余下的字符不出栈;3.按照上述规则判断命题公式中的所有字符后,如果栈中还有有效字符,则依次弹出并输出。

命题逻辑等值演算的计算机实现

命题逻辑等值演算的计算机实现

! 命 题公 式的 定义
定义 " 以 & 真 ’# & 假 ’ 为其变域的 变元称为 命题变元 ! 命题 变 元也简称为命题 " 定义 $ 命题演算公式 $ 简称公式 %可按以下法则生成 !$ # (%" & 命 题是公式 )%’& 如果 ( 是公式 !则 ! ( 是公式 )%) & 如果 ( #* 是公式 ! 则 ( " * #( # * #( $ * 和 ( %$ * 都是公式 ) ! 只有有限次按照上 述法则所得的结果才是公式 "
命题逻辑等值演算的计算机实现
李刚!$"源自!杨杰#" %-郑州轻工业学院 信息与计算科学系 & 河南 郑州 .’ """ ! %!- 郑州轻工业学院 计算机与通信工程学院 & 河南 郑州 .’ """ !% &-郑州轻工业 学院网络中心 & 河南 郑州 .’ """ !$ 摘要 " 本文针对等值演算理论 &通过数据 结构和 / 00 程序设计语言 &分析了命题公式的逻辑结构 & 设计出用广义 表单链表的存储结 构 & 并在此基础上探讨了如何实现其基本操作 & 从而进一步阐明了复杂等值演算的计算机实现算法 ) 关键词 "命题逻辑 %等值演算 % 数据结构 % 广义表 %计算机实现 中图分类号 "%&#’! 文献标识码 "( 文章编号 "!))*+#),,-"’’./’"+!’,.0+’# 12 3 456%7!78 9)3 (:; & <%-= ;> ?- @A 25A @BC4?: @5 45D /@C>E?4?:@5 FG:;5G;7 HI;56 JI@E K5: L;BG: ?M @A 1:6I? 25DEN?BM7 HI;56HI@E .’ """ !7 / I: 54O !-F GI@@P @A / @C> E?;B 45D /@CCE5:G4?:@5 Q56:5;;B: 567 HI;56 JI@E K5: L;BG: ?M @A 1:6I? 25DEN?BM7 HI;56HI@E .’ """ !7 / I: 54O &-) ;?R@BS /;5?;B7 HI;56JI@E K5:L ;BG:?M @A 1:6I? 25DEN?BM7 HI;56HI@E .’" "" !7 / I:54T (G@89=C 8H U4NN:56 @5 ?I; ?I;@BM @A ;V E:L 4P;5? G4PGEP4?;N7 ?I:N >4>;B E?: P:J;N ?I; D 4?4 N?BEG?EB; 45D / 00 >B@6B4C D;N:65 P456E46;7 ?@ 454PM J; ?I; P@6 :G N?BEG?EB; @A >B@>@N: ?:@5 A@BCEP47 D;N:65N ?I; N4L :56 N?BEG?E$B; ?I4? EN; ?I; WB@4D N;5N; C;5E GI4:5;D P :N?7 45D ;X >P@B;D ?@ W;6 A @B :5 ?I:N A@E5D4?:@5 I@Y ?@ G4BBM @E? :?N W4N:G @>;B4?: @57 ?IEN 45D A EB?I;B GP4B: AM:56 ?I; G@C>E?;B : C>P;C;5?4?:@5 4P6@B: ?IC @A ?I; G@C>P: G4?;D ;V E: L! 4P ;5? G4PGEP4?: @5I2J K49L@H >B@>@N: ?:@5 P@6:GO ;V E:L 4P;5? G4PGEP4?:@5O D4?4 N?BEG?EB;O WB@4D N;5N; Y 4?GIO G@C>E?;B :C> P;C;5?4?:@5 数理逻辑属形式逻辑范畴 ! 形式逻辑学是对思维形式结 构和 思维规律进行研究的类似语法的一门工具性学科!"# " 命题逻辑是 数理逻辑的基础部分 ! 其中等值演算在命题逻辑中占有很重 要的 地位 " 所谓命题逻辑的等值演算 ! 是指由已知的等值式运用 等值 规则演 算出另外的一 些等值式 !它在 判断命题 公式的类型 #求 主 析 $ 合 %取范式中是一种很重要的方法 " %*6# 6,&&&& " %12 345 67829 :56;252<8=8>4< 4? 812 &9464@>8>4<=; A4B>C DE7>F =;2<8 3=;C7;=8>4<

计算命题演算公式的真值

计算命题演算公式的真值

四计算命题演算公式的真值一.实验题目所谓命题演算公式是指由逻辑变量(其值为TRUE或FALSE)和逻辑运算符∧(AND)、∨(OR)和┐(NOT)按一定规则所组成的公式(蕴含之类的运算可以用∧、∨和┐来表示)。

公式运算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。

已知一个命题演算公式及各变量的值,要求设计一个程序来计算公式的真值。

要求:(1)利用二叉树来计算公式的真值。

首先利用堆栈将中缀形式的公式变为后缀形式;然后根据后缀形式,从叶结点开始构造相应的二叉树;最后按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值。

(2)逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串。

(3)根据用户的要求显示表达式的真值表。

二.实验设计1. 设计思想(1)数据结构设计a 建立一个链式堆栈,实现括号的匹配问题。

b建立一个顺序堆栈,来实现中缀转后缀并实现二叉树的打印。

(2)算法设计a.括号匹配b中缀转后缀c打印二叉树和真值表2. 设计表示自定义和调用的函数如下所示:#include""#include""#include<>#include<>#include<>#include<>#include<>函数说明如下SeqStack1; /*定义一个堆栈SeqStack1*/void StackInitiate1(SeqStack1 *S) /*初始化堆栈1,栈底为‘#’*/void StackPush1(SeqStack1 *S,DataType x) /*将元素压入堆栈1*/void StackPop1(SeqStack1 *S,DataType *x) /*弹出堆栈1的栈顶元素*/int StackTop1(SeqStack1 S,DataType *d) /*取堆栈1的栈顶元素*/SeqStack2; /*定义一个顺序堆栈SeqStack2*/void StackInitiate2(SeqStack2 *S) /*初始化堆栈2*/BiTreeNode * StackPop2(SeqStack2 *S) /*从堆栈2中弹出栈顶元素*/BiTreeNode; /*定义二叉树的结点*/void Initiate(BiTreeNode **root) /*初始化树的根结点*/void print(BiTreeNode *bt,int n) /*逆时针打印二叉树*/void StackPush2(SeqStack2 *S,BiTreeNode *x) /*将二叉树结点压入堆栈2*/int Convert(char a[500],char b[500][100],SeqStack1 *S,int n) /*将待求表达式转换为后缀形式*/BiTreeNode * BuildTree(char b[500][100],int n)/*根据表达式的后缀形式,构造相应的二叉树*/LSNode; /*定义了链式堆栈用于下面检测表达式的括号匹配*/void StackInitiate(LSNode** head) /*初始化堆栈*/int StackNotEmpty(LSNode* head) /*检测堆栈是否为空的函数*/int StackPush(LSNode* head,DataType x) /*将元素入栈*/int StackPop(LSNode* head,DataType* d) /*弹出栈顶元素*/int StackTop(LSNode* head,DataType *d) /*取栈顶元素*/void Destroy(LSNode* head) /*撤消*/void ExplsCorrect(char exp[]) /*检测输入表达式的括号匹配函数*/i3.详细设计void StackInitiate(LSNode** head){if((*head=(LSNode*)malloc(sizeof(LSNode)))==NULL)exit(1);(*head)->next=NULL;} /*初始化堆栈*/int StackNotEmpty(LSNode* head){if(head->next==NULL)return 0;else return 1;}/*检测堆栈是否为空的函数,若为空,返回0,否则返回1*/typedef struct snode{DataType data;struct snode* next;}LSNode;/*定义了链表的结点用于下面检测表达式的括号匹配*/int StackPop(LSNode* head,DataType* d){LSNode* p=head->next;if(p==NULL){cout<<"堆栈已空出错"<<endl;return 0;}head->next=p->next;*d=p->data;free(p);return 1;}/*弹出栈顶元素*/int StackPush(LSNode* head,DataType x){LSNode* p;if((p=(LSNode*)malloc(sizeof(LSNode)))==NULL) {cout<<"内存空间不足无法插入!"<<endl;return 0;}p->data=x;p->next=head->next;head->next=p;return 1;}/*将元素入栈*/int StackTop(LSNode* head,DataType *d){LSNode* p=head->next;if(p==NULL){cout<<"堆栈已空出错"<<endl;return 0;}*d=p->data;return 1;}/*取栈顶元素*/void Destroy(LSNode* head){LSNode* p,*p1;p=head;while(p!=NULL){p1=p;p=p->next;free(p1);}}/*撤消*/三.调试分析在运行程序的过程中,碰到了一些错误,其中有很多是括号和分号的问题,看来以后写程序要更加细心才行。

命题逻辑等值演算的计算机实现9

命题逻辑等值演算的计算机实现9
Key words :proposition logic; equivalent calculation; data structure; broad sense watch; computer implementation
数理逻辑属形式逻辑范畴, 形式逻辑学是对思维形式结构和 思 维 规 律 进 行 研 究 的 类 似 语 法 的 一 门 工 具 性 学 科 [1]。命 题 逻 辑 是 数理逻辑的基础部分, 其中等值演算在命题逻辑中占有很重要的 地位。所谓命题逻辑的等值演算, 是指由已知的等值式运用等值 规 则 演 算 出 另 外 的 一 些 等 值 式 , 它 在 判 断 命 题 公 式 的 类 型 、求 主 析( 合) 取范式中是一种很重要的方法。
2 命题公式的逻辑结构
可以看出, 命题公式的生成过程是一个递归形式, 一个命题 公式由若干个子公式组成, 而子公式又可以包含若干个子公式。 从数据结构的观点看, 适宜于用广义表来存储命题公式, 把每一 对括号所包含的部分看作一个子公式作为一部分, 每一个联结词 作为一部分, 即广义表的每一个元素可以是命题公式的子公式、 命题或者联结词。
图5 注: 上述图 2- 图 5 种结点 A、B 和 C5 等值演算的实现
(1)求析( 合) 取范式 求给定命题公式析取范式的过程, 实际上就是逐步对公式进 行 消 去 等 价 联 结 词 、消 去 蕴 含 联 结 词 、否 定 深 入 并 按 照 析 取 对 合 取 的 分 配 律 等 值 演 算 的 过 程 [5]。假 设 公 式 的 广 义 表 存 储 结 构 已 经 建好, 则通过如下步骤进行: ①DELET_EQU (HP); //消去等价联结词 ②DELET_IMP (HP); //消去蕴含联结词 ③IN_NOT(HP); //否定深入 ④ALLOT2(HP); //析取对合取进行分配 以 上 各 步 中 , 每 一 操 作 都 增 加 PRINTF(HP), 即 可 输 出 等 值 演 算过程中的每一步, 在运算过程中可能出现重复项或者多余的括 号 , 只 需 增 加 ABSORB(HP)和 DELETE_BRACKET(HP), 就 可 以 得 到相应的析取范式。 求合取范式只需将上述④的 ALLOT2(HP)改为 ALLOT1(HP)。

命题逻辑的等值和推理演算.ppt

命题逻辑的等值和推理演算.ppt
4. 分配律 P∨(Q∧R) = (P∨Q)∧(P∨R) P∧(Q∨R) = (P∧Q)∨(P∧R) P(QR) = (PQ)(PR)
5. 等幂律(恒等律) P∨P = P P∧P = P PP = T PP = T
6. 吸收律 P∨(P∧Q) = P P∧(P∨Q) = P
7. 摩根律 (P∨Q) = P∧Q (P∧Q) = P∨Q
定理: 对公式A的子公式, 用与之等值的公式来代换 便称置换。 置换规则 公式A的子公式置换后A化为公式B, 必有A = B。 当A是重言式时, 置换后的公式B必也是重言式。
置换与代入是有区别的。置换只要求A的某一 子公式作代换, 不必对所有同一的子公式都作代 换。
2.2.4 等值演算举例
例1: 证明(P∧(Q∧R))∨(Q∧R)∨(P∧R) = R
16. PQ =Biblioteka (PQ)∧(QP)这表明PQ成立, 等价于正定理PQ和逆 定理QP都成立。
17. P(QR) = Q(PR)
前提条件P、Q可交换次序。
18. (PR) ∧(QR)=(P∨Q)R
左端说明的是由P而且由Q都有R成立。 从而可以说由P或Q就有R成立, 这就是等 式右端。
2.2.3 置换规则
严格的形式化的讨论见第三章所建立的公 理系统。
2.1 等值定理
若把初等数学里的+、-、×、÷等运算符看作 是数与数之间的联结词,那么由这些联结词所表 达的代数式之间,可建立许多等值式如下: x2-y2 = (x+y)(x-y) (x+y)2 = x2+2xy+y2 sin2x+cos2x = 1 ……
PP = P PP = P PP = F
所有这些公式,都可使用直值表加以验证。
Venn图
若使用Venn图也容易理解这些等值式, 这 种图是将P、Q理解为某总体论域上的子集 合, 而规定P∧Q为两集合的公共部分(交集 合), P∨Q为两集合的全部(并集合), P为 总体论域(如矩形域)中P的余集。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
表达式为 ( a- > b) < - > ( ( a^ b) ∨c) 可 转化为 ( ( a- > b) , < - > , ( a^ b) ∨
NOD EPTR = ^ NOD E;
NOD E= R ECO RD TA G: IN T EGER; R IGH T: NOD EPTR; CA SE TA G O F ±1: (L EFT: NOD EPTR ) ; ±2, 3: (S IT: IN T EGER ) ;
151
4 等值演算的实现
有了上面的基本操作, 就很容易实现其它( 1) 求合取范式的过程, 实际就是逐步对表达式
(10) PRO C IN - NO T (H EAD ) 否定深入操作, 进行消去等价连接词、消去蕴涵连接词、否定深入、按
将表达式的所有否定连接词′= ′从下往上逐步深入到 分配律 1 演算的过程。因此实现步骤可化为下列几步
( a^ b) ∨c 可转化为 ( a^ b, ∨, c) , = a^ b 可转化为 ( a, ^ , b) , 即原表达式可转化为 ( ( a, - > , b) , < - > , ( ( a, ^ , b) , ∨, c)
另外, 考虑联接词长度不一致, 定义一字符串数 组来存放它, 而同一变量在一表达式中可多次重复出 现, 为了便于识别不同变量, 也定义一数组用来存放 变量名, 并规定变量名只用一个字母表示。
信阳师范学院学报 (自然科学版) 第 12 卷 第 2 期 1999 年 4 月
Jou rna l of X inyang T eachers Co llege (N a tu ra l Science Edition)V o l. 12 N o. 2 A p r. 1999
命题逻辑等值演算的计算机求解方法Ξ
互换即可。 说明: 以上图示中 A 、B 、C 表示一个子表达式
结构, 可以是一个或多个结组成。
对 N 个变量分配不同的真值, 求出表达式真值的过 程, 因为共有 2N 种不同的分配方法, 所以对每种分配 方法执行 ZH I(H EAD ) 操作即可, 共需执行 2N 次 ZH I (H EAD ) 操作, 并输出每次的分配方法和表达式的结 果。
END , END 1 说明:
(1) TA G 为标志域, 其值为±1 时表示该结点为 表结点, 为±2 时表示该结点为变量结点, 为 3 时表 示该结点为联接词结点, 为负时表示该结点前有否定 联接词。
c) ) 其中 ( a- > b) 可转化为 ( a, - > , b) ,
( 2) S IT 存放变量或联接词在相应数组中的位 置。
图2 (7) PRO C X ISHOU (H EAD ) 吸收操作, 对应 公式 A ∨A < = > A , A ^ A < = > A A - > 3 3 - > A ] A
图3 ( 8) PRO C D EL - DJ (H EAD ) 消去等价联接 词 ′< - > ′操作, 按深度优先顺序从下往上逐步消去表 达式中的所有等价连接词′< - > ′, 对应公式 A < - > B < = > (A - > B ) ^ (B - > A )
变量的前面, 方法是将否定作用域下的所有表结点, (设存储结构已建好) :
变量结点的 TA G 求反, 连接词结点的 S IT 值 2、3 互
① D EL - DJ (H EAD ) {消去等价连接词},
换, 对应公式= (A ∨B ) < = > (= A ^ = B ) , = (A ^
② D EL - W H (H EAD ) {消去蕴涵连接词},
^ (B ^ C) < = > A ^ B ^ C, (A ) < = > A 如图 2。
(2) 表达式必须符合命题逻辑表达式所规定的语 法规则。
3 在此结构上基本操作的设计和实现
(1) FU N C CR EA T (H EAD , CH ) 创建函数, 由 输入的表达式串建立一个表达式, 根据存储结构的特 点, 按深度优先顺序递归地实现, 建立的过程中进行 表达式的分解并进行语法查错, 如有错误, 返回错误 位置, 如无错误, 返回 0。
( ( a, - > , b ) , < - > , ( ( a, ^ , b ) , ∨, c) ) , 其存储结构如图 1。
图1
此时 COU N T 值为 3,O PTR 存放{′a′, ′b′, ′c′}1 说明:
( 1) 在联接词优先级方面, 规定所有联接词为同 优先级, 按先后顺序运算, 但规定括号内的优先级比 括号外的优先级高, 因此可用括号来调整运算次序。
在以上各步中, 每一次操作都输出表达式即可输
应公式 A ∨ (B ^ C) < = > (A ∨B ) ^ (B ∨C)
出演算过程中的每一步, 考虑运算过程中会出现同一
层的多余的相同项和多余的括号, 在后两步过程中每
次操作执行吸收操作和去括号操作, 就可得到最终简
洁的合取范式。
( 2) 求析取范式的过程, 实际就是逐步对表达式
进行消去等价连接词、消去蕴涵接词、否定深入、按分
配律 2 演算的过程。因此实现步骤类似求合取范式可
图6
得, 只需将分配律 1 操作改为分配律 2 操作。
(12) PRO C FPL 2 (H EAD ) 分配律 2 操作, 对
(3) 求 N 个变量表达式真值表的过程, 实际就是
应公式 A ^ (B ∨C) < = > (A ^ B ) ∨ (B ^ C) 图示类似图 6, 只需将连接词结点的 S IT 域 2, 3
(2) PRO C D EL (H EAD ) 删除过程, 删除表达 式 H EAD 的整个存储结构, 可按深度优先顺序递归 地实现。
(3) PRO C OU T PU T (H EAD ) 输出过程, 输 出表达式 H EAD , 可按深度优先顺序递归地实现。
(4) PRO C CO PY (H EAD 1, H EAD 2) 复制过 程, 由 表 达 式 H EAD 1 的 结 构 复 制 一 个 表 达 式 H EAD 2 的结构, 类似输出过程, 在遍历 H EAD 1 结构 的过程中复制 H EAD 2 的结构。
(5) FU N C ZH I(H EAD ) 求值操作, 在给出一 组表达式中所有变量的值的情况下, 求整个表达式的 值, 可按深度先顺序递归地实现。
(6) PRO C D EL - KH (H EAD ) 去括号操作, 将 表达式中多余的括号去掉。
对应的公式为 A ∨ ( (B ∨C ) < = > A ∨B ∨C, A
初始化部分, 将 O PT 中存放{′< - > , ′- > ′, ′ ^ ′, ′∨′, ′ ′}, 其中规定′< - > ′为等价联接词, ′> ′为蕴涵联接词, ′^ ′为合取联接词, ′∨′为析取联接 词, ′= ′为否定联接词。 例如: 表达式
= ( a- > b) < - > ( ( a^ b) ∨c) 可转化为
and sto rage st ructu re of p ropo sit iona l log ic exp ression on the com p u ter and u sed to rea lise it s ba sic m an ip u la t ion and com p lex fo rm a l deduct ion on th is st ructu re.
Zhan L ing
(D ep t of M a th, X inyang T eachers Co llege. X inyang, H enan; Ch ina 464000)
Abstract A t t ribu te of genera lized list in da ta st ructu re is u sed to the design fo r log ica l
万继光 詹 玲
(信阳师范学院计算机系 1 河南, 信阳 464000) (信阳师范学院数学系 1 河南, 信阳 464000)
摘 要 探讨了利用数据结构中广义表的特性来设计命题逻辑表达式在计算机上的逻辑结
构和存储结构, 以及在这种结构上如何实现它的基本操作, 进而实现其它复杂的等值演算。
关键词 广义表; 命题逻辑; 等值演算; 联接词
参 考 文 献
1 严蔚敏, 吴伟民 1 数据结构 1 清华大学出版社, 19921
2 郑启华 1PA SCAL 程序设计 1 清华大学出版社, 19911 3 陈进元, 屈婉玲 1 离散数学 1 北京大学出版社, 19871
4 左孝凌, 李为钅监, 刘永才 1 离散数学 1 上海科学技术文献出版社, 19821
合适的存储结构, 进而在这种结构上设计它的基本操 一种是表结点, 第二种是变量结点, 第三种是联接词
作, 而其它复杂的等值演算就可利用这些基本操作来 结点, 其类 PA SCAL 语言形式说明如下:
实现。
T YPE
1 命题逻辑表达式的逻辑结构
命题逻辑表达式可以看作一个递归的表达式, 即 一个表达式可包含不同的子表达式, 而子表达式又可 包含其子表达式, 考虑其类似于数据结构中的广义 表, 可把其表达式分解成几部分作为广义表的元素, 而表达式本身即看作广义表。分解方法是把每一对括 号所包含的部分看作一个子表达式作为一部分, 每一 个联接词变量作为一部分, 即广义表的每一个元素可 作为表达式的子表达式、变量或联接词, 其中否定联 接词包含于其作用域的子表达式或变量中。 例如:
B ) < = > (= A ∨= B ) , 要求表达式中无′< - > ′, ′
相关文档
最新文档