您的位置:首页 > 编程语言

Pyke 逻辑编程入门(9):规则

2010-03-11 07:20 459 查看

规 则

从概念上讲,规则很简单:

if

A

B

C

then

D

E

它的意思是:“如果A、B、C是真的,则D、E也是真的”。通常叫做 if-then 规则。

A、B、C、D、E 是什么?
它们是简单的事实陈述。具体地说,它们是以模式为参数的广义的陈述语句。以后会有更多的解释。

规则的 ifthen 这两部分,包含着一个或多个事实或目标,即广义的陈述语句。

处理 if 子句中的“前提条件”

在 if 子句中的前提条件,是广义陈述句,它们与已知的一个或多个事实相匹配。
Pyke 通过回溯的方式,尝试每个可能的匹配。因此,同一规则可能多次适用成功,每次成功匹配的是不同的事实。

回溯

注意,回溯发生的过程,是处理规则 if 子句“列表”中的那些前提之时:

如果 Pyke 证明某前提成立:

Pyke 将继续处理列表中的下一个前提。

列表中的最后一个前提证明成立,则该规则适用成功。

如果 Pyke 证明某前提失败:

Pyke 会退回上一个前提处,尝试证明它的其他途径。这里是新过程的起点,是否继续回退,要看上一个前提是否另有再试的可能。

列表中的第一个前提证明失败,则该规则适用失败。



回溯流程图

在规则的 if 子句的“前提列表”中,是进还是退、是上还是下,取决于前提的证明是成功还是失败。在列表中往后退,尝试别的证明办法,这个过程叫做回溯。

推理

规则保存在规则库中,各有不同的具体内容。规则之间没有嵌套和显性关联。Pyke 必须自己设法来解决规则之间的整合,以完成某些大型任务。 Pyke 用的办法叫做“推理”,它有两种不同的方式:

应用正向推理规则,要求规则库已经激活。

正向推理规则可以断言新的事实,可以激活更多的规则库。

当你的程序要求 Pyke 证明某个具体目标时,使用反向推理规则(例如,向 Pyke 询问)。

应用这些规则,是为了回答某个问题,而非断言新事实,或者激活更多的规则库。

反向推理规则,还能汇集 Python 函数,形成具体的“调用顺序图”或叫做“方案图”的程序,以处理实际问题。

注 意
正向推理规则和反向推理规则,可以处于同一规则库中。二者有不同语法形态,Pyke 能据此分辨它们。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: