一阶谓词公式的语法判别系统_第1页
一阶谓词公式的语法判别系统_第2页
一阶谓词公式的语法判别系统_第3页
一阶谓词公式的语法判别系统_第4页
一阶谓词公式的语法判别系统_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三实验三 一阶谓词公式的语法判别系统一阶谓词公式的语法判别系统 1 实验目的 一阶逻辑是人工智能学科的重要基础和实现技术之一 对一阶逻辑的深入理解有助于 更好的学习人工智能的理论 技术和方法 通过编程实现一阶谓词逻辑公式的语法检查系 统能更好的理解一阶逻辑语法系统的构成及其含义 2 实验原理 利用一阶公式的句法特征 递归判定公式 子公式 的合法性 3 实验内容 编程实现一阶谓词逻辑公式的语法检查系统 以判别任一给定的由一阶逻辑符号所组 成的公式是否是一个符合语法规范的一阶谓词公式 4 实验要求 编程实现一阶谓词逻辑公式的语法检查系统 使其能对任一由一阶逻辑的语法构成元 素所组成的公式进行检查 以判别其是否为一阶逻辑公式 5 实验步骤 认真分析一阶逻辑公式的构成方法 寻求合适的数据结构 利用一阶逻辑公式构成的递归性特点 涉及相应的求解算法 编程实现 6 参考示例 include stdio h include math h define LEN sizeof struct term struct term int power int data struct term link void output struct term copy p n1 n2 make a copy of p with p not changed struct term p int n1 n2 struct term q1 q2 q3 p1 q1 q2 struct term malloc LEN q1 data 100 q1 power 100 q1 link NULL p1 p link while p1 NULL q3 struct term malloc LEN q3 data p1 data n1 q3 power p1 power n2 q3 link NULL q2 link q3 q2 q2 link p1 p1 link return q1 struct term subpolys p1 p2 compute the result of p1 substracted by p2 struct term p1 p2 struct term q1 q2 p p p1 q1 p1 link q2 p2 link while q2 NULL q1 q1 link else if q1 powerpower p2 q2 q2 q2 link p2 data p2 data p1 link p2 p2 link q1 p1 p2 else if q1 data q2 data q1 q1 link p1 link q1 q2 q2 link else q1 data q1 data q2 data q1 q1 link p1 p1 link q2 q2 link if q2 NULL p2 q2 while p2 NULL p2 data p2 data p2 p2 link p1 link q2 return p int ownabs n int n if n 0 return n else return n struct term divpolys p1 p2 test whether p1 can divide p2 struct term p1 p2 struct term p q1 q2 q3 q4 temp int n1 n2 p struct term malloc LEN p data 100 p power 100 p link NULL q3 p while p1 link NULL q2 p2 link n1 q1 data q2 data n2 q1 power q2 power temp copy p2 n1 n2 p1 subpolys p1 temp q4 struct term malloc LEN q4 data n1 q4 power n2 q4 link NULL q3 link q4 q3 q4 if p1 link NULL p link NULL return p struct term input struct term p1 p2 q char ch1 ch2 sign int temp p1 p2 struct term malloc LEN p1 data 100 p1 power 100 p1 link NULL ch1 getchar if ch1 ch2 ch1 ch1 else ch2 getchar while ch1 ch1 sign ch1 if ch2 x temp ch2 48 ch1 ch2 ch2 getchar while ch2 n ch1 ch2 ch2 getchar else temp 1 if sign temp temp q struct term malloc LEN q link NULL q data temp temp 0 if ch2 x ch1 ch2 ch2 getchar if ch2 n ch2 ch2 temp 1 else temp ch2 48 ch1 ch2 ch2 getchar while ch2 ch1 ch2 ch2 getchar q power temp p2 link q p2 p2 link if ch2 n ch1 ch2 ch2 getchar return p1 void output p struct term p int sign struct term p1 p1 p link sign 1 while p1 NULL if p1 data 0 if sign 0 printf if p1 data 1 printf d p1 data else if p1 power 0 printf d p1 data else if p1 data 1 printf if p1 power 0 printf 1 else printf d p1 data if p1 power 0 printf x if p1 power 1 printf d p1 power p1 p1 link sign 0 outputs pa n struct term pa int n int i for i 0 idata 100 p1 power 100 p1 link NULL for i 0 ipower 1 q data n1 else q power 0 if n2 0 q data n2 else continue q link NULL p1 link q p1 p1 link return p struct term genep2 n1 n2 n3 int n1 n2 n3 struct term p p1 q int temp i p p1 struct term malloc LEN p1 data 100 p1 power 100 p1 link NULL temp pow n2 2 4 n1 n3 if temp 0 for i 0 idata n1 else if i 1 q data n2 else q data n3 q power 2 i q link NULL p1 link q p1 p1 link return p main struct term p1 p11 p2 pin q int i j k flag printf n pin input p1 copy pin 1 0 i 1 j 9 flag 0 while p1 link power 1 if j 9 else if j 9 printf n output p2 flag 1 else p1 p11 i 1 j 9 k 9 flag 0 while

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论