我找到了一个Prolog程序,并阅读了一些关于AI编程的内容。我的节目是:
causes(measles, spots).
causes(mumps, swollen_glands).
known(spots).
diagnosis(Symptom,Disease) :-
causes(Disease,Symptom),
known(Symptom).
它的文件名是:
ex.pl
当我在Linux上运行此命令时:
swipl ex.pl
我收到此提示
-
我的问题是,除了获得真实或错误答案之外,我怎么能问一个问题呢?就像“疾病的名称是什么引起斑点?”或者当我删除以下行时会发生什么:
known(spots).
或者我可以问一下有什么有趣的问题吗?
答案 0 :(得分:2)
快速回答“疾病的名称是什么引起斑点?” (注意Disease
中的资本):
?- causes(Disease, spots).
Disease = measles.
更长的答案:Prolog是一种逻辑编程语言。这意味着您的程序代码通用量化。例如,以下代码指出“导致已知症状的所有疾病都具有该症状作为诊断”。
diagnosis(Symptom,Disease) :-
causes(Disease,Symptom),
known(Symptom).
您在顶级的查询是存在量化。例如,causes(Disease, spots)
询问“是否存在导致斑点的疾病?”。
以下也是普遍量化的(因为它们属于程序代码)。但由于它们不包含任何变量来量化它们是事实。
causes(measles, spots).
causes(mumps, swollen_glands).
known(spots).
PS:请注意,您的代码未说明疾病和症状是什么。这只能从你选择的变量名中看出来。