为什么我的"recursive_print_proof"不起作用?



对于作业,我们必须编写对命题逻辑KB执行解析的Python代码。

所有代码似乎都可以正常工作,除了recursive_print_proof.运行程序时,它会一直运行,直到您告诉它停止。

它应该做的是根据分辨率输出一个证明。但是,它似乎陷入了循环。

希望任何人都可以帮助我。

recursive_print_proof几乎可以在最后找到。我的代码是:

def recursive_print_proof(idx, clause_set):
kb = init()
if contains_empty_clause(kb):
inferred = []
for i in range(len(kb)):
for j in range(i,len(kb)):
if can_resolve(kb[i],kb[j]):
resolvent = resolve_clauses(kb[i],kb[j])
inferred.append(resolvent)
if clause_set[idx].equals(resolvent):
idx2 = find_index_of_clause(kb[j],clause_set)
recursive_print_proof(idx2,clause_set)
idx2 = find_index_of_clause(kb[i],clause_set)
recursive_print_proof(idx2,clause_set)
# printing
clause_set[idx].print_clause()
print(" is inferred from", end=" ")
kb[i].print_clause()
print(" and", end=" ")
kb[j].print_clause()
print(".")
break
break
break

如果你想知道为什么代码在recursive_print_proof中旋转......

您的recursive_print_proof方法循环使用永远不会为假的条件while not contains_empty_clause(kb):。所以它一直在旋转。

也许你想让它if not contains_empty_clause(kb):

最新更新