人工智能合一算法C++_第1页
人工智能合一算法C++_第2页
人工智能合一算法C++_第3页
人工智能合一算法C++_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、人工智能第1次作业 用殳合一算法(C+帙现)姓名:佟 学号:201224班级:12计本非师学院:信息学院一、简单程序如下#include <iostream>#include <string>#include <vector> using namespace std;int iC=0;/标记公式集中括号匹配数class Syncretism private:struct Transform /一个代换(差异集)string t_f1;string t_f2; ;public:bool Issyn(string f1,string f2, vector<

2、Transform> &t ); /是否能合一Transform different(const string f1,const string f2) /求差异集 int i=0;Transform t;while(f1.at(i)=f2.at(i) i+;int j1=i;while(j1<f1.length()-1&&f1.at(j1)!=',') j1+;if(j1-i=0) return t;t.t_f1=f1.substr(i,j1-i); int j2=i;while(j2<f2.length()-1&&f2

3、.at(j2)!=',') j2+;if(j2-i=0) return t;t.t_f2=f2.substr(i,j2-i);while(t.t_f1j1-i-1=t.t_f2j2-i-1) t.t_f1.erase(j1-1-i);t.t_f2.erase(j2-i-1);j1-;j2-; ) return t;)bool same(const string f1,const string f2) ; /判断两个公式是否相同string change(string f,Transform t); /用代换 q 对公式 f 进行合一代换bool legal(Transform

4、&t); /int var(const string s); /s中每个()内的子串是变量还是常量void show();/最终演示算法);bool Syncretism:Issyn(string f1,string f2,vector<Transform> &lan)while(!same(f1,f2) Transform t=different(f1,f2);bool flag=legal(t);if(!flag) return false; elselan.push_back;将t 加入 vector lan 中if(flag)f1=change(f1,lan

5、.back();/ 用 lan 的最后一个元素代换f2=change(f2,lan.back();cout<<"变换后:"<<endl;cout<<"f1:"<<f1<<endl;cout<<"f2:"<<f2<<endl<<endl;)if(same(f1,f2) break;) ) return true;)bool Syncretism:same(const string f1, const string f2) if(p

6、are(f2)=0) return true;else return false;)string Syncretism:change(string f,Transform t) int i=f.find(t.t_f2);while(i<f.length()(i=f.find(t.t_f2);if(i<f.length()f=f.replace(i,t.t_f2.length(),t.t_f1);)return f;)bool Syncretism:legal(Transform &t)(if(t.t_f1.length()=0|t.t_f2.length=0)return

7、false;else if(var(t.t_f1)=0|var(t.t_f2)=0) return false;else if(var(t.t_f1)=1&&var(t.t_f2)=1&&t.t_pare(t.t_f2)!=0) return false;else if(var(t.t_f1)=2)(if(var(t.t_f2)=1)(string temp=t.t_f1; /变量常量交换位置t.t_f1=t.t_f2;t.t_f2=temp;)else(int i1=var(t.t_f2);i1=iC;iC=0;int i2=var(t.t_f1);i2=iC

8、;if(i1<i2)(string temp=t.t_f1; /变量常量交换位置t.t_f1=t.t_f2;t.t_f2=temp;)return true;)elsereturn true;)int Syncretism:var(const string s)(if(s.length()=0) return 0; /空if(s.length()=1&&s0>='a'&&s0<='g') return 1; /常量if(s.length()>1)int i=0;while(i<s.length()&a

9、mp;&s.at(i)!='(')i+;iC+;string ss=s.substr(i+1,s.length()-i-2); /抽取 s 中的匹配的()中的子串return var(ss);else return 2;void Syncretism:show()cout<<"常量:形如 a,b,c,d(a-g) 等"<<endl<<"变量:形如 x,y,z,u等"<<endl;string f1,f2;cout<<"输入 F1:"cin>>

10、;f1;cout<<"输入 F2:"cin>>f2;vector <Transform> lan;if(Issyn(f1,f2,lan)if(same(f1,f2) / 如果 f1,f2相同则合一为 £cout<<"合一 o- = £ "<<endl;return ;cout<<"合一 0- ="for(int i=0;i<lan.size()-1;i+)cout<<lani.t_f1<<"/”<&

11、lt;lani.t_f2<<”,"cout<<lani.t_f1<<"/”<<lani.t_f2<<" "<<endl; elsecout<<"不能进彳T合一 "<<endl;int main()Syncretism Sy;Sy.show();return 0;一、演不'结果常安2 如a=b.c等壬量:y*ZJn等施入 Fl:pCii,x-F<gCv>>> F2:p(3Ff,换后:fl : p<a>

12、;S4i.f Cu>>变换后:iupQ,f&3FSG变换后:f2:p<avfCa<y>>>MO =< a/a, f Ci>/ic,y<y>/u,Pr*零芋 wny key to toiH inue三、程序的实现Transform 中的t_f1 , t_f2 分别表示差异集中的两个字符串。Vector变量lan存放合一的集合。函数功能Issyn()判断两个公式是否相同。different()求差异集。change()用代换对公式进行合一代换。legal()t_f1,t_f2判断然后对换并判断是否为合一字符串same()判断两个公式是否相同。var()字符串每个()内的子串是变量还是常量。show()最终演示算法函数。四、具体程序执行程序执行时先输入公式集中的公式然后调用Issyn函数判断是否能合一如果不能则退出,

温馨提示

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

评论

0/150

提交评论