为什么我的 `recursive_print_proof` 不起作用?
Why does my `recursive_print_proof` not work?
对于一项作业,我们必须编写 Python 代码来对命题逻辑 KB 执行解析。
除了 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):
?
对于一项作业,我们必须编写 Python 代码来对命题逻辑 KB 执行解析。
除了 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):
?