全文预览

一般合一算法

上传者:随心@流浪 |  格式:doc  |  页数:6 |  大小:49KB

文档介绍
,lan))Р?{Р if(same(f1,f2)) //如果f1,f2相同则合一为εР {Р cout<<"合一σ=ε"<<endl;Р return ;Р }Р cout<<"合一σ={ ";Р for(int i=0;i<lan.size()-1;i++)Р cout<<lan[i].t_f1<<"/"<<lan[i].t_f2<<",";Р cout<<lan[i].t_f1<<"/"<<lan[i].t_f2<<" }"<<endl;Р?}Р?else Р cout<<"不能进行合一"<<endl;Р} Рint main()Р{Р?Syncretism Sy;Р?Sy.show();Р?return 0;Р}Р二:演示结果:Р三:程序的实现:РTransform 中的t_f1,t_f2分别表示差异集中的两个字符串。РVector 变量lan存放合一的集合。Р函数功能:РIssyn() 判断两个公式是否相同。Рdifferent() 求差异集。Рchange() 用代换对公式进行合一代换。Рlegal() 对t_f1,t_f2判断然后对换并判断是否为合一字符串Рsame() 判断两个公式是否相同。Рvar() 字符串每个()内的子串是变量还是常量。Рshow() 最终演示算法函数。Р具体程序执行:Р程序执行时先输入公式集中的公式,然后调用Issyn函数判断是否能合一,如果不能,则退出;如果能,判断公式是否相同,相同则合一是ε,不是则进一步判断。调用different函数找出差异集放在vector 变量 lan中,再调用legal函数和var函数判断合一时到底哪个是变量哪个是常量(t_f1存放常量,t_f2存放变量,不符合则进行交换),在用t_f1代换调公式中的t_f2,进行下一轮的比较,寻找差异集然后判断再代换。每次差异集都添加到lan中,最后输出lan中的元素。

收藏

分享

举报
下载此文档