跳至内容

Prolog/推理引擎

来自维基教科书,面向开放世界的开放图书

本文需要专家关注!

默认情况下,Prolog 进行自顶向下逻辑推理。

示例

clever(joe).
handsome(joe).

hasgirlfriend(X):-
    clever(X),handsome(X).

我们以“hasgirlfriend(X).”运行,以获取有女朋友的人员。

双向推理

clever(joe).
handsome(joe).

rule([handsome(joe),clever(joe)],(hasgirlfriend(joe))).

run:- call(rule(X,Y)),findall(A,(member(A,X),call(A)),L),
	length(X,Rulelength),
	length(L,Rulelength),
	assert(Y),print(Y).

我们以“run.”运行。

我们不必直接询问谁有女朋友,它向我们提供所有可以推断出的结果。双向推理的好处是提高了速度。

华夏公益教科书