Prolog活动领域

时间:2014-04-06 07:26:23

标签: prolog

我找到了一个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).

或者我可以问一下有什么有趣的问题吗?

1 个答案:

答案 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:请注意,您的代码未说明疾病和症状是什么。这只能从你选择的变量名中看出来。