编写函数 MGU实现最一般合一算法. 该函数要点如下: 输入为两个原子公式, 它们的谓词相同. 其数据类型为 str, 格式详见课件 输出最一般合一的结果, 数据类型为 dict, 格式形如{变量: 项, 变量: 项}, 其中的变 量和项均为字符串. 若不存在合一, 则返回空字典
时间: 2023-05-30 22:04:36 浏览: 83
def MGU(p1, p2):
"""
最一般合一算法
:param p1: 原子公式1
:param p2: 原子公式2
:return: 最一般合一的结果,数据类型为字典,格式形如{变量: 项, 变量: 项}
"""
# 判断两个原子公式是否相同
if p1 == p2:
return {}
# 将原子公式转化为列表
p1_list = p1.split("(")[1][:-1].split(",")
p2_list = p2.split("(")[1][:-1].split(",")
# 初始化最一般合一的结果为一个空字典
MGU_dict = {}
# 判断两个原子公式的参数个数是否相同
if len(p1_list) != len(p2_list):
return {}
# 遍历两个原子公式的参数列表
for i in range(len(p1_list)):
# 如果两个参数相同,则继续比较下一个参数
if p1_list[i] == p2_list[i]:
continue
# 如果其中一个参数是变量,则将该变量加入最一般合一的结果字典中
elif p1_list[i].islower():
MGU_dict[p1_list[i]] = p2_list[i]
elif p2_list[i].islower():
MGU_dict[p2_list[i]] = p1_list[i]
# 如果两个参数都是常量,则返回空字典
else:
return {}
return MGU_dict
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)